diff --git a/libraries/base/common/tb/vhdl/tb_round.vhd b/libraries/base/common/tb/vhdl/tb_round.vhd
index 8f029daca7bbb6542de687569f50f13b730f06eb..5d63ec8dd1ca72fa3cd65f44065794bb370faad4 100644
--- a/libraries/base/common/tb/vhdl/tb_round.vhd
+++ b/libraries/base/common/tb/vhdl/tb_round.vhd
@@ -61,6 +61,20 @@ ARCHITECTURE tb OF tb_round IS
   CONSTANT c_in_umax          : INTEGER :=  2**g_in_dat_w - 1;
   CONSTANT c_in_umax_no_clip  : INTEGER :=  c_in_umax - c_in_half;
 
+  -- Expected rounded results from [2] for w = g_in_dat_w = 5 and r = c_round_w = 2
+  CONSTANT c_exp_w5_r2_signed_truncate             : t_integer_arr(0 TO 31) := (-4, -4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3);
+  CONSTANT c_exp_w5_r2_signed_round_half_away      : t_integer_arr(0 TO 31) := (-4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, -4, -4);
+  CONSTANT c_exp_w5_r2_signed_round_half_away_clip : t_integer_arr(0 TO 31) := (-4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3);
+  CONSTANT c_exp_w5_r2_signed_round_half_even      : t_integer_arr(0 TO 31) := (-4, -4, -4, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, -4, -4);
+  CONSTANT c_exp_w5_r2_signed_round_half_even_clip : t_integer_arr(0 TO 31) := (-4, -4, -4, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3);
+
+  CONSTANT c_exp_w5_r2_unsigned_truncate             : t_natural_arr(0 TO 31) := (0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7);
+  CONSTANT c_exp_w5_r2_unsigned_truncate_symmetric   : t_natural_arr(0 TO 31) := (0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7);
+  CONSTANT c_exp_w5_r2_unsigned_round_half_up        : t_natural_arr(0 TO 31) := (0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 0, 0);
+  CONSTANT c_exp_w5_r2_unsigned_round_half_up_clip   : t_natural_arr(0 TO 31) := (0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7);
+  CONSTANT c_exp_w5_r2_unsigned_round_half_even      : t_natural_arr(0 TO 31) := (0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 0, 0);
+  CONSTANT c_exp_w5_r2_unsigned_round_half_even_clip : t_natural_arr(0 TO 31) := (0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7);
+
   SIGNAL tb_end               : STD_LOGIC := '0';
   SIGNAL clk                  : STD_LOGIC := '1';
 
@@ -79,6 +93,12 @@ ARCHITECTURE tb OF tb_round IS
   SIGNAL fs_signed_round_half_even        : STD_LOGIC_VECTOR(g_out_dat_w-1 DOWNTO 0);
   SIGNAL fs_signed_round_half_even_clip   : STD_LOGIC_VECTOR(g_out_dat_w-1 DOWNTO 0);
 
+  SIGNAL S_w5_r2                                 : NATURAL;  -- lookup index for signed
+  SIGNAL exp_w5_r2_signed_truncate               : INTEGER;
+  SIGNAL exp_w5_r2_signed_round_half_away        : INTEGER;
+  SIGNAL exp_w5_r2_signed_round_half_away_clip   : INTEGER;
+  SIGNAL exp_w5_r2_signed_round_half_even        : INTEGER;
+  SIGNAL exp_w5_r2_signed_round_half_even_clip   : INTEGER;
   -- . show as real in Wave window
   SIGNAL fs_sreal_fixed_point             : REAL := 0.0;
   SIGNAL fs_sreal_truncate                : REAL := 0.0;
@@ -96,6 +116,13 @@ ARCHITECTURE tb OF tb_round IS
   SIGNAL fs_unsigned_round_half_even      : STD_LOGIC_VECTOR(g_out_dat_w-1 DOWNTO 0);
   SIGNAL fs_unsigned_round_half_even_clip : STD_LOGIC_VECTOR(g_out_dat_w-1 DOWNTO 0);
 
