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

Subversion Repositories fpu100

[/] [fpu100/] [tags/] [arelease/] [test_bench/] [tb_fpu.vhd] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 jidan
-------------------------------------------------------------------------------
2
--
3
-- Project:     <Floating Point Unit Core>
4
--      
5
-- Description: test bench for the FPU core
6
-------------------------------------------------------------------------------
7
--
8
--                              100101011010011100100
9
--                              110000111011100100000
10
--                              100000111011000101101
11
--                              100010111100101111001
12
--                              110000111011101101001
13
--                              010000001011101001010
14
--                              110100111001001100001
15
--                              110111010000001100111
16
--                              110110111110001011101
17
--                              101110110010111101000
18
--                              100000010111000000000
19
--
20
--      Author:          Jidan Al-eryani 
21
--      E-mail:          jidan@gmx.net
22
--
23
--  Copyright (C) 2006
24
--
25
--      This source file may be used and distributed without        
26
--      restriction provided that this copyright statement is not   
27
--      removed from the file and that any derivative work contains 
28
--      the original copyright notice and the associated disclaimer.
29
--                                                           
30
--              THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     
31
--      EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   
32
--      TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   
33
--      FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      
34
--      OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         
35
--      INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    
36
--      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   
37
--      GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        
38
--      BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  
39
--      LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  
40
--      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  
41
--      OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         
42
--      POSSIBILITY OF SUCH DAMAGE. 
43
--
44
 
45
library ieee;
46
use ieee.std_logic_1164.all;
47
use ieee.std_logic_unsigned.all;
48
use ieee.math_real.all;
49
use ieee.std_logic_arith.all;
50
use ieee.std_logic_misc.all;
51
 
52
 
53
 
54
 
55
entity tb_fpu is
56
end tb_fpu;
57
 
58
architecture rtl of tb_fpu is
59
 
60
component fpu
61
    port (
62
        clk_i           : in std_logic;
63
        opa_i           : in std_logic_vector(31 downto 0);
64
        opb_i           : in std_logic_vector(31 downto 0);
65
        fpu_op_i                : in std_logic_vector(2 downto 0);
66
        rmode_i                 : in std_logic_vector(1 downto 0);
67
        output_o        : out std_logic_vector(31 downto 0);
68
                ine_o                   : out std_logic;
69
        overflow_o      : out std_logic;
70
        underflow_o     : out std_logic;
71
        div_zero_o      : out std_logic;
72
        inf_o                   : out std_logic;
73
        zero_o                  : out std_logic;
74
        qnan_o                  : out std_logic;
75
        snan_o                  : out std_logic;
76
        start_i                 : in  std_logic;
77
        ready_o                 : out std_logic
78
        );
79
end component;
80
 
81
component fpu_y
82
   port(
83
      clk         : in     std_logic  ;
84
      fpu_op      : in     std_logic_vector (2 downto 0) ;
85
      opa         : in     std_logic_vector (31 downto 0) ;
86
      opb         : in     std_logic_vector (31 downto 0) ;
87
      rmode       : in     std_logic_vector (1 downto 0) ;
88
      div_by_zero : out    std_logic  ;
89
      fpout       : out    std_logic_vector (31 downto 0) ;
90
      ine         : out    std_logic  ;
91
      inf         : out    std_logic  ;
92
      overflow    : out    std_logic  ;
93
      qnan        : out    std_logic  ;
94
      snan        : out    std_logic  ;
95
      underflow   : out    std_logic  ;
96
      zero        : out    std_logic
97
      );
98
end component;
99
 
100
signal clk_i : std_logic:= '0';
101
signal opa_i, opb_i : std_logic_vector(31 downto 0);
102
signal fpu_op_i         : std_logic_vector(2 downto 0);
103
signal rmode_i : std_logic_vector(1 downto 0);
104
signal output_o : std_logic_vector(31 downto 0);
105
signal start_i, ready_o : std_logic ;
106
signal ine_o, overflow_o, underflow_o, div_zero_o, inf_o, zero_o, qnan_o, snan_o: std_logic;
107
 
108
signal fpout_y : std_logic_vector (31 downto 0) ;
109
signal ine_y, inf_y, overflow_y, qnan_y, snan_y, underflow_y, zero_y, div_by_zero_y : std_logic ;
110
 
111
constant CLK_PERIOD :time := 10 ns; -- period of clk period
112
 
113
begin
114
 
115
 
116
    -- instantiate the fpu
117
    i_fpu: fpu port map (
118
                        clk_i => clk_i,
119
                        opa_i => opa_i,
120
                        opb_i => opb_i,
121
                        fpu_op_i =>     fpu_op_i,
122
                        rmode_i => rmode_i,
123
                        output_o => output_o,
124
                        ine_o => ine_o,
125
                        overflow_o => overflow_o,
126
                        underflow_o => underflow_o,
127
                div_zero_o => div_zero_o,
128
                inf_o => inf_o,
129
                zero_o => zero_o,
130
                qnan_o => qnan_o,
131
                snan_o => snan_o,
132
                start_i => start_i,
133
                ready_o => ready_o);
134
 
135
 
136
                -- instantiate the fpu
137
    i_fpu_y: fpu_y port map (
138
        clk => clk_i,
139
        fpu_op => fpu_op_i,
140
        opa => opa_i,
141
        opb => opb_i,
142
        rmode => rmode_i,
143
        div_by_zero => div_by_zero_y,
144
        fpout => fpout_y,
145
        ine => ine_y,
146
        inf => inf_y,
147
        overflow => overflow_y,
148
        qnan => qnan_y,
149
        snan => snan_y,
150
        underflow => underflow_y,
151
        zero => zero_y);
152
 
153
 
154
    ---------------------------------------------------------------------------
155
    -- toggle clock
156
    ---------------------------------------------------------------------------
157
    clk_i <= not(clk_i) after 5 ns;
158
 
159
 
160
    verify : process
161
    begin
162
 
163
--************* Add/Substract Test Vectors****************
164
        --                        seeeeeeeefffffffffffffffffffffff
165
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000100000000000000000000000";
166
                        opb_i <= "00000000100000000000000000000000";
167
                        fpu_op_i <= "000";
168
                        rmode_i <= "00";
169
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
170
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
171
                        report "Error!!!"
172
                        severity failure;
173
 
174
        --                        seeeeeeeefffffffffffffffffffffff
175
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000110000000000000000000010";
176
                        opb_i <= "00000000100000000000000000000000";
177
                        fpu_op_i <= "000";
178
                        rmode_i <= "00";
179
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
180
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
181
                        report "Error!!!"
182
                        severity failure;
183
 
184
        --                        seeeeeeeefffffffffffffffffffffff
185
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "10000000000000000000000000000111";
186
                        opb_i <= "10000000001111111111111111111000";
187
                        fpu_op_i <= "000";
188
                        rmode_i <= "00";
189
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
190
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
191
                        report "Error!!!"
192
                        severity failure;
193
 
194
        --                        seeeeeeeefffffffffffffffffffffff
195
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
196
                        opb_i <= "00000111000101111000001111100110";
197
                        fpu_op_i <= "000";
198
                        rmode_i <= "00";
199
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
200
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
201
                        report "Error!!!"
202
                        severity failure;
203
 
204
        --                        seeeeeeeefffffffffffffffffffffff
205
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "10001100111110100011111000101000";
206
                        opb_i <= "10001100111101111000001111100110";
207
                        fpu_op_i <= "000";
208
                        rmode_i <= "00";
209
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
210
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
211
                        report "Error!!!"
212
                        severity failure;
213
 
214
        --                        seeeeeeeefffffffffffffffffffffff
215
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
216
                        opb_i <= "01111111110000000000000000000001";
217
                        fpu_op_i <= "000";
218
                        rmode_i <= "00";
219
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
220
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
221
                        report "Error!!!"
222
                        severity failure;
