uvm_recorder_defines.svh

UVMkit » 1800.2-2020
Summary
uvm_recorder_defines.svh
Recording MacrosThe recording macros assist users who implement the uvm_object::do_record method.
Recording MacrosThe recording macros are implemented as described in section B.2.3 of the 1800.2 specification.
`uvm_record_attributeVendor-independent macro to hide tool-specific interface for recording attributes (fields) to a transaction database.
`uvm_record_int
`uvm_record_string
`uvm_record_time
`uvm_record_real

Recording Macros

The recording macros assist users who implement the uvm_object::do_record method.  They help ensure that the fields are recorded using a vendor- independent API.  Unlike the uvm_recorder policy, fields recorded using the macros do not lose type information--they are passed directly to the vendor-specific API.  This results in more efficient recording and no artificial limit on bit-widths.  See your simulator vendor’s documentation for more information on its transaction recording capabilities.

Recording Macros

The recording macros are implemented as described in section B.2.3 of the 1800.2 specification.

The Accellera implementation adds an additional RECORDER argument to these macros with a default value of ‘recorder’.  This allows the macros to be used in environments with alternative recorder names.

For example, `uvm_record_string is defined in the LRM as

`define uvm_record_string(NAME,VALUE)

Whereas the implementation is

`define uvm_record_string(NAME,VALUE,RECORDER=recorder)

This allows for usage such as

function void record_foo( uvm_packer other_recorder );
  `uvm_record_string("foo", foo, other_recorder)
endfunction : record_foo

@uvm-contrib This API is being considered for potential contribution to 1800.2

`uvm_record_attribute

Vendor-independent macro to hide tool-specific interface for recording attributes (fields) to a transaction database.

`uvm_record_attribute(TR_HANDLE, NAME, VALUE)

The default implementation of the macro passes NAME and VALUE through to the <uvm_recorder::record_generic> method.

This macro should not be called directly by the user, the other recording macros will call it automatically if <uvm_recorder::use_record_attribute> returns true.

`uvm_record_int

`uvm_record_int(NAME,VALUE,SIZE[,RADIX])

The `uvm_record_int macro takes the same arguments as the <uvm_recorder::record_field> method (including the optional RADIX).

The default implementation will pass the name/value pair to `uvm_record_attribute if enabled, otherwise the information will be passed to <uvm_recorder::record_field>.

`uvm_record_string

`uvm_record_string(NAME,VALUE)

The `uvm_record_string macro takes the same arguments as the <uvm_recorder::record_string> method.

The default implementation will pass the name/value pair to `uvm_record_attribute if enabled, otherwise the information will be passed to <uvm_recorder::record_string>.

`uvm_record_time

`uvm_record_time(NAME,VALUE)

The `uvm_record_time macro takes the same arguments as the <uvm_recorder::record_time> method.

The default implementation will pass the name/value pair to `uvm_record_attribute if enabled, otherwise the information will be passed to <uvm_recorder::record_time>.

`uvm_record_real

`uvm_record_real(NAME,VALUE)

The `uvm_record_real macro takes the same arguments as the <uvm_recorder::record_field_real> method.

The default implementation will pass the name/value pair to `uvm_record_attribute if enabled, otherwise the information will be passed to <uvm_recorder::record_field_real>.

virtual function void do_record ( uvm_recorder  recorder )
The do_record method is the user-definable hook called by the record method.
virtual class uvm_recorder extends uvm_policy
Abstract class which defines the recorder API.
Vendor-independent macro to hide tool-specific interface for recording attributes (fields) to a transaction database.