[dv/cip_base_seq] allow recoverable alert in dut test
This PR modifies the post_start alert check. It adds a 200 cycle delays
before checking for fatal alert, because we allows recoverable alert to
fire once.
Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/dv/sv/cip_lib/seq_lib/cip_base_vseq.sv b/hw/dv/sv/cip_lib/seq_lib/cip_base_vseq.sv
index e50a543..49fe26c 100644
--- a/hw/dv/sv/cip_lib/seq_lib/cip_base_vseq.sv
+++ b/hw/dv/sv/cip_lib/seq_lib/cip_base_vseq.sv
@@ -472,10 +472,19 @@
endtask
virtual task check_no_fatal_alerts();
+ // Max alert_handshake shake cycls:
+ // - 20 cycles includes ack response and ack stable time.
+ // - 10 is the max difference between alert clock and dut clock.
+ int max_alert_handshake_cycles = 20 * 10;
if (cfg.list_of_alerts.size() > 0) begin
- // Alert hanshake should be within 200 cycles considering async domains.
- int num_cycles = $urandom_range(200, 500);
- repeat(num_cycles) begin
+ int check_cycles = $urandom_range(max_alert_handshake_cycles,
+ max_alert_handshake_cycles * 3);
+
+ // This task allows recoverable alerts to fire, or fatal alert being triggered once by
+ // `alert_test` register.
+ cfg.clk_rst_vif.wait_clks(max_alert_handshake_cycles);
+
+ repeat(check_cycles) begin
cfg.clk_rst_vif.wait_clks(1);
foreach (cfg.m_alert_agent_cfg[alert_name]) begin
`DV_CHECK_EQ(0, cfg.m_alert_agent_cfg[alert_name].vif.get_alert(),