223
 
224
                        --                        seeeeeeeefffffffffffffffffffffff
225
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
226
                        opb_i <= "01111111100000000000000000000001";
227
                        fpu_op_i <= "000";
228
                        rmode_i <= "00";
229
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
230
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
231
                        report "Error!!!"
232
                        severity failure;
233
 
234
                        --                        seeeeeeeefffffffffffffffffffffff
235
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000100100000000000000000010";
236
                        opb_i <= "00000000100000000000000000000000";
237
                        fpu_op_i <= "000";
238
                        rmode_i <= "00";
239
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
240
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
241
                        report "Error!!!"
242
                        severity failure;
243
 
244
                        --                        seeeeeeeefffffffffffffffffffffff
245
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00100011001000000000000000000000";
246
                        opb_i <= "00101001100100000000000000000100";
247
                        fpu_op_i <= "000";
248
                        rmode_i <= "00";
249
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
250
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
251
                        report "Error!!!"
252
                        severity failure;
253
 
254
                        --                        seeeeeeeefffffffffffffffffffffff
255
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "01110011011100000000000000000011";
256
                        opb_i <= "01101100100000000000000000000000";
257
                        fpu_op_i <= "000";
258
                        rmode_i <= "00";
259
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
260
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
261
                        report "Error!!!"
262
                        severity failure;
263
 
264
                        --                        seeeeeeeefffffffffffffffffffffff
265
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000000000011111111111111111";
266
                        opb_i <= "00000000000000000000000000111111";
267
                        fpu_op_i <= "000";
268
                        rmode_i <= "00";
269
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
270
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
271
                        report "Error!!!"
272
                        severity failure;
273
 
274
                        --                        seeeeeeeefffffffffffffffffffffff
275
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000111111111111111111111111111";
276
                        opb_i <= "00000000000001000000000000000000";
277
                        fpu_op_i <= "000";
278
                        rmode_i <= "00";
279
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
280
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
281
                        report "Error!!!"
282
                        severity failure;
283
 
284
                        --                        seeeeeeeefffffffffffffffffffffff
285
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "01110011011100000000000000000011";
286
                        opb_i <= "01101100100000000000000000000000";
287
                        fpu_op_i <= "000";
288
                        rmode_i <= "00";
289
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
290
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
291
                        report "Error!!!"
292
                        severity failure;
293
 
294
                wait for CLK_PERIOD; start_i <= '1'; -- MIN #1
295
                --                seeeeeeeefffffffffffffffffffffff      
296
                opa_i <= "00000000000000000000000000000000";
297
                        opb_i <= "00000000000000000000000000000000";
298
                        fpu_op_i <= "000";
299
                        rmode_i <= "00";
300
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
301
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
302
                        report "Error!!!"
303
                        severity failure;
304
 
305
 
306
                wait for CLK_PERIOD; start_i <= '1'; -- MIN #2
307
                --                seeeeeeeefffffffffffffffffffffff      
308
                opa_i <= "00000000000000000000000000000000";
309
                        opb_i <= "00000000000000000000000000000001";
310
                        fpu_op_i <= "000";
311
                        rmode_i <= "00";
312
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
313
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
314
                        report "Error!!!"
315
                        severity failure;
316
 
317
                                        wait for CLK_PERIOD; start_i <= '1'; -- MAX
318
                --                seeeeeeeefffffffffffffffffffffff      
319
                opa_i <= "01111111011111111111111111111111";
320
                        opb_i <= "00000000000000000000000000000000";
321
                        fpu_op_i <= "000";
322
                        rmode_i <= "00";
323
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
324
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
325
                        report "Error!!!"
326
                        severity failure;
327
 
328
                                        wait for CLK_PERIOD; start_i <= '1'; -- INF
329
                --                seeeeeeeefffffffffffffffffffffff      
330
                opa_i <= "01111111100000000000000000000000";
331
                        opb_i <= "00000000000000000000000000000000";
332
                        fpu_op_i <= "000";
333
                        rmode_i <= "00";
334
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
335
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
336
                        report "Error!!!"
337
                        severity failure;
338
 
339
                                        wait for CLK_PERIOD; start_i <= '1'; -- QNaN
340
                --                seeeeeeeefffffffffffffffffffffff      
341
                opa_i <= "01111111111111111111111111111111";
342
                        opb_i <= "00000000000000000000000000000000";
343
                        fpu_op_i <= "000";
344
                        rmode_i <= "00";
345
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
346
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
347
                        report "Error!!!"
348
                        severity failure;
349
 
350
                                        wait for CLK_PERIOD; start_i <= '1'; -- SNaN
351
                --                seeeeeeeefffffffffffffffffffffff      
352
                opa_i <= "01111001111111111111111111111111";
353
                        opb_i <= "01111111100000000000000000000001";
354
                        fpu_op_i <= "000";
355
                        rmode_i <= "00";
356
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
357
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
358
                        report "Error!!!"
359
                        severity failure;
360
 
361
                                        wait for CLK_PERIOD; start_i <= '1'; -- inf + inf
362
                --                seeeeeeeefffffffffffffffffffffff      
363
                opa_i <= "01111111100000000000000000000000";
364
                        opb_i <= "01111111100000000000000000000000";
365
                        fpu_op_i <= "000";
366
                        rmode_i <= "00";
367
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
368
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
369
                        report "Error!!!"
370
                        severity failure;
371
 
372
                                        wait for CLK_PERIOD; start_i <= '1'; -- -inf + inf
373
                --                seeeeeeeefffffffffffffffffffffff      
374
                opa_i <= "11111111100000000000000000000000";
375
                        opb_i <= "01111111100000000000000000000000";
376
                        fpu_op_i <= "000";
377
                        rmode_i <= "00";
378
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
379
                        assert output_o(30 downto 0)=fpout_y(30 downto 0) and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
380
                        report "Error!!!"
381
                        severity failure;
382
 
383
                        --misc.
384
                        --                        seeeeeeeefffffffffffffffffffffff
385
                wait for CLK_PERIOD; start_i <= '1';
386
                opa_i <= "11110011011100000000000000000011";
387
                        opb_i <= "00000000111111111111111111111111";
388
                        fpu_op_i <= "000";
389
                        rmode_i <= "00";
390
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
391
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
392
                        report "Error!!!"
393
                        severity failure;
394
 
395
 
396
                -- substract--------------------
397
 
398
                                --                        seeeeeeeefffffffffffffffffffffff
399
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000100000000000000000000000";
400
                        opb_i <= "00000000100000000000000000000000";
401
                        fpu_op_i <= "001";
402
                        rmode_i <= "00";
403
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
404
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
405
                        report "Error!!!"
406
                        severity failure;
407
 
408
                        -------
409
        --                        seeeeeeeefffffffffffffffffffffff
410
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000110000000000000000000010";
411
                        opb_i <= "00000000100000000000000000000000";
412
                        fpu_op_i <= "001";
413
                        rmode_i <= "00";
414
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
415
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
416
                        report "Error!!!"
417
                        severity failure;
418
 
419
        --                        seeeeeeeefffffffffffffffffffffff
420
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "10000000000000000000000000000111";
421
                        opb_i <= "10000000001111111111111111111000";
422
                        fpu_op_i <= "001";
423
                        rmode_i <= "00";
424
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
425
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
426
                        report "Error!!!"
427
                        severity failure;
428
 
429
        --                        seeeeeeeefffffffffffffffffffffff
430
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
431
                        opb_i <= "00000111000101111000001111100110";
432
                        fpu_op_i <= "001";
433
                        rmode_i <= "00";
434
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
435
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
436
                        report "Error!!!"
437
                        severity failure;
438
 
439
        --                        seeeeeeeefffffffffffffffffffffff
440
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "10001100111110100011111000101000";
441
                        opb_i <= "10001100111101111000001111100110";
442
                        fpu_op_i <= "001";
