I’m having a problem with this code in umv_resource_db.svh:
// function: read_by_name
//
// locate a resource by ~name~ and ~scope~ and read its value. The value
// is returned through the output argument ~val~. The return value is a bit
// that indicates whether or not the read was successful. The ~accessor~
// is used for auditing.
static function bit read_by_name(input string scope,
input string name,
inout T val, input uvm_object accessor = null);
rsrc_t rsrc = get_by_name(scope, name);
if(uvm_resource_db_options::is_tracing())
m_show_msg("RSRCDB/RDBYNAM","Resource", "read", scope, name, accessor, rsrc);
if(rsrc == null)
return 0;
val = rsrc.read(accessor);
return 1;
endfunction
When m_show_msg() executes it prints out a long series of “Total length of arguments to display/monitor exceeds internal buffer limit” thousands of times which slows down the simulation.
From what I can tell it’s caused by the call to convert2string() in this code in umv_resource.svh (called from the code above):
function string convert2string();
`ifdef UVM_USE_RESOURCE_CONVERTER
void'(m_get_converter());
return m_r2s.convert2string(val);
`else
return $sformatf("(%s) %0p", `uvm_typename(val), val);
`endif
endfunction
From my debug uvm_resource_db_options::is_tracing() returns 0 so not sure why m_show_msg() is being called. I made sure not to throw +UVM_RESOURCE_DB_TRACE or +UVM_CONFIG_DB_TRACE and searched the entire set of code for any direct calls to uvm_resource_db_options::turn_on_tracing() or uvm_config_db_options::turn_on_tracing(). I did find one call to uvm_config_db_options::turn_on_tracing. So I commented it out and recompiled but am still getting calls to uvm_resource_db_options::m_show_msg(). I also searched for direct assignments to uvm_resource_db_options::tracing and uvm_config_db_options::tracing.
What else could be causing uvm_resource_db_options::m_show_msg() to be called? Is there a way to stop the “Total length of arguments to display/monitor exceeds internal buffer limit” messages?