Types and Enumerations

Summary
Types and Enumerations
Field automation
uvm_bitstream_tThe bitstream type is used as a argument type for passing integral values in such methods as uvm_object::set_int_local, uvm_config_int, uvm_printer::print_field, uvm_recorder::record_field, uvm_packer::pack_field and uvm_packer::unpack_field.
uvm_integral_tThe integral type is used as a argument type for passing integral values of 64 bits or less in such methods as uvm_printer::print_field_int, uvm_recorder::record_field_int, uvm_packer::pack_field_int and uvm_packer::unpack_field_int.
uvm_radix_enumSpecifies the radix to print or record in.
uvm_recursion_policy_enumSpecifies the policy for copying objects.
uvm_active_passive_enumConvenience value to define whether a component, usually an agent, is in “active” mode or “passive” mode.
`uvm_field_* macro flagsDefines what operations a given field should be involved in.
Reporting
uvm_severityDefines all possible values for report severity.
uvm_actionDefines all possible values for report actions.
uvm_verbosityDefines standard verbosity levels for reports.
Port Type
uvm_port_type_eSpecifies the type of port
Sequences
uvm_sequencer_arb_modeSpecifies a sequencer’s arbitration mode
uvm_sequence_state_enumDefines current sequence state
uvm_sequence_lib_modeSpecifies the random selection mode of a sequence library
Phasing
uvm_phase_typeThis is an attribute of a uvm_phase object which defines the phase type.
uvm_phase_stateThe set of possible states of a phase.
uvm_wait_opSpecifies the operand when using methods like uvm_phase::wait_for_state.
Objections
uvm_objection_eventEnumerated the possible objection events one could wait on.
Default Policy ClassesPolicy classes copying, comparing, packing, unpacking, and recording uvm_object-based objects.
uvm_default_table_printerThe table printer is a global object that can be used with uvm_object::do_print to get tabular style printing.
uvm_default_tree_printerThe tree printer is a global object that can be used with uvm_object::do_print to get multi-line tree style printing.
uvm_default_line_printerThe line printer is a global object that can be used with uvm_object::do_print to get single-line style printing.
uvm_default_printerThe default printer policy.
uvm_default_packerThe default packer policy.
uvm_default_comparerThe default compare policy.

uvm_bitstream_t

The bitstream type is used as a argument type for passing integral values in such methods as uvm_object::set_int_local, uvm_config_int, uvm_printer::print_field, uvm_recorder::record_field, uvm_packer::pack_field and uvm_packer::unpack_field.

uvm_integral_t

The integral type is used as a argument type for passing integral values of 64 bits or less in such methods as uvm_printer::print_field_int, uvm_recorder::record_field_int, uvm_packer::pack_field_int and uvm_packer::unpack_field_int.

uvm_radix_enum

Specifies the radix to print or record in.

UVM_BINSelects binary (%b) format
UVM_DECSelects decimal (%d) format
UVM_UNSIGNEDSelects unsigned decimal (%u) format
UVM_UNFORMAT2Selects unformatted 2 value data (%u) format
UVM_UNFORMAT4Selects unformatted 4 value data (%z) format
UVM_OCTSelects octal (%o) format
UVM_HEXSelects hexadecimal (%h) format
UVM_STRINGSelects string (%s) format
UVM_TIMESelects time (%t) format
UVM_ENUMSelects enumeration value (name) format
UVM_REALSelects real (%g) in exponential or decimal format, whichever format results in the shorter printed output
UVM_REAL_DECSelects real (%f) in decimal format
UVM_REAL_EXPSelects real (%e) in exponential format

uvm_recursion_policy_enum

Specifies the policy for copying objects.

UVM_DEEPObjects are deep copied (object must implement uvm_object::copy method)
UVM_SHALLOWObjects are shallow copied using default SV copy.
UVM_REFERENCEOnly object handles are copied.

uvm_active_passive_enum

Convenience value to define whether a component, usually an agent, is in “active” mode or “passive” mode.

UVM_PASSIVE”Passive” mode
UVM_ACTIVE”Active” mode

`uvm_field_* macro flags

Defines what operations a given field should be involved in.  Bitwise OR all that apply.

UVM_DEFAULTAll field operations turned on
UVM_COPYField will participate in uvm_object::copy
UVM_COMPAREField will participate in uvm_object::compare
UVM_PRINTField will participate in uvm_object::print
UVM_RECORDField will participate in uvm_object::record
UVM_PACKField will participate in uvm_object::pack
UVM_NOCOPYField will not participate in uvm_object::copy
UVM_NOCOMPAREField will not participate in uvm_object::compare
UVM_NOPRINTField will not participate in uvm_object::print
UVM_NORECORDField will not participate in uvm_object::record
UVM_NOPACKField will not participate in uvm_object::pack
UVM_DEEPObject field will be deep copied
UVM_SHALLOWObject field will be shallow copied
UVM_REFERENCEObject field will copied by reference
UVM_READONLYObject field will NOT be automatically configured.

