Skip to content

Commit

Permalink
Enable Questa support
Browse files Browse the repository at this point in the history
  • Loading branch information
kasun-buddhi committed Nov 7, 2024
1 parent 7ae870e commit 17199e7
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 86 deletions.
2 changes: 1 addition & 1 deletion verif/core-v-verif
2 changes: 1 addition & 1 deletion verif/env/uvme/uvme_cva6_sb.sv
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ endfunction : check_mepc
function bit [XLEN:0] uvme_cva6_sb_c::check_mcycle_h(uvma_isacov_instr_c instr, uvma_isacov_instr_c instr_prev, int cycle_count);

// Check mcycle value after a CSR read
if (instr_prev == null) return;
if (instr_prev == null) return 32'd0;

write_in_mcycle = (instr_prev.is_csr_write() && instr_prev.csr_val == 12'hb00) ? 1 : 0;
if (cfg.xlen == 32) begin
Expand Down
6 changes: 6 additions & 0 deletions verif/sim/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -358,12 +358,18 @@ questa_uvm_run:
@echo "[QUESTA] Running Model"
vsim -64 \
$(COMMON_RUN_UVM_FLAGS) \
-sv_lib $(SPIKE_INSTALL_DIR)/lib/libyaml-cpp \
-sv_lib $(SPIKE_INSTALL_DIR)/lib/libriscv \
-sv_lib $(SPIKE_INSTALL_DIR)/lib/libfesvr \
-sv_lib $(SPIKE_INSTALL_DIR)/lib/libdisasm \
-sv_lib $(QUESTASIM_HOME)/uvm-1.2/linux_x86_64/uvm_dpi \
-c -do "run -all; " \
-work $(VSIM_WORK_DIR) -t 1ns \
-suppress vsim-8451 \
-suppress 3829 -suppress vsim-8386\
+permissive \
+elf_file=$(elf) \
+UVM_TESTNAME=uvmt_cva6_firmware_test_c \
-sv_seed 0 \
$(cov-run-opt) $(issrun_opts) \
+define+UNSUPPORTED_WITH+ \
Expand Down
2 changes: 1 addition & 1 deletion verif/tb/uvmt/cva6_tb_wrapper.sv
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import uvm_pkg::*;
import "DPI-C" function void read_elf(input string filename);
import "DPI-C" function byte read_symbol(input string symbol_name, inout longint unsigned address);
import "DPI-C" function byte get_section(output longint address, output longint len);
import "DPI-C" context function read_section_sv(input longint address, inout byte buffer[]);
import "DPI-C" context function void read_section_sv(input longint address, inout byte buffer[]);
`endif

module cva6_tb_wrapper import uvmt_cva6_pkg::*; #(
Expand Down
42 changes: 22 additions & 20 deletions verif/tb/uvmt/uvmt_cva6_macros.sv
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,34 @@

// Assign for RVFI CSR interface
`define RVFI_CSR_ASSIGN(csr_name) \
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_``csr_name``_if [RVFI_NRET-1:0](); \
for (genvar i = 0; i < RVFI_NRET; i++) begin \
assign rvfi_csr_``csr_name``_if[i].clk = clknrst_if.clk; \
assign rvfi_csr_``csr_name``_if[i].reset_n = clknrst_if.reset_n; \
assign rvfi_csr_``csr_name``_if[i].rvfi_csr_rmask = rvfi_if.rvfi_csr_o.``csr_name``.rmask; \
assign rvfi_csr_``csr_name``_if[i].rvfi_csr_wmask = rvfi_if.rvfi_csr_o.``csr_name``.wmask; \
assign rvfi_csr_``csr_name``_if[i].rvfi_csr_rdata = rvfi_if.rvfi_csr_o.``csr_name``.rdata; \
assign rvfi_csr_``csr_name``_if[i].rvfi_csr_wdata = rvfi_if.rvfi_csr_o.``csr_name``.wdata; \
for (genvar i = 0; i < RVFI_NRET; i++) begin : rvfi_csr_if_blk_``csr_name``\
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_``csr_name``_if (\
.clk ( clknrst_if.clk ), \
.reset_n ( clknrst_if.reset_n ),\
.rvfi_csr_rmask ( rvfi_if.rvfi_csr_o.``csr_name``.rmask ),\
.rvfi_csr_wmask ( rvfi_if.rvfi_csr_o.``csr_name``.wmask ),\
.rvfi_csr_rdata ( rvfi_if.rvfi_csr_o.``csr_name``.rdata ),\
.rvfi_csr_wdata ( rvfi_if.rvfi_csr_o.``csr_name``.wdata ) \
);\
end \

`define RVFI_CSR_SUFFIX_ASSIGN(csr_name, idx) \
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_``csr_name````idx``_if [RVFI_NRET-1:0](); \
for (genvar i = 0; i < RVFI_NRET; i++) begin \
assign rvfi_csr_``csr_name````idx``_if[i].clk = clknrst_if.clk; \
assign rvfi_csr_``csr_name````idx``_if[i].reset_n = clknrst_if.reset_n; \
assign rvfi_csr_``csr_name````idx``_if[i].rvfi_csr_rmask = rvfi_if.rvfi_csr_o.``csr_name``[``idx``].rmask; \
assign rvfi_csr_``csr_name````idx``_if[i].rvfi_csr_wmask = rvfi_if.rvfi_csr_o.``csr_name``[``idx``].wmask; \
assign rvfi_csr_``csr_name````idx``_if[i].rvfi_csr_rdata = rvfi_if.rvfi_csr_o.``csr_name``[``idx``].rdata; \
assign rvfi_csr_``csr_name````idx``_if[i].rvfi_csr_wdata = rvfi_if.rvfi_csr_o.``csr_name``[``idx``].wdata; \
for (genvar i = 0; i < RVFI_NRET; i++) begin : rvfi_csr_if_blk_``csr_name````idx`` \
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_``csr_name````idx``_if (\
.clk (clknrst_if.clk), \
.reset_n (clknrst_if.reset_n), \
.rvfi_csr_rmask (rvfi_if.rvfi_csr_o.``csr_name``[``idx``].rmask), \
.rvfi_csr_wmask (rvfi_if.rvfi_csr_o.``csr_name``[``idx``].wmask), \
.rvfi_csr_rdata (rvfi_if.rvfi_csr_o.``csr_name``[``idx``].rdata), \
.rvfi_csr_wdata (rvfi_if.rvfi_csr_o.``csr_name``[``idx``].wdata) \
); \
end \

// Create uvm_config_db::set call for a CSR interface
`define RVFI_CSR_UVM_CONFIG_DB_SET(csr_name, idx) \
uvm_config_db#(virtual uvma_rvfi_csr_if)::set(.cntxt(null), \
.inst_name("*"), \
.field_name({"csr_", `"csr_name`", "_vif", $sformatf("%0d", ``idx``)}), \
.value(rvfi_csr_``csr_name``_if[``idx``])); \
uvm_config_db#(virtual uvma_rvfi_csr_if)::set(.cntxt(null), \
.inst_name("*"), \
.field_name({"csr_", `"csr_name`", "_vif", $sformatf("%0d", ``idx``)}), \
.value(rvfi_csr_if_blk_``csr_name``[``idx``].rvfi_csr_``csr_name``_if)); \

`endif // __UVMT_CVA6_MACROS_SV__
144 changes: 81 additions & 63 deletions verif/tb/uvmt/uvmt_cva6_tb.sv
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,56 @@ module uvmt_cva6_tb;

uvmt_axi_switch_intf axi_switch_vif();
uvme_cva6_core_cntrl_if core_cntrl_if();
uvma_rvfi_instr_if #(
uvme_cva6_pkg::ILEN,
uvme_cva6_pkg::XLEN
) rvfi_instr_if [RVFI_NRET-1:0] ();

uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_if [RVFI_NRET-1:0]();
for (genvar i = 0; i < RVFI_NRET; i++) begin : rvfi_instr_if
uvma_rvfi_instr_if #(
uvme_cva6_pkg::ILEN,
uvme_cva6_pkg::XLEN
) inst (
.clk (clknrst_if.clk),
.reset_n (clknrst_if.reset_n),
.rvfi_valid (rvfi_if.rvfi_o[i].valid),
.rvfi_order (rvfi_if.rvfi_o[i].order),
.rvfi_insn (rvfi_if.rvfi_o[i].insn),
.rvfi_trap ((rvfi_if.rvfi_o[i].trap | (rvfi_if.rvfi_o[i].cause << 1))),
.rvfi_halt (rvfi_if.rvfi_o[i].halt),
.rvfi_intr (rvfi_if.rvfi_o[i].intr),
.rvfi_mode (rvfi_if.rvfi_o[i].mode),
.rvfi_ixl (rvfi_if.rvfi_o[i].ixl),
.rvfi_pc_rdata (rvfi_if.rvfi_o[i].pc_rdata),
.rvfi_pc_wdata (rvfi_if.rvfi_o[i].pc_wdata),
.rvfi_rs1_addr (rvfi_if.rvfi_o[i].rs1_addr),
.rvfi_rs1_rdata (rvfi_if.rvfi_o[i].rs1_rdata),
.rvfi_rs2_addr (rvfi_if.rvfi_o[i].rs2_addr),
.rvfi_rs2_rdata (rvfi_if.rvfi_o[i].rs2_rdata),
.rvfi_rd1_addr (rvfi_if.rvfi_o[i].rd_addr),
.rvfi_rd1_wdata (rvfi_if.rvfi_o[i].rd_wdata),
.rvfi_mem_addr (rvfi_if.rvfi_o[i].mem_addr),
.rvfi_mem_rdata (rvfi_if.rvfi_o[i].mem_rdata),
.rvfi_mem_rmask (rvfi_if.rvfi_o[i].mem_rmask),
.rvfi_mem_wdata (rvfi_if.rvfi_o[i].mem_wdata),
.rvfi_mem_wmask (rvfi_if.rvfi_o[i].mem_wmask),

.rvfi_rd2_wdata ( ),
.rvfi_rd2_addr ( ),
.rvfi_rs3_rdata ( ),
.rvfi_rs3_addr ( ),
.rvfi_nmip ( ),
.rvfi_dbg_mode ( ),
.rvfi_dbg ( )
);
end

for (genvar i = 0; i < RVFI_NRET; i++) begin : rvfi_csr_if
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_if_inst (
.clk (clknrst_if.clk),
.reset_n (clknrst_if.reset_n),
.rvfi_csr_rmask (rvfi_if.rvfi_o[i].mem_rmask),
.rvfi_csr_wmask (rvfi_if.rvfi_o[i].mem_wmask),
.rvfi_csr_rdata (rvfi_if.rvfi_o[i].mem_rdata),
.rvfi_csr_wdata (rvfi_if.rvfi_o[i].mem_wdata)
);
end

uvmt_default_inputs_intf default_inputs_vif();

Expand Down Expand Up @@ -126,32 +170,6 @@ module uvmt_cva6_tb;
.rvfi_csr_o(rvfi_if.rvfi_csr_o)
);

