Dear UVM experts,
I am trying to override an i2c slave base class in agent with another i2c slave class (extended from i2c base class). I am doing it from test class build phase. Then in main phase of test I am trying to access member of overridden class but I am getting member not found error. The member is actually there in extended class.
virtual function void build_phase (uvm_phase phase);
super.build_phase(phase);
`uvm_info(“TRACE”, $sformatf(“%m”), UVM_HIGH)
…
i2c_slave_base::type_id::set_inst_override(pex_8725_i2c_slave::get_type(), “uvm_test_top.env.pex_i2c_slv_agt.i2c_slave”);
//tried following also, but none is working
//set_inst_override_by_type({get_full_name, ".", "env.pex_i2c_slv_agt.i2c_slave"}, i2c_slave_base::get_type(), pex_8725_i2c_slave::get_type() );
//set_inst_override_by_type(i2c_slave_base::get_type(), pex_8725_i2c_slave::get_type(), "uvm_test_top.env.pex_i2c_slv_agt.i2c_slave");
…
endfunction
virtual task main_phase(uvm_phase phase);
phase.raise_objection(this,“Test Main Objection”);
env.pex_i2c_slv_agt.i2c_slave.flush_memory();
…
mem_data = env.pex_i2c_slv_agt.i2c_slave.get_mem_word(i2c_addr);
…
endtask
Here, get_mem_word is method defined in extended class, but I get compilation error - get_mem_word member not found in base class even if I am overriding with extended class.
Can someone tell me what mistake I am doing.
Thanks.