@@ -110,6 +110,8 @@ module prim_esc_tb;
110110 // Drive random length of esc_req and check `esc_req_out` and `integ_fail` outputs.
111111 main_clk.wait_clks ($urandom_range (1 , 20 ));
112112 if (integ_fail) test_error (" Esc_req unexpected signal integrity error!" );
113+ // Wait for the escalation request to pass through the output register.
114+ main_clk.wait_clks (1 );
113115 if (! esc_req_out) test_error (" Esc_req did not set esc_req!" );
114116 esc_req = 0 ;
115117
@@ -148,6 +150,8 @@ module prim_esc_tb;
148150 `DV_SPINWAIT (wait (integ_fail == 1 );, , , " Wait for esc_tx.esc_n integ_fail timeout" );
149151 main_clk.wait_clks (1 );
150152 release esc_tx.esc_n;
153+ // Wait for the escalation request to pass through the output register.
154+ main_clk.wait_clks (1 );
151155 // Wait #1ps to avoid a race condition on clock edge.
152156 # 1ps ;
153157 if (! esc_req_out) test_error (" Signal integrity error should set esc_req!" );
@@ -161,6 +165,8 @@ module prim_esc_tb;
161165 `DV_SPINWAIT (wait (integ_fail == 1 );, , , " Wait for esc_rx.resp_n integ_fail timeout" );
162166 main_clk.wait_clks (1 );
163167 release esc_rx.resp_n;
168+ // Wait for the escalation request to pass through the output register.
169+ main_clk.wait_clks (1 );
164170 // Wait #1ps to avoid a race condition on clock edge.
165171 # 1ps ;
166172 if (! esc_req_out) test_error (" Signal integrity error should set esc_req!" );
@@ -176,8 +182,12 @@ module prim_esc_tb;
176182 release esc_tx.esc_n;
177183 // Wait #1ps to avoid a race condition on clock edge.
178184 # 1ps ;
179- if (! esc_req_out) test_error (" Signal integrity error should set esc_req!" );
180185 if (ping_ok) test_error (" Ping error!" );
186+ // Wait for the escalation request to pass through the output register.
187+ main_clk.wait_clks (1 );
188+ // Wait #1ps to avoid a race condition on clock edge.
189+ # 1ps ;
190+ if (! esc_req_out) test_error (" Signal integrity error should set esc_req!" );
181191 ping_req = 0 ;
182192
183193 $display (" [prim_esc_seq] Escalation esc_p/n integrity sequence during ping request finished!" );
@@ -191,7 +201,7 @@ module prim_esc_tb;
191201 // After one ping_req, esc_receiver will start a counter to expect next ping_req. If the
192202 // counter reaches its max value but no ping_req has been received, design will set
193203 // `esc_req_out` signal.
194- main_clk.wait_clks (TIMEOUT_CYCLES + 1 );
204+ main_clk.wait_clks (TIMEOUT_CYCLES + 2 );
195205 if (! esc_req_out) test_error (" Design failed to detect ping request timeout!" );
196206 end
197207 begin
@@ -200,6 +210,8 @@ module prim_esc_tb;
200210 main_clk.wait_clks (2 );
201211 ping_req = 0 ;
202212 if (integ_fail) test_error (" Ping_req unexpected signal integrity error!" );
213+ // Wait for the escalation request to pass through the output register.
214+ main_clk.wait_clks (1 );
203215 if (esc_req_out) test_error (" Ping request should not set esc_req_out!" );
204216 end
205217 join
0 commit comments