The uvm_config_db#(T) class provides a convenience interface on top of the uvm_resource_db to simplify the basic interface that is used for reading and writing into the resource database.
All of the functions in uvm_config_db#(T) are static, so they must be called using the :: operator. For example:
uvm_config_db#(int)::set(this, "*", "A");
The parameter value “int” identifies the configuration type as an int property.
The set and get methods provide the same api and semantics as the set/get_config_* functions in uvm_component.
uvm_config_db#(T) | |||||||||||||||||
The uvm_config_db#(T) class provides a convenience interface on top of the uvm_resource_db to simplify the basic interface that is used for reading and writing into the resource database. | |||||||||||||||||
Class Hierarchy | |||||||||||||||||
| |||||||||||||||||
Class Declaration | |||||||||||||||||
| |||||||||||||||||
Methods | |||||||||||||||||
get | Get the value field_name in inst_name, using component cntxt as the starting search point. | ||||||||||||||||
set | Create a new or update an existing configuration setting for field_name in inst_name from cntxt. | ||||||||||||||||
exists | Check if a value for field_name is available in inst_name, using component cntxt as the starting search point. | ||||||||||||||||
wait_modified | Wait for a configuration setting to be set for field_name in cntxt and inst_name. |
static function bit get( uvm_component cntxt, string inst_name, string field_name, ref T value )
Get the value field_name in inst_name, using component cntxt as the starting search point. inst_name is an explicit instance name relative to cntxt and may be an empty string if the cntxt is the instance that the configuration object applies to. field_name is the specific field in the scope that is being searched for.
The basic get_config_* methods from uvm_component are mapped to this function as:
get_config_int(...) => uvm_config_db#(uvm_bitstream_t)::get(cntxt,...) get_config_string(...) => uvm_config_db#(string)::get(cntxt,...) get_config_object(...) => uvm_config_db#(uvm_object)::get(cntxt,...)
static function void set( uvm_component cntxt, string inst_name, string field_name, T value )
Create a new or update an existing configuration setting for field_name in inst_name from cntxt. The setting is made at cntxt, with the full name of cntxt added to the inst_name. If cntxt is null then inst_name provides the complete scope information of the setting. field_name is the target field. Both inst_name and field_name may be glob style or regular expression style expressions.
If a setting is made at build time, the cntxt hierarchy is used to determine the setting’s precedence in the database. Settings from hierarchically higher levels have higher precedence. Settings from the same level of hierarchy have a last setting wins semantic. A precedence setting of uvm_resource_base::default_precedence is used for uvm_top, and each hierarcical level below the top is decremented by 1.
After build time, all settings use the default precedence and thus have a last wins semantic. So, if at run time, a low level component makes a runtime setting of some field, that setting will have precedence over a setting from the test level that was made earlier in the simulation.
The basic set_config_* methods from uvm_component are mapped to this function as:
set_config_int(...) => uvm_config_db#(uvm_bitstream_t)::set(cntxt,...) set_config_string(...) => uvm_config_db#(string)::set(cntxt,...) set_config_object(...) => uvm_config_db#(uvm_object)::set(cntxt,...)
static function bit exists( uvm_component cntxt, string inst_name, string field_name, bit spell_chk = )
Check if a value for field_name is available in inst_name, using component cntxt as the starting search point. inst_name is an explicit instance name relative to cntxt and may be an empty string if the cntxt is the instance that the configuration object applies to. field_name is the specific field in the scope that is being searched for. The spell_chk arg can be set to 1 to turn spell checking on if it is expected that the field should exist in the database. The function returns 1 if a config parameter exists and 0 if it doesn’t exist.
static task wait_modified( uvm_component cntxt, string inst_name, string field_name )
Wait for a configuration setting to be set for field_name in cntxt and inst_name. The task blocks until a new configuration setting is applied that effects the specified field.
The uvm_config_db#(T) class provides a convenience interface on top of the uvm_resource_db to simplify the basic interface that is used for reading and writing into the resource database.
class uvm_config_db#( type T = int ) extends uvm_resource_db#(T)
The uvm_resource_db#(T) class provides a convenience interface for the resources facility.
class uvm_resource_db #( type T = uvm_object )
Get the value field_name in inst_name, using component cntxt as the starting search point.
static function bit get( uvm_component cntxt, string inst_name, string field_name, ref T value )
Create a new or update an existing configuration setting for field_name in inst_name from cntxt.
static function void set( uvm_component cntxt, string inst_name, string field_name, T value )
Check if a value for field_name is available in inst_name, using component cntxt as the starting search point.
static function bit exists( uvm_component cntxt, string inst_name, string field_name, bit spell_chk = )
Wait for a configuration setting to be set for field_name in cntxt and inst_name.
static task wait_modified( uvm_component cntxt, string inst_name, string field_name )
The uvm_component class is the root base class for UVM components.
virtual class uvm_component extends uvm_report_object
The default precedence for an resource that has been created.
static int unsigned default_precedence = 1000