for (genvar i = 0; i < RVFI_NRET; i++) begin
assign rvfi_instr_if[i].clk = clknrst_if.clk;
assign rvfi_instr_if[i].reset_n = clknrst_if.reset_n;
assign rvfi_instr_if[i].rvfi_valid = rvfi_if.rvfi_o[i].valid;
assign rvfi_instr_if[i].rvfi_order = rvfi_if.rvfi_o[i].order;
assign rvfi_instr_if[i].rvfi_insn = rvfi_if.rvfi_o[i].insn;
assign rvfi_instr_if[i].rvfi_trap = (rvfi_if.rvfi_o[i].trap | (rvfi_if.rvfi_o[i].cause << 1));
assign rvfi_instr_if[i].rvfi_halt = rvfi_if.rvfi_o[i].halt;
assign rvfi_instr_if[i].rvfi_intr = rvfi_if.rvfi_o[i].intr;
assign rvfi_instr_if[i].rvfi_mode = rvfi_if.rvfi_o[i].mode;
assign rvfi_instr_if[i].rvfi_ixl = rvfi_if.rvfi_o[i].ixl;
assign rvfi_instr_if[i].rvfi_pc_rdata = rvfi_if.rvfi_o[i].pc_rdata;
assign rvfi_instr_if[i].rvfi_pc_wdata = rvfi_if.rvfi_o[i].pc_wdata;
assign rvfi_instr_if[i].rvfi_rs1_addr = rvfi_if.rvfi_o[i].rs1_addr;
assign rvfi_instr_if[i].rvfi_rs1_rdata = rvfi_if.rvfi_o[i].rs1_rdata;
assign rvfi_instr_if[i].rvfi_rs2_addr = rvfi_if.rvfi_o[i].rs2_addr;
assign rvfi_instr_if[i].rvfi_rs2_rdata = rvfi_if.rvfi_o[i].rs2_rdata;
assign rvfi_instr_if[i].rvfi_rd1_addr = rvfi_if.rvfi_o[i].rd_addr;
assign rvfi_instr_if[i].rvfi_rd1_wdata = rvfi_if.rvfi_o[i].rd_wdata;
assign rvfi_instr_if[i].rvfi_mem_addr = rvfi_if.rvfi_o[i].mem_addr;
assign rvfi_instr_if[i].rvfi_mem_rdata = rvfi_if.rvfi_o[i].mem_rdata;
assign rvfi_instr_if[i].rvfi_mem_rmask = rvfi_if.rvfi_o[i].mem_rmask;
assign rvfi_instr_if[i].rvfi_mem_wdata = rvfi_if.rvfi_o[i].mem_wdata;
assign rvfi_instr_if[i].rvfi_mem_wmask = rvfi_if.rvfi_o[i].mem_wmask;
end