+  SIGNAL U_w5_r2                                 : NATURAL;  -- lookup index for unsigned
+  SIGNAL exp_w5_r2_unsigned_truncate             : INTEGER;
+  SIGNAL exp_w5_r2_unsigned_round_half_up        : INTEGER;
+  SIGNAL exp_w5_r2_unsigned_round_half_up_clip   : INTEGER;
+  SIGNAL exp_w5_r2_unsigned_round_half_even      : INTEGER;
+  SIGNAL exp_w5_r2_unsigned_round_half_even_clip : INTEGER;
+
   -- . show as real in Wave window
   SIGNAL fs_ureal_fixed_point             : REAL := 0.0;
   SIGNAL fs_ureal_truncate                : REAL := 0.0;
@@ -104,6 +131,13 @@ ARCHITECTURE tb OF tb_round IS
   SIGNAL fs_ureal_round_half_even         : REAL := 0.0;
   SIGNAL fs_ureal_round_half_even_clip    : REAL := 0.0;
 
+  -- Debug signals, for view in Wave window
+  SIGNAL dbg_c_exp_w5_r2_signed_truncate             : t_integer_arr(0 TO 31) := c_exp_w5_r2_signed_truncate;
+  SIGNAL dbg_c_exp_w5_r2_signed_round_half_away      : t_integer_arr(0 TO 31) := c_exp_w5_r2_signed_round_half_away;
+  SIGNAL dbg_c_exp_w5_r2_signed_round_half_away_clip : t_integer_arr(0 TO 31) := c_exp_w5_r2_signed_round_half_away_clip;
+  SIGNAL dbg_c_exp_w5_r2_signed_round_half_even      : t_integer_arr(0 TO 31) := c_exp_w5_r2_signed_round_half_even;
+  SIGNAL dbg_c_exp_w5_r2_signed_round_half_even_clip : t_integer_arr(0 TO 31) := c_exp_w5_r2_signed_round_half_even_clip;
+
 BEGIN
 
   -- Stimuli
