Hi,
I am having reigster model and reference model. I have put the instance of register model in base test testcase .Pass the object in uvm_resource_db so that it could be used in basic sequence and reference model.
// In uvm_base test case:
uvm_sequence_spi uvm_seq_spi;
spi_rm_register spi_rm_h;
build_phase:
spi_rm_h = sp_rm_register::type_id::create(“spi_rm_h”);
uvm_resource_db #(spi_rm_register)::set(“*”, “spi_reg_model”,spi_rm_h, null);
run_phase :
uvm_seq_spi = uvm_sequence_spi::type_id::create(“uvm_seq_spi”);
// In base sequence
class uvm_sequence_spi extends uvm_sequence;
spi_rm spi_rm_h;
//Under prebody task:
if(!uvm_resource_db #(spi_rm_register)::read_by_name(get_full_name(), “spi_reg_model”, spi_rm_h);
//under some task
bit [15:0] reg_value;
task write_register
reg_value = spi_rm_h.default_reg.SPI_MODE.get();
endtask
endclass
// Env package sequence -
pacakge spi_env_pkg
include spi_rm_model.sv
include spi_base_sequence.sv - base sequence file
endpackage
// Test package sequence
package test_base
import spi_env_pkg::*;
endpackage
====================================================================================
I am getting error :
spi_rm_h.default_reg.SPI_MODE.get();
|
illegal location for a hierarchical name (in a package) in my base sequence file - uvm_sequence_spi.sv
Getting the heirarchical issue. I passed the register model pointer from base testcase through the resource_db “set” and want to use in the sequence through "resource_db “get” to program the register model.
Can someone help ?
Regards
Vivek