142 lines
4.9 KiB
VHDL
142 lines
4.9 KiB
VHDL
-- Code your testbench here
|
|
library IEEE;
|
|
use IEEE.std_logic_1164.all;
|
|
|
|
entity testbench is
|
|
-- empty
|
|
end testbench;
|
|
|
|
architecture tb of testbench is
|
|
-- DUT components
|
|
component fulladder_struct is
|
|
port (afa_s_i : in std_logic;
|
|
bfa_s_i : in std_logic;
|
|
cinfa_s_i : in std_logic;
|
|
sumfa_s_o : out std_logic;
|
|
coutfa_s_o : out std_logic);
|
|
end component;
|
|
|
|
component fulladder_sel is
|
|
port (afa_sel_i : in std_logic;
|
|
bfa_sel_i : in std_logic;
|
|
cinfa_sel_i : in std_logic;
|
|
sumfa_sel_o : out std_logic;
|
|
coutfa_sel_o : out std_logic);
|
|
end component;
|
|
|
|
component fulladder_proc is
|
|
port (afa_proc_i : in std_logic;
|
|
bfa_proc_i : in std_logic;
|
|
cinfa_proc_i : in std_logic;
|
|
sumfa_proc_o : out std_logic;
|
|
coutfa_proc_o : out std_logic);
|
|
end component;
|
|
|
|
|
|
|
|
signal sig_afa_s, sig_bfa_s, sig_cinfa_s, sig_sumfa_s, sig_coutfa_s: std_logic;
|
|
signal sig_afa_sel, sig_bfa_sel, sig_cinfa_sel, sig_sumfa_sel, sig_coutfa_sel: std_logic;
|
|
signal sig_afa_proc, sig_bfa_proc, sig_cinfa_proc, sig_sumfa_proc, sig_coutfa_proc: std_logic;
|
|
|
|
begin
|
|
|
|
-- Connect DUTs
|
|
DUT_s: fulladder_struct port map(
|
|
afa_s_i => sig_afa_s,
|
|
bfa_s_i => sig_bfa_s,
|
|
cinfa_s_i => sig_cinfa_s,
|
|
sumfa_s_o => sig_sumfa_s,
|
|
coutfa_s_o => sig_coutfa_s);
|
|
|
|
DUT_sel: fulladder_sel port map(
|
|
afa_sel_i => sig_afa_sel,
|
|
bfa_sel_i => sig_bfa_sel,
|
|
cinfa_sel_i => sig_cinfa_sel,
|
|
sumfa_sel_o => sig_sumfa_sel,
|
|
coutfa_sel_o => sig_coutfa_sel);
|
|
|
|
DUT_proc: fulladder_proc port map(
|
|
afa_proc_i => sig_afa_proc,
|
|
bfa_proc_i => sig_bfa_proc,
|
|
cinfa_proc_i => sig_cinfa_proc,
|
|
sumfa_proc_o => sig_sumfa_proc,
|
|
coutfa_proc_o => sig_coutfa_proc);
|
|
|
|
stim :process is
|
|
|
|
begin
|
|
|
|
sig_afa_s <= '0'; sig_bfa_s <= '0'; sig_cinfa_s <= '0';
|
|
sig_afa_sel <= '0'; sig_bfa_sel <= '0'; sig_cinfa_sel <= '0';
|
|
sig_afa_proc <= '0'; sig_bfa_proc <= '0'; sig_cinfa_proc <= '0';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 000 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 000 NOK" severity failure;
|
|
|
|
sig_afa_s <= '1'; sig_bfa_s <= '0'; sig_cinfa_s <= '0';
|
|
sig_afa_sel <= '1'; sig_bfa_sel <= '0'; sig_cinfa_sel <= '0';
|
|
sig_afa_proc <= '1'; sig_bfa_proc <= '0'; sig_cinfa_proc <= '0';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 001 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 001 NOK" severity failure;
|
|
|
|
sig_afa_s <= '0'; sig_bfa_s <= '1'; sig_cinfa_s <= '0';
|
|
sig_afa_sel <= '0'; sig_bfa_sel <= '1'; sig_cinfa_sel <= '0';
|
|
sig_afa_proc <= '0'; sig_bfa_proc <= '1'; sig_cinfa_proc <= '0';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 010 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 010 NOK" severity failure;
|
|
|
|
sig_afa_s <= '1'; sig_bfa_s <= '1'; sig_cinfa_s <= '0';
|
|
sig_afa_sel <= '1'; sig_bfa_sel <= '1'; sig_cinfa_sel <= '0';
|
|
sig_afa_proc <= '1'; sig_bfa_proc <= '1'; sig_cinfa_proc <= '0';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 011 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 011 NOK" severity failure;
|
|
|
|
sig_afa_s <= '0'; sig_bfa_s <= '0'; sig_cinfa_s <= '1';
|
|
sig_afa_sel <= '0'; sig_bfa_sel <= '0'; sig_cinfa_sel <= '1';
|
|
sig_afa_proc <= '0'; sig_bfa_proc <= '0'; sig_cinfa_proc <= '1';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 100 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 100 NOK" severity failure;
|
|
|
|
sig_afa_s <= '1'; sig_bfa_s <= '0'; sig_cinfa_s <= '1';
|
|
sig_afa_sel <= '1'; sig_bfa_sel <= '0'; sig_cinfa_sel <= '1';
|
|
sig_afa_proc <= '1'; sig_bfa_proc <= '0'; sig_cinfa_proc <= '1';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 101 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 101 NOK" severity failure;
|
|
|
|
sig_afa_s <= '0'; sig_bfa_s <= '1'; sig_cinfa_s <= '1';
|
|
sig_afa_sel <= '0'; sig_bfa_sel <= '1'; sig_cinfa_sel <= '1';
|
|
sig_afa_proc <= '0'; sig_bfa_proc <= '1'; sig_cinfa_proc <= '1';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 110 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 110 NOK" severity failure;
|
|
|
|
sig_afa_s <= '1'; sig_bfa_s <= '1'; sig_cinfa_s <= '1';
|
|
sig_afa_sel <= '1'; sig_bfa_sel <= '1'; sig_cinfa_sel <= '1';
|
|
sig_afa_proc <= '1'; sig_bfa_proc <= '1'; sig_cinfa_proc <= '1';
|
|
|
|
wait for 10 ns;
|
|
assert (sig_sumfa_s = sig_sumfa_sel) report "Test sum 111 NOK" severity failure;
|
|
assert (sig_coutfa_s = sig_coutfa_sel) report "Test carry 111 NOK" severity failure;
|
|
|
|
wait;
|
|
|
|
end process stim;
|
|
|
|
|
|
|
|
|
|
|
|
end tb;
|