diff --git a/libraries/base/common/tb/vhdl/tb_round.vhd b/libraries/base/common/tb/vhdl/tb_round.vhd
index 94f52ae377e7ee63fceced3ab591fe484b237eb2..65ca3d57e96bb25b01a5303ac3716af10c03591a 100644
--- a/libraries/base/common/tb/vhdl/tb_round.vhd
+++ b/libraries/base/common/tb/vhdl/tb_round.vhd
@@ -62,6 +62,7 @@ ARCHITECTURE tb OF tb_round IS
   SIGNAL out_udat         : STD_LOGIC_VECTOR(c_out_dat_w-1 DOWNTO 0);
   SIGNAL out_tdat         : STD_LOGIC_VECTOR(c_out_dat_w-1 DOWNTO 0);  -- truncate
   
+  SIGNAL tb_end           : STD_LOGIC := '0';
   SIGNAL clk              : STD_LOGIC := '1';
   SIGNAL rst              : STD_LOGIC := '1';
 
@@ -70,9 +71,26 @@ ARCHITECTURE tb OF tb_round IS
 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
     IF rst='1' THEN