uvm_severity

Defines all possible values for report severity.

UVM_INFOInformative message.
UVM_WARNINGIndicates a potential problem.
UVM_ERRORIndicates a real problem.  Simulation continues subject to the configured message action.
UVM_FATALIndicates a problem from which simulation cannot recover.  Simulation exits via $finish after a #0 delay.

uvm_action

Defines all possible values for report actions.  Each report is configured to execute one or more actions, determined by the bitwise OR of any or all of the following enumeration constants.

UVM_NO_ACTIONNo action is taken
UVM_DISPLAYSends the report to the standard output
UVM_LOGSends the report to the file(s) for this (severity,id) pair
UVM_COUNTCounts the number of reports with the COUNT attribute.  When this value reaches max_quit_count, the simulation terminates
UVM_EXITTerminates the simulation immediately.
UVM_CALL_HOOKCallback the report hook methods
UVM_STOPCauses $stop to be executed, putting the simulation into interactive mode.
UVM_RM_RECORDSends the report to the recorder

uvm_verbosity

Defines standard verbosity levels for reports.

UVM_NONEReport is always printed.  Verbosity level setting cannot disable it.
UVM_LOWReport is issued if configured verbosity is set to UVM_LOW or above.
UVM_MEDIUMReport is issued if configured verbosity is set to UVM_MEDIUM or above.
UVM_HIGHReport is issued if configured verbosity is set to UVM_HIGH or above.
UVM_FULLReport is issued if configured verbosity is set to UVM_FULL or above.

uvm_port_type_e

Specifies the type of port

UVM_PORTThe port requires the interface that is its type parameter.
UVM_EXPORTThe port provides the interface that is its type parameter via a connection to some other export or implementation.
UVM_IMPLEMENTATIONThe port provides the interface that is its type parameter, and it is bound to the component that implements the interface.

uvm_sequencer_arb_mode

Specifies a sequencer’s arbitration mode

UVM_SEQ_ARB_FIFORequests are granted in FIFO order (default)
UVM_SEQ_ARB_WEIGHTEDRequests are granted randomly by weight
UVM_SEQ_ARB_RANDOMRequests are granted randomly
UVM_SEQ_ARB_STRICT_FIFORequests at highest priority granted in fifo order
UVM_SEQ_ARB_STRICT_RANDOMRequests at highest priority granted in randomly
UVM_SEQ_ARB_USERArbitration is delegated to the user-defined function, user_priority_arbitration.  That function will specify the next sequence to grant.

uvm_sequence_state_enum

Defines current sequence state

UVM_CREATEDThe sequence has been allocated.
UVM_PRE_STARTThe sequence is started and the uvm_sequence_base::pre_start() task is being executed.
UVM_PRE_BODYThe sequence is started and the uvm_sequence_base::pre_body() task is being executed.
UVM_BODYThe sequence is started and the uvm_sequence_base::body() task is being executed.
UVM_ENDEDThe sequence has completed the execution of the uvm_sequence_base::body() task.
UVM_POST_BODYThe sequence is started and the uvm_sequence_base::post_body() task is being executed.
UVM_POST_STARTThe sequence is started and the uvm_sequence_base::post_start() task is being executed.
UVM_STOPPEDThe sequence has been forcibly ended by issuing a uvm_sequence_base::kill() on the sequence.
UVM_FINISHEDThe sequence is completely finished executing.

uvm_sequence_lib_mode

Specifies the random selection mode of a sequence library

UVM_SEQ_LIB_RANDRandom sequence selection
UVM_SEQ_LIB_RANDCRandom cyclic sequence selection
UVM_SEQ_LIB_ITEMEmit only items, no sequence execution
UVM_SEQ_LIB_USERApply a user-defined random-selection algorithm

uvm_phase_type

This is an attribute of a uvm_phase object which defines the phase type.

