Skip to content
Snippets Groups Projects
Commit d81b2cd1 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Register ref_sync to ease timing closure for ref_sync fanout to (many) dp_bsn_monitor_v2 instances.

parent 2a870e62
No related branches found
No related tags found
No related merge requests found
Pipeline #37092 passed
......@@ -104,6 +104,7 @@ ARCHITECTURE rtl OF dp_bsn_monitor_v2 IS
SIGNAL nxt_valid : STD_LOGIC;
SIGNAL sop : STD_LOGIC;
SIGNAL nxt_sop : STD_LOGIC;
SIGNAL sync_reg : STD_LOGIC;
SIGNAL sync : STD_LOGIC;
SIGNAL nxt_sync : STD_LOGIC;
SIGNAL bsn : STD_LOGIC_VECTOR(c_bsn_w-1 DOWNTO 0);
......@@ -162,20 +163,19 @@ BEGIN
nxt_mon_nof_sop <= nof_sop WHEN sync='1' ELSE i_mon_nof_sop;
nxt_mon_nof_err <= nof_err WHEN sync='1' ELSE i_mon_nof_err;
nxt_mon_nof_valid <= nof_valid WHEN sync='1' ELSE i_mon_nof_valid;
nxt_mon_latency <= latency WHEN sync='1' ELSE i_mon_latency;
nxt_mon_latency <= latency WHEN sync_reg='1' ELSE i_mon_latency; -- use sync_reg due to ref_sync_reg
nof_sop <= cnt_sop;
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
-- TODO if needed:
-- Registering ref_sync assumes ref_sunc occurs before in_sosi.sync. When ref_sync = in_sosi.sync,
-- then also the impact of registering ref_sync with respect to in_sosi and in_siso needs to be
-- verified.
--ref_sync_reg <= ref_sync WHEN rising_edge(clk);
ref_sync_reg <= ref_sync;
-- Register ref_sync to ease timing closure for ref_sync fanout to (many) dp_bsn_monitor_v2
-- instances. The ref_sync_reg is used to restart cnt_latency. Therefore the sync_reg
-- (instead of sync) is needed to capture latency (= cnt_latency) not too early, so capture
-- cnt_latency at or after the cnt_latency has restarted.
sync_reg <= sync WHEN rising_edge(clk);
ref_sync_reg <= ref_sync WHEN rising_edge(clk);
u_sync_timeout_cnt : ENTITY common_lib.common_counter
GENERIC MAP (
......@@ -216,6 +216,7 @@ BEGIN
sop <= '0';
err <= '0';
sync <= '0';
sync_reg <= '0';
bsn <= (OTHERS=>'0');
-- output
mon_evt <= '0';
......@@ -236,6 +237,7 @@ BEGIN
sop <= nxt_sop;
err <= nxt_err;
sync <= nxt_sync;
sync_reg <= sync;
bsn <= nxt_bsn;
-- output
mon_evt <= nxt_mon_evt;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment