[sram/dv] Fix bijection test
1. Fix sram address check
2. minor update on task `req_scr_key`
Signed-off-by: Weicai Yang <weicai@google.com>
diff --git a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_base_vseq.sv b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_base_vseq.sv
index 704a3c1..bb85acd 100644
--- a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_base_vseq.sv
+++ b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_base_vseq.sv
@@ -61,7 +61,12 @@
//
// Will trigger a request to the KDI push_pull agent.
virtual task req_scr_key();
- csr_wr(.ptr(ral.ctrl), .value(1'b1));
+ ral.ctrl.renew_scr_key.set(1);
+ csr_update(.csr(ral.ctrl));
+ csr_spinwait(.ptr(ral.status.scr_key_valid), .exp_data(1));
+
+ // initialize mem_model
+ cfg.scb.init_mem();
endtask
// Task to perform a single SRAM read at the specified location
@@ -72,9 +77,6 @@
input bit [TL_DW-1:0] exp_rdata = '0,
input mubi4_t instr_type = MuBi4False,
output logic [TL_DW-1:0] rdata);
- `DV_CHECK_FATAL((addr inside {[cfg.sram_start_addr : cfg.sram_end_addr]}),
- $sformatf("addr[0x%0x] is not in range", addr),
- `gfn)
tl_access(.addr(addr),
.data(rdata),
.mask(mask),
@@ -94,9 +96,6 @@
bit [TL_DBW-1:0] mask = get_rand_contiguous_mask(),
bit blocking = $urandom_range(0, 1),
mubi4_t instr_type = MuBi4False);
- `DV_CHECK_FATAL((addr inside {[cfg.sram_start_addr : cfg.sram_end_addr]}),
- $sformatf("addr[0x%0x] is not in range", addr),
- `gfn)
tl_access(.addr(addr),
.data(data),
.mask(mask),
@@ -115,10 +114,6 @@
bit [TL_DW-1:0] data;
mubi4_t instr_type;
- `DV_CHECK_FATAL((addr inside {[cfg.sram_start_addr : cfg.sram_end_addr]}),
- $sformatf("addr[0x%0x] is not in range", addr),
- `gfn)
-
repeat (num_stress_ops) begin
// fully randomize data
`DV_CHECK_STD_RANDOMIZE_FATAL(data)
@@ -157,8 +152,7 @@
// full randomize addr and data
`DV_CHECK_STD_RANDOMIZE_FATAL(data)
- `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(addr,
- addr inside {[cfg.sram_start_addr : cfg.sram_end_addr]};)
+ `DV_CHECK_STD_RANDOMIZE_FATAL(addr)
// never send InstrType transactions unless en_ifetch is enabled
if (en_ifetch) instr_type = get_rand_mubi4_val();
diff --git a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_bijection_vseq.sv b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_bijection_vseq.sv
index 56ad19e..bc06cf2 100644
--- a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_bijection_vseq.sv
+++ b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_bijection_vseq.sv
@@ -45,7 +45,6 @@
// request new scrambling key on all but the last iteration
if (i != num_trans - 1) begin
req_scr_key();
- csr_spinwait(.ptr(ral.status.scr_key_valid), .exp_data(1'b1));
end
end
diff --git a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_lc_escalation_vseq.sv b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_lc_escalation_vseq.sv
index 54bf514..58f1bf7 100644
--- a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_lc_escalation_vseq.sv
+++ b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_lc_escalation_vseq.sv
@@ -58,7 +58,6 @@
// randomly enable zero delays in the SRAM TLUL agent
cfg.zero_delays = $urandom_range(0, 1);
req_scr_key();
- csr_spinwait(.ptr(ral.status.scr_key_valid), .exp_data(1));
`DV_CHECK_MEMBER_RANDOMIZE_FATAL(num_ops)
do_rand_ops(.num_ops(num_ops), .abort(1));
end
diff --git a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_smoke_vseq.sv b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_smoke_vseq.sv
index a8f7d27..d10ee2c 100644
--- a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_smoke_vseq.sv
+++ b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_smoke_vseq.sv
@@ -89,8 +89,7 @@
if (stress_pipeline) begin
bit [TL_AW-1:0] stress_addr;
for (int i = 0; i < num_ops; i++) begin
- `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(stress_addr,
- stress_addr inside {[cfg.sram_start_addr : cfg.sram_end_addr]};)
+ `DV_CHECK_STD_RANDOMIZE_FATAL(stress_addr)
do_stress_ops(stress_addr, $urandom_range(5, 20));
end
end else begin
diff --git a/hw/ip/sram_ctrl/dv/env/sram_ctrl_env_cfg.sv b/hw/ip/sram_ctrl/dv/env/sram_ctrl_env_cfg.sv
index 7a9c032..e69aae3 100644
--- a/hw/ip/sram_ctrl/dv/env/sram_ctrl_env_cfg.sv
+++ b/hw/ip/sram_ctrl/dv/env/sram_ctrl_env_cfg.sv
@@ -22,9 +22,6 @@
virtual sram_ctrl_exec_if exec_vif;
mem_bkdr_util mem_bkdr_util_h;
- // Represent the lower and upper bounds of the SRAM memory region
- bit [TL_AW-1:0] sram_start_addr, sram_end_addr;
-
// Store the scb handle for seq. When seq initializes the mem, we should initialize mem_model in
// scb as well.
sram_ctrl_scoreboard#(AddrWidth) scb;
@@ -47,13 +44,6 @@
super.initialize(csr_base_addr);
- // SRAM is a single, contiguous, address range
- sram_start_addr = ral_models[sram_ral_name].mapped_addr_ranges[0].start_addr;
- sram_end_addr = ral_models[sram_ral_name].mapped_addr_ranges[0].end_addr;
-
- `uvm_info(`gfn, $sformatf("sram_start_addr: 0x%0x", sram_start_addr), UVM_HIGH)
- `uvm_info(`gfn, $sformatf("sram_end_addr: 0x%0x", sram_end_addr), UVM_HIGH)
-
// Build KDI cfg object and configure
m_kdi_cfg = push_pull_agent_cfg#(.DeviceDataWidth(KDI_DATA_SIZE))::type_id::create("m_kdi_cfg");
m_kdi_cfg.agent_type = push_pull_agent_pkg::PullAgent;
@@ -92,5 +82,4 @@
`uvm_error(`gfn, $sformatf("%0s is an illegal RAL model name", name))
end
endfunction
-
endclass