@@ -190,7 +224,7 @@ BEGIN
   GENERIC MAP (
     g_representation  => "SIGNED",
     g_round           => TRUE,
-    g_round_clip      => TRUE,
+    g_round_clip      => FALSE,
     g_round_even      => TRUE,
     g_pipeline_input  => c_pipeline_input,
     g_pipeline_output => c_pipeline_output,
@@ -325,6 +359,20 @@ BEGIN
   fs_ureal_round_half_even      <= TO_UREAL(fs_unsigned_round_half_even, 0);
   fs_ureal_round_half_even_clip <= TO_UREAL(fs_unsigned_round_half_even_clip, 0);
 
+  -- Expected rounded values
+  S_w5_r2 <= (TO_UINT(in_dat) + 16) MOD 32;
+  exp_w5_r2_signed_truncate             <= c_exp_w5_r2_signed_truncate(S_w5_r2);
+  exp_w5_r2_signed_round_half_away      <= c_exp_w5_r2_signed_round_half_away(S_w5_r2);
+  exp_w5_r2_signed_round_half_away_clip <= c_exp_w5_r2_signed_round_half_away_clip(S_w5_r2);
+  exp_w5_r2_signed_round_half_even      <= c_exp_w5_r2_signed_round_half_even(S_w5_r2);
+  exp_w5_r2_signed_round_half_even_clip <= c_exp_w5_r2_signed_round_half_even_clip(S_w5_r2);
+  U_w5_r2 <= TO_UINT(in_dat);
+  exp_w5_r2_unsigned_truncate             <= c_exp_w5_r2_unsigned_truncate(U_w5_r2);
+  exp_w5_r2_unsigned_round_half_up        <= c_exp_w5_r2_unsigned_round_half_up(U_w5_r2);
+  exp_w5_r2_unsigned_round_half_up_clip   <= c_exp_w5_r2_unsigned_round_half_up_clip(U_w5_r2);
+  exp_w5_r2_unsigned_round_half_even      <= c_exp_w5_r2_unsigned_round_half_even(U_w5_r2);
+  exp_w5_r2_unsigned_round_half_even_clip <= c_exp_w5_r2_unsigned_round_half_even_clip(U_w5_r2);
+
   -- Verification
   p_verify : PROCESS
   BEGIN
@@ -333,11 +381,11 @@ BEGIN
       IF c_round_w = 0 THEN
         -- Without rounding the expected value is same as input value
         -- . signed
-        ASSERT   SIGNED(fs_signed_truncate            ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_truncate" SEVERITY ERROR;
-        ASSERT   SIGNED(fs_signed_round_half_away     ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_away" SEVERITY ERROR;
-        ASSERT   SIGNED(fs_signed_round_half_away_clip) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_away_clip" SEVERITY ERROR;
-        ASSERT   SIGNED(fs_signed_round_half_even     ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_even" SEVERITY ERROR;
-        ASSERT   SIGNED(fs_signed_round_half_even_clip) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_even_clip"    SEVERITY ERROR;
+        ASSERT SIGNED(fs_signed_truncate            ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_truncate" SEVERITY ERROR;
+        ASSERT SIGNED(fs_signed_round_half_away     ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_away" SEVERITY ERROR;
+        ASSERT SIGNED(fs_signed_round_half_away_clip) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_away_clip" SEVERITY ERROR;
+        ASSERT SIGNED(fs_signed_round_half_even     ) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_even" SEVERITY ERROR;
+        ASSERT SIGNED(fs_signed_round_half_even_clip) = SIGNED(reg_dat) REPORT "Wrong wired fs_signed_round_half_even_clip"    SEVERITY ERROR;
         -- . unsigned
         ASSERT UNSIGNED(fs_unsigned_truncate            ) = UNSIGNED(reg_dat) REPORT "Wrong wired fs_unsigned_truncate" SEVERITY ERROR;
         ASSERT UNSIGNED(fs_unsigned_round_half_up       ) = UNSIGNED(reg_dat) REPORT "Wrong wired fs_unsigned_round_half_up" SEVERITY ERROR;
@@ -345,8 +393,21 @@ BEGIN
         ASSERT UNSIGNED(fs_unsigned_round_half_even     ) = UNSIGNED(reg_dat) REPORT "Wrong wired fs_unsigned_round_half_even" SEVERITY ERROR;
         ASSERT UNSIGNED(fs_unsigned_round_half_even_clip) = UNSIGNED(reg_dat) REPORT "Wrong wired fs_unsigned_round_half_even_clip" SEVERITY ERROR;
       ELSE
-        -- For reduced width compare with expected list of values from common_round_tb.py
-
+        -- With rounding then compare with expected list of values from common_round_tb.py
+        IF g_in_dat_w = 5 AND c_round_w = 2 THEN
+          -- . signed
+          ASSERT SIGNED(fs_signed_truncate            ) = exp_w5_r2_signed_truncate             REPORT "Wrong exp_w5_r2_signed_truncate" SEVERITY ERROR;
+          ASSERT SIGNED(fs_signed_round_half_away     ) = exp_w5_r2_signed_round_half_away      REPORT "Wrong exp_w5_r2_signed_round_half_away" SEVERITY ERROR;
+          ASSERT SIGNED(fs_signed_round_half_away_clip) = exp_w5_r2_signed_round_half_away_clip REPORT "Wrong exp_w5_r2_signed_round_half_away_clip" SEVERITY ERROR;
+          ASSERT SIGNED(fs_signed_round_half_even     ) = exp_w5_r2_signed_round_half_even      REPORT "Wrong exp_w5_r2_signed_round_half_even" SEVERITY ERROR;
+          ASSERT SIGNED(fs_signed_round_half_even_clip) = exp_w5_r2_signed_round_half_even_clip REPORT "Wrong exp_w5_r2_signed_round_half_even_clip" SEVERITY ERROR;
+          -- . unsigned
+          ASSERT UNSIGNED(fs_unsigned_truncate            ) = exp_w5_r2_unsigned_truncate             REPORT "Wrong exp_w5_r2_unsigned_truncate" SEVERITY ERROR;
+          ASSERT UNSIGNED(fs_unsigned_round_half_up       ) = exp_w5_r2_unsigned_round_half_up        REPORT "Wrong exp_w5_r2_unsigned_round_half_up" SEVERITY ERROR;
+          ASSERT UNSIGNED(fs_unsigned_round_half_up_clip  ) = exp_w5_r2_unsigned_round_half_up_clip   REPORT "Wrong exp_w5_r2_unsigned_round_half_up_clip" SEVERITY ERROR;
+          ASSERT UNSIGNED(fs_unsigned_round_half_even     ) = exp_w5_r2_unsigned_round_half_even      REPORT "Wrong exp_w5_r2_unsigned_round_half_even" SEVERITY ERROR;
+          ASSERT UNSIGNED(fs_unsigned_round_half_even_clip) = exp_w5_r2_unsigned_round_half_even_clip REPORT "Wrong exp_w5_r2_unsigned_round_half_even_clip" SEVERITY ERROR;
+        END IF;
       END IF;
     END IF;
   END PROCESS;