UVM_PHASE_IMPThe phase object is used to traverse the component hierarchy and call the component phase method as well as the phase_started and phase_ended callbacks.  These nodes are created by the phase macros, `uvm_builtin_task_phase, `uvm_builtin_topdown_phase, and `uvm_builtin_bottomup_phase.  These nodes represent the phase type, i.e. uvm_run_phase, uvm_main_phase.
UVM_PHASE_NODEThe object represents a simple node instance in the graph.  These nodes will contain a reference to their corresponding IMP object.
UVM_PHASE_SCHEDULEThe object represents a portion of the phasing graph, typically consisting of several NODE types, in series, parallel, or both.
UVM_PHASE_TERMINALThis internal object serves as the termination NODE for a SCHEDULE phase object.
UVM_PHASE_DOMAINThis object represents an entire graph segment that executes in parallel with the ‘run’ phase.  Domains may define any network of NODEs and SCHEDULEs.  The built-in domain, uvm, consists of a single schedule of all the run-time phases, starting with pre_reset and ending with post_shutdown.

uvm_phase_state

The set of possible states of a phase.  This is an attribute of a schedule node in the graph, not of a phase, to maintain independent per-domain state

UVM_PHASE_UNINITIALIZEDThe state is uninitialized.  This is the default state for phases, and for nodes which have not yet been added to a schedule.
UVM_PHASE_DORMANTThe schedule is not currently operating on the phase node, however it will be scheduled at some point in the future.
UVM_PHASE_SCHEDULEDAt least one immediate predecessor has completed.  Scheduled phases block until all predecessors complete or until a jump is executed.
UVM_PHASE_SYNCINGAll predecessors complete, checking that all synced phases (e.g. across domains) are at or beyond this point
UVM_PHASE_STARTEDphase ready to execute, running phase_started() callback
UVM_PHASE_EXECUTINGAn executing phase is one where the phase callbacks are being executed.  Its process is tracked by the phaser.
UVM_PHASE_READY_TO_ENDno objections remain in this phase or in any predecessors of its successors or in any sync’d phases.  This state indicates an opportunity for any phase that needs extra time for a clean exit to raise an objection, thereby causing a return to UVM_PHASE_EXECUTING.  If no objection is raised, state will transition to UVM_PHASE_ENDED after a delta cycle.  (An example of predecessors of successors: The successor to phase ‘run’ is ‘extract’, whose predecessors are ‘run’ and ‘post_shutdown’.  Therefore, ‘run’ will go to this state when both its objections and those of ‘post_shutdown’ are all dropped.
UVM_PHASE_ENDEDphase completed execution, now running phase_ended() callback
UVM_PHASE_JUMPINGall processes related to phase are being killed and all predecessors are forced into the DONE state.
UVM_PHASE_CLEANUPall processes related to phase are being killed
UVM_PHASE_DONEA phase is done after it terminated execution.  Becoming done may enable a waiting successor phase to execute.

The state transitions occur as follows

UNINITIALIZED -> DORMANT -> SCHED -> SYNC -> START -> EXEC -> READY -> END -+-> CLEAN -> DONE
                    ^                                                       |
                    |                      <-- jump_to                      |
                    +-------------------------------------------- JUMPING< -+

uvm_wait_op

Specifies the operand when using methods like uvm_phase::wait_for_state.

UVM_EQequal
UVM_NEnot equal
UVM_LTless than
UVM_LTEless than or equal to
UVM_GTgreater than
UVM_GTEgreater than or equal to

uvm_objection_event

Enumerated the possible objection events one could wait on.  See uvm_objection::wait_for.

UVM_RAISEDan objection was raised
UVM_DROPPEDan objection was raised
UVM_ALL_DROPPEDall objections have been dropped

Default Policy Classes

Policy classes copying, comparing, packing, unpacking, and recording uvm_object-based objects.

uvm_default_table_printer

uvm_table_printer uvm_default_table_printer = new()

The table printer is a global object that can be used with uvm_object::do_print to get tabular style printing.

uvm_default_tree_printer

uvm_tree_printer uvm_default_tree_printer = new()

The tree printer is a global object that can be used with uvm_object::do_print to get multi-line tree style printing.

uvm_default_line_printer

uvm_line_printer uvm_default_line_printer = new()

The line printer is a global object that can be used with uvm_object::do_print to get single-line style printing.

uvm_default_printer

uvm_printer uvm_default_printer = uvm_default_table_printer

The default printer policy.  Used when calls to uvm_object::print or uvm_object::sprint do not specify a printer policy.

The default printer may be set to any legal uvm_printer derived type, including the global line, tree, and table printers described above.

uvm_default_packer

uvm_packer uvm_default_packer = new()

The default packer policy.  Used when calls to uvm_object::pack and uvm_object::unpack do not specify a packer policy.

uvm_default_comparer

uvm_comparer uvm_default_comparer = new()

The default compare policy.  Used when calls to uvm_object::compare do not specify a comparer policy.

virtual function void set_int_local (
    string  field_name,   
    uvm_bitstream_t  value,   
    bit  recurse  =  1
)
Convenience type for uvm_config_db#(uvm_bitstream_t)
virtual function void print_field (
    string  name,   
    uvm_bitstream_t  value,   
    int  size,   
    uvm_radix_enum  radix  =  UVM_NORADIX,
    byte  scope_separator  =  ".",
    string  type_name  =  ""
)
Prints an integral field (up to 4096 bits).
function void record_field(
    string  name,   
    uvm_bitstream_t  value,   
    int  size,   
    uvm_radix_enum  radix  =  UVM_NORADIX
)
Records an integral field (less than or equal to 4096 bits).
virtual function void pack_field (
    uvm_bitstream_t  value,
    int  size
)
Packs an integral value (less than or equal to 4096 bits) into the packed array.
virtual function uvm_bitstream_t unpack_field (
    int  size
)
Unpacks bits from the pack array and returns the bit-stream that was unpacked.
virtual function void print_field_int (
    string  name,   
    uvm_integral_t  value,   
    int  size,   
    uvm_radix_enum  radix  =  UVM_NORADIX,
    byte  scope_separator  =  ".",
    string  type_name  =  ""
)
Prints an integral field (up to 64 bits).
function void record_field_int(
    string  name,   
    uvm_integral_t  value,   
    int  size,   
    uvm_radix_enum  radix  =  UVM_NORADIX
)
Records an integral field (less than or equal to 64 bits).
virtual function void pack_field_int (
    uvm_integral_t  value,
    int  size
)
Packs the integral value (less than or equal to 64 bits) into the pack array.
virtual function uvm_integral_t unpack_field_int (
    int  size
)
Unpacks bits from the pack array and returns the bit-stream that was unpacked.
class uvm_phase extends uvm_object
This base class defines everything about a phase: behavior, state, and context.
task wait_for_state(
    uvm_phase_state  state,   
    uvm_wait_op  op  =  UVM_EQ
)
Wait until this phase compares with the given state and op operand.
virtual class uvm_object extends uvm_void
The uvm_object class is the base class for all UVM data and hierarchical classes.
uvm_table_printer uvm_default_table_printer = new()
The table printer is a global object that can be used with uvm_object::do_print to get tabular style printing.
virtual function void do_print (
    uvm_printer  printer
)
The do_print method is the user-definable hook called by print and sprint that allows users to customize what gets printed or sprinted beyond the field information provided by the `uvm_field_* macros, Utility and Field Macros for Components and Objects.
uvm_tree_printer uvm_default_tree_printer = new()
The tree printer is a global object that can be used with uvm_object::do_print to get multi-line tree style printing.
uvm_line_printer uvm_default_line_printer = new()
The line printer is a global object that can be used with uvm_object::do_print to get single-line style printing.
uvm_printer uvm_default_printer = uvm_default_table_printer
The default printer policy.
uvm_packer uvm_default_packer = new()
The default packer policy.
uvm_comparer uvm_default_comparer = new()
The default compare policy.
function void copy (
    uvm_object  rhs
)
The copy makes this object a copy of the specified object.
function bit compare (
    uvm_object  rhs,   
    uvm_comparer  comparer  =  null
)
Deep compares members of this data object with those of the object provided in the rhs (right-hand side) argument, returning 1 on a match, 0 otherwise.
function void print (
    uvm_printer  printer  =  null
)
The print method deep-prints this object’s properties in a format and manner governed by the given printer argument; if the printer argument is not provided, the global uvm_default_printer is used.
function void record (
    uvm_recorder  recorder  =  null
)
The record method deep-records this object’s properties according to an optional recorder policy.
function int pack (
    ref  bit  bitstream[],   
    input  uvm_packer  packer  =  null
)
virtual task pre_start()
This task is a user-definable callback that is called before the optional execution of pre_body.
virtual task pre_body()
This task is a user-definable callback that is called before the execution of body only when the sequence is started with start.
virtual task body()
This is the user-defined task where the main sequence code resides.
virtual task post_body()
This task is a user-definable callback task that is called after the execution of body only when the sequence is started with start.
virtual task post_start()
This task is a user-definable callback that is called after the optional execution of post_body.
function void kill()
This function will kill the sequence, and cause all current locks and requests in the sequence’s default sequencer to be removed.
task wait_for(
    uvm_objection_event  objt_event,   
    uvm_object  obj  =  null
)
Waits for the raised, dropped, or all_dropped event to occur in the given obj.
function string sprint (
    uvm_printer  printer  =  null
)
The sprint method works just like the print method, except the output is returned in a string rather than displayed.
virtual class uvm_printer
The uvm_printer class provides an interface for printing uvm_objects in various formats.
function int unpack (
    ref  bit  bitstream[],   
    input  uvm_packer  packer  =  null
)