diff --git a/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd b/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd
index 8fe8c59f7f2ebd83e860cd25ba13d0923af099b5..48d625c9a5453e34870b0b8cea795cb1da5dcaba 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd
@@ -114,13 +114,13 @@ BEGIN
   BEGIN
     WAIT UNTIL rising_edge(clk);
     expected_sync <= '0';
-    proc_common_wait_until_lo_hi(clk, pps_sop);
+    proc_common_wait_until_high(clk, pps_sop);
     IF bsn_sop = '1' THEN
       expected_sync <= '1';
       expected_bsn <= BSN+1;
       expected_offset_bsn <= 0;
     ELSE
-      proc_common_wait_until_lo_hi(clk, bsn_sop);
+      proc_common_wait_until_high(clk, bsn_sop);
       expected_sync <= '1';
       expected_bsn <= BSN+1;
       expected_offset_bsn <= (BSN+1) * g_block_size - SSN * g_pps_interval;
@@ -146,7 +146,7 @@ BEGIN
     proc_common_wait_some_cycles(clk, 500);
 
     -- Start asynchronously by making dp_on high
-    proc_common_wait_until_hi_lo(clk, expected_sync);
+    proc_common_wait_until_high(clk, expected_sync_dly);
     tb_state  <= s_pps_start;
     dp_on_pps <= '0';
     dp_on     <= '1';
@@ -157,12 +157,19 @@ BEGIN
     tb_state <= s_disable;
     dp_on <= '0';
     dp_on_pps <= '0';
-    proc_common_wait_some_cycles(clk, 3*g_pps_interval);
+    
+    -- wait until one pps_interval before next begin of SSN generator (pps_sop = bsn_sop)    
+    proc_common_wait_until_high(clk, pps_sop);
+    v_bsn_time_offset := ((SSN + 2) * g_pps_interval) MOD g_block_size;
+    WHILE v_bsn_time_offset > 0 LOOP
+      proc_common_wait_some_cycles(clk, g_pps_interval);
+      v_bsn_time_offset := ((SSN + 2) * g_pps_interval) MOD g_block_size;
+    END LOOP;
 
     -- Start synchronously by making dp_on high at pps
     FOR i IN 0 TO 2 LOOP
       -- Now start on PPS
-      proc_common_wait_until_hi_lo(clk, expected_sync);
+      proc_common_wait_until_high(clk, expected_sync);
       v_bsn_time_offset := ((SSN + 1) * g_pps_interval) MOD g_block_size;
       v_bsn_init := ((SSN + 1) * g_pps_interval) / g_block_size;
       IF v_bsn_time_offset = 0 THEN
@@ -180,7 +187,15 @@ BEGIN
       tb_state <= s_disable;
       dp_on <= '0';
       dp_on_pps <= '0';
-      proc_common_wait_some_cycles(clk, 3*g_pps_interval);
+      
+      -- wait until one pps_interval before next begin of SSN generator (pps_sop = bsn_sop)    
+      proc_common_wait_until_high(clk, pps_sop);
+      v_bsn_time_offset := ((SSN + 2) * g_pps_interval) MOD g_block_size;
+      WHILE v_bsn_time_offset > 0 LOOP
+        proc_common_wait_some_cycles(clk, g_pps_interval);
+        v_bsn_time_offset := ((SSN + 2) * g_pps_interval) MOD g_block_size;
+      END LOOP;
+
     END LOOP;
 
     tb_end   <= '1';
@@ -191,7 +206,7 @@ BEGIN
   -----------------------------------------------------------------------------
   -- Verification
   -----------------------------------------------------------------------------
-  proc_dp_verify_sop_and_eop(clk, bs_sosi.valid, bs_sosi.sop, bs_sosi.eop, hold_bs_sop);                        -- Verify that sop and eop come in pairs
+  proc_dp_verify_sop_and_eop(clk, bs_sosi.valid, bs_sosi.sop, bs_sosi.eop, hold_bs_sop);  -- Verify that sop and eop come in pairs
   proc_dp_verify_sync(clk, verify_sync, bs_sosi.sync, bs_sosi.sop, expected_sync_dly);  -- Verify sync at sop and at expected_sync
 
   -----------------------------------------------------------------------------
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_source_v2.vhd b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_source_v2.vhd
index 2e4e682cd0c78aa7ef706b23e65aae1be75393ac..4c1700d33404cb7a9399ba52a7ed41642e12456a 100644
--- a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_source_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_source_v2.vhd
@@ -37,19 +37,19 @@ ARCHITECTURE tb OF tb_tb_dp_bsn_source_v2 IS
 BEGIN
   -- from tb_dp_bsn_source_v2.vhd
   --
-  -- g_sync_offset  : NATURAL := 0  
-  -- g_clk_per_sync : NATURAL := 240
+  -- g_pps_interval : NATURAL := 240
+  -- g_block_size   : NATURAL := 32  
 
-  --                                         (sync_offset, clk_per_sync)
+  --                                        (g_pps_interval, g_block_size)
   -- test different clk_per_sync
-  u0_230 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (0, 230);
-  u0_240 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (0, 240);
-  u0_248 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (0, 248);
+  u0_230 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (230, 32);
+  u0_240 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (240, 32);
+  u0_248 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (248, 32);
 
-  -- test different sync_offsets
-  u1_1 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (1, 248);
-  u1_3 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (3, 248);
-  u1_4 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (4, 248);
+  -- test different block_size's
+  u1_1 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (240, 30);
+  u1_3 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (240, 32);
+  u1_4 : ENTITY work.tb_dp_bsn_source_v2 GENERIC MAP (240, 27);
   
 END tb;
   
\ No newline at end of file