443
                        rmode_i <= "00";
444
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
445
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
446
                        report "Error!!!"
447
                        severity failure;
448
 
449
        --                        seeeeeeeefffffffffffffffffffffff
450
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
451
                        opb_i <= "01111111110000000000000000000001";
452
                        fpu_op_i <= "001";
453
                        rmode_i <= "00";
454
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
455
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
456
                        report "Error!!!"
457
                        severity failure;
458
 
459
                        --                        seeeeeeeefffffffffffffffffffffff
460
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
461
                        opb_i <= "01111111100000000000000000000001";
462
                        fpu_op_i <= "001";
463
                        rmode_i <= "00";
464
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
465
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
466
                        report "Error!!!"
467
                        severity failure;
468
 
469
                        --                        seeeeeeeefffffffffffffffffffffff
470
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000100100000000000000000010";
471
                        opb_i <= "00000000100000000000000000000000";
472
                        fpu_op_i <= "001";
473
                        rmode_i <= "00";
474
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
475
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
476
                        report "Error!!!"
477
                        severity failure;
478
 
479
                        --                        seeeeeeeefffffffffffffffffffffff
480
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00100011001000000000000000000000";
481
                        opb_i <= "00101001100100000000000000000100";
482
                        fpu_op_i <= "001";
483
                        rmode_i <= "00";
484
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
485
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
486
                        report "Error!!!"
487
                        severity failure;
488
 
489
                        --                        seeeeeeeefffffffffffffffffffffff
490
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "01110011011100000000000000000011";
491
                        opb_i <= "01101100100000000000000000000000";
492
                        fpu_op_i <= "001";
493
                        rmode_i <= "00";
494
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
495
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
496
                        report "Error!!!"
497
                        severity failure;
498
 
499
                        --                        seeeeeeeefffffffffffffffffffffff
500
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000000000011111111111111111";
501
                        opb_i <= "00000000000000000000000000111111";
502
                        fpu_op_i <= "001";
503
                        rmode_i <= "00";
504
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
505
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
506
                        report "Error!!!"
507
                        severity failure;
508
 
509
                        --                        seeeeeeeefffffffffffffffffffffff
510
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000111111111111111111111111111";
511
                        opb_i <= "00000000000001000000000000000000";
512
                        fpu_op_i <= "001";
513
                        rmode_i <= "00";
514
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
515
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
516
                        report "Error!!!"
517
                        severity failure;
518
 
519
                        --                        seeeeeeeefffffffffffffffffffffff
520
        wait for CLK_PERIOD; start_i <= '1'; opa_i <= "01110011011100000000000000000011";
521
                        opb_i <= "01101100100000000000000000000000";
522
                        fpu_op_i <= "001";
523
                        rmode_i <= "00";
524
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
525
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
526
                        report "Error!!!"
527
                        severity failure;
528
 
529
                wait for CLK_PERIOD; start_i <= '1'; -- MIN #1
530
                --                seeeeeeeefffffffffffffffffffffff      
531
                opa_i <= "00000000000000000000000000000000";
532
                        opb_i <= "00000000000000000000000000000000";
533
                        fpu_op_i <= "001";
534
                        rmode_i <= "00";
535
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
536
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
537
                        report "Error!!!"
538
                        severity failure;
539
 
540
 
541
                wait for CLK_PERIOD; start_i <= '1'; -- MIN #2
542
                --                seeeeeeeefffffffffffffffffffffff      
543
                opa_i <= "00000000000000000000000000000000";
544
                        opb_i <= "00000000000000000000000000000001";
545
                        fpu_op_i <= "001";
546
                        rmode_i <= "00";
547
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
548
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
549
                        report "Error!!!"
550
                        severity failure;
551
 
552
                                        wait for CLK_PERIOD; start_i <= '1'; -- MAX
553
                --                seeeeeeeefffffffffffffffffffffff      
554
                opa_i <= "01111111011111111111111111111111";
555
                        opb_i <= "00000000000000000000000000000000";
556
                        fpu_op_i <= "001";
557
                        rmode_i <= "00";
558
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
559
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
560
                        report "Error!!!"
561
                        severity failure;
562
 
563
                                        wait for CLK_PERIOD; start_i <= '1'; -- INF
564
                --                seeeeeeeefffffffffffffffffffffff      
565
                opa_i <= "01111111100000000000000000000000";
566
                        opb_i <= "00000000000000000000000000000000";
567
                        fpu_op_i <= "001";
568
                        rmode_i <= "00";
569
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
570
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
571
                        report "Error!!!"
572
                        severity failure;
573
 
574
                                        wait for CLK_PERIOD; start_i <= '1'; -- QNaN
575
                --                seeeeeeeefffffffffffffffffffffff      
576
                opa_i <= "01111111111111111111111111111111";
577
                        opb_i <= "00000000000000000000000000000000";
578
                        fpu_op_i <= "001";
579
                        rmode_i <= "00";
580
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
581
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
582
                        report "Error!!!"
583
                        severity failure;
584
 
585
                                        wait for CLK_PERIOD; start_i <= '1'; -- SNaN
586
                --                seeeeeeeefffffffffffffffffffffff      
587
                opa_i <= "01111001111111111111111111111111";
588
                        opb_i <= "01111111100000000000000000000001";
589
                        fpu_op_i <= "001";
590
                        rmode_i <= "00";
591
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
592
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
593
                        report "Error!!!"
594
                        severity failure;
595
 
596
                                        wait for CLK_PERIOD; start_i <= '1'; -- inf + inf
597
                --                seeeeeeeefffffffffffffffffffffff      
598
                opa_i <= "01111111100000000000000000000000";
599
                        opb_i <= "01111111100000000000000000000000";
600
                        fpu_op_i <= "001";
601
                        rmode_i <= "00";
602
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
603
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
604
                        report "Error!!!"
605
                        severity failure;
606
 
607
                                        wait for CLK_PERIOD; start_i <= '1'; -- -inf + inf
608
                --                seeeeeeeefffffffffffffffffffffff      
609
                opa_i <= "11111111100000000000000000000000";
610
                        opb_i <= "01111111100000000000000000000000";
611
                        fpu_op_i <= "001";
612
                        rmode_i <= "00";
613
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
614
                        assert output_o(30 downto 0)=fpout_y(30 downto 0) and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
615
                        report "Error!!!"
616
                        severity failure;
617
 
618
 
619
 
620
--************* Multiply Test Vectors************************************************************
621
 
622
                    -- round to nearset even 
623
                    --            seeeeeeeefffffffffffffffffffffff
624
                    wait for CLK_PERIOD; start_i <= '1';
625
                    opa_i <= "00000000100000000000000000000000";
626
                        opb_i <= "00000000100000000000000000000000";
627
                        fpu_op_i <= "010";
628
                        rmode_i <= "00";
629
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
630
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
631
                        report "Error!!!"
632
                        severity failure;
633
 
634
                         --               seeeeeeeefffffffffffffffffffffff
635
                    wait for CLK_PERIOD; start_i <= '1';
636
                    opa_i <= "01000000100000000000000000000000";
637
                        opb_i <= "01000000100000000000000000000000";
638
                        fpu_op_i <= "010";
639
                        rmode_i <= "00";
640
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
641
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
642
                        report "Error!!!"
643
                        severity failure;
644
 
645
                        -- underflow = 1 when tiny(2^-127) and inexact
646
 
647
                        -- 2^-127x0.1 * 2^0x1.0 = 2^-127x0.1 (-127 in dn = -126)
648
                        --                seeeeeeeefffffffffffffffffffffff
649
                    wait for CLK_PERIOD; start_i <= '1';
650
                    opa_i <= "00000000010000000000000000000000";
651
                        opb_i <= "00111111100000000000000000000000";
652
                        fpu_op_i <= "010";
653
                        rmode_i <= "00";