`RVFI_CSR_ASSIGN(fflags)
`RVFI_CSR_ASSIGN(frm)
`RVFI_CSR_ASSIGN(fcsr)
Expand Down Expand Up @@ -232,7 +250,7 @@ module uvmt_cva6_tb;

for (genvar i = 0; i < RVFI_NRET; i++) begin
initial begin
uvm_config_db#(virtual uvma_rvfi_instr_if )::set(null,"*", $sformatf("instr_vif%0d", i), rvfi_instr_if[i]);
uvm_config_db#(virtual uvma_rvfi_instr_if )::set(null,"*", $sformatf("instr_vif%0d", i), rvfi_instr_if[i].inst);

// set CSRs interface
`RVFI_CSR_UVM_CONFIG_DB_SET(fflags, i)
Expand Down Expand Up @@ -307,43 +325,43 @@ module uvmt_cva6_tb;

//TO-DO - Not yet supported
for (int j = 3; j < 32; j++) begin
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmevent%0d_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmcounter%0d_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmcounter%0dh_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_hpmcounter%0d_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_hpmcounter%0dh_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmevent%0d_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmcounter%0d_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mhpmcounter%0dh_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_hpmcounter%0d_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_hpmcounter%0dh_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
end
for (int j = 4; j < 16; j++) begin
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_pmpcfg%0d_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_pmpcfg%0d_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
end
for (int j = 16; j < 64; j++) begin
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_pmpaddr%0d_vif%0d", j, i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_pmpaddr%0d_vif%0d", j, i), rvfi_csr_if[i].rvfi_csr_if_inst);
end

uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mvendorid_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_marchid_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_ustatus_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_utvec_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_utval_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uepc_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_ucause_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uip_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uie_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mimpid_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mcontext_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uscratch_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_scontext_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tselect_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata1_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata2_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata3_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tinfo_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tcontrol_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mconfigptr_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_time_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_timeh_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_sedeleg_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_sideleg_vif%0d", i), rvfi_csr_if[i]);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mvendorid_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_marchid_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_ustatus_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_utvec_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_utval_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uepc_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_ucause_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uip_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uie_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mimpid_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mcontext_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_uscratch_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_scontext_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tselect_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata1_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata2_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tdata3_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tinfo_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_tcontrol_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_mconfigptr_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_time_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_timeh_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_sedeleg_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
uvm_config_db#(virtual uvma_rvfi_csr_if )::set(null,"*", $sformatf("csr_sideleg_vif%0d", i), rvfi_csr_if[i].rvfi_csr_if_inst);
end
end
/**
Expand Down

0 comments on commit 17199e7

Please sign in to comment.