diff --git a/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd b/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
index 10eba26202abd8eafd39ac04b3387b9c67b77117..cb6c8591f68ae2054e6ed487df204dc83e862e5d 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
@@ -59,11 +59,13 @@ END tb_dp_block_from_mm;
 ARCHITECTURE tb OF tb_dp_block_from_mm IS
 
   CONSTANT c_nof_blocks    : NATURAL := g_step_size / g_data_size;
-  CONSTANT c_ram_data_size : NATURAL := g_nof_data * g_data_size * c_nof_blocks + g_data_size;  -- Size is g_data_size addresses more than needed, to check for oversized blocks.
+  CONSTANT c_ram_data_size : NATURAL := g_nof_data * g_data_size * c_nof_blocks; 
   CONSTANT c_ram_adr_w     : NATURAL := ceil_log2(c_ram_data_size);
 
   CONSTANT c_ram           : t_c_mem := (1, c_ram_adr_w, c_word_w, 2**c_ram_adr_w, '0');
 
+  CONSTANT c_init          : NATURAL := 42; -- should be > 0
+
   SIGNAL tb_end            : STD_LOGIC := '0';
   SIGNAL clk               : STD_LOGIC := '1';
   SIGNAL rst               : STD_LOGIC := '1';
@@ -117,8 +119,8 @@ BEGIN
     proc_common_wait_until_low(clk, rst);
     proc_common_wait_some_cycles(clk, 10);
     FOR i IN 0 TO c_ram_data_size - 1 LOOP
-      ram_wr_adr <= TO_UVEC(i, c_ram.adr_w);
-      ram_wr_dat <= TO_UVEC(i, c_ram.dat_w);
+      ram_wr_adr <= TO_UVEC(         i, c_ram.adr_w);
+      ram_wr_dat <= TO_UVEC(c_init + i, c_ram.dat_w);
       ram_wr_en  <= '1'; 
       proc_common_wait_some_cycles(clk, 1);
     END LOOP;
@@ -154,7 +156,7 @@ BEGIN
     WHILE tb_end = '0' LOOP
       WAIT UNTIL rising_edge(clk);
       IF block_done = '1' THEN
-        ASSERT stop_address = TO_UINT(wr_mosi.wrdata(c_ram.dat_w-1 DOWNTO 0)) REPORT "wrong data at mm_done signal, must be same as stop_address" SEVERITY ERROR;
+        ASSERT stop_address = TO_UINT(wr_mosi.wrdata(c_ram.dat_w-1 DOWNTO 0)) - c_init REPORT "wrong data at mm_done signal, must be same as stop_address + c_init" SEVERITY ERROR;
       END IF;
     END LOOP;  
     WAIT;
@@ -179,22 +181,20 @@ BEGIN
 
   ram_prev_rd_val <= ram_rd_val WHEN rising_edge(clk);
 
+  rd_data <= TO_UINT(ram_rd_dat);
   p_verify_read_ram_data: PROCESS
   BEGIN
-    rd_nxt_data  <= 1;
+    rd_nxt_data  <= c_init;
     proc_common_wait_until_high(clk, transfer_done);
     WHILE tb_end = '0' LOOP
       WAIT UNTIL rising_edge(clk);
-      rd_data <= TO_UINT(ram_rd_dat);
-      IF rd_data > 0 THEN
-        IF ram_rd_val = '1' THEN
-          ASSERT rd_data = rd_nxt_data REPORT "wrong order of RAM values" SEVERITY ERROR;
-          ASSERT rd_data <= stop_address REPORT "wrong RAM values, greater then block size" SEVERITY ERROR;
-          rd_nxt_data <= rd_nxt_data + 1;
-        END IF;
-        IF ram_rd_val = '0' AND ram_prev_rd_val = '1' THEN  -- If ram_rd_val goes from hi tot lo.
-          ASSERT rd_data = stop_address REPORT "wrong last RAM values, not same as block size" SEVERITY ERROR;
-        END IF;
+      IF ram_rd_val = '1' THEN
+        ASSERT rd_data = rd_nxt_data REPORT "wrong order of RAM values" SEVERITY ERROR;
+        ASSERT rd_data - c_init <= stop_address REPORT "wrong RAM values, greater than block size" SEVERITY ERROR;
+        rd_nxt_data <= rd_nxt_data + 1;
+      END IF;
+      IF ram_rd_val = '0' AND ram_prev_rd_val = '1' THEN  -- If ram_rd_val goes from hi tot lo.
+        ASSERT rd_data - c_init = stop_address REPORT "wrong last RAM values, not same as block size" SEVERITY ERROR;
       END IF;
     END LOOP;
     WAIT;