Quantcast
Channel: UVM SystemVerilog Discussions Forum RSS Feed
Viewing all articles
Browse latest Browse all 410

Instance override RAL adapter transaction objects?

$
0
0

Hello,

 

We have a test bench environment where we have 2 objects of the same SPI env class.

 

The SPI env sets the sequencer for the RAL model as follows:

reg_model.default_map.set_sequencer(spi_master_agt.mem_sqr, reg2spi_adapter);

The transaction type handled by the spi_master_agt.mem_sqr is spi_mem_tr.

 

Now I need to extend the spi_mem_tr to spi_mem_tr_1 and spi_mem_tr_2, and then override spi_mem_tr with those separately for the 2 objects of the SPI env class.

// Below does not work
set_inst_override_by_type
  ( .relative_inst_path("env.spi_m[0].*"), // Here spi_m[0] is the first instance of the SPI env
    .original_type(spi_mem_tr::get_type()),
    .override_type(spi_mem_tr_1::get_type()));
set_inst_override_by_type
  ( .relative_inst_path("env.spi_m[1].*"), // Here spi_m[1] is the second instance of the SPI env
    .original_type(spi_mem_tr::get_type()),
    .override_type(spi_mem_tr_2::get_type()));

// This does not work too!
set_inst_override_by_type
  ( .relative_inst_path("env.*"),
    .original_type(spi_mem_tr::get_type()),
    .override_type(spi_mem_tr_1::get_type()));

// Even this does not work!
// So looks like "inst" override by type does not work for tr objects in RAL
// connecting agents?
set_inst_override_by_type
  ( .relative_inst_path("*"),
    .original_type(spi_mem_tr::get_type()),
    .override_type(spi_mem_tr_1::get_type()));


// Other the other hand, below works, BUT that overrides the tr in both SPI env objects
// That is not what I want; I need to override using different types for the
// two SPI env objects
spi_mem_tr::type_id::set_type_override(spi_mem_tr_1::get_type());

Questions:

 

  • Is it possible to do instance specific overrides over transaction class inside the SPI agent connecting to my RAL model?
  • If so, what is the correct way to set the relative_inst_path?
  • If not, are there any hacks to achieve the same?
  • The fact that the global type override does work gives me some hope.

Viewing all articles
Browse latest Browse all 410

Trending Articles