[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)}
%>\