OpenCores
URL https://opencores.org/ocsvn/double_fpu/double_fpu/trunk

Subversion Repositories double_fpu

[/] [double_fpu/] [trunk/] [pipeline/] [fpu_addsub_TB.v] - Blame information for rev 6

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 davidklun
 
2
`timescale 1ps / 1ps
3
module fpu_tb;
4
 
5
 
6
//Internal signals declarations:
7
reg clk;
8
reg rst;
9
reg enable;
10
reg fpu_op;
11
reg [63:0]opa;
12
reg [63:0]opb;
13
wire [63:0]out;
14
wire ready;
15
 
16
 
17
        fpu UUT (
18
                .clk(clk),
19
                .rst(rst),
20
                .enable(enable),
21
                .fpu_op(fpu_op),
22
                .opa(opa),
23
                .opb(opb),
24
                .out(out),
25
                .ready(ready));
26
 
27
initial
28
begin : STIMUL
29
        #0
30
        enable = 1'b0;
31
        rst = 1'b1;
32
        fpu_op = 1'b1;
33
    #10000; //0
34
        enable = 1'b1;
35
        rst = 1'b0;
36
//inputA:-8.7700000000e+000
37
//inputB:4.9600000000e+000
38
opa = 64'b1100000000100001100010100011110101110000101000111101011100001010;
39
opb = 64'b0100000000010011110101110000101000111101011100001010001111010111;
40
fpu_op = 1'b0;
41
#10000;
42
 
43
//inputA:5.6668000000e+004
44
//inputB:2.3300000000e+002
45
opa = 64'b0100000011101011101010111000000000000000000000000000000000000000;
46
opb = 64'b0100000001101101001000000000000000000000000000000000000000000000;
47
fpu_op = 1'b1;
48
#10000;
49
//inputA:4.8999000000e+004
50
//inputB:3.4700000000e+001              
51
opa = 64'b0100000011100111111011001110000000000000000000000000000000000000;
52
opb = 64'b0100000001000001010110011001100110011001100110011001100110011010;
53
fpu_op = 1'b0;
54
#10000;
55
 
56
//inputA:1.0000000000e-200
57
//inputB:4.0000000000e-198
58
opa = 64'b0001011001101000011111101001001000010101010011101111011110101100;
59
opb = 64'b0001011011110011001000101110001000100000101001011011000101111110;
60
fpu_op = 1'b1;
61
 
62
#10000;
63
//inputA:8.9990000000e+003
64
//inputB:2.0000000000e-002
65
opa = 64'b0100000011000001100100111000000000000000000000000000000000000000;
66
opb = 64'b0011111110010100011110101110000101000111101011100001010001111011;
67
fpu_op = 1'b1;
68
 
69
#10000;
70
//inputA:4.4500000000e+002
71
//inputB:4.4437000000e+002
72
opa = 64'b0100000001111011110100000000000000000000000000000000000000000000;
73
opb = 64'b0100000001111011110001011110101110000101000111101011100001010010;
74
fpu_op = 1'b1;
75
 
76
#10000;
77
//inputA:4.9342000000e+001
78
//inputB:2.3000000000e-002
79
opa = 64'b0100000001001000101010111100011010100111111011111001110110110010;
80
opb = 64'b0011111110010111100011010100111111011111001110110110010001011010;
81
fpu_op = 1'b0;
82
 
83
 
84
#10000;
85
//inputA:6.9100000000e+001
86
//inputB:6.8770000000e+001
87
opa = 64'b0100000001010001010001100110011001100110011001100110011001100110;
88
opb = 64'b0100000001010001001100010100011110101110000101000111101011100001;
89
fpu_op = 1'b0;
90
 
91
#10000;
92
//inputA:-8.9990000000e+003
93
//inputB:-9.5666000000e+004
94
opa = 64'b1100000011000001100100111000000000000000000000000000000000000000;
95
opb = 64'b1100000011110111010110110010000000000000000000000000000000000000;
96
fpu_op = 1'b0;
97
 
98
#10000;
99
//inputA:9.8300000000e+001
100
//inputB:-9.5666700000e+004
101
opa = 64'b0100000001011000100100110011001100110011001100110011001100110011;
102
opb = 64'b1100000011110111010110110010101100110011001100110011001100110011;
103
fpu_op = 1'b1;
104
 
105
#10000;
106
//inputA:6.8700000000e+001
107
//inputB:-9.5511000000e+002
108
opa = 64'b0100000001010001001011001100110011001100110011001100110011001101;
109
opb = 64'b1100000010001101110110001110000101000111101011100001010001111011;
110
fpu_op = 1'b0;
111
 
112
#10000;
113
//inputA:-9.5400000000e+001
114
//inputB:9.8100000000e+001
115
opa = 64'b1100000001010111110110011001100110011001100110011001100110011010;
116
opb = 64'b0100000001011000100001100110011001100110011001100110011001100110;
117
fpu_op = 1'b1;
118
 
119
#10000;
120
//inputA:-9.6300000000e+001
121
//inputB:9.8300000000e+001
122
opa = 64'b1100000001011000000100110011001100110011001100110011001100110011;
123
opb = 64'b0100000001011000100100110011001100110011001100110011001100110011;
124
fpu_op = 1'b0;
125
 
126
#10000;
127
//inputA:-4.5600000000e+001
128
//inputB:-9.8660000000e+001
129
opa = 64'b1100000001000110110011001100110011001100110011001100110011001101;
130
opb = 64'b1100000001011000101010100011110101110000101000111101011100001010;
131
fpu_op = 1'b1;
132
 
133
#10000;
134
//inputA:2.0000000000e-308
135
//inputB:4.0000000000e-300
136
opa = 64'b0000000000001110011000011010110011110000001100111101000110100100;
137
opb = 64'b0000000111000101011011100001111111000010111110001111001101011001;
138
fpu_op = 1'b0;
139
 
140
#10000;
141
//inputA:1.#INF000000e+000
142
//inputB:3.0000000000e+100
143
opa = 64'b0111111111110000000000000000000000000000000000000000000000000000;
144
opb = 64'b0101010011001011011011101000001110111000010111110010010100111011;
145
fpu_op = 1'b1;
146
 
147
#30000;
148
//Output:-3.810000000000000e+000
149
if (out==64'hC00E7AE147AE147C)
150
        $display($time,"ps Answer is correct %h", out);
151
else
152
        $display($time,"ps Error! C00E7AE147AE147C out is %h", out);
153
//Output:5.643500000000000e+004 
154
#10000;
155
if (out==64'h40EB8E6000000000)
156
        $display($time,"ps Answer is correct %h", out);
157
else
158
        $display($time,"ps Error! 40EB8E6000000000 out is %h", out);
159
#10000;
160
        //Output:4.903370000000000e+004
161
if (out==64'h40E7F13666666666)
162
        $display($time,"ps Answer is correct %h", out);
163
else
164
        $display($time,"ps Error! 40E7F13666666666 out is %h", out);
165
#10000;
166
//Output:-3.990000000000000e-198
167
if (out==64'h96F316A2D79B0A03)
168
        $display($time,"ps Answer is correct %h", out);
169
else
170
        $display($time,"ps Error! 96F316A2D79B0A03 out is %h", out);
171
#10000;
172
//Output:8.998980000000000e+003
173
if (out==64'h40C1937D70A3D70B)
174
        $display($time,"ps Answer is correct %h", out);
175
else
176
        $display($time,"ps Error! 40C1937D70A3D70B out is %h", out);
177
 
178
#10000;
179
//Output:6.299999999999955e-001
180
if (out==64'h3FE428F5C28F5C00)
181
        $display($time,"ps Answer is correct %h", out);
182
else
183
        $display($time,"ps Error! 3FE428F5C28F5C00 out is %h", out);
184
 
185
 
186
#10000;
187
//Output:4.936500000000000e+001
188
if (out==64'h4048AEB851EB851E)
189
        $display($time,"ps Answer is correct %h", out);
190
else
191
        $display($time,"ps Error! 4048AEB851EB851E out is %h", out);
192
 
193
#10000;
194
//Output:1.378700000000000e+002
195
if (out==64'h40613BD70A3D70A3)
196
        $display($time,"ps Answer is correct %h", out);
197
else
198
        $display($time,"ps Error! 40613BD70A3D70A3 out is %h", out);
199
 
200
 
201
#10000;
202
//Output:-1.046650000000000e+005
203
if (out==64'hC0F98D9000000000)
204
        $display($time,"ps Answer is correct %h", out);
205
else
206
        $display($time,"ps Error! C0F98D9000000000 out is %h", out);
207
 
208
#10000;
209
//Output:9.576500000000000e+004
210
if (out==64'h40F7614FFFFFFFFF)
211
        $display($time,"ps Answer is correct %h", out);
212
else
213
        $display($time,"ps Error! 40F7614FFFFFFFFF out is %h", out);
214
 
215
 
216
#10000;
217
//Output:-8.864100000000001e+002
218
if (out==64'hC08BB347AE147AE2)
219
        $display($time,"ps Answer is correct %h", out);
220
else
221
        $display($time,"ps Error! C08BB347AE147AE2 out is %h", out);
222
 
223
#10000;
224
//Output:-1.935000000000000e+002
225
if (out==64'hC068300000000000)
226
        $display($time,"ps Answer is correct %h", out);
227
else
228
        $display($time,"ps Error! C068300000000000 out is %h", out);
229
 
230
 
231
#10000;
232
//Output:2.000000000000000e+000
233
if (out==64'h4000000000000000)
234
        $display($time,"ps Answer is correct %h", out);
235
else
236
        $display($time,"ps Error! 4000000000000000 out is %h", out);
237
 
238
#10000;
239
//Output:5.306000000000000e+001
240
if (out==64'h404A87AE147AE148)
241
        $display($time,"ps Answer is correct %h", out);
242
else
243
        $display($time,"ps Error! 404A87AE147AE148 out is %h", out);
244
 
245
 
246
#10000;
247
//Output:4.000000000000000e-300
248
if (out==64'h01C56E1FC2F8F359)
249
        $display($time,"ps Answer is correct %h", out);
250
else
251
        $display($time,"ps Error! 01C56E1FC2F8F359 out is %h", out);
252
 
253
#10000;
254
//Output:1.#INF00000000000e+000
255
if (out==64'h7FF0000000000000)
256
        $display($time,"ps Answer is correct %h", out);
257
else
258
        $display($time,"ps Error! 7FF0000000000000 out is %h", out);
259
 
260
 
261
        #290000;
262
        $finish;
263
end
264
 
265
always
266
begin : CLOCK_clk
267
        clk = 1'b0;
268
        #5000;
269
        clk = 1'b1;
270
        #5000;
271
end
272
 
273
 
274
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.