[sva/keymgr] Fix csr assertion error

This PR fixes the auto-generated assertion error:
The issue is that some shadow registers are hro and sw rw. When
generating CSR assertion checks, we did not exclude this scenario.

Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/ip/keymgr/dv/sva/keymgr_bind.sv b/hw/ip/keymgr/dv/sva/keymgr_bind.sv
index ec37187..3e21c4c 100644
--- a/hw/ip/keymgr/dv/sva/keymgr_bind.sv
+++ b/hw/ip/keymgr/dv/sva/keymgr_bind.sv
@@ -13,12 +13,11 @@
     .d2h  (tl_o)
   );
 
- // TODO: fix shadow reg assertion errors and enable this check.
- // bind keymgr keymgr_csr_assert_fpv keymgr_csr_assert (
- //   .clk_i,
- //   .rst_ni,
- //   .h2d    (tl_i),
- //   .d2h    (tl_o)
- // );
+  bind keymgr keymgr_csr_assert_fpv keymgr_csr_assert (
+    .clk_i,
+    .rst_ni,
+    .h2d    (tl_i),
+    .d2h    (tl_o)
+ );
 
 endmodule
diff --git a/util/reggen/fpv_csr.sv.tpl b/util/reggen/fpv_csr.sv.tpl
index 14e436f..e309253 100644
--- a/util/reggen/fpv_csr.sv.tpl
+++ b/util/reggen/fpv_csr.sv.tpl
@@ -38,7 +38,7 @@
 <%
   addr_width = rb.get_addr_width()
   addr_msb  = addr_width - 1
-  hro_regs_list = [r for r in rb.flat_regs if not r.is_hw_writable()]
+  hro_regs_list = [r for r in rb.flat_regs if (not r.is_hw_writable() and not r.shadowed)]
   num_hro_regs = len(hro_regs_list)
   hro_map = {r.offset: (idx, r) for idx, r in enumerate(hro_regs_list)}
 %>\