[dv/otp_ctrl] conditioned mem_bkdr_util creation on PRIM_DEFAULT_IMPL
Signed-off-by: Dror Kabely <dror.kabely@opentitan.org>
diff --git a/hw/ip/otp_ctrl/dv/tb.sv b/hw/ip/otp_ctrl/dv/tb.sv
index 375ae35..7ead49b 100644
--- a/hw/ip/otp_ctrl/dv/tb.sv
+++ b/hw/ip/otp_ctrl/dv/tb.sv
@@ -140,18 +140,32 @@
assign interrupts[OtpOperationDone] = intr_otp_operation_done;
assign interrupts[OtpErr] = intr_otp_error;
- // Instantitate the memory backdoor util instance.
- `define OTP_CTRL_MEM_HIER \
- tb.dut.u_otp.gen_generic.u_impl_generic.u_prim_ram_1p_adv.u_mem.gen_generic.u_impl_generic.mem
+ // Instantitate the memory backdoor util instance only for OS implementation
+ // Proprietary IP will instantiate their own backdoor util
+
+ if (`PRIM_DEFAULT_IMPL == prim_pkg::ImplGeneric) begin : gen_impl_generic
+ `define MEM_MODULE_PATH \
+ tb.dut.u_otp.gen_generic.u_impl_generic.u_prim_ram_1p_adv
+
+ `define MEM_ARRAY_PATH \
+ `MEM_MODULE_PATH.u_mem.gen_generic.u_impl_generic.mem
+
+ initial begin : mem_bkdr_util_gen
+ mem_bkdr_util m_mem_bkdr_util;
+ m_mem_bkdr_util = new(.name("mem_bkdr_util"),
+ .path(`DV_STRINGIFY(`MEM_ARRAY_PATH)),
+ .depth($size(`MEM_ARRAY_PATH)),
+ .n_bits($bits(`MEM_ARRAY_PATH)),
+ .err_detection_scheme(mem_bkdr_util_pkg::EccHamming_22_16));
+
+ uvm_config_db#(mem_bkdr_util)::set(null, "*.env", "mem_bkdr_util", m_mem_bkdr_util);
+ end : mem_bkdr_util_gen
+
+ `undef MEM_ARRAY_PATH
+ `undef MEM_MODULE_PATH
+ end : gen_impl_generic
initial begin
- mem_bkdr_util m_mem_bkdr_util;
- m_mem_bkdr_util = new(.name ("mem_bkdr_util"),
- .path (`DV_STRINGIFY(`OTP_CTRL_MEM_HIER)),
- .depth ($size(`OTP_CTRL_MEM_HIER)),
- .n_bits($bits(`OTP_CTRL_MEM_HIER)),
- .err_detection_scheme(mem_bkdr_util_pkg::EccHamming_22_16));
-
// These SVA checks the lc_escalate_en is either Off or On, we will use more than these
// 2 values.
// If it's not Off, it should be On.
@@ -194,12 +208,10 @@
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#(mem_bkdr_util)::set(null, "*.env", "mem_bkdr_util", m_mem_bkdr_util);
uvm_config_db#(virtual otp_ctrl_if)::set(null, "*.env", "otp_ctrl_vif", otp_ctrl_if);
$timeformat(-12, 0, " ps", 12);
run_test();
end
- `undef OTP_CTRL_MEM_HIER
endmodule