uvm_config_db

Title: UVM Configuration Database

Topic: Intro

Avoid using UVMConfigDb if possible. Instead, group the configuration values into configuration objects (object per agent), and use hierarchical configuration objects for passing the configuration from test-level to env-level, and from there to agents and other sub-components.

The UVMConfigDb class provides a convenience interface on top of the UVMResourceDb to simplify the basic interface that is used for configuring UVMComponent instances.

If the run-time +UVM_CONFIG_DB_TRACE command line option is specified, all configuration DB accesses (read and write) are displayed.

NOTE: UVMConfigDb is not required for passing interfaces to the verification components. In uvm-python, you can use run_test(..., dut=dut) inside your @cocotb.test() function instead.

class uvm.base.uvm_config_db.m_uvm_waiter(inst_name, field_name)[source]

Bases: object

class uvm.base.uvm_config_db.UVMConfigDb(T=None)[source]

Bases: UVMResourceDb

All of the functions in UVMConfigDb are static, so they must be called using the classname. For example:

UVMConfigDb.set(self, “*”, “A”);

The parameter value “int” identifies the configuration type as an int property.

The UVMConfigDb.set and UVMConfigDb.get methods provide the same API and semantics as the set/get_config_* functions in UVMComponent.

m_rsc = {}
m_waiters = {}
classmethod get(cntxt, inst_name, field_name, value, T=None)[source]

Get the value for 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 UVMComponent 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,...)
@classmethod
def bit get(cls,  cntxt, inst_name, field_name, value):
Parameters
  • cntxt

  • inst_name

  • field_name

  • value

  • T

Returns: Raises:

classmethod set(cntxt, inst_name, field_name, value, T=None)[source]

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 scope of the set being {cntxt,”.”,`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 hierarchical 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 UVMComponent 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,...)
Parameters
  • cntxt

  • inst_name

  • field_name

  • value

  • T

classmethod exists(cntxt, inst_name, field_name, spell_chk=False)[source]

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.

Parameters
  • cntxt

  • inst_name

  • field_name

  • spell_chk

Returns:

class uvm.base.uvm_config_db.UVMConfigDbOptions[source]

Bases: object

Class: UVMConfigDbOptions

Provides a namespace for managing options for the configuration DB facility. The only thing allowed in this class is static local data members and static functions for manipulating and retrieving the value of the data members. The static local data members represent options and settings that control the behavior of the configuration DB facility.

Options include:

  • tracing: on/off

    The default for tracing is off.

ready = False
tracing = False
classmethod turn_on_tracing()[source]

Turn tracing on for the configuration database. This causes all reads and writes to the database to display information about the accesses. Tracing is off by default.

This method is implicitly called by the +UVM_CONFIG_DB_TRACE.

classmethod turn_off_tracing()[source]

Turn tracing off for the configuration database.

classmethod is_tracing()[source]

Returns: 1 if the tracing facility is on and 0 if it is off.

classmethod init()[source]