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

Need sync_reg2 to align latency monitor when ref_sync = in_sosi.sync.

parent c417f9ab
No related branches found
No related tags found
1 merge request!288Resolve L2SDP-836
...@@ -104,6 +104,7 @@ ARCHITECTURE rtl OF dp_bsn_monitor_v2 IS ...@@ -104,6 +104,7 @@ ARCHITECTURE rtl OF dp_bsn_monitor_v2 IS
SIGNAL nxt_valid : STD_LOGIC; SIGNAL nxt_valid : STD_LOGIC;
SIGNAL sop : STD_LOGIC; SIGNAL sop : STD_LOGIC;
SIGNAL nxt_sop : STD_LOGIC; SIGNAL nxt_sop : STD_LOGIC;
SIGNAL sync_reg2 : STD_LOGIC;
SIGNAL sync_reg : STD_LOGIC; SIGNAL sync_reg : STD_LOGIC;
SIGNAL sync : STD_LOGIC; SIGNAL sync : STD_LOGIC;
SIGNAL nxt_sync : STD_LOGIC; SIGNAL nxt_sync : STD_LOGIC;
...@@ -163,7 +164,7 @@ BEGIN ...@@ -163,7 +164,7 @@ BEGIN
nxt_mon_nof_sop <= nof_sop WHEN sync='1' ELSE i_mon_nof_sop; 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_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_nof_valid <= nof_valid WHEN sync='1' ELSE i_mon_nof_valid;
nxt_mon_latency <= latency WHEN sync_reg='1' ELSE i_mon_latency; -- use sync_reg due to ref_sync_reg nxt_mon_latency <= latency WHEN sync_reg2='1' ELSE i_mon_latency; -- use sync_reg2 due to ref_sync_reg
nof_sop <= cnt_sop; nof_sop <= cnt_sop;
nof_err <= cnt_err; nof_err <= cnt_err;
...@@ -171,9 +172,9 @@ BEGIN ...@@ -171,9 +172,9 @@ BEGIN
latency <= cnt_latency; latency <= cnt_latency;
-- Register ref_sync to ease timing closure for ref_sync fanout to (many) dp_bsn_monitor_v2 -- 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 -- instances. The ref_sync_reg is used to restart cnt_latency. Therefore the sync_reg2
-- (instead of sync) is needed to capture latency (= cnt_latency) not too early, so capture -- (instead of sync) is needed to capture latency (= cnt_latency) not too early, in case
-- cnt_latency at or after the cnt_latency has restarted. -- ref_sync = in_sosi.sync, so capture cnt_latency at or after the cnt_latency has restarted.
ref_sync_reg <= ref_sync WHEN rising_edge(clk); ref_sync_reg <= ref_sync WHEN rising_edge(clk);
u_sync_timeout_cnt : ENTITY common_lib.common_counter u_sync_timeout_cnt : ENTITY common_lib.common_counter
...@@ -216,6 +217,7 @@ BEGIN ...@@ -216,6 +217,7 @@ BEGIN
err <= '0'; err <= '0';
sync <= '0'; sync <= '0';
sync_reg <= '0'; sync_reg <= '0';
sync_reg2 <= '0';
bsn <= (OTHERS=>'0'); bsn <= (OTHERS=>'0');
-- output -- output
mon_evt <= '0'; mon_evt <= '0';
...@@ -237,6 +239,7 @@ BEGIN ...@@ -237,6 +239,7 @@ BEGIN
err <= nxt_err; err <= nxt_err;
sync <= nxt_sync; sync <= nxt_sync;
sync_reg <= sync; sync_reg <= sync;
sync_reg2 <= sync_reg;
bsn <= nxt_bsn; bsn <= nxt_bsn;
-- output -- output
mon_evt <= nxt_mon_evt; 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