[dv/shadowed_rst] Add shadowned reset interface to each IP

This PR adds shadowed reset to IPs that have shadowed regsiter:
AES, Alert_handler, and keymgr

Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/ip/aes/dv/env/aes_env_cfg.sv b/hw/ip/aes/dv/env/aes_env_cfg.sv
index c917d84..1e19825 100644
--- a/hw/ip/aes/dv/env/aes_env_cfg.sv
+++ b/hw/ip/aes/dv/env/aes_env_cfg.sv
@@ -180,6 +180,7 @@
   virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
     list_of_alerts = aes_env_pkg::LIST_OF_ALERTS;
     has_edn = 1;
+    has_shadowed_regs = 1;
     super.initialize(csr_base_addr);
     tl_intg_alert_fields[ral.status.alert_fatal_fault] = 1;
     shadow_update_err_status_fields[ral.status.alert_recov_ctrl_update_err] = 1;
diff --git a/hw/ip/aes/dv/tb/tb.sv b/hw/ip/aes/dv/tb/tb.sv
index 4011bc3..82d44e4 100644
--- a/hw/ip/aes/dv/tb/tb.sv
+++ b/hw/ip/aes/dv/tb/tb.sv
@@ -13,7 +13,7 @@
   `include "uvm_macros.svh"
   `include "dv_macros.svh"
 
-  wire clk, rst_n;
+  wire clk, rst_n, rst_shadowed_n;
   wire devmode;
   wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
   wire edn_req;
@@ -21,6 +21,7 @@
 
   // interfaces
   clk_rst_if clk_rst_if(.clk(clk), .rst_n(rst_n));
+  rst_shadowed_if rst_shadowed_if(.rst_n(rst_n), .rst_shadowed_n(rst_shadowed_n));
   pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
 
   pins_if #(1) devmode_if(devmode);
@@ -41,7 +42,7 @@
   ) dut (
     .clk_i            ( clk                           ),
     .rst_ni           ( rst_n                         ),
-    .rst_shadowed_ni  ( rst_n                         ),
+    .rst_shadowed_ni  ( rst_shadowed_n                ),
 
     .idle_o           (                               ),
     .lc_escalate_en_i ( lc_ctrl_pkg::Off              ),
@@ -62,6 +63,8 @@
     // drive clk and rst_n from clk_if
     clk_rst_if.set_active();
     uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
+    uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif",
+                                                 rst_shadowed_if);
     uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
     uvm_config_db#(devmode_vif)::set(null, "*.env", "devmode_vif", devmode_if);
     uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent*", "vif", tl_if);
diff --git a/hw/ip/keymgr/dv/env/keymgr_env_cfg.sv b/hw/ip/keymgr/dv/env/keymgr_env_cfg.sv
index 4ec5b1e..e66587b 100644
--- a/hw/ip/keymgr/dv/env/keymgr_env_cfg.sv
+++ b/hw/ip/keymgr/dv/env/keymgr_env_cfg.sv
@@ -18,6 +18,7 @@
     list_of_alerts = keymgr_env_pkg::LIST_OF_ALERTS;
     tl_intg_alert_name = "fatal_fault_err";
     has_edn = 1;
+    has_shadowed_regs = 1;
     super.initialize(csr_base_addr);
     tl_intg_alert_fields[ral.fault_status.regfile_intg] = 1;
     shadow_update_err_status_fields[ral.err_code.invalid_shadow_update] = 1;
diff --git a/hw/ip/keymgr/dv/tb.sv b/hw/ip/keymgr/dv/tb.sv
index b6dbcc1..c74282b 100644
--- a/hw/ip/keymgr/dv/tb.sv
+++ b/hw/ip/keymgr/dv/tb.sv
@@ -13,12 +13,13 @@
   `include "uvm_macros.svh"
   `include "dv_macros.svh"
 
-  wire clk, rst_n;
+  wire clk, rst_n, rst_shadowed_n;
   wire devmode;
   wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
 
   // interfaces
   clk_rst_if clk_rst_if(.clk(clk), .rst_n(rst_n));
+  rst_shadowed_if rst_shadowed_if(.rst_n(rst_n), .rst_shadowed_n(rst_shadowed_n));
   pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
   pins_if #(1) devmode_if(devmode);
   tl_if tl_if(.clk(clk), .rst_n(rst_n));
@@ -41,11 +42,11 @@
 
   // dut
   keymgr dut (
-    .clk_i                (clk        ),
-    .rst_ni               (rst_n      ),
-    .rst_shadowed_ni      (rst_n      ),
-    .clk_edn_i            (edn_clk    ),
-    .rst_edn_ni           (edn_rst_n  ),
+    .clk_i                (clk           ),
+    .rst_ni               (rst_n         ),
+    .rst_shadowed_ni      (rst_shadowed_n),
+    .clk_edn_i            (edn_clk       ),
+    .rst_edn_ni           (edn_rst_n     ),
     .aes_key_o            (keymgr_if.aes_key),
     .otbn_key_o           (keymgr_if.otbn_key),
     .kmac_key_o           (keymgr_if.kmac_key),
@@ -77,6 +78,8 @@
     // drive clk and rst_n from clk_if
     clk_rst_if.set_active();
     uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
+    uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif",
+                                                 rst_shadowed_if);
     uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
     uvm_config_db#(devmode_vif)::set(null, "*.env", "devmode_vif", devmode_if);
     uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent*", "vif", tl_if);
