Types and Enumerations

Summary
Types and Enumerations
Field automation
`UVM_MAX_STREAMBITSDefines the maximum bit vector size for integral types.
`UVM_PACKER_MAX_BYTESDefines the maximum bytes to allocate for packing an object using the uvm_packer.
`UVM_DEFAULT_TIMEOUTThe default timeout for all phases, if not overridden by uvm_root::set_timeout or <+UVM_TIMEOUT>
uvm_bitstream_tThe bitstream type is used as a argument type for passing integral values in such methods as set_int_local, get_int_local, get_config_int, report, pack and unpack.
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_phase_transitionThese are the phase state transition for callbacks which provide additional information that may be useful during callbacks
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_default_recorderThe default recording policy.

`UVM_MAX_STREAMBITS

Defines the maximum bit vector size for integral types.

`UVM_PACKER_MAX_BYTES

Defines the maximum bytes to allocate for packing an object using the uvm_packer.  Default is `UVM_MAX_STREAMBITS, in bytes.

`UVM_DEFAULT_TIMEOUT

The default timeout for all phases, if not overridden by uvm_root::set_timeout or <+UVM_TIMEOUT>

uvm_bitstream_t

The bitstream type is used as a argument type for passing integral values in such methods as set_int_local, get_int_local, get_config_int, report, pack and unpack.

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_OCTSelects octal (%o) format
UVM_HEXSelects hexidecimal (%h) format
UVM_STRINGSelects string (%s) format
UVM_TIMESelects time (%t) format
UVM_ENUMSelects enumeration value (name) format

uvm_recursion_policy_enum

Specifies the policy for copying objects.

UVM_DEEPObjects are deep copied (object must implement 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_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 messsage.
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 can not 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_verbosity

Defines standard verbosity levels for reports.

UVM_NONEReport is always printed.  Verbosity level setting can not 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

SEQ_ARB_FIFORequests are granted in FIFO order (default)
SEQ_ARB_WEIGHTEDRequests are granted randomly by weight
SEQ_ARB_RANDOMRequests are granted randomly
SEQ_ARB_STRICT_FIFORequests at highest priority granted in fifo order
SEQ_ARB_STRICT_RANDOMRequests at highest priority granted in randomly
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

CREATEDThe sequence has been allocated.
PRE_BODYThe sequence is started and the pre_body task is being executed.
BODYThe sequence is started and the body task is being executed.
POST_BODYThe sequence is started and the post_body task is being executed.
ENDEDThe sequence has ended by the completion of the body task.
STOPPEDThe sequence has been forcibly ended by issuing a kill() on the sequence.
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_DORMANTNothing has happened with the phase in this domain.
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.  It’s process is tracked by the phaser.
UVM_PHASE_READY_TO_ENDno objections remain, awaiting completion of predecessors of its successors.  For example, when phase ‘run’ is ready to end, its successor will be ‘extract’, whose predecessors are ‘run’ and ‘post_shutdown’.  Therefore, ‘run’ will be waiting for ‘post_shutdown’ to be ready to end.
UVM_PHASE_ENDEDphase completed execution, now running phase_ended() callback
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

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

uvm_phase_transition

These are the phase state transition for callbacks which provide additional information that may be useful during callbacks

UVM_COMPLETEDthe phase completed normally
UVM_FORCED_STOPthe phase was forced to terminate prematurely
UVM_SKIPPEDthe phase was in the path of a forward jump
UVM_RERUNthe phase was in the path of a backwards jump

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.

uvm_default_recorder

uvm_recorder uvm_default_recorder = new()

The default recording policy.  Used when calls to uvm_object::record do not specify a recorder policy.

The uvm_packer class provides a policy object for packing and unpacking uvm_objects.
function void set_timeout( time  timeout,   
bit  overridable  =  1 )
Specifies the timeout for task-based phases.
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.
uvm_recorder uvm_default_recorder = new()
The default recording policy.
Defines the maximum bit vector size for integral types.
function void copy ( uvm_object  rhs )
The copy method returns a deep copy of this 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 othewise.
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 )
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 )