Failed lookup console message while uvm_config_db::get is working fine

Hello Team,

Is it possible that uvm_config_db’s get method is showing failed lookup in the console message but in the
environment it is working fine.Please guide.

Thanks and Regards
Sunil Sharma

@Sunil,
I don’t think so UVM SRC code will not give false “failed to Lookup” message. Use +UVM_CONFIG_DB_TRACE(runtime switch) for better debugging.

-Vinay Jain
v4verification.com

In reply to Vinay Jain:

Hello Vinay,

I have used the switch +UVM_CONFIG_DB_TRACE, it is giving failed lookup. However my environment is working fine.
with no fatal and only info. Please guide.

With Regards
Sunil Sharma

In reply to susharma:

Sunil,

Below is a working example. What is truly set are the interface and cfg. Those GETs are reported as pass. The GETs which are internals of components, such as ports, are reported as failed. Please check if similar thing is happening at your end, when you run with +UVM_CONFIG_DB_TRACE.

// -----------------------------------------------------------------
// SETs
// -----------------------------------------------------------------
@ 0: reporter [CFGDB/SET] Configuration '*.vif' (type virtual interface misc_if) set by  = (virtual interface misc_if) ?
T= 0 ns reporter[CFGDB/SET]: Configuration 'uvm_test_top.env.*.misc_if_cfg' (type class $unit::misc_if_cfg) set by uvm_test_top.env = (class $unit::host_misc_if_cfg) ?

// -----------------------------------------------------------------
// Below GETs, shown as failed are "internal stuff" of components
// -----------------------------------------------------------------
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.recording_detail' (type logic signed[4095:0]) read by uvm_test_top.env.agent.drv = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.recording_detail' (type int) read by uvm_test_top.env.agent.drv = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.seq_item_port.recording_detail' (type logic signed[4095:0]) read by uvm_test_top.env.agent.drv.seq_item_port = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.seq_item_port.recording_detail' (type int) read by uvm_test_top.env.agent.drv.seq_item_port = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.seq_item_port.check_connection_relationships' (type logic signed[4095:0]) read by uvm_test_top.env.agent.drv.seq_item_port = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.rsp_port.recording_detail' (type logic signed[4095:0]) read by uvm_test_top.env.agent.drv.rsp_port = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.rsp_port.recording_detail' (type int) read by uvm_test_top.env.agent.drv.rsp_port = null (failed lookup)
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.rsp_port.check_connection_relationships' (type logic signed[4095:0]) read by uvm_test_top.env.agent.drv.rsp_port = null (failed lookup)

// ------------------------------------------------
// Handles actually passed. The working GETs 
// ------------------------------------------------
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.cfg' (type class $unit::cfg) read by uvm_test_top.env.agent.drv = (class $unit::cfg) ?
T=0 ns reporter[CFGDB/GET]: Configuration 'uvm_test_top.env.agent.drv.vif' (type virtual interface misc_if) read by uvm_test_top.env.agent.drv = (virtual interface misc_if) ?


In reply to Sushrut Veerapur:

Hello Sushrutveerapur,

Thank you.
Yes, exactly it is happening at my end. I am trying to remove these things by implementing recording detail, response port etc.
Or is it possible to remove these kinds of not required things.

Regards
Sunil

In reply to susharma:

Sunil,

You can choose to safely ignore these loopup fails. Once you are out of debug mode, and are running without +UVM_CONFIG_DB_TRACE, you won’t see these in the log.

Having said that, you can add the following code to set “recording_detail” to have the value 1 at the top of the UVM component hierarchy. This is an optional configuration step - not required to use the UVM Express. This configuration step effectively turns on transaction recording for the entire testbench (unless someone else explicitly turns it off).

uvm_config_db#(int)::set(uvm_root::get(), "*", "recording_detail", 1);

In reply to Sushrut Veerapur:

Hello Sushrut,

Thankyou, i have much clarity now.

With Regards
Sunil

In reply to Sushrut Veerapur:

Hi Sushrut, do we ignore “check connection relationships” related prints from above log message as well??

Can anyone comment to help me understand further.