654
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
655
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
656
                        report "Error!!!"
657
                        severity failure;
658
 
659
                        -- 2^-127x0.1 * 2^0x1.11 = 2^-127x0.1110
660
                        --                seeeeeeeefffffffffffffffffffffff
661
                    wait for CLK_PERIOD; start_i <= '1';
662
                    opa_i <= "00000000010000000000000000000000";
663
                        opb_i <= "00111111111000000000000000000000";
664
                        fpu_op_i <= "010";
665
                        rmode_i <= "00";
666
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
667
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
668
                        report "Error!!!"
669
                        severity failure;
670
 
671
                        -- 2^-127x0.1 * 2^-1x1.0 = 2^-127x0.01
672
                        --                seeeeeeeefffffffffffffffffffffff
673
                    wait for CLK_PERIOD; start_i <= '1';
674
                    opa_i <= "00000000010000000000000000000000";
675
                        opb_i <= "00111111000000000000000000000000";
676
                        fpu_op_i <= "010";
677
                        rmode_i <= "00";
678
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
679
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
680
                        report "Error!!!"
681
                        severity failure;
682
 
683
                        -- 2^-127x0.1 * 2^-22x1.0 = 2^-127x0.0..01
684
                        --                seeeeeeeefffffffffffffffffffffff
685
                    wait for CLK_PERIOD; start_i <= '1';
686
                    opa_i <= "00000000010000000000000000000000";
687
                        opb_i <= "00110100100000000000000000000000";
688
                        fpu_op_i <= "010";
689
                        rmode_i <= "00";
690
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
691
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
692
                        report "Error!!!"
693
                        severity failure;
694
 
695
                        -- 2^-127x0.1 * 2^-45x1.0 = 2^-127x0.0..00
696
                        --                seeeeeeeefffffffffffffffffffffff
697
                    wait for CLK_PERIOD; start_i <= '1';
698
                    opa_i <= "00000000010000000000000000000000";
699
                        opb_i <= "00101001000000000000000000000000";
700
                        fpu_op_i <= "010";
701
                        rmode_i <= "00";
702
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
703
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
704
                        report "Error!!!"
705
                        severity failure;
706
 
707
                        -- 2^-127x0.1 * 2^-46x1.0 = 2^-127x0.0..00
708
                        --                seeeeeeeefffffffffffffffffffffff
709
                    wait for CLK_PERIOD; start_i <= '1';
710
                    opa_i <= "00000000010000000000000000000000";
711
                        opb_i <= "00101000100000000000000000000000";
712
                        fpu_op_i <= "010";
713
                        rmode_i <= "00";
714
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
715
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
716
                        report "Error!!!"
717
                        severity failure;
718
 
719
                        -- 2^-127x0.1 * 2^-47x1.0 = 2^-127x0.0..00
720
                        --                seeeeeeeefffffffffffffffffffffff
721
                    wait for CLK_PERIOD; start_i <= '1';
722
                    opa_i <= "00000000010000000000000000000000";
723
                        opb_i <= "00101000000000000000000000000000";
724
                        fpu_op_i <= "010";
725
                        rmode_i <= "00";
726
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
727
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
728
                        report "Error!!!"
729
                        severity failure;
730
 
731
                        -- 2^-126x1.0 * 2^-1x1.0 = 2^-127x1.0
732
                        --                seeeeeeeefffffffffffffffffffffff
733
                    wait for CLK_PERIOD; start_i <= '1';
734
                    opa_i <= "00000000100000000000000000000000";
735
                        opb_i <= "00111111000000000000000000000000";
736
                        fpu_op_i <= "010";
737
                        rmode_i <= "00";
738
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
739
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
740
                        report "Error!!!"
741
                        severity failure;
742
 
743
                        -- 2^-126x1.0 * 2^-2x1.0 = 2^-127x0.1
744
                        --                seeeeeeeefffffffffffffffffffffff
745
                    wait for CLK_PERIOD; start_i <= '1';
746
                    opa_i <= "00000000100000000000000000000000";
747
                        opb_i <= "00111110100000000000000000000000";
748
                        fpu_op_i <= "010";
749
                        rmode_i <= "00";
750
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
751
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
752
                        report "Error!!!"
753
                        severity failure;
754
 
755
                        -- 2^-126x1.0 * 2^-46x1.0 = 2^-127x0.0..0
756
                        --                seeeeeeeefffffffffffffffffffffff
757
                    wait for CLK_PERIOD; start_i <= '1';
758
                    opa_i <= "00000000100000000000000000000000";
759
                        opb_i <= "00101000100000000000000000000000";
760
                        fpu_op_i <= "010";
761
                        rmode_i <= "00";
762
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
763
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
764
                        report "Error!!!"
765
                        severity failure;
766
 
767
                        -- 2^-126x1.0 * 2^-47x1.0 = 2^-127x0.0..0 - shr 46
768
                        --                seeeeeeeefffffffffffffffffffffff
769
                    wait for CLK_PERIOD; start_i <= '1';
770
                    opa_i <= "00000000100000000000000000000000";
771
                        opb_i <= "00101000000000000000000000000000";
772
                        fpu_op_i <= "010";
773
                        rmode_i <= "00";
774
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
775
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
776
                        report "Error!!!"
777
                        severity failure;
778
 
779
                        -- 2^-126x1.0 * 2^-48x1.0 = 2^-127x0.0..0 - shr 46
780
                        --                seeeeeeeefffffffffffffffffffffff
781
                    wait for CLK_PERIOD; start_i <= '1';
782
                    opa_i <= "00000000100000000000000000000000";
783
                        opb_i <= "00100111100000000000000000000000";
784
                        fpu_op_i <= "010";
785
                        rmode_i <= "00";
786
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
787
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
788
                        report "Error!!!"
789
                        severity failure;
790
 
791
                        -- e^128 x 1
792
                        --                seeeeeeeefffffffffffffffffffffff
793
                    wait for CLK_PERIOD; start_i <= '1';
794
                    opa_i <= "00000001100000000000000000000000";
795
                        opb_i <= "00111110100000000000000000000000";
796
                        fpu_op_i <= "010";
797
                        rmode_i <= "00";
798
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
799
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
800
                        report "Error!!!"
801
                        severity failure;
802
 
803
                        -- e^127 x 1
804
                        --                seeeeeeeefffffffffffffffffffffff
805
                    wait for CLK_PERIOD; start_i <= '1';
806
                    opa_i <= "00000001100000000000000000000000";
807
                        opb_i <= "00111110000000000000000000000000";
808
                        fpu_op_i <= "010";
809
                        rmode_i <= "00";
810
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
811
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
812
                        -- and underflow_o=underflow_y
813
                        report "Error!!!"
814
                        severity failure;
815
 
816
                        -- e^126 x 1
817
                        --                seeeeeeeefffffffffffffffffffffff
818
                    wait for CLK_PERIOD; start_i <= '1';
819
                    opa_i <= "00000001100000000000000000000000";
820
                        opb_i <= "00111101100000000000000000000000";
821
                        fpu_op_i <= "010";
822
                        rmode_i <= "00";
823
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
824
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
825
                        report "Error!!!"
826
                        severity failure;
827
 
828
                         --               seeeeeeeefffffffffffffffffffffff
829
                    wait for CLK_PERIOD; start_i <= '1';
830
                    opa_i <= "00000111111100000000000000000000";
831
                        opb_i <= "00000000100000000000000000000000";
832
                        fpu_op_i <= "010";
833
                        rmode_i <= "00";
834
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
835
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
836
                        report "Error!!!"
837
                        severity failure;
838
 
839
                         --               seeeeeeeefffffffffffffffffffffff
840
                    wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000001111111111111111111111";
841
                        opb_i <= "00000000000000000000000000010000";
842
                        fpu_op_i <= "010";
843
                        rmode_i <= "00";
844
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
845
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
846
                        report "Error!!!"
