# Types and Enumerations

Summary

Types and Enumerations
Field automation |
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_recursion_policy_enum | Specifies the policy for copying objects.
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.
Reporting |
uvm_severity | Defines all possible values for report severity.
uvm_action | Defines all possible values for report actions.
uvm_verbosity | Defines standard verbosity levels for reports.
Port Type |
uvm_port_type_e | Specifies the type of port
Sequences |
uvm_sequencer_arb_mode | Specifies a sequencer’s arbitration mode
uvm_sequence_state_enum | Defines current sequence state
uvm_sequence_lib_mode | Specifies the random selection mode of a sequence library
Phasing |
uvm_phase_type | This is an attribute of a uvm_phase object which defines the phase type.
uvm_phase_state | The set of possible states of a phase.
uvm_wait_op | Specifies the operand when using methods like uvm_phase::wait_for_state.
Objections |
uvm_objection_event | Enumerated the possible objection events one could wait on.
Default Policy Classes | Policy classes copying, comparing, packing, unpacking, and recording uvm_object-based objects.
uvm_default_table_printer | 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 | 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 | 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 | The default printer policy.
uvm_default_packer | The default packer policy.
uvm_default_comparer | The default compare policy.

### Field automation

### 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_BIN | Selects binary (%b) format
UVM_DEC | Selects decimal (%d) format
UVM_UNSIGNED | Selects unsigned decimal (%u) format
UVM_UNFORMAT2 | Selects unformatted 2 value data (%u) format
UVM_UNFORMAT4 | Selects unformatted 4 value data (%z) format
UVM_OCT | Selects octal (%o) format
UVM_HEX | Selects hexadecimal (%h) format
UVM_STRING | Selects string (%s) format
UVM_TIME | Selects time (%t) format
UVM_ENUM | Selects enumeration value (name) format
UVM_REAL | Selects real (%g) in exponential or decimal format, whichever format results in the shorter printed output
UVM_REAL_DEC | Selects real (%f) in decimal format
UVM_REAL_EXP | Selects real (%e) in exponential format

### uvm_recursion_policy_enum

Specifies the policy for copying objects.

UVM_DEEP | Objects are deep copied (object must implement uvm_object::copy method)
UVM_SHALLOW | Objects are shallow copied using default SV copy.
UVM_REFERENCE | Only 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_DEFAULT | All field operations turned on
UVM_COPY | Field will participate in uvm_object::copy
UVM_COMPARE | Field will participate in uvm_object::compare
UVM_PRINT | Field will participate in uvm_object::print
UVM_RECORD | Field will participate in uvm_object::record
UVM_PACK | Field will participate in uvm_object::pack
UVM_NOCOPY | Field will not participate in uvm_object::copy
UVM_NOCOMPARE | Field will not participate in uvm_object::compare
UVM_NOPRINT | Field will not participate in uvm_object::print
UVM_NORECORD | Field will not participate in uvm_object::record
UVM_NOPACK | Field will not participate in uvm_object::pack
UVM_DEEP | Object field will be deep copied
UVM_SHALLOW | Object field will be shallow copied
UVM_REFERENCE | Object field will copied by reference
UVM_READONLY | Object field will NOT be automatically configured.

### Reporting

### uvm_severity

Defines all possible values for report severity.

UVM_INFO | Informative message.
UVM_WARNING | Indicates a potential problem.
UVM_ERROR | Indicates a real problem. Simulation continues subject to the configured message action.
UVM_FATAL | Indicates 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_ACTION | No action is taken
UVM_DISPLAY | Sends the report to the standard output
UVM_LOG | Sends the report to the file(s) for this (severity,id) pair
UVM_COUNT | Counts the number of reports with the COUNT attribute. When this value reaches max_quit_count, the simulation terminates
UVM_EXIT | Terminates the simulation immediately.
UVM_CALL_HOOK | Callback the report hook methods
UVM_STOP | Causes $stop to be executed, putting the simulation into interactive mode.
UVM_RM_RECORD | Sends the report to the recorder

### uvm_verbosity

Defines standard verbosity levels for reports.

