diff --git a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
index 125a82f533fd942e12b3da0f7331e7a7973881c7..3325d3d9ccdc252fd59cc89665111559c36cf8a6 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -105,7 +105,8 @@ ARCHITECTURE rtl OF dp_bsn_align_v2 IS
                                           nof_dat  => c_ram_size,
                                           init_sl  => '0');
 
-  CONSTANT c_block_size_w   : NATURAL := ceil_log2(g_block_size);
+  -- Use +1 to ensure that g_block_size that is power of 2 also fits in c_block_size_slv
+  CONSTANT c_block_size_w   : NATURAL := ceil_log2(g_block_size + 1);
   CONSTANT c_block_size_slv : STD_LOGIC_VECTOR(c_block_size_w-1 DOWNTO 0) := TO_UVEC(g_block_size, c_block_size_w);
   CONSTANT c_blk_pointer_w  : NATURAL := ceil_log2(c_buffer_nof_blocks);
 
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
index ef221c4db9fd01e6622269fab904880517c55c75..aec4974d6ac70fc5ea4960e99041d567984649d4 100644
--- a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
@@ -67,9 +67,11 @@ BEGIN
   -- g_tb_nof_blocks        : NATURAL := 10       -- number of input blocks per restart
 
   u_mm_output               : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3,    TRUE, 0, 0, 1,  0, 2, c_nof_blk);
+  u_mm_output_pow2          : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1,      16, c_period, 32, 16, 17, 0, 0,  0, 3,    TRUE, 0, 0, 1,  0, 2, c_nof_blk);  -- g_block_size = 2**4 = 16
   u_mm_output_large_bsn     : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3000, TRUE, 0, 0, 1,  0, 2, c_nof_blk);  -- test where bsn * g_block_size > 2^10 to test address resizing
   u_mm_output_single        : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (1, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3,    TRUE, 0, 0, 1,  0, 2, c_nof_blk);
   u_dp_output               : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3,    FALSE, 0, 0, 1,  0, 2, c_nof_blk);
+  u_dp_output_pow2          : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1,      16, c_period, 32, 16, 17, 0, 0,  0, 3,    FALSE, 0, 0, 1,  0, 2, c_nof_blk);  -- g_block_size = 2**4 = 16
   u_dp_output_large_bsn     : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3000, FALSE, 0, 0, 1,  0, 2, c_nof_blk); -- test where bsn * g_block_size > 2^10 to test address resizing
   u_dp_output_single        : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (1, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3,    FALSE, 0, 0, 1,  0, 2, c_nof_blk);
   u_dp_output_p1            : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, 3,    FALSE, 1, 1, 1,  0, 2, c_nof_blk);