diff --git a/libraries/base/common/tb/vhdl/tb_resize.vhd b/libraries/base/common/tb/vhdl/tb_resize.vhd index f324cf1befe0d48c94913dfb737b758c156f10f1..900976fc66568f0e6da4fb7b3fe2bf012fd88c57 100644 --- a/libraries/base/common/tb/vhdl/tb_resize.vhd +++ b/libraries/base/common/tb/vhdl/tb_resize.vhd @@ -59,16 +59,34 @@ ARCHITECTURE tb OF tb_resize IS SIGNAL out_sovr : STD_LOGIC; SIGNAL out_uovr : STD_LOGIC; - SIGNAL rst : STD_LOGIC; + SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL clk : STD_LOGIC := '1'; + SIGNAL rst : STD_LOGIC; CONSTANT c_init : STD_LOGIC_VECTOR(in_dat'RANGE) := (OTHERS=>'0'); BEGIN -- Stimuli - clk <= NOT(clk) AFTER clk_period/2; + clk <= NOT clk OR tb_end AFTER clk_period/2; rst <= '1', '0' AFTER 3*clk_period; + + -- Testbench end + p_tb_end : PROCESS + VARIABLE v_dat : STD_LOGIC_VECTOR(in_dat'RANGE); + BEGIN + tb_end <= '0'; + WAIT UNTIL in_val='1'; + WAIT UNTIL rising_edge(clk); + v_dat := in_dat; -- keep first in_dat + WAIT UNTIL rising_edge(clk); + WAIT UNTIL v_dat=in_dat; -- wait until all incrementing in_dat values have been applied at least once + WAIT UNTIL rising_edge(clk); + WAIT UNTIL rising_edge(clk); + WAIT UNTIL rising_edge(clk); + tb_end <= '1'; + WAIT; + END PROCESS; p_clk : PROCESS (rst, clk) BEGIN @@ -136,7 +154,7 @@ BEGIN out_ovr => out_uovr ); - -- Vericfication + -- Verification p_verify_increase : PROCESS BEGIN WAIT UNTIL rising_edge(clk);