diff --git a/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd b/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd
index 9cd5bf76ee63f3a0911f7d3a7b29101764502354..448680abac93e80bc994dc19b6e6d7b6f0a84e2c 100644
--- a/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd
+++ b/libraries/base/dp/src/vhdl/dp_block_validate_bsn_at_sync.vhd
@@ -102,10 +102,6 @@ ARCHITECTURE rtl OF dp_block_validate_bsn_at_sync IS
   SIGNAL count_reg        : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0) := (OTHERS=>'0');
 
   SIGNAL mm_cnt_clr       : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); 
-  SIGNAL mm_cnt_clr_reg   : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); 
-  SIGNAL mm_cnt_clr_done  : STD_LOGIC;
-  SIGNAL cnt_clr_en       : STD_LOGIC;
-  SIGNAL cnt_clr_dat      : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); 
   SIGNAL cnt_clr          : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); 
   SIGNAL cnt_sync         : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0);
   SIGNAL cnt_sync_en      : STD_LOGIC;
@@ -121,27 +117,20 @@ ARCHITECTURE rtl OF dp_block_validate_bsn_at_sync IS
   SIGNAL block_sosi       : t_dp_sosi;
   
 BEGIN
-
-  mm_cnt_clr_reg <= (OTHERS => '0') WHEN mm_rst = '1' ELSE mm_cnt_clr WHEN rising_edge(mm_clk) ELSE mm_cnt_clr_reg;
-  gen_err_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE
-    mm_cnt_clr(I) <= '1' WHEN reg_mosi.rd = '1' AND TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE 
-                     '0' WHEN mm_cnt_clr_done = '1' ELSE mm_cnt_clr_reg(I);
+ 
+  gen_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE
+    mm_cnt_clr(I) <= reg_mosi.rd WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE '0' ;
+    u_common_spulse : ENTITY common_lib.common_spulse
+    PORT MAP (
+      in_rst    => mm_rst,
+      in_clk    => mm_clk,
+      in_pulse  => mm_cnt_clr(I),
+      out_rst   => dp_rst,
+      out_clk   => dp_clk,
+      out_pulse => cnt_clr(I)
+    );
   END GENERATE;
 
-  u_common_reg_cross_cnt_clr : ENTITY common_lib.common_reg_cross_domain
-  PORT MAP (
-    in_rst    => mm_rst,
-    in_clk    => mm_clk,
-    in_new    => reg_mosi.rd,
-    in_dat    => mm_cnt_clr,
-    in_done   => mm_cnt_clr_done,
-    out_rst   => dp_rst,
-    out_clk   => dp_clk,
-    out_dat   => cnt_clr_dat,
-    out_new   => cnt_clr_en
-  );
-  cnt_clr <= cnt_clr_dat WHEN cnt_clr_en = '1' ELSE (OTHERS => '0');
-
   -- discarded counter
   cnt_discarded_en <= '1' WHEN in_sosi.sync = '1' AND bsn_ok = '0' ELSE '0';
   u_discarded_counter : ENTITY common_lib.common_counter
diff --git a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd
index aed70a11ddc2552e71d17770c4834b6e546b1dd6..e1319cfe169bb48fed5779cd1fb224f44f31a50c 100644
--- a/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd
+++ b/libraries/base/dp/src/vhdl/dp_block_validate_err.vhd
@@ -116,10 +116,6 @@ ARCHITECTURE rtl OF dp_block_validate_err IS
   SIGNAL count_reg     : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0) := (OTHERS=>'0');
 
   SIGNAL mm_cnt_clr       : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0);
-  SIGNAL mm_cnt_clr_reg   : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0) := (OTHERS => '0');
-  SIGNAL mm_cnt_clr_done  : STD_LOGIC;
-  SIGNAL cnt_clr_en       : STD_LOGIC;
-  SIGNAL cnt_clr_dat      : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0); 
   SIGNAL cnt_clr          : STD_LOGIC_VECTOR(c_nof_regs-1 DOWNTO 0);
   SIGNAL cnt_blk          : STD_LOGIC_VECTOR(g_cnt_w-1 DOWNTO 0);
   SIGNAL cnt_blk_en       : STD_LOGIC;
@@ -141,26 +137,19 @@ ARCHITECTURE rtl OF dp_block_validate_err IS
   
 BEGIN
  
-  mm_cnt_clr_reg <= (OTHERS => '0') WHEN mm_rst = '1' ELSE mm_cnt_clr WHEN rising_edge(mm_clk) ELSE mm_cnt_clr_reg;
-  gen_err_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE
-    mm_cnt_clr(I) <= '1' WHEN reg_mosi.rd = '1' AND TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE 
-                     '0' WHEN mm_cnt_clr_done = '1' ELSE mm_cnt_clr_reg(I);
+  gen_cnt_clr : FOR I IN 0 TO c_nof_regs-1 GENERATE
+    mm_cnt_clr(I) <= reg_mosi.rd WHEN TO_UINT(reg_mosi.address(c_mm_reg.adr_w-1 DOWNTO 0)) = I ELSE '0' ;
+    u_common_spulse : ENTITY common_lib.common_spulse
+    PORT MAP (
+      in_rst    => mm_rst,
+      in_clk    => mm_clk,
+      in_pulse  => mm_cnt_clr(I),
+      out_rst   => dp_rst,
+      out_clk   => dp_clk,
+      out_pulse => cnt_clr(I)
+    );
   END GENERATE;
 
-  u_common_reg_cross_cnt_clr : ENTITY common_lib.common_reg_cross_domain
-  PORT MAP (
-    in_rst    => mm_rst,
-    in_clk    => mm_clk,
-    in_new    => reg_mosi.rd,
-    in_dat    => mm_cnt_clr,
-    in_done   => mm_cnt_clr_done,
-    out_rst   => dp_rst,
-    out_clk   => dp_clk,
-    out_dat   => cnt_clr_dat,
-    out_new   => cnt_clr_en
-  );
-  cnt_clr <= cnt_clr_dat WHEN cnt_clr_en = '1' ELSE (OTHERS => '0');
-
   -- block counter
   cnt_blk_en <= snk_in.eop WHEN UNSIGNED(cnt_blk) < UNSIGNED(c_max_cnt) ELSE '0';
   u_blk_counter : ENTITY common_lib.common_counter