uvm_resource_base

UVMkit » 1800.2-2020

The library implements the following public API beyond what is documented in 1800.2.

Summary
uvm_resource_base
The library implements the following public API beyond what is documented in 1800.2.
Audit TrailTo find out what is happening as the simulation proceeds, an audit trail of each read and write is kept.
record_read_accessRecord the read access information for this resource for debug purposes.
record_write_accessRecord the write access information for this resource for debug purposes.
print_accessorsPrint the read/write access history of the resource, using the accessor argument <accessor> which is passed to the uvm_resource#(T)::read and uvm_resource#(T)::write

Audit Trail

To find out what is happening as the simulation proceeds, an audit trail of each read and write is kept.  The uvm_resource#(T)::read and uvm_resource#(T)::write methods each take an accessor argument.  This is a handle to the object that performed that resource access.

function T read(uvm_object accessor = null);
function void write(T t, uvm_object accessor = null);

The accessor can by anything as long as it is derived from uvm_object.  The accessor object can be a component or a sequence or whatever object from which a read or write was invoked.  Typically the this handle is used as the accessor.  For example:

uvm_resource#(int) rint;
int i;
...
rint.write(7, this);
i = rint.read(this);

The accessor’s get_full_name() is stored as part of the audit trail.  This way you can find out what object performed each resource access.  Each audit record also includes the time of the access (simulation time) and the particular operation performed (read or write).

Auditing is controlled through the <uvm_resource_options> class.

record_read_access

function void record_read_access(
    uvm_object  accessor  =  null
)

Record the read access information for this resource for debug purposes.  This information is used by print_accessors function.

@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2

record_write_access

function void record_write_access(
    uvm_object  accessor  =  null
)

Record the write access information for this resource for debug purposes.  This information is used by print_accessors function.

@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2

print_accessors

virtual function void print_accessors()

Print the read/write access history of the resource, using the accessor argument <accessor> which is passed to the uvm_resource#(T)::read and uvm_resource#(T)::write

@uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2

function void record_read_access(
    uvm_object  accessor  =  null
)
Record the read access information for this resource for debug purposes.
function void record_write_access(
    uvm_object  accessor  =  null
)
Record the write access information for this resource for debug purposes.
virtual function void print_accessors()
Print the read/write access history of the resource, using the accessor argument accessor which is passed to the uvm_resource#(T)::read and uvm_resource#(T)::write