847
                        severity failure;
848
 
849
                         --               seeeeeeeefffffffffffffffffffffff
850
                    wait for CLK_PERIOD; start_i <= '1'; opa_i <= "10000000011101111111111111111101";
851
                        opb_i <= "00111010000000000000000000000001";
852
                        fpu_op_i <= "010";
853
                        rmode_i <= "00";
854
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
855
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
856
                        report "Error!!!"
857
                        severity failure;
858
 
859
                        -- 2^-127x0.11 * 2^-0x1.0 = 2^-127x0.11
860
                        --                seeeeeeeefffffffffffffffffffffff
861
                    wait for CLK_PERIOD; start_i <= '1';
862
                    opa_i <= "00000000011000000000000000000000";
863
                        opb_i <= "00111111100000000000000000000000";
864
                        fpu_op_i <= "010";
865
                        rmode_i <= "00";
866
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
867
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
868
                        report "Error!!!"
869
                        severity failure;
870
 
871
                        -- 2^-127x0.11 * 2^-1x1.0 = 2^-127x0.11
872
                        --                seeeeeeeefffffffffffffffffffffff
873
                    wait for CLK_PERIOD; start_i <= '1';
874
                    opa_i <= "00000000011000000000000000000000";
875
                        opb_i <= "00111111000000000000000000000000";
876
                        fpu_op_i <= "010";
877
                        rmode_i <= "00";
878
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
879
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
880
                        report "Error!!!"
881
                        severity failure;
882
 
883
 
884
                        -- 2^-127x0.11 * 2^-2x1.11 
885
                        --                seeeeeeeefffffffffffffffffffffff
886
                    wait for CLK_PERIOD; start_i <= '1';
887
                    opa_i <= "00000000011000000000000000000000";
888
                        opb_i <= "00111110111000000000000000000000";
889
                        fpu_op_i <= "010";
890
                        rmode_i <= "00";
891
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
892
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
893
                        report "Error!!!"
894
                        severity failure;
895
 
896
 
897
                        -- 2^-127x0.11 * 2^-0x1.11 
898
                        --                seeeeeeeefffffffffffffffffffffff
899
                    wait for CLK_PERIOD; start_i <= '1';
900
                    opa_i <= "00000000011000000000000000000000";
901
                        opb_i <= "00111111111000000000000000000000";
902
                        fpu_op_i <= "010";
903
                        rmode_i <= "00";
904
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
905
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y  and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
906
                        report "Error!!!"
907
                        severity failure;
908
 
909
                         --               seeeeeeeefffffffffffffffffffffff
910
                    wait for CLK_PERIOD; start_i <= '1';
911
                    opa_i <= "00000000011110000000000000000000";
912
                        opb_i <= "00111100111110000000000000000000";
913
                        fpu_op_i <= "010";
914
                        rmode_i <= "00";
915
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
916
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
917
                        report "Error!!!"
918
                        severity failure;
919
 
920
                         --               seeeeeeeefffffffffffffffffffffff
921
                    wait for CLK_PERIOD; start_i <= '1'; opa_i <= "01111111100000000000000000000000";
922
                        opb_i <= "00000111000101111000001111100110";
923
                        fpu_op_i <= "010";
924
                        rmode_i <= "00";
925
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
926
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
927
                        report "Error!!!"
928
                        severity failure;
929
 
930
                         --               seeeeeeeefffffffffffffffffffffff
931
                    wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000011111110100011111000101000";
932
                        opb_i <= "00000111000101111000001111100110";
933
                        fpu_op_i <= "010";
934
                        rmode_i <= "00";
935
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
936
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
937
                        report "Error!!!"
938
                        severity failure;
939
 
940
                         --               seeeeeeeefffffffffffffffffffffff
941
                    wait for CLK_PERIOD; start_i <= '1'; opa_i <= "00000000000000000000000000000000";
942
                        opb_i <= "00000111000101111000001111100110";
943
                        fpu_op_i <= "010";
944
                        rmode_i <= "00";
945
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
946
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
947
                        report "Error!!!"
948
                        severity failure;
949
 
950
 
951
                        --                seeeeeeeefffffffffffffffffffffff
952
                    wait for CLK_PERIOD; start_i <= '1';
953
                    opa_i <= "00000001100000000000000000000000";
954
                        opb_i <= "00110010100000000000000000000000";
955
                        fpu_op_i <= "010";
956
                        rmode_i <= "00";
957
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
958
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
959
                        report "Error!!!"
960
                        severity failure;
961
 
962
 
963
                        --                seeeeeeeefffffffffffffffffffffff
964
                    wait for CLK_PERIOD; start_i <= '1';
965
                    opa_i <= "00000000011000000000000000000000";
966
                        opb_i <= "00111111111000000000000000000000";
967
                        fpu_op_i <= "010";
968
                        rmode_i <= "00";
969
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
970
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
971
                        report "Error!!!"
972
                        severity failure;
973
 
974
                        --                seeeeeeeefffffffffffffffffffffff
975
                    wait for CLK_PERIOD; start_i <= '1';
976
                    opa_i <= "00000000110000000000000000000000";
977
                        opb_i <= "00111111000000000000000000000000";
978
                        fpu_op_i <= "010";
979
                        rmode_i <= "00";
980
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
981
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
982
                        report "Error!!!"
983
                        severity failure;
984
 
985
                        -- inf
986
                        --                seeeeeeeefffffffffffffffffffffff
987
                    wait for CLK_PERIOD; start_i <= '1';
988
                    opa_i <= "01111111110000000000000000000000";
989
                        opb_i <= "00000000000000000000000000000001";
990
                        fpu_op_i <= "010";
991
                        rmode_i <= "00";
992
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
993
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
994
                        report "Error!!!"
995
                        severity failure;
996
 
997
 
998
                        -- ******* check rounding ********---
999
 
1000
                        --Round to nearst even
1001
 
1002
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1003
                        -- fract2a= 000000000000000000000000010000000000000000000000
1004
                        --                seeeeeeeefffffffffffffffffffffff
1005
                    wait for CLK_PERIOD; start_i <= '1';
1006
                    opa_i <= "00000001100000000000000000000000";
1007
                        opb_i <= "00110010100000000000000000000000";
1008
                        fpu_op_i <= "010";
1009
                        rmode_i <= "00";
1010
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1011
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1012
                        report "Error!!!"
1013
                        severity failure;
1014
 
1015
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1016
                        -- fract2a= 000000000000000000000000110000000000000000000000
1017
                        --                seeeeeeeefffffffffffffffffffffff
1018
                    wait for CLK_PERIOD; start_i <= '1';
1019
                    opa_i <= "00000001110000000000000000000000";
1020
                        opb_i <= "00110010100000000000000000000000";
1021
                        fpu_op_i <= "010";
1022
                        rmode_i <= "00";
1023
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1024
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1025
                        report "Error!!!"
1026
                        severity failure;
1027
 
1028
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1029
                        -- fract2a= 000000000000000000000000010000001000000000000000
1030
                        --                seeeeeeeefffffffffffffffffffffff
1031
                    wait for CLK_PERIOD; start_i <= '1';
1032
                    opa_i <= "00000001100000001000000000000000";
1033
                        opb_i <= "00110010100000000000000000000000";
1034
                        fpu_op_i <= "010";
1035
                        rmode_i <= "00";
1036
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1037
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1038
                        report "Error!!!"
1039
                        severity failure;
1040
 
1041
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1042
                        -- fract2a= 000000000000000000000000010000000000000000000000..1
1043
                        --                seeeeeeeefffffffffffffffffffffff
1044
                    wait for CLK_PERIOD; start_i <= '1';
1045
                    opa_i <= "00000001100000000000000000000001";
1046
                        opb_i <= "00110010100000000000000000000000";
1047
                        fpu_op_i <= "010";
1048
                        rmode_i <= "00";
