diff options
Diffstat (limited to 'full-adder/full-adder.srcs/sim_1/add4b_tb.vhd')
| -rw-r--r-- | full-adder/full-adder.srcs/sim_1/add4b_tb.vhd | 110 | 
1 files changed, 48 insertions, 62 deletions
diff --git a/full-adder/full-adder.srcs/sim_1/add4b_tb.vhd b/full-adder/full-adder.srcs/sim_1/add4b_tb.vhd index 2999486..312cf22 100644 --- a/full-adder/full-adder.srcs/sim_1/add4b_tb.vhd +++ b/full-adder/full-adder.srcs/sim_1/add4b_tb.vhd @@ -1,52 +1,52 @@ -LIBRARY ieee; -USE ieee.std_logic_1164.ALL; -USE ieee.numeric_std.ALL; -LIBRARY UNISIM; -USE UNISIM.Vcomponents.ALL; -ENTITY add4b_tb IS -END add4b_tb; -ARCHITECTURE behavioral OF add4b_tb IS  -   COMPONENT add4b -	Port ( -    A: in std_logic_vector(3 downto 0); -    B: in std_logic_vector(3 downto 0); -    Cin: in std_logic; -    X: out std_logic_vector(3 downto 0); -    Cout: out std_logic); -   END COMPONENT; +library ieee; +library unisim; -   SIGNAL A: std_logic_vector(3 downto 0); -   SIGNAL B: std_logic_vector(3 downto 0); -   SIGNAL S: std_logic_vector(3 downto 0); -   SIGNAL C_out	:	STD_LOGIC; -   SIGNAL C_in  :	STD_LOGIC; -    Signal Test_case: STD_LOGIC_VECTOR (7 downto 0):= (others =>'0'); -	signal OK: boolean := true; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use unisim.vcomponents.all; -BEGIN -   UUT: add4b PORT MAP( -        A => A, -        B => B, -        X => S, -        Cout => C_out, -        Cin => C_in); +entity add4b_tb is +end add4b_tb; --- *** Test Bench - User Defined Section *** -   tb : PROCESS -			variable S0_t	:	STD_LOGIC; -			variable S1_t	:	STD_LOGIC; -			variable S2_t	:	STD_LOGIC; -			variable S3_t	:	STD_LOGIC; -			variable C_out_t	:	STD_LOGIC; -			variable A_t : integer; -			variable B_t : integer; -			variable sum : integer; +architecture behavioral of add4b_tb is component add4b +	port ( +		A: in std_logic_vector(3 downto 0); +		B: in std_logic_vector(3 downto 0); +		Cin: in std_logic; +		X: out std_logic_vector(3 downto 0); +		Cout: out std_logic); +end component; +signal A: std_logic_vector(3 downto 0); +signal B: std_logic_vector(3 downto 0); +signal S: std_logic_vector(3 downto 0); +signal C_out	:	STD_LOGIC; +signal C_in  :	STD_LOGIC; +signal Test_case: STD_LOGIC_VECTOR (7 downto 0):= (others =>'0'); +signal OK: boolean := true; -	BEGIN +begin +	UUT: add4b port map( +		A => A, +		B => B, +		X => S, +		Cout => C_out, +		Cin => C_in); + +	tb: process +		variable S0_t	:	STD_LOGIC; +		variable S1_t	:	STD_LOGIC; +		variable S2_t	:	STD_LOGIC; +		variable S3_t	:	STD_LOGIC; +		variable C_out_t	:	STD_LOGIC; +		variable A_t : integer; +		variable B_t : integer; +		variable sum : integer; + +	begin  		C_in <= '0'; -- C_in is ignored in this test  		for I in 0 to 255 loop -			 +  			Test_case <= Std_logic_vector(to_unsigned(I,8));  			A(0) <= Test_case(0);  			A(1) <= Test_case(1); @@ -56,49 +56,35 @@ BEGIN  			B(1) <= Test_case(5);  			B(2) <= Test_case(6);  			B(3) <= Test_case(7); -			 -			 +  			A_t := To_integer(unsigned(test_case(3 downto 0)));  			B_t := To_integer(unsigned(test_case(7 downto 4)));  			sum := A_t+B_t; -			 +  			S0_t := to_unsigned(sum,5)(0);  			S1_t := to_unsigned(sum,5)(1);  			S2_t := to_unsigned(sum,5)(2);  			S3_t := to_unsigned(sum,5)(3);  			C_out_t := to_unsigned(sum,5)(4); -			 +  			wait for 5 ns; -				  			If S(0) /= S0_t then  				OK <= false;  			end if; -			  			if S(1) /= S1_t then  				OK <= false;  			end if; -			  			if S(2) /= S2_t then  				OK <= false;  			end if; -			  			if S(3) /= S3_t then  				OK <= false;  			end if; -			  			if C_out /= C_out_t then  				OK <= false;  			end if; -			  			wait for 5 ns; -			 -		  		end loop; -		 -		 -		 -      WAIT; -- will wait forever -   END PROCESS; --- *** End Test Bench - User Defined Section *** - -END;
\ No newline at end of file +		wait; -- stop for simulator +	end process; +end;  |