diff --git a/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd index ead0038c65910aa3c063387457d08300ec968cde..8670721cbbc4c8d5a6894840853f3b35b68a7cc8 100644 --- a/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd +++ b/libraries/base/dp/src/vhdl/dp_bsn_monitor_v2.vhd @@ -116,6 +116,7 @@ ARCHITECTURE rtl OF dp_bsn_monitor_v2 IS SIGNAL nof_valid : STD_LOGIC_VECTOR(c_cnt_valid_w-1 DOWNTO 0); SIGNAL cnt_latency : STD_LOGIC_VECTOR(c_cnt_latency_w-1 DOWNTO 0); SIGNAL latency : STD_LOGIC_VECTOR(c_cnt_latency_w-1 DOWNTO 0); + SIGNAL ref_sync_reg : STD_LOGIC := '0'; SIGNAL i_mon_ready_stable : STD_LOGIC; SIGNAL i_mon_xon_stable : STD_LOGIC; @@ -167,7 +168,10 @@ BEGIN nof_err <= cnt_err; nof_valid <= cnt_valid; latency <= cnt_latency; - + + -- Register ref_sync to ease timing closure for ref_sync fanout to (many) dp_bsn_monitor_v2 instances + ref_sync_reg <= ref_sync WHEN rising_edge(clk); + u_sync_timeout_cnt : ENTITY common_lib.common_counter GENERIC MAP ( g_width => c_sync_timeout_w @@ -315,7 +319,7 @@ BEGIN load => TO_SVEC(1, c_cnt_valid_w), count => cnt_valid ); - + u_cnt_latency : ENTITY common_lib.common_counter GENERIC MAP ( g_width => c_cnt_latency_w @@ -323,7 +327,7 @@ BEGIN PORT MAP ( rst => rst, clk => clk, - cnt_clr => ref_sync, + cnt_clr => ref_sync_reg, cnt_en => '1', count => cnt_latency );