1049
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1050
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1051
                        report "Error!!!"
1052
                        severity failure;
1053
 
1054
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1055
                        -- fract2a= 000000000000000000000000000000000000000000000000..1
1056
                        --                seeeeeeeefffffffffffffffffffffff
1057
                    wait for CLK_PERIOD; start_i <= '1';
1058
                    opa_i <= "00000001100000000000000000000001";
1059
                        opb_i <= "00011001000000000000000000000000";
1060
                        fpu_op_i <= "010";
1061
                        rmode_i <= "00";
1062
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1063
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1064
                        report "Error!!!"
1065
                        severity failure;
1066
 
1067
                        -- round up
1068
 
1069
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1070
                        -- fract2a= 000000000000000000000000010000000000000000000000
1071
                        --                seeeeeeeefffffffffffffffffffffff
1072
                    wait for CLK_PERIOD; start_i <= '1';
1073
                    opa_i <= "00000001100000000000000000000000";
1074
                        opb_i <= "00110010100000000000000000000000";
1075
                        fpu_op_i <= "010";
1076
                        rmode_i <= "10";
1077
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1078
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1079
                        report "Error!!!"
1080
                        severity failure;
1081
 
1082
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1083
                        -- fract2a= 000000000000000000000000110000000000000000000000
1084
                        --                seeeeeeeefffffffffffffffffffffff
1085
                    wait for CLK_PERIOD; start_i <= '1';
1086
                    opa_i <= "00000001110000000000000000000000";
1087
                        opb_i <= "00110010100000000000000000000000";
1088
                        fpu_op_i <= "010";
1089
                        rmode_i <= "10";
1090
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1091
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1092
                        report "Error!!!"
1093
                        severity failure;
1094
 
1095
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1096
                        -- fract2a= 000000000000000000000000010000001000000000000000
1097
                        --                seeeeeeeefffffffffffffffffffffff
1098
                    wait for CLK_PERIOD; start_i <= '1';
1099
                    opa_i <= "00000001100000001000000000000000";
1100
                        opb_i <= "00110010100000000000000000000000";
1101
                        fpu_op_i <= "010";
1102
                        rmode_i <= "10";
1103
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1104
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1105
                        report "Error!!!"
1106
                        severity failure;
1107
 
1108
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1109
                        -- fract2a= 0000000000000000000000000100000000000000000000001
1110
                        --                seeeeeeeefffffffffffffffffffffff
1111
                    wait for CLK_PERIOD; start_i <= '1';
1112
                    opa_i <= "00000001100000000000000000000001";
1113
                        opb_i <= "00110010100000000000000000000000";
1114
                        fpu_op_i <= "010";
1115
                        rmode_i <= "10";
1116
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1117
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1118
                        report "Error!!!"
1119
                        severity failure;
1120
 
1121
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1122
                        -- fract2a= 000000000000000000000000000000000000000000000000..1
1123
                        --                seeeeeeeefffffffffffffffffffffff
1124
                    wait for CLK_PERIOD; start_i <= '1';
1125
                    opa_i <= "00000001100000000000000000000001";
1126
                        opb_i <= "00011001000000000000000000000000";
1127
                        fpu_op_i <= "010";
1128
                        rmode_i <= "10";
1129
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1130
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1131
                        report "Error!!!"
1132
                        severity failure;
1133
 
1134
 
1135
                        -- round down
1136
 
1137
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1138
                        -- fract2a= 000000000000000000000000010000000000000000000000
1139
                        --                seeeeeeeefffffffffffffffffffffff
1140
                    wait for CLK_PERIOD; start_i <= '1';
1141
                    opa_i <= "00000001100000000000000000000000";
1142
                        opb_i <= "00110010100000000000000000000000";
1143
                        fpu_op_i <= "010";
1144
                        rmode_i <= "11";
1145
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1146
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1147
                        report "Error!!!"
1148
                        severity failure;
1149
 
1150
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1151
                        -- fract2a= 000000000000000000000000110000000000000000000000
1152
                        --                seeeeeeeefffffffffffffffffffffff
1153
                    wait for CLK_PERIOD; start_i <= '1';
1154
                    opa_i <= "00000001110000000000000000000000";
1155
                        opb_i <= "00110010100000000000000000000000";
1156
                        fpu_op_i <= "010";
1157
                        rmode_i <= "11";
1158
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1159
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1160
                        report "Error!!!"
1161
                        severity failure;
1162
 
1163
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1164
                        -- fract2a= 000000000000000000000000010000001000000000000000
1165
                        --                seeeeeeeefffffffffffffffffffffff
1166
                    wait for CLK_PERIOD; start_i <= '1';
1167
                    opa_i <= "00000001100000001000000000000000";
1168
                        opb_i <= "00110010100000000000000000000000";
1169
                        fpu_op_i <= "010";
1170
                        rmode_i <= "11";
1171
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1172
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1173
                        report "Error!!!"
1174
                        severity failure;
1175
 
1176
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1177
                        -- fract2a= 0000000000000000000000000100000000000000000000001
1178
                        --                seeeeeeeefffffffffffffffffffffff
1179
                    wait for CLK_PERIOD; start_i <= '1';
1180
                    opa_i <= "00000001100000000000000000000001";
1181
                        opb_i <= "00110010100000000000000000000000";
1182
                        fpu_op_i <= "010";
1183
                        rmode_i <= "11";
1184
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1185
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1186
                        report "Error!!!"
1187
                        severity failure;
1188
 
1189
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1190
                        -- fract2a= 000000000000000000000000000000000000000000000000..1
1191
                        --                seeeeeeeefffffffffffffffffffffff
1192
                    wait for CLK_PERIOD; start_i <= '1';
1193
                    opa_i <= "00000001100000000000000000000001";
1194
                        opb_i <= "00011001000000000000000000000000";
1195
                        fpu_op_i <= "010";
1196
                        rmode_i <= "11";
1197
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1198
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1199
                        report "Error!!!"
1200
                        severity failure;
1201
 
1202
 
1203
                        -- round to zero
1204
 
1205
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1206
                        -- fract2a= 000000000000000000000000010000000000000000000000
1207
                        --                seeeeeeeefffffffffffffffffffffff
1208
                    wait for CLK_PERIOD; start_i <= '1';
1209
                    opa_i <= "00000001100000000000000000000000";
1210
                        opb_i <= "00110010100000000000000000000000";
1211
                        fpu_op_i <= "010";
1212
                        rmode_i <= "01";
1213
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1214
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1215
                        report "Error!!!"
1216
                        severity failure;
1217
 
1218
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1219
                        -- fract2a= 000000000000000000000000110000000000000000000000
1220
                        --                seeeeeeeefffffffffffffffffffffff
1221
                    wait for CLK_PERIOD; start_i <= '1';
1222
                    opa_i <= "00000001110000000000000000000000";
1223
                        opb_i <= "00110010100000000000000000000000";
1224
                        fpu_op_i <= "010";
1225
                        rmode_i <= "01";
1226
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1227
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1228
                        report "Error!!!"
1229
                        severity failure;
1230
 
1231
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1232
                        -- fract2a= 000000000000000000000000010000001000000000000000
1233
                        --                seeeeeeeefffffffffffffffffffffff
1234
                    wait for CLK_PERIOD; start_i <= '1';
1235
                    opa_i <= "00000001100000001000000000000000";
1236
                        opb_i <= "00110010100000000000000000000000";
1237
                        fpu_op_i <= "010";
1238
                        rmode_i <= "01";
1239
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1240
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1241
                        report "Error!!!"
1242
                        severity failure;
1243
 
1244
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1245
                        -- fract2a= 0000000000000000000000000100000000000000000000001
1246
                        --                seeeeeeeefffffffffffffffffffffff
1247
                    wait for CLK_PERIOD; start_i <= '1';
1248
                    opa_i <= "00000001100000000000000000000001";
