tb_fpu.vhd

来自「Java Op Processor java vhdl processor」· VHDL 代码 · 共 1,389 行 · 第 1/5 页

VHD
1,389
字号
			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;							    		wait for CLK_PERIOD; start_i <= '1'; -- INF    		--		  seeeeeeeefffffffffffffffffffffff	    		opa_i <= "01111111100000000000000000000000"; 			opb_i <= "00000000000000000000000000000000"; 			fpu_op_i <= "001";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;						    		wait for CLK_PERIOD; start_i <= '1'; -- QNaN    		--		  seeeeeeeefffffffffffffffffffffff	    		opa_i <= "01111111111111111111111111111111"; 			opb_i <= "00000000000000000000000000000000"; 			fpu_op_i <= "001";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;						    		wait for CLK_PERIOD; start_i <= '1'; -- SNaN    		--		  seeeeeeeefffffffffffffffffffffff	    		opa_i <= "01111001111111111111111111111111"; 			opb_i <= "01111111100000000000000000000001"; 			fpu_op_i <= "001";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;						    		wait for CLK_PERIOD; start_i <= '1'; -- inf + inf    		--		  seeeeeeeefffffffffffffffffffffff	    		opa_i <= "01111111100000000000000000000000"; 			opb_i <= "01111111100000000000000000000000"; 			fpu_op_i <= "001";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;							    		wait for CLK_PERIOD; start_i <= '1'; -- -inf + inf    		--		  seeeeeeeefffffffffffffffffffffff	    		opa_i <= "11111111100000000000000000000000"; 			opb_i <= "01111111100000000000000000000000"; 			fpu_op_i <= "001";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;													--************* Multiply Test Vectors************************************************************		    		    -- round to nearset even 		    --		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00000000100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;							 --		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "01000000100000000000000000000000"; 			opb_i <= "01000000100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			report "Error!!!"			severity failure;						-- underflow = 1 when tiny(2^-127) and inexact						-- 2^-127x0.1 * 2^0x1.0 = 2^-127x0.1 (-127 in dn = -126)			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00111111100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-127x0.1 * 2^0x1.11 = 2^-127x0.1110			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00111111111000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;			-- 2^-127x0.1 * 2^-1x1.0 = 2^-127x0.01			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00111111000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-127x0.1 * 2^-22x1.0 = 2^-127x0.0..01			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00110100100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-127x0.1 * 2^-45x1.0 = 2^-127x0.0..00			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00101001000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;			-- 2^-127x0.1 * 2^-46x1.0 = 2^-127x0.0..00			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00101000100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;			-- 2^-127x0.1 * 2^-47x1.0 = 2^-127x0.0..00			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000010000000000000000000000"; 			opb_i <= "00101000000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-126x1.0 * 2^-1x1.0 = 2^-127x1.0			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00111111000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-126x1.0 * 2^-2x1.0 = 2^-127x0.1			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00111110100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-126x1.0 * 2^-46x1.0 = 2^-127x0.0..0			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00101000100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-126x1.0 * 2^-47x1.0 = 2^-127x0.0..0 - shr 46			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00101000000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- 2^-126x1.0 * 2^-48x1.0 = 2^-127x0.0..0 - shr 46			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000000100000000000000000000000"; 			opb_i <= "00100111100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- e^128 x 1			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000001100000000000000000000000"; 			opb_i <= "00111110100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						-- e^127 x 1			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000001100000000000000000000000"; 			opb_i <= "00111110000000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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			-- and underflow_o=underflow_y			report "Error!!!"			severity failure;						-- e^126 x 1			--		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000001100000000000000000000000"; 			opb_i <= "00111101100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';			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 			report "Error!!!"			severity failure;						 --		  seeeeeeeefffffffffffffffffffffff		    wait for CLK_PERIOD; start_i <= '1'; 		    opa_i <= "00000111111100000000000000000000"; 			opb_i <= "00000000100000000000000000000000"; 			fpu_op_i <= "010";			rmode_i <= "00";			wait for CLK_PERIOD; start_i <= '0'; wait until ready_o='1';

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?