[dv/alert-handler] add sequence to support new regs

This PR adds sequence to support read/write to new regs:
1). loc_alert_cause (originally only check loc_alert_casue_0)
2). crashdump_trigger_shadowed (newly added)

Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_base_vseq.sv b/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_base_vseq.sv
index ca9b45b..dc9fb75 100644
--- a/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_base_vseq.sv
+++ b/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_base_vseq.sv
@@ -148,8 +148,16 @@
   // checking for csr_rd is done in scb
   virtual task read_alert_cause();
     bit [TL_DW-1:0] alert_cause;
-    csr_rd(.ptr(ral.alert_cause[0]), .value(alert_cause));
-    csr_rd(.ptr(ral.loc_alert_cause[0]), .value(alert_cause));
+    foreach (ral.alert_cause[i]) begin
+      if ($urandom_range(0, 1)) begin
+        csr_rd(.ptr(ral.alert_cause[i]), .value(alert_cause));
+      end
+    end
+    foreach (ral.loc_alert_cause[i]) begin
+      if ($urandom_range(0, 1)) begin
+        csr_rd(.ptr(ral.loc_alert_cause[i]), .value(alert_cause));
+      end
+    end
   endtask
 
   virtual task read_esc_status();
@@ -227,6 +235,16 @@
     join
   endtask
 
+  virtual task alert_handler_crashdump_phases(bit [1:0] classa_phase = $urandom(),
+                                              bit [1:0] classb_phase = $urandom(),
+                                              bit [1:0] classc_phase = $urandom(),
+                                              bit [1:0] classd_phase = $urandom());
+    csr_wr(.ptr(ral.classa_crashdump_trigger_shadowed), .value(classa_phase));
+    csr_wr(.ptr(ral.classb_crashdump_trigger_shadowed), .value(classb_phase));
+    csr_wr(.ptr(ral.classc_crashdump_trigger_shadowed), .value(classc_phase));
+    csr_wr(.ptr(ral.classd_crashdump_trigger_shadowed), .value(classd_phase));
+  endtask
+
   virtual task wr_phases_cycle(int max_phase_cyc);
     `RAND_AND_WR_CLASS_PHASES_CYCLE(a);
     `RAND_AND_WR_CLASS_PHASES_CYCLE(b);
diff --git a/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_smoke_vseq.sv b/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_smoke_vseq.sv
index dabda7f..6940b12 100644
--- a/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_smoke_vseq.sv
+++ b/hw/ip/alert_handler/dv/env/seq_lib/alert_handler_smoke_vseq.sv
@@ -125,6 +125,9 @@
       alert_handler_rand_wr_class_ctrl(lock_bit_en);
       alert_handler_wr_regwen_regs(clr_en);
 
+      // randomize crashdump triggered phases
+      alert_handler_crashdump_phases();
+
       // randomly write phase cycle registers
       // always set phase_cycle for the first iteration, in order to pass stress_all test
       if (do_wr_phases_cyc || i == 1) wr_phases_cycle(max_phase_cyc);