1249
                        opb_i <= "00110010100000000000000000000000";
1250
                        fpu_op_i <= "010";
1251
                        rmode_i <= "01";
1252
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1253
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1254
                        report "Error!!!"
1255
                        severity failure;
1256
 
1257
                        --                      xx00000000000000000000000xxxxxxxxxxxxxxxxxxxxxxx
1258
                        -- fract2a= 000000000000000000000000000000000000000000000000..1
1259
                        --                seeeeeeeefffffffffffffffffffffff
1260
                    wait for CLK_PERIOD; start_i <= '1';
1261
                    opa_i <= "00000001100000000000000000000001";
1262
                        opb_i <= "00011001000000000000000000000000";
1263
                        fpu_op_i <= "010";
1264
                        rmode_i <= "01";
1265
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1266
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y and underflow_y=underflow_o
1267
                        report "Error!!!"
1268
                        severity failure;
1269
 
1270
 
1271
                        -- inf 2^100x1.0 * 2^128x1.0 =
1272
                        --                seeeeeeeefffffffffffffffffffffff
1273
                    wait for CLK_PERIOD; start_i <= '1';
1274
                    opa_i <= "01110001100000000000000000000000";
1275
                        opb_i <= "01001101100000000000000000000001";
1276
                        fpu_op_i <= "010";
1277
                        rmode_i <= "00";
1278
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1279
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1280
                        report "Error!!!"
1281
                        severity failure;
1282
 
1283
                        -- inf * 0
1284
                        --                seeeeeeeefffffffffffffffffffffff
1285
                    wait for CLK_PERIOD; start_i <= '1';
1286
                    opa_i <= "01111111110000000000000000000000";
1287
                        opb_i <= "00000000000000000000000000000000";
1288
                        fpu_op_i <= "010";
1289
                        rmode_i <= "00";
1290
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1291
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1292
                        report "Error!!!"
1293
                        severity failure;
1294
 
1295
                        -- Qnan * n
1296
                        --                seeeeeeeefffffffffffffffffffffff
1297
                    wait for CLK_PERIOD; start_i <= '1';
1298
                    opa_i <= "01111111110000000000000000000001";
1299
                        opb_i <= "00000010000000000000000000000000";
1300
                        fpu_op_i <= "010";
1301
                        rmode_i <= "00";
1302
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1303
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1304
                        report "Error!!!"
1305
                        severity failure;
1306
 
1307
                        -- Snan * n
1308
                        --                seeeeeeeefffffffffffffffffffffff
1309
                    wait for CLK_PERIOD; start_i <= '1';
1310
                    opa_i <= "01111111100000000000000000000001";
1311
                        opb_i <= "00000010000000000000000000000000";
1312
                        fpu_op_i <= "010";
1313
                        rmode_i <= "00";
1314
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1315
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1316
                        report "Error!!!"
1317
                        severity failure;
1318
 
1319
 
1320
--************* Division Test Vectors************************************************************       
1321
 
1322
                    -- round to nearset even 
1323
                    --            seeeeeeeefffffffffffffffffffffff
1324
                    wait for CLK_PERIOD; start_i <= '1';
1325
                    opa_i <= "01000001101010000000000000000000"; --21 
1326
                        opb_i <= "01000000010000000000000000000000"; --3
1327
                        fpu_op_i <= "011";
1328
                        rmode_i <= "00";
1329
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1330
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1331
                        report "Error!!!"
1332
                        severity failure;
1333
 
1334
                    --            seeeeeeeefffffffffffffffffffffff
1335
                    wait for CLK_PERIOD; start_i <= '1';
1336
                    opa_i <= "01000001111111111111111111111111";
1337
                        opb_i <= "01000000000000000000000000000000";
1338
                        fpu_op_i <= "011";
1339
                        rmode_i <= "00";
1340
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1341
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1342
                        report "Error!!!"
1343
                        severity failure;
1344
 
1345
                        --                seeeeeeeefffffffffffffffffffffff
1346
                    wait for CLK_PERIOD; start_i <= '1';
1347
                    opa_i <= "00111111100000000000000000000000";
1348
                        opb_i <= "01000000010000000000000000000000";
1349
                        fpu_op_i <= "011";
1350
                        rmode_i <= "00";
1351
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1352
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1353
                        report "Error!!!"
1354
                        severity failure;
1355
 
1356
                        -- 0 / x
1357
                        --                seeeeeeeefffffffffffffffffffffff
1358
                    wait for CLK_PERIOD; start_i <= '1';
1359
                    opa_i <= "00000000000000000000000000000000";
1360
                        opb_i <= "01000000010000000000000000000000";
1361
                        fpu_op_i <= "011";
1362
                        rmode_i <= "00";
1363
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1364
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1365
                        report "Error!!!"
1366
                        severity failure;
1367
 
1368
                        -- x / 0
1369
                        --                seeeeeeeefffffffffffffffffffffff
1370
                    wait for CLK_PERIOD; start_i <= '1';
1371
                    opa_i <= "01000000000000000000000000000000";
1372
                        opb_i <= "00000000000000000000000000000000";
1373
                        fpu_op_i <= "011";
1374
                        rmode_i <= "00";
1375
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1376
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1377
                        report "Error!!!"
1378
                        severity failure;
1379
 
1380
 
1381
                        -- overflow
1382
                        --                seeeeeeeefffffffffffffffffffffff
1383
                    wait for CLK_PERIOD; start_i <= '1';
1384
                    opa_i <= "01000000000000000000000000000000";
1385
                        opb_i <= "00000000010000000000000000000000";
1386
                        fpu_op_i <= "011";
1387
                        rmode_i <= "00";
1388
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1389
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1390
                        report "Error!!!"
1391
                        severity failure;
1392
 
1393
                        --                seeeeeeeefffffffffffffffffffffff
1394
                    wait for CLK_PERIOD; start_i <= '1';
1395
                    opa_i <= "00000000010100000000000000000000";
1396
                        opb_i <= "00000100010000000000000000000000";
1397
                        fpu_op_i <= "011";
1398
                        rmode_i <= "00";
1399
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1400
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1401
                        report "Error!!!"
1402
                        severity failure;
1403
 
1404
                        --                seeeeeeeefffffffffffffffffffffff
1405
                    wait for CLK_PERIOD; start_i <= '1';
1406
                    opa_i <= "10000000010100000000000000000000";
1407
                        opb_i <= "00000000010000000000000000011000";
1408
                        fpu_op_i <= "011";
1409
                        rmode_i <= "00";
1410
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1411
                        assert output_o=fpout_y and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1412
                        report "Error!!!"
1413
                        severity failure;
1414
 
1415
                        -- inf / inf
1416
                        --                seeeeeeeefffffffffffffffffffffff
1417
                    wait for CLK_PERIOD; start_i <= '1';
1418
                    opa_i <= "01111111111111111111111111111111";
1419
                        opb_i <= "01111111111111111111111111111111";
1420
                        fpu_op_i <= "011";
1421
                        rmode_i <= "00";
1422
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1423
                        assert output_o(30 downto 0)=fpout_y(30 downto 0) and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1424
                        report "Error!!!"
1425
                        severity failure;
1426
 
1427
                                                -- 0 / 0
1428
                        --                seeeeeeeefffffffffffffffffffffff
1429
                    wait for CLK_PERIOD; start_i <= '1';
1430
                    opa_i <= "00000000000000000000000000000000";
1431
                        opb_i <= "00000000000000000000000000000000";
1432
                        fpu_op_i <= "011";
1433
                        rmode_i <= "00";
1434
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1435
                        assert output_o(30 downto 0)=fpout_y(30 downto 0) and ine_o=ine_y and overflow_o=overflow_y and underflow_o=underflow_y and inf_o=inf_y and zero_y=zero_o and div_zero_o=div_by_zero_y and qnan_o=qnan_y and snan_o=snan_y
