uvm_recorder_defines.svh | |
Recording Macros | The recording macros assist users who implement the uvm_object::do_record method. |
Recording Macros | The recording macros are implemented as described in section B.2.3 of the 1800.2 specification. |
`uvm_record_attribute | Vendor-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 |
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.
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
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(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(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(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(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>.
The do_record method is the user-definable hook called by the record method.
virtual function void do_record ( uvm_recorder recorder )
Abstract class which defines the recorder API.
virtual class uvm_recorder extends uvm_policy