Generic Register Operation Descriptors

UVMkit » 1800.2-2017

This section defines the abstract register transaction item.  It also defines a descriptor for a physical bus operation that is used by uvm_reg_adapter subtypes to convert from a protocol-specific address/data/rw operation to a bus-independent, canonical r/w operation.

Summary
Generic Register Operation Descriptors
This section defines the abstract register transaction item.

uvm_reg_item

Defines an abstract register transaction item.  No bus-specific information is present, although a handle to a uvm_reg_map is provided in case a user wishes to implement a custom address translation algorithm.

Summary
uvm_reg_item
Defines an abstract register transaction item.
Class Hierarchy
Class Declaration
class uvm_reg_item extends uvm_sequence_item
Variables
element_kindKind of element being accessed: REG, MEM, or FIELD.
elementA handle to the RegModel model element associated with this transaction.
kindKind of access: READ or WRITE.
valueThe value to write to, or after completion, the value read from the DUT.
offsetFor memory accesses, the offset address.
statusThe result of the transaction: IS_OK, HAS_X, or ERROR.
local_mapThe local map used to obtain addresses.
mapThe original map specified for the operation.
pathThe path being used: UVM_FRONTDOOR or UVM_BACKDOOR.
parentThe sequence from which the operation originated.
priorThe priority requested of this transfer, as defined by uvm_sequence_base::start_item.
extensionHandle to optional user data, as conveyed in the call to write(), read(), mirror(), or update() used to trigger the operation.
bd_kindIf path is UVM_BACKDOOR, this member specifies the abstraction kind for the backdoor access, e.g.
fnameThe file name from where this transaction originated, if provided at the call site.
linenoThe file name from where this transaction originated, if provided at the call site.
Methods
do_copyCopy the rhs object into this object.

element_kind

uvm_elem_kind_e element_kind

Kind of element being accessed: REG, MEM, or FIELD.  See uvm_elem_kind_e.

element

uvm_object element

A handle to the RegModel model element associated with this transaction.  Use element_kind to determine the type to cast to: <uvm_reg>, uvm_mem, or <uvm_reg_field>.

kind

rand uvm_access_e kind

Kind of access: READ or WRITE.

Access to this variable is provided for randomization, otherwise interactions with it shall be via the set_kind() and get_kind() accessor methods

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

value

rand uvm_reg_data_t value[]

The value to write to, or after completion, the value read from the DUT.  Burst operations use the values property.

Access to this variable is provided for randomization, otherwise interactions with it shall be via the set_value_array() and get_value_array() accessor methods

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

offset

rand uvm_reg_addr_t offset

For memory accesses, the offset address.  For bursts, the starting offset address.

Access to this variable is provided for randomization, otherwise interactions with it shall be via the set_offset() and get_offset() accessor methods

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

status

uvm_status_e status

The result of the transaction: IS_OK, HAS_X, or ERROR.  See uvm_status_e.

local_map

uvm_reg_map local_map

The local map used to obtain addresses.  Users may customize address-translation using this map.  Access to the sequencer and bus adapter can be obtained by getting this map’s root map, then calling <uvm_reg_map::get_sequencer> and <uvm_reg_map::get_adapter>.

map

uvm_reg_map map

The original map specified for the operation.  The actual map used may differ when a test or sequence written at the block level is reused at the system level.

path

uvm_door_e path

The path being used: UVM_FRONTDOOR or UVM_BACKDOOR.

parent

rand uvm_sequence_base parent

The sequence from which the operation originated.

Access to this variable is provided for randomization, otherwise interactions with it shall be via the set_parent() and get_parent() accessor methods

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

prior

int prior = -1

The priority requested of this transfer, as defined by uvm_sequence_base::start_item.

extension

rand uvm_object extension

Handle to optional user data, as conveyed in the call to write(), read(), mirror(), or update() used to trigger the operation.

bd_kind

string bd_kind

If path is UVM_BACKDOOR, this member specifies the abstraction kind for the backdoor access, e.g.  “RTL” or “GATES”.

fname

string fname

The file name from where this transaction originated, if provided at the call site.

lineno

int lineno

The file name from where this transaction originated, if provided at the call site.

do_copy

virtual function void do_copy( uvm_object  rhs )

Copy the rhs object into this object.  The rhs object must derive from uvm_reg_item.

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

virtual class uvm_reg_adapter extends uvm_object
This class defines an interface for converting between uvm_reg_bus_op and a specific bus transaction.
virtual class uvm_void
The uvm_void class is the base class for all UVM classes.
virtual class uvm_object extends uvm_void
The uvm_object class is the base class for all UVM data and hierarchical classes.
virtual class uvm_transaction extends uvm_object
The uvm_transaction class is the root base class for UVM transactions.
class uvm_sequence_item extends uvm_transaction
The base class for user-defined sequence items and also the base class for the uvm_sequence class.
class uvm_reg_item extends uvm_sequence_item
Defines an abstract register transaction item.
uvm_elem_kind_e element_kind
Kind of element being accessed: REG, MEM, or FIELD.
uvm_object element
A handle to the RegModel model element associated with this transaction.
rand uvm_access_e kind
Kind of access: READ or WRITE.
rand uvm_reg_data_t value[]
The value to write to, or after completion, the value read from the DUT.
rand uvm_reg_addr_t offset
For memory accesses, the offset address.
uvm_status_e status
The result of the transaction: IS_OK, HAS_X, or ERROR.
uvm_reg_map local_map
The local map used to obtain addresses.
uvm_reg_map map
The original map specified for the operation.
uvm_door_e path
The path being used: UVM_FRONTDOOR or UVM_BACKDOOR.
Use the front door
Use the back door
rand uvm_sequence_base parent
The sequence from which the operation originated.
int prior = -1
The priority requested of this transfer, as defined by uvm_sequence_base::start_item.
virtual task start_item ( uvm_sequence_item  item,   
int  set_priority  =  -1,
uvm_sequencer_base  sequencer  =  null )
start_item and finish_item together will initiate operation of a sequence item.
rand uvm_object extension
Handle to optional user data, as conveyed in the call to write(), read(), mirror(), or update() used to trigger the operation.
string bd_kind
If path is UVM_BACKDOOR, this member specifies the abstraction kind for the backdoor access, e.g.
string fname
The file name from where this transaction originated, if provided at the call site.
int lineno
The file name from where this transaction originated, if provided at the call site.
virtual function void do_copy( uvm_object  rhs )
Copy the rhs object into this object.
class uvm_reg_map extends uvm_object
Type of element being read or written
class uvm_mem extends uvm_object
Memory abstraction base class
Return status for register operations