1436
                        report "Error!!!"
1437
                        severity failure;
1438
 
1439
 
1440
--************* Square-Root Test Vectors************************************************************
1441
 
1442
                        --                seeeeeeeefffffffffffffffffffffff
1443
                    wait for CLK_PERIOD; start_i <= '1';
1444
                    opa_i <= "01000001000100000000000000000000";  --9
1445
                        opb_i <= "00000000000000000000000000000000";
1446
                        fpu_op_i <= "100";
1447
                        rmode_i <= "00";
1448
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1449
                        assert output_o= "01000000010000000000000000000000" and ine_o='0' and
1450
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0'
1451
                        and snan_o='0'
1452
                        report "Error!!!"
1453
                        severity failure;
1454
 
1455
 
1456
                        --                seeeeeeeefffffffffffffffffffffff
1457
                    wait for CLK_PERIOD; start_i <= '1';
1458
                    opa_i <= "01000001001000000000000000000000";  --10 
1459
                        fpu_op_i <= "100";
1460
                        rmode_i <= "00";
1461
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1462
                        assert output_o="01000000010010100110001011000010" and ine_o='1' and
1463
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0' and snan_o='0'
1464
                        report "Error!!!"
1465
                        severity failure;
1466
 
1467
                        --                seeeeeeeefffffffffffffffffffffff
1468
                    wait for CLK_PERIOD; start_i <= '1';
1469
                    opa_i <= "01010001011011011000111001100111";
1470
                        fpu_op_i <= "100";
1471
                        rmode_i <= "00";
1472
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1473
                        assert output_o="01001000011101101001101100010011" and ine_o='1' and
1474
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0' and snan_o='0'
1475
                        report "Error!!!"
1476
                        severity failure;
1477
 
1478
                        --                seeeeeeeefffffffffffffffffffffff
1479
                    wait for CLK_PERIOD; start_i <= '1';
1480
                    opa_i <= "01000001100000000000000000000000";  --16
1481
                        fpu_op_i <= "100";
1482
                        rmode_i <= "00";
1483
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1484
                        assert output_o="01000000100000000000000000000000" and ine_o='0' and
1485
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0' and snan_o='0'
1486
                        report "Error!!!"
1487
                        severity failure;
1488
 
1489
                        --                seeeeeeeefffffffffffffffffffffff
1490
                    wait for CLK_PERIOD; start_i <= '1';
1491
                    opa_i <= "01000000110000000000000000000000";  --6
1492
                        fpu_op_i <= "100";
1493
                        rmode_i <= "00";
1494
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1495
                        assert output_o="01000000000111001100010001110001" and ine_o='1' and
1496
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0' and snan_o='0'
1497
                        report "Error!!!"
1498
                        severity failure;
1499
 
1500
                        --                seeeeeeeefffffffffffffffffffffff
1501
                    wait for CLK_PERIOD; start_i <= '1';
1502
                    opa_i <= "01001101110110010011101101001010";  --455567687
1503
                        fpu_op_i <= "100";
1504
                        rmode_i <= "00";
1505
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1506
                        assert output_o="01000110101001101100000000010000" and ine_o='1' and
1507
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0' and snan_o='0'
1508
                        report "Error!!!"
1509
                        severity failure;
1510
 
1511
                        --                seeeeeeeefffffffffffffffffffffff
1512
                    wait for CLK_PERIOD; start_i <= '1';
1513
                    opa_i <= "11001101110110010011101101001010";  -- - 455567687
1514
                        fpu_op_i <= "100";
1515
                        rmode_i <= "00";
1516
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1517
                        assert output_o="11111111110000000000000000000001" and ine_o='0' and
1518
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='1' and snan_o='0'
1519
                        report "Error!!!"
1520
                        severity failure;
1521
 
1522
                        --                seeeeeeeefffffffffffffffffffffff
1523
                    wait for CLK_PERIOD; start_i <= '1';
1524
                    opa_i <= "00000000000000000000000000000001";  --MIN 
1525
                        fpu_op_i <= "100";
1526
                        rmode_i <= "00";
1527
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1528
                        assert output_o="00011010001101010000010011110011" and ine_o='1' and
1529
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0'
1530
                        and snan_o='0'
1531
                        report "Error!!!"
1532
                        severity failure;
1533
 
1534
                        --                seeeeeeeefffffffffffffffffffffff
1535
                    wait for CLK_PERIOD; start_i <= '1';
1536
                    opa_i <= "01111111011111111111111111111111";  --MAX
1537
                        fpu_op_i <= "100";
1538
                        rmode_i <= "00";
1539
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1540
                        assert output_o="01011111011111111111111111111111" and ine_o='1' and
1541
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0'
1542
                        and snan_o='0'
1543
                        report "Error!!!"
1544
                        severity failure;
1545
 
1546
                        --                seeeeeeeefffffffffffffffffffffff
1547
                    wait for CLK_PERIOD; start_i <= '1';
1548
                    opa_i <= "00000000000000000000000000000000";  -- +0
1549
                        fpu_op_i <= "100";
1550
                        rmode_i <= "00";
1551
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1552
                        assert output_o="00000000000000000000000000000000" and ine_o='0' and
1553
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0'
1554
                        and snan_o='0'
1555
                        report "Error!!!"
1556
                        severity failure;
1557
 
1558
                        --                seeeeeeeefffffffffffffffffffffff
1559
                    wait for CLK_PERIOD; start_i <= '1';
1560
                    opa_i <= "10000000000000000000000000000000";  -- -0
1561
                        fpu_op_i <= "100";
1562
                        rmode_i <= "00";
1563
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1564
                        assert output_o="10000000000000000000000000000000" and ine_o='0' and
1565
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='0'
1566
                        and snan_o='0'
1567
                        report "Error!!!"
1568
                        severity failure;
1569
 
1570
                        --                seeeeeeeefffffffffffffffffffffff
1571
                    wait for CLK_PERIOD; start_i <= '1';
1572
                    opa_i <= "01111111100000000000000000000000";  -- inf
1573
                        fpu_op_i <= "100";
1574
                        rmode_i <= "00";
1575
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1576
                        assert output_o="01111111100000000000000000000000" and ine_o='0' and
1577
                        overflow_o='0' and underflow_o='0' and inf_o='1' and div_zero_o='0' and qnan_o='0'
1578
                        and snan_o='0'
1579
                        report "Error!!!"
1580
                        severity failure;
1581
 
1582
 
1583
                        --                seeeeeeeefffffffffffffffffffffff
1584
                    wait for CLK_PERIOD; start_i <= '1';
1585
                    opa_i <= "01111111110000000000000000000001";  -- qnan
1586
                        fpu_op_i <= "100";
1587
                        rmode_i <= "00";
1588
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1589
                        assert output_o="01111111110000000000000000000001" and ine_o='0' and
1590
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='1'
1591
                        and snan_o='0'
1592
                        report "Error!!!"
1593
                        severity failure;
1594
 
1595
                        --                seeeeeeeefffffffffffffffffffffff
1596
                    wait for CLK_PERIOD; start_i <= '1';
1597
                    opa_i <= "01111111100000000000000000000001";  -- snan
1598
                        fpu_op_i <= "100";
1599
                        rmode_i <= "00";
1600
                        wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';
1601
                        assert output_o="01111111110000000000000000000001" and ine_o='0' and
1602
                        overflow_o='0' and underflow_o='0' and inf_o='0' and div_zero_o='0' and qnan_o='1' and snan_o='1'
1603
                        report "Error!!!"
1604
                        severity failure;
1605
 
1606
 
1607
 
1608
                        assert false
1609
                        report "Success!!!"
1610
                        severity failure;
1611
 
1612
 
1613
 
1614
 
1615
        wait;
1616
 
1617
    end process verify;
1618
 
1619
end rtl;

powered by: WebSVN 2.1.0

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