aboutsummaryrefslogtreecommitdiff
path: root/full-adder/full-adder.srcs/sim_1/add4b_tb.vhd
diff options
context:
space:
mode:
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.vhd110
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;