UVM_NONE | Report is always printed. Verbosity level setting cannot disable it.
UVM_LOW | Report is issued if configured verbosity is set to UVM_LOW or above.
UVM_MEDIUM | Report is issued if configured verbosity is set to UVM_MEDIUM or above.
UVM_HIGH | Report is issued if configured verbosity is set to UVM_HIGH or above.
UVM_FULL | Report is issued if configured verbosity is set to UVM_FULL or above.

### Port Type

### uvm_port_type_e

Specifies the type of port

UVM_PORT | The port requires the interface that is its type parameter.
UVM_EXPORT | The port provides the interface that is its type parameter via a connection to some other export or implementation.
UVM_IMPLEMENTATION | The port provides the interface that is its type parameter, and it is bound to the component that implements the interface.

### Sequences

### uvm_sequencer_arb_mode

Specifies a sequencer’s arbitration mode

UVM_SEQ_ARB_FIFO | Requests are granted in FIFO order (default)
UVM_SEQ_ARB_WEIGHTED | Requests are granted randomly by weight
UVM_SEQ_ARB_RANDOM | Requests are granted randomly
UVM_SEQ_ARB_STRICT_FIFO | Requests at highest priority granted in fifo order
UVM_SEQ_ARB_STRICT_RANDOM | Requests at highest priority granted in randomly
UVM_SEQ_ARB_USER | Arbitration 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_CREATED | The sequence has been allocated.
UVM_PRE_START | The sequence is started and the uvm_sequence_base::pre_start() task is being executed.
UVM_PRE_BODY | The sequence is started and the uvm_sequence_base::pre_body() task is being executed.
UVM_BODY | The sequence is started and the uvm_sequence_base::body() task is being executed.
UVM_ENDED | The sequence has completed the execution of the uvm_sequence_base::body() task.
UVM_POST_BODY | The sequence is started and the uvm_sequence_base::post_body() task is being executed.
UVM_POST_START | The sequence is started and the uvm_sequence_base::post_start() task is being executed.
UVM_STOPPED | The sequence has been forcibly ended by issuing a uvm_sequence_base::kill() on the sequence.
UVM_FINISHED | The sequence is completely finished executing.

### uvm_sequence_lib_mode

Specifies the random selection mode of a sequence library

UVM_SEQ_LIB_RAND | Random sequence selection
UVM_SEQ_LIB_RANDC | Random cyclic sequence selection
UVM_SEQ_LIB_ITEM | Emit only items, no sequence execution
UVM_SEQ_LIB_USER | Apply a user-defined random-selection algorithm

### Phasing

### uvm_phase_type

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

UVM_PHASE_IMP | The 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_NODE | The object represents a simple node instance in the graph. These nodes will contain a reference to their corresponding IMP object.
UVM_PHASE_SCHEDULE | The object represents a portion of the phasing graph, typically consisting of several NODE types, in series, parallel, or both.
UVM_PHASE_TERMINAL | This internal object serves as the termination NODE for a SCHEDULE phase object.
UVM_PHASE_DOMAIN | This 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_UNINITIALIZED | The state is uninitialized. This is the default state for phases, and for nodes which have not yet been added to a schedule.
UVM_PHASE_DORMANT | The schedule is not currently operating on the phase node, however it will be scheduled at some point in the future.
UVM_PHASE_SCHEDULED | At least one immediate predecessor has completed. Scheduled phases block until all predecessors complete or until a jump is executed.
UVM_PHASE_SYNCING | All predecessors complete, checking that all synced phases (e.g. across domains) are at or beyond this point
UVM_PHASE_STARTED | phase ready to execute, running phase_started() callback
UVM_PHASE_EXECUTING | An executing phase is one where the phase callbacks are being executed. Its process is tracked by the phaser.
UVM_PHASE_READY_TO_END | no 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_ENDED | phase completed execution, now running phase_ended() callback
UVM_PHASE_JUMPING | all processes related to phase are being killed and all predecessors are forced into the DONE state.
UVM_PHASE_CLEANUP | all processes related to phase are being killed
UVM_PHASE_DONE | A 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_EQ | equal
UVM_NE | not equal
UVM_LT | less than
UVM_LTE | less than or equal to
UVM_GT | greater than
UVM_GTE | greater than or equal to

### Objections

### uvm_objection_event

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

UVM_RAISED | an objection was raised
UVM_DROPPED | an objection was raised
UVM_ALL_DROPPED | all 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
> )