diff --git a/hw/ip_templates/alert_handler/dv/env/alert_handler_env_cfg.sv b/hw/ip_templates/alert_handler/dv/env/alert_handler_env_cfg.sv
index 59f8ce3..6704258 100644
--- a/hw/ip_templates/alert_handler/dv/env/alert_handler_env_cfg.sv
+++ b/hw/ip_templates/alert_handler/dv/env/alert_handler_env_cfg.sv
@@ -19,6 +19,7 @@
 
   virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
     has_edn = 1;
+    has_shadowed_regs = 1;
     super.initialize(csr_base_addr);
     shadow_update_err_status_fields[ral.loc_alert_cause[LocalShadowRegUpdateErr].la] = 1;
     shadow_storage_err_status_fields[ral.loc_alert_cause[LocalShadowRegStorageErr].la] = 1;
diff --git a/hw/ip_templates/alert_handler/dv/tb/tb.sv b/hw/ip_templates/alert_handler/dv/tb/tb.sv
index 4deefb0..6992f64 100644
--- a/hw/ip_templates/alert_handler/dv/tb/tb.sv
+++ b/hw/ip_templates/alert_handler/dv/tb/tb.sv
@@ -13,7 +13,7 @@
   `include "uvm_macros.svh"
   `include "dv_macros.svh"
 
-  wire clk, rst_n;
+  wire clk, rst_n, rst_shadowed_n;
   wire devmode;
   wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
   wire [NUM_MAX_ESC_SEV-1:0]    esc_en;
@@ -21,6 +21,7 @@
 
   // interfaces
   clk_rst_if clk_rst_if(.clk(clk), .rst_n(rst_n));
+  rst_shadowed_if rst_shadowed_if(.rst_n(rst_n), .rst_shadowed_n(rst_shadowed_n));
   pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
   pins_if #(NUM_CRASHDUMP) crashdump_if(crashdump);
   pins_if #(1) devmode_if(devmode);
@@ -71,7 +72,7 @@
   alert_handler dut (
     .clk_i                ( clk           ),
     .rst_ni               ( rst_n         ),
-    .rst_shadowed_ni      ( rst_n         ),
+    .rst_shadowed_ni      ( rst_shadowed_n),
     .clk_edn_i            ( edn_clk       ),
     .rst_edn_ni           ( edn_rst_n     ),
     .tl_i                 ( tl_if.h2d     ),
@@ -96,6 +97,8 @@
     // drive clk and rst_n from clk_if
     clk_rst_if.set_active();
     uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
+    uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif",
+                                                 rst_shadowed_if);
     uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
     uvm_config_db#(crashdump_vif)::set(null, "*.env", "crashdump_vif", crashdump_if);
     uvm_config_db#(devmode_vif)::set(null, "*.env", "devmode_vif", devmode_if);
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/dv/env/alert_handler_env_cfg.sv b/hw/top_earlgrey/ip_autogen/alert_handler/dv/env/alert_handler_env_cfg.sv
index 59f8ce3..6704258 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/dv/env/alert_handler_env_cfg.sv
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/dv/env/alert_handler_env_cfg.sv
@@ -19,6 +19,7 @@
 
   virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
     has_edn = 1;
+    has_shadowed_regs = 1;
     super.initialize(csr_base_addr);
     shadow_update_err_status_fields[ral.loc_alert_cause[LocalShadowRegUpdateErr].la] = 1;
     shadow_storage_err_status_fields[ral.loc_alert_cause[LocalShadowRegStorageErr].la] = 1;
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/dv/tb/tb.sv b/hw/top_earlgrey/ip_autogen/alert_handler/dv/tb/tb.sv
index 4deefb0..6992f64 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/dv/tb/tb.sv
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/dv/tb/tb.sv
@@ -13,7 +13,7 @@
   `include "uvm_macros.svh"
   `include "dv_macros.svh"
 
-  wire clk, rst_n;
+  wire clk, rst_n, rst_shadowed_n;
   wire devmode;
   wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
   wire [NUM_MAX_ESC_SEV-1:0]    esc_en;
@@ -21,6 +21,7 @@
 
   // interfaces
   clk_rst_if clk_rst_if(.clk(clk), .rst_n(rst_n));
+  rst_shadowed_if rst_shadowed_if(.rst_n(rst_n), .rst_shadowed_n(rst_shadowed_n));
   pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
   pins_if #(NUM_CRASHDUMP) crashdump_if(crashdump);
   pins_if #(1) devmode_if(devmode);
@@ -71,7 +72,7 @@
   alert_handler dut (
     .clk_i                ( clk           ),
     .rst_ni               ( rst_n         ),
-    .rst_shadowed_ni      ( rst_n         ),
+    .rst_shadowed_ni      ( rst_shadowed_n),
     .clk_edn_i            ( edn_clk       ),
     .rst_edn_ni           ( edn_rst_n     ),
     .tl_i                 ( tl_if.h2d     ),
@@ -96,6 +97,8 @@
     // drive clk and rst_n from clk_if
     clk_rst_if.set_active();
     uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
+    uvm_config_db#(virtual rst_shadowed_if)::set(null, "*.env", "rst_shadowed_vif",
+                                                 rst_shadowed_if);
     uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
     uvm_config_db#(crashdump_vif)::set(null, "*.env", "crashdump_vif", crashdump_if);
     uvm_config_db#(devmode_vif)::set(null, "*.env", "devmode_vif", devmode_if);