[flash_ctrl,dv] closed source regression fix
flash_ctrl_cov_if is located under cov directory.
When such module or dv component is used in env class, it
can cause compile error in closed source test.
Remove flash_ctrl_cov_if reference from env class.
Signed-off-by: Jaedon Kim <jdonjdon@google.com>
diff --git a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov.core b/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov.core
index d04d5e1..7a5da02 100644
--- a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov.core
+++ b/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov.core
@@ -11,7 +11,6 @@
- lowrisc:dv:dv_utils
- lowrisc:ip:flash_ctrl
files:
- - flash_ctrl_cov_if.sv
- flash_ctrl_cov_bind.sv
file_type: systemVerilogSource
diff --git a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_bind.sv b/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_bind.sv
index ee2e927..9f0c72f 100644
--- a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_bind.sv
+++ b/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_bind.sv
@@ -10,7 +10,6 @@
);
module flash_ctrl_cov_bind;
- bind flash_ctrl flash_ctrl_cov_if u_flash_ctrl_cov_if (.*);
`FLASH_COV_LC_TX_BIND(lc_creator_seed_sw_rw_en)
`FLASH_COV_LC_TX_BIND(lc_owner_seed_sw_rw_en)
diff --git a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_if.sv b/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_if.sv
deleted file mode 100644
index c9eb5bc..0000000
--- a/hw/ip/flash_ctrl/dv/cov/flash_ctrl_cov_if.sv
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Implements functional coverage for FLASH_CTRL
-
-interface flash_ctrl_cov_if (
- input logic clk_i,
- input logic rst_ni
-);
-
- import uvm_pkg::*;
- import flash_ctrl_pkg::*;
- import lc_ctrl_pkg::*;
- import dv_utils_pkg::*;
- `include "dv_fcov_macros.svh"
-
- logic rd_buf_en;
- lc_tx_t rma_req;
- rma_state_e rma_state;
- logic [10:0] prog_state0;
- logic [10:0] prog_state1;
- logic [10:0] lcmgr_state;
- logic init;
-endinterface
diff --git a/hw/ip/flash_ctrl/dv/env/flash_ctrl_env.sv b/hw/ip/flash_ctrl/dv/env/flash_ctrl_env.sv
index a729498..26d0905 100644
--- a/hw/ip/flash_ctrl/dv/env/flash_ctrl_env.sv
+++ b/hw/ip/flash_ctrl/dv/env/flash_ctrl_env.sv
@@ -30,10 +30,6 @@
)) begin
`uvm_fatal(`gfn, "failed to get flash_ctrl_vif from uvm_config_db")
end
- if (!uvm_config_db#(virtual flash_ctrl_cov_if)::get(
- this, "", "flash_ctrl_cov_vif", cfg.flash_ctrl_cov_vif)) begin
- `uvm_fatal(`gfn, "failed to get flash_ctrl_cov_vif from uvm_config_db")
- end
for (int i = 0; i < NumBanks; i++) begin
if (!uvm_config_db#(virtual flash_ctrl_mem_if)::get(
this, "", $sformatf("flash_ctrl_mem_vif[%0d]", i), cfg.flash_ctrl_mem_vif[i])) begin
diff --git a/hw/ip/flash_ctrl/dv/env/flash_ctrl_env_cfg.sv b/hw/ip/flash_ctrl/dv/env/flash_ctrl_env_cfg.sv
index 2e3e33a..900a478 100644
--- a/hw/ip/flash_ctrl/dv/env/flash_ctrl_env_cfg.sv
+++ b/hw/ip/flash_ctrl/dv/env/flash_ctrl_env_cfg.sv
@@ -22,7 +22,6 @@
flash_phy_prim_agent_cfg m_fpp_agent_cfg;
// interface
virtual flash_ctrl_if flash_ctrl_vif;
- virtual flash_ctrl_cov_if flash_ctrl_cov_vif;
virtual clk_rst_if clk_rst_vif_flash_ctrl_eflash_reg_block;
virtual clk_rst_if clk_rst_vif_flash_ctrl_prim_reg_block;
virtual flash_ctrl_mem_if flash_ctrl_mem_vif[NumBanks];
diff --git a/hw/ip/flash_ctrl/dv/env/flash_ctrl_if.sv b/hw/ip/flash_ctrl/dv/env/flash_ctrl_if.sv
index 6c6f0dd..50d7b4e 100644
--- a/hw/ip/flash_ctrl/dv/env/flash_ctrl_if.sv
+++ b/hw/ip/flash_ctrl/dv/env/flash_ctrl_if.sv
@@ -50,4 +50,12 @@
logic [flash_ctrl_pkg::NumBanks-1:0] evict_erase;
logic fatal_err;
+ // rma coverage
+ logic rd_buf_en;
+ rma_state_e rma_state;
+ logic [10:0] prog_state0;
+ logic [10:0] prog_state1;
+ logic [10:0] lcmgr_state;
+ logic init;
+
endinterface : flash_ctrl_if
diff --git a/hw/ip/flash_ctrl/dv/env/flash_ctrl_scoreboard.sv b/hw/ip/flash_ctrl/dv/env/flash_ctrl_scoreboard.sv
index 529e618..22b1461 100644
--- a/hw/ip/flash_ctrl/dv/env/flash_ctrl_scoreboard.sv
+++ b/hw/ip/flash_ctrl/dv/env/flash_ctrl_scoreboard.sv
@@ -85,9 +85,9 @@
bit init_set = 0;
forever begin
@(negedge cfg.clk_rst_vif.clk);
- if (init_set == 0 && cfg.flash_ctrl_cov_vif.init == 1) begin
+ if (init_set == 0 && cfg.flash_ctrl_vif.init == 1) begin
init_set = 1;
- if (cfg.en_cov) cov.rma_init_cg.sample(cfg.flash_ctrl_cov_vif.rma_state);
+ if (cfg.en_cov) cov.rma_init_cg.sample(cfg.flash_ctrl_vif.rma_state);
end
end
endtask // mon_rma
diff --git a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_hw_rma_reset_vseq.sv b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_hw_rma_reset_vseq.sv
index d2b3ff8..14fd550 100644
--- a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_hw_rma_reset_vseq.sv
+++ b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_hw_rma_reset_vseq.sv
@@ -56,7 +56,7 @@
reset_state_index_e reset_state_index = $urandom_range(DVStRmaPageSel, DVStRmaRdVerify);
// Assert reset during RMA state transition
`uvm_info("Test", $sformatf("Reset index: %s", reset_state_index.name), UVM_LOW)
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.rma_state == dv2rma_st(reset_state_index));,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.rma_state == dv2rma_st(reset_state_index));,
$sformatf("Timed out waiting for rma_state: %s", reset_state_index.name),
state_wait_timeout_ns)
// Give more cycles for long stages
diff --git a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_otp_reset_vseq.sv b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_otp_reset_vseq.sv
index d0f8f9a..87ccb61 100644
--- a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_otp_reset_vseq.sv
+++ b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_otp_reset_vseq.sv
@@ -46,7 +46,7 @@
csr_wr(.ptr(ral.init), .value(1));
`uvm_info("Test","OTP",UVM_LOW)
otp_model();
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.rd_buf_en == 1);,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.rd_buf_en == 1);,
"Timed out waiting for rd_buf_en",
state_wait_timeout_ns)
`uvm_info("Test", "RMA REQUEST START", UVM_LOW)
@@ -70,7 +70,7 @@
if (reset_index == DVWaitRmaRsp) wait_time = long_wait_timeout_ns;
else wait_time = state_wait_timeout_ns;
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.lcmgr_state == dv2rtl_st(reset_index));,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.lcmgr_state == dv2rtl_st(reset_index));,
$sformatf("Timed out waiting for %s", reset_index.name),
wait_time)
// Since these are single cycle state,
@@ -138,7 +138,7 @@
cfg.clk_rst_vif.wait_clks(2);
`uvm_info("Test","OTP after loop",UVM_LOW)
otp_model();
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.rd_buf_en == 1);,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.rd_buf_en == 1);,
"Timed out waiting for rd_buf_en",
state_wait_timeout_ns)
diff --git a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_prog_reset_vseq.sv b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_prog_reset_vseq.sv
index 9787cdb..5b49a64 100644
--- a/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_prog_reset_vseq.sv
+++ b/hw/ip/flash_ctrl/dv/env/seq_lib/flash_ctrl_prog_reset_vseq.sv
@@ -69,8 +69,8 @@
string path1, path2;
reset_index_e reset_index = $urandom_range(DVStPrePack, DVStCalcEcc);
`uvm_info("Test", $sformatf("reset_idx: %s", reset_index.name), UVM_MEDIUM)
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.prog_state0 == dv2rtl_st(reset_index) ||
- cfg.flash_ctrl_cov_vif.prog_state1 == dv2rtl_st(reset_index));,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.prog_state0 == dv2rtl_st(reset_index) ||
+ cfg.flash_ctrl_vif.prog_state1 == dv2rtl_st(reset_index));,
$sformatf("Timed out waiting for %s", reset_index.name),
// Use long time out.
// Some unique state does not always guarantee to reach.
@@ -87,7 +87,7 @@
csr_wr(.ptr(ral.init), .value(1));
`uvm_info("Test","OTP",UVM_LOW)
otp_model();
- `DV_SPINWAIT(wait(cfg.flash_ctrl_cov_vif.rd_buf_en == 1);,
+ `DV_SPINWAIT(wait(cfg.flash_ctrl_vif.rd_buf_en == 1);,
"Timed out waiting for rd_buf_en",
state_timeout_ns)
diff --git a/hw/ip/flash_ctrl/dv/tb/tb.sv b/hw/ip/flash_ctrl/dv/tb/tb.sv
index 4619e5c..c9d6c43 100644
--- a/hw/ip/flash_ctrl/dv/tb/tb.sv
+++ b/hw/ip/flash_ctrl/dv/tb/tb.sv
@@ -107,15 +107,14 @@
assign otp_rsp.rand_key = flash_ctrl_if.otp_rsp.rand_key;
assign otp_rsp.seed_valid = flash_ctrl_if.otp_rsp.seed_valid;
- assign dut.u_flash_ctrl_cov_if.rd_buf_en = tb.dut.u_flash_hw_if.rd_buf_en_o;
- assign dut.u_flash_ctrl_cov_if.rma_req = tb.dut.u_flash_hw_if.rma_req_i;
- assign dut.u_flash_ctrl_cov_if.rma_state = tb.dut.u_flash_hw_if.rma_state_q;
- assign dut.u_flash_ctrl_cov_if.prog_state0 =
+ assign flash_ctrl_if.rd_buf_en = tb.dut.u_flash_hw_if.rd_buf_en_o;
+ assign flash_ctrl_if.rma_state = tb.dut.u_flash_hw_if.rma_state_q;
+ assign flash_ctrl_if.prog_state0 =
tb.dut.u_eflash.gen_flash_cores[0].u_core.gen_prog_data.u_prog.state_q;
- assign dut.u_flash_ctrl_cov_if.prog_state1 =
+ assign flash_ctrl_if.prog_state1 =
tb.dut.u_eflash.gen_flash_cores[1].u_core.gen_prog_data.u_prog.state_q;
- assign dut.u_flash_ctrl_cov_if.lcmgr_state = tb.dut.u_flash_hw_if.state_q;
- assign dut.u_flash_ctrl_cov_if.init = tb.dut.u_flash_hw_if.init_i;
+ assign flash_ctrl_if.lcmgr_state = tb.dut.u_flash_hw_if.state_q;
+ assign flash_ctrl_if.init = tb.dut.u_flash_hw_if.init_i;
wire flash_test_v;
assign (pull1, pull0) flash_test_v = 1'b1;
@@ -336,8 +335,6 @@
prim_tl_if);
uvm_config_db#(virtual flash_ctrl_if)::set(null, "*.env", "flash_ctrl_vif", flash_ctrl_if);
uvm_config_db#(virtual flash_phy_prim_if)::set(null, "*.env.m_fpp_agent*", "vif", fpp_if);
- uvm_config_db#(virtual flash_ctrl_cov_if)::set(null, "*.env", "flash_ctrl_cov_vif",
- dut.u_flash_ctrl_cov_if);
$timeformat(-9, 1, " ns", 9);
run_test();
end