# uvm_resource_base

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 Trail | To find out what is happening as the simulation proceeds, an audit trail of each read and write is kept.
record_read_access | Record the read access information for this resource for debug purposes.
record_write_access | Record the write access information for this resource for debug purposes.
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

### 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