Skip to content

Commit

Permalink
Merged PR 116787: Add Mailbox ECC Error injection to UVM tb
Browse files Browse the repository at this point in the history
Add a new mailbox SRAM interface/agent to UVM environment with an SRAM model implementation.
Run a responder sequence to service all SRAM transfers, and enable ECC error injection/detection at the sram interface.
Enable random injection of errors (single-bit only, currently) into both UVMF_SOC_IFC and UVMF_CALIPTRA_TOP random regression tests.

Related work items: #502507, #502532
  • Loading branch information
calebofearth authored and Anjana Parthasarathy committed Aug 14, 2023
1 parent 8c57748 commit 9aa732e
Show file tree
Hide file tree
Showing 87 changed files with 3,080 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ package caliptra_top_parameters_pkg;
parameter string soc_ifc_subenv_cptra_ctrl_agent_BFM = "soc_ifc_subenv_cptra_ctrl_agent_BFM"; /* [3] */
parameter string soc_ifc_subenv_soc_ifc_status_agent_BFM = "soc_ifc_subenv_soc_ifc_status_agent_BFM"; /* [4] */
parameter string soc_ifc_subenv_cptra_status_agent_BFM = "soc_ifc_subenv_cptra_status_agent_BFM"; /* [5] */
parameter string soc_ifc_subenv_mbox_sram_agent_BFM = "soc_ifc_subenv_mbox_sram_agent_BFM"; /* [6] */

// pragma uvmf custom package_item_additional begin
// pragma uvmf custom package_item_additional end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ package caliptra_top_sequences_pkg;
import soc_ifc_status_pkg_hdl::*;
import cptra_status_pkg::*;
import cptra_status_pkg_hdl::*;
import mbox_sram_pkg::*;
import mbox_sram_pkg_hdl::*;
import caliptra_top_parameters_pkg::*;
import caliptra_top_env_pkg::*;
import qvip_ahb_lite_slave_params_pkg::*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,17 @@ rand soc_ifc_env_sequence_base_t soc_ifc_env_seq;
soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq;
typedef soc_ifc_status_responder_sequence soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t;
soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t soc_ifc_subenv_soc_ifc_status_agent_responder_seq;
typedef mbox_sram_responder_sequence soc_ifc_subenv_mbox_sram_agent_responder_seq_t;
soc_ifc_subenv_mbox_sram_agent_responder_seq_t soc_ifc_subenv_mbox_sram_agent_responder_seq;
// pragma uvmf custom sequences end

// Sequencer handles for each active interface in the environment
typedef soc_ifc_ctrl_transaction soc_ifc_subenv_soc_ifc_ctrl_agent_transaction_t;
uvm_sequencer #(soc_ifc_subenv_soc_ifc_ctrl_agent_transaction_t) soc_ifc_subenv_soc_ifc_ctrl_agent_sequencer;
typedef soc_ifc_status_transaction soc_ifc_subenv_soc_ifc_status_agent_transaction_t;
uvm_sequencer #(soc_ifc_subenv_soc_ifc_status_agent_transaction_t) soc_ifc_subenv_soc_ifc_status_agent_sequencer;
typedef mbox_sram_transaction soc_ifc_subenv_mbox_sram_agent_transaction_t;
uvm_sequencer #(soc_ifc_subenv_mbox_sram_agent_transaction_t) soc_ifc_subenv_mbox_sram_agent_sequencer;

// Sequencer handles for each QVIP interface
mvc_sequencer uvm_test_top_environment_soc_ifc_subenv_qvip_ahb_lite_slave_subenv_ahb_lite_slave_0_sqr;
Expand All @@ -77,6 +81,7 @@ rand soc_ifc_env_sequence_base_t soc_ifc_env_seq;
cptra_ctrl_configuration soc_ifc_subenv_cptra_ctrl_agent_config;
soc_ifc_status_configuration soc_ifc_subenv_soc_ifc_status_agent_config;
cptra_status_configuration soc_ifc_subenv_cptra_status_agent_config;
mbox_sram_configuration soc_ifc_subenv_mbox_sram_agent_config;

// pragma uvmf custom class_item_additional begin
// pragma uvmf custom class_item_additional end
Expand All @@ -101,10 +106,13 @@ rand soc_ifc_env_sequence_base_t soc_ifc_env_seq;
`uvm_fatal("CFG" , "uvm_config_db #( soc_ifc_status_configuration )::get cannot find resource soc_ifc_subenv_soc_ifc_status_agent_BFM" )
if( !uvm_config_db #( cptra_status_configuration )::get( null , UVMF_CONFIGURATIONS , soc_ifc_subenv_cptra_status_agent_BFM , soc_ifc_subenv_cptra_status_agent_config ) )
`uvm_fatal("CFG" , "uvm_config_db #( cptra_status_configuration )::get cannot find resource soc_ifc_subenv_cptra_status_agent_BFM" )
if( !uvm_config_db #( mbox_sram_configuration )::get( null , UVMF_CONFIGURATIONS , soc_ifc_subenv_mbox_sram_agent_BFM , soc_ifc_subenv_mbox_sram_agent_config ) )
`uvm_fatal("CFG" , "uvm_config_db #( mbox_sram_configuration )::get cannot find resource soc_ifc_subenv_mbox_sram_agent_BFM" )

// Assign the sequencer handles from the handles within agent configurations
soc_ifc_subenv_soc_ifc_ctrl_agent_sequencer = soc_ifc_subenv_soc_ifc_ctrl_agent_config.get_sequencer();
soc_ifc_subenv_soc_ifc_status_agent_sequencer = soc_ifc_subenv_soc_ifc_status_agent_config.get_sequencer();
soc_ifc_subenv_mbox_sram_agent_sequencer = soc_ifc_subenv_mbox_sram_agent_config.get_sequencer();

// Retrieve QVIP sequencer handles from the uvm_config_db
if( !uvm_config_db #(mvc_sequencer)::get( null,UVMF_SEQUENCERS,"uvm_test_top.environment.soc_ifc_subenv.qvip_apb5_slave_subenv.apb5_master_0", uvm_test_top_environment_soc_ifc_subenv_qvip_apb5_slave_subenv_apb5_master_0_sqr) )
Expand All @@ -124,17 +132,20 @@ rand soc_ifc_env_sequence_base_t soc_ifc_env_seq;

caliptra_top_env_seq = caliptra_top_env_sequence_base_t::type_id::create("caliptra_top_env_seq");

soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq = soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq");
soc_ifc_subenv_soc_ifc_status_agent_responder_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_status_agent_responder_seq");
soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq = soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq");
soc_ifc_subenv_soc_ifc_status_agent_responder_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_status_agent_responder_seq");
soc_ifc_subenv_mbox_sram_agent_responder_seq = soc_ifc_subenv_mbox_sram_agent_responder_seq_t::type_id::create("soc_ifc_subenv_mbox_sram_agent_responder_seq");
fork
soc_ifc_subenv_soc_ifc_ctrl_agent_config.wait_for_reset();
soc_ifc_subenv_cptra_ctrl_agent_config.wait_for_reset();
soc_ifc_subenv_soc_ifc_status_agent_config.wait_for_reset();
soc_ifc_subenv_cptra_status_agent_config.wait_for_reset();
soc_ifc_subenv_mbox_sram_agent_config.wait_for_reset();
join
// Start RESPONDER sequences here
fork
soc_ifc_subenv_soc_ifc_status_agent_responder_seq.start(soc_ifc_subenv_soc_ifc_status_agent_sequencer);
soc_ifc_subenv_mbox_sram_agent_responder_seq.start(soc_ifc_subenv_mbox_sram_agent_sequencer);
join_none
// Start INITIATOR sequences here
fork
Expand All @@ -151,6 +162,7 @@ caliptra_top_env_seq.start(top_configuration.vsqr);
soc_ifc_subenv_cptra_ctrl_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_soc_ifc_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_cptra_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_mbox_sram_agent_config.wait_for_num_clocks(400);
join

// pragma uvmf custom body end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class caliptra_top_cmdline_sequence extends caliptra_top_bench_sequence_base;

soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq = soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq");
soc_ifc_subenv_soc_ifc_status_agent_responder_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_status_agent_responder_seq");
soc_ifc_subenv_mbox_sram_agent_responder_seq = soc_ifc_subenv_mbox_sram_agent_responder_seq_t::type_id::create("soc_ifc_subenv_mbox_sram_agent_responder_seq");

// Handle to the responder sequence for getting response transactions
soc_ifc_env_bringup_seq.soc_ifc_status_agent_rsp_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq;
Expand All @@ -95,6 +96,7 @@ class caliptra_top_cmdline_sequence extends caliptra_top_bench_sequence_base;
// Start RESPONDER sequences here
fork
soc_ifc_subenv_soc_ifc_status_agent_responder_seq.start(soc_ifc_subenv_soc_ifc_status_agent_sequencer);
soc_ifc_subenv_mbox_sram_agent_responder_seq.start(soc_ifc_subenv_mbox_sram_agent_sequencer);
join_none

fork
Expand Down Expand Up @@ -151,6 +153,7 @@ class caliptra_top_cmdline_sequence extends caliptra_top_bench_sequence_base;
soc_ifc_subenv_cptra_ctrl_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_soc_ifc_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_cptra_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_mbox_sram_agent_config.wait_for_num_clocks(400);
join

// pragma uvmf custom body end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
bit pauser_valid_initialized = 1'b0;
uvm_object obj;
int ii;
int unsigned mbox_ecc_single_error_burst;
int unsigned mbox_ecc_single_error_delay_clocks;

caliptra_top_env_seq = caliptra_top_env_sequence_base_t::type_id::create("caliptra_top_env_seq");
soc_ifc_env_bringup_seq = soc_ifc_env_bringup_sequence_t::type_id::create("soc_ifc_env_bringup_seq");
Expand All @@ -176,6 +178,7 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;

soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq = soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq");
soc_ifc_subenv_soc_ifc_status_agent_responder_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_status_agent_responder_seq");
soc_ifc_subenv_mbox_sram_agent_responder_seq = soc_ifc_subenv_mbox_sram_agent_responder_seq_t::type_id::create("soc_ifc_subenv_mbox_sram_agent_responder_seq");

// Handle to the responder sequence for getting response transactions
soc_ifc_env_bringup_seq.soc_ifc_status_agent_rsp_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq;
Expand All @@ -193,11 +196,27 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
// Start RESPONDER sequences here
fork
soc_ifc_subenv_soc_ifc_status_agent_responder_seq.start(soc_ifc_subenv_soc_ifc_status_agent_sequencer);
soc_ifc_subenv_mbox_sram_agent_responder_seq.start(soc_ifc_subenv_mbox_sram_agent_sequencer);
join_none
// // Start INITIATOR sequences here
// fork
// repeat (25) soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq.start(soc_ifc_subenv_soc_ifc_ctrl_agent_sequencer);
// join
fork
forever begin
if (!std::randomize(mbox_ecc_single_error_burst,mbox_ecc_single_error_delay_clocks) with {mbox_ecc_single_error_burst dist {1 :/ 1000, [2:5] :/ 100, [6:31] :/ 20, [32:131071] :/ 1, [131072:524288] :/ 1};
mbox_ecc_single_error_delay_clocks dist {1 :/ 1, [2:31] :/ 3, [32:127] :/ 5, [128:1023] :/ 3, [1024:131072] :/ 1}; })
`uvm_fatal("CALIPTRA_TOP_RAND_TEST", "Failed to randomize mbox ecc bit flip injection parameters")
else
`uvm_info("CALIPTRA_TOP_RAND_TEST", $sformatf("Randomized mbox ecc bit flip injection parameters: burst [%0d] delay [%0d clocks]", mbox_ecc_single_error_burst, mbox_ecc_single_error_delay_clocks), UVM_DEBUG)
soc_ifc_subenv_soc_ifc_ctrl_agent_config.wait_for_num_clocks(mbox_ecc_single_error_delay_clocks);
`uvm_info("CALIPTRA_TOP_RAND_TEST", $sformatf("Injecting mbox ecc error with burst [%0d]", mbox_ecc_single_error_burst), UVM_DEBUG)
repeat(mbox_ecc_single_error_burst) begin
soc_ifc_subenv_mbox_sram_agent_config.inject_ecc_error |= 2'b01;
@soc_ifc_subenv_mbox_sram_agent_responder_seq.new_rsp;
end
end
join_none
fork
forever @(soc_ifc_subenv_soc_ifc_status_agent_responder_seq.new_rsp) sts_rsp_count++;
join_none
Expand Down Expand Up @@ -347,6 +366,7 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
soc_ifc_subenv_cptra_ctrl_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_soc_ifc_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_cptra_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_mbox_sram_agent_config.wait_for_num_clocks(400);
join

// pragma uvmf custom body end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ class caliptra_top_rom_sequence extends caliptra_top_bench_sequence_base;

soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq = soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_ctrl_agent_random_seq");
soc_ifc_subenv_soc_ifc_status_agent_responder_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq_t::type_id::create("soc_ifc_subenv_soc_ifc_status_agent_responder_seq");
soc_ifc_subenv_mbox_sram_agent_responder_seq = soc_ifc_subenv_mbox_sram_agent_responder_seq_t::type_id::create("soc_ifc_subenv_mbox_sram_agent_responder_seq");

// Handle to the responder sequence for getting response transactions
soc_ifc_env_bringup_seq.soc_ifc_status_agent_rsp_seq = soc_ifc_subenv_soc_ifc_status_agent_responder_seq;
Expand All @@ -79,6 +80,7 @@ class caliptra_top_rom_sequence extends caliptra_top_bench_sequence_base;
// Start RESPONDER sequences here
fork
soc_ifc_subenv_soc_ifc_status_agent_responder_seq.start(soc_ifc_subenv_soc_ifc_status_agent_sequencer);
soc_ifc_subenv_mbox_sram_agent_responder_seq.start(soc_ifc_subenv_mbox_sram_agent_sequencer);
join_none

fork
Expand Down Expand Up @@ -108,6 +110,7 @@ class caliptra_top_rom_sequence extends caliptra_top_bench_sequence_base;
soc_ifc_subenv_cptra_ctrl_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_soc_ifc_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_cptra_status_agent_config.wait_for_num_clocks(400);
soc_ifc_subenv_mbox_sram_agent_config.wait_for_num_clocks(400);
join

// pragma uvmf custom body end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,13 @@ import uvmf_base_pkg_hdl::*;
logic jtag_trst_n = '0; // JTAG Reset
logic jtag_tdo; // JTAG TDO

logic mbox_sram_cs;
logic mbox_sram_we;
logic [14:0] mbox_sram_addr;
logic [MBOX_DATA_AND_ECC_W-1:0] mbox_sram_wdata;
logic [MBOX_DATA_AND_ECC_W-1:0] mbox_sram_rdata;
mbox_sram_req_t mbox_sram_req;
mbox_sram_resp_t mbox_sram_resp;
logic mbox_sram_cs_stub_inactive;
logic mbox_sram_we_stub_inactive;
logic [14:0] mbox_sram_addr_stub_inactive;
logic [MBOX_DATA_AND_ECC_W-1:0] mbox_sram_wdata_stub_inactive;
logic [MBOX_DATA_AND_ECC_W-1:0] mbox_sram_rdata_stub_inactive;

logic imem_cs;
logic [`CALIPTRA_IMEM_ADDR_WIDTH-1:0] imem_addr;
Expand Down Expand Up @@ -153,12 +155,19 @@ import uvmf_base_pkg_hdl::*;
.clk(clk), .dummy(1'b1)
// pragma uvmf custom soc_ifc_subenv_cptra_status_agent_bus_connections end
);
mbox_sram_if soc_ifc_subenv_mbox_sram_agent_bus(
// pragma uvmf custom soc_ifc_subenv_mbox_sram_agent_bus_connections begin
.clk(clk), .dummy(1'b1)
// pragma uvmf custom soc_ifc_subenv_mbox_sram_agent_bus_connections end
);
soc_ifc_ctrl_monitor_bfm soc_ifc_subenv_soc_ifc_ctrl_agent_mon_bfm(soc_ifc_subenv_soc_ifc_ctrl_agent_bus.monitor_port);
cptra_ctrl_monitor_bfm soc_ifc_subenv_cptra_ctrl_agent_mon_bfm(soc_ifc_subenv_cptra_ctrl_agent_bus.monitor_port);
soc_ifc_status_monitor_bfm soc_ifc_subenv_soc_ifc_status_agent_mon_bfm(soc_ifc_subenv_soc_ifc_status_agent_bus.monitor_port);
cptra_status_monitor_bfm soc_ifc_subenv_cptra_status_agent_mon_bfm(soc_ifc_subenv_cptra_status_agent_bus.monitor_port);
mbox_sram_monitor_bfm soc_ifc_subenv_mbox_sram_agent_mon_bfm(soc_ifc_subenv_mbox_sram_agent_bus.monitor_port);
soc_ifc_ctrl_driver_bfm soc_ifc_subenv_soc_ifc_ctrl_agent_drv_bfm(soc_ifc_subenv_soc_ifc_ctrl_agent_bus.initiator_port);
soc_ifc_status_driver_bfm soc_ifc_subenv_soc_ifc_status_agent_drv_bfm(soc_ifc_subenv_soc_ifc_status_agent_bus.responder_port);
mbox_sram_driver_bfm soc_ifc_subenv_mbox_sram_agent_drv_bfm(soc_ifc_subenv_mbox_sram_agent_bus.responder_port);

// pragma uvmf custom dut_instantiation begin
// AHB Clock/reset
Expand Down Expand Up @@ -207,11 +216,11 @@ import uvmf_base_pkg_hdl::*;
.ready_for_fw_push(soc_ifc_subenv_soc_ifc_status_agent_bus.ready_for_fw_push ),
.ready_for_runtime(soc_ifc_subenv_soc_ifc_status_agent_bus.ready_for_runtime ),

.mbox_sram_cs (mbox_sram_cs ),
.mbox_sram_we (mbox_sram_we ),
.mbox_sram_addr (mbox_sram_addr ),
.mbox_sram_wdata(mbox_sram_wdata),
.mbox_sram_rdata(mbox_sram_rdata),
.mbox_sram_cs (mbox_sram_req.cs ),
.mbox_sram_we (mbox_sram_req.we ),
.mbox_sram_addr (mbox_sram_req.addr ),
.mbox_sram_wdata(mbox_sram_req.wdata),
.mbox_sram_rdata(mbox_sram_resp.rdata),

.imem_cs (imem_cs ),
.imem_addr (imem_addr ),
Expand All @@ -234,7 +243,7 @@ import uvmf_base_pkg_hdl::*;
.generic_output_wires(soc_ifc_subenv_soc_ifc_status_agent_bus.generic_output_wires),

.security_state(soc_ifc_subenv_soc_ifc_ctrl_agent_bus.security_state),
.scan_mode (1'b0)
.scan_mode (1'b0) // TODO
);
assign uvm_test_top_environment_soc_ifc_subenv_qvip_apb5_slave_subenv_qvip_hdl.apb5_master_0_PWUSER = 0;
assign uvm_test_top_environment_soc_ifc_subenv_qvip_apb5_slave_subenv_qvip_hdl.apb5_master_0_PRUSER = 0;
Expand Down Expand Up @@ -297,6 +306,9 @@ import uvmf_base_pkg_hdl::*;
assign soc_ifc_subenv_cptra_ctrl_agent_bus.iccm_axs_blocked = caliptra_top_dut.ahb_lite_resp_access_blocked[`CALIPTRA_SLAVE_SEL_IDMA];
assign soc_ifc_subenv_cptra_ctrl_agent_bus.rv_ecc_sts = caliptra_top_dut.rv_ecc_sts;

assign soc_ifc_subenv_mbox_sram_agent_bus.mbox_sram_req = mbox_sram_req;
assign mbox_sram_resp = soc_ifc_subenv_mbox_sram_agent_bus.mbox_sram_resp;

//=========================================================================-
// Services for SRAM exports, STDOUT, etc
//=========================================================================-
Expand All @@ -311,11 +323,11 @@ import uvmf_base_pkg_hdl::*;
.el2_mem_export (el2_mem_export),

//SRAM interface for mbox
.mbox_sram_cs (mbox_sram_cs ),
.mbox_sram_we (mbox_sram_we ),
.mbox_sram_addr (mbox_sram_addr ),
.mbox_sram_wdata(mbox_sram_wdata),
.mbox_sram_rdata(mbox_sram_rdata),
.mbox_sram_cs (mbox_sram_cs_stub_inactive ),
.mbox_sram_we (mbox_sram_we_stub_inactive ),
.mbox_sram_addr (mbox_sram_addr_stub_inactive ),
.mbox_sram_wdata(mbox_sram_wdata_stub_inactive),
.mbox_sram_rdata(mbox_sram_rdata_stub_inactive),

//SRAM interface for imem
.imem_cs (imem_cs ),
Expand Down Expand Up @@ -346,8 +358,10 @@ import uvmf_base_pkg_hdl::*;
uvm_config_db #( virtual cptra_ctrl_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_cptra_ctrl_agent_BFM , soc_ifc_subenv_cptra_ctrl_agent_mon_bfm );
uvm_config_db #( virtual soc_ifc_status_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_soc_ifc_status_agent_BFM , soc_ifc_subenv_soc_ifc_status_agent_mon_bfm );
uvm_config_db #( virtual cptra_status_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_cptra_status_agent_BFM , soc_ifc_subenv_cptra_status_agent_mon_bfm );
uvm_config_db #( virtual mbox_sram_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_mbox_sram_agent_BFM , soc_ifc_subenv_mbox_sram_agent_mon_bfm );
uvm_config_db #( virtual soc_ifc_ctrl_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_soc_ifc_ctrl_agent_BFM , soc_ifc_subenv_soc_ifc_ctrl_agent_drv_bfm );
uvm_config_db #( virtual soc_ifc_status_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_soc_ifc_status_agent_BFM , soc_ifc_subenv_soc_ifc_status_agent_drv_bfm );
uvm_config_db #( virtual mbox_sram_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , soc_ifc_subenv_mbox_sram_agent_BFM , soc_ifc_subenv_mbox_sram_agent_drv_bfm );
end

endmodule
Expand Down
Loading

0 comments on commit 9aa732e

Please sign in to comment.