uvm_sequence_item

The base class for user-defined sequence items and also the base class for the uvm_sequence class.  The uvm_sequence_item class provides the basic functionality for objects, both sequence items and sequences, to operate in the sequence mechanism.

Summary
uvm_sequence_item
The base class for user-defined sequence items and also the base class for the uvm_sequence class.
Class Hierarchy
uvm_sequence_item
Class Declaration
class uvm_sequence_item extends uvm_transaction
newThe constructor method for uvm_sequence_item.
get_sequence_idprivate
set_item_contextSet the sequence and sequencer execution context for a sequence item
set_use_sequence_info
get_use_sequence_infoThese methods are used to set and get the status of the use_sequence_info bit.
set_id_infoCopies the sequence_id and transaction_id from the referenced item into the calling item.
set_sequencerSets the default sequencer for the sequence to sequencer.
get_sequencerReturns a reference to the default sequencer used by this sequence.
set_parent_sequenceSets the parent sequence of this sequence_item.
get_parent_sequenceReturns a reference to the parent sequence of any sequence on which this method was called.
set_depthThe depth of any sequence is calculated automatically.
get_depthReturns the depth of a sequence from it’s parent.
is_itemThis function may be called on any sequence_item or sequence.
get_root_sequence_nameProvides the name of the root sequence (the top-most parent sequence).
get_root_sequenceProvides a reference to the root sequence (the top-most parent sequence).
get_sequence_pathProvides a string of names of each sequence in the full hierarchical path.
Reporting InterfaceSequence items and sequences will use the sequencer which they are associated with for reporting messages.
uvm_report
uvm_report_info
uvm_report_warning
uvm_report_error
uvm_report_fatalThese are the primary reporting methods in the UVM.

new

function new ( string  name  =  "uvm_sequence_item" )

The constructor method for uvm_sequence_item.

get_sequence_id

function int get_sequence_id()

private

Get_sequence_id is an internal method that is not intended for user code.  The sequence_id is not a simple integer.  The get_transaction_id is meant for users to identify specific transactions.

These methods allow access to the sequence_item sequence and transaction IDs. get_transaction_id and set_transaction_id are methods on the uvm_transaction base_class.  These IDs are used to identify sequences to the sequencer, to route responses back to the sequence that issued a request, and to uniquely identify transactions.

The sequence_id is assigned automatically by a sequencer when a sequence initiates communication through any sequencer calls (i.e.  `uvm_do_xxx, wait_for_grant).  A sequence_id will remain unique for this sequence until it ends or it is killed.  However, a single sequence may have multiple valid sequence ids at any point in time.  Should a sequence start again after it has ended, it will be given a new unique sequence_id.

The transaction_id is assigned automatically by the sequence each time a transaction is sent to the sequencer with the transaction_id in its default (-1) value.  If the user sets the transaction_id to any non-default value, that value will be maintained.

Responses are routed back to this sequences based on sequence_id.  The sequence may use the transaction_id to correlate responses with their requests.

set_item_context

function void set_item_context( uvm_sequence_base  parent_seq,   
uvm_sequencer_base  sequencer  =  null )

Set the sequence and sequencer execution context for a sequence item

set_use_sequence_info

function void set_use_sequence_info( bit  value )

get_use_sequence_info

function bit get_use_sequence_info()

These methods are used to set and get the status of the use_sequence_info bit.  Use_sequence_info controls whether the sequence information (sequencer, parent_sequence, sequence_id, etc.) is printed, copied, or recorded.  When use_sequence_info is the default value of 0, then the sequence information is not used.  When use_sequence_info is set to 1, the sequence information will be used in printing and copying.

set_id_info

function void set_id_info( uvm_sequence_item  item )

Copies the sequence_id and transaction_id from the referenced item into the calling item.  This routine should always be used by drivers to initialize responses for future compatibility.

set_sequencer

virtual function void set_sequencer( uvm_sequencer_base  sequencer )

Sets the default sequencer for the sequence to sequencer.  It will take effect immediately, so it should not be called while the sequence is actively communicating with the sequencer.

get_sequencer

function uvm_sequencer_base get_sequencer()

Returns a reference to the default sequencer used by this sequence.

set_parent_sequence

function void set_parent_sequence( uvm_sequence_base  parent )

Sets the parent sequence of this sequence_item.  This is used to identify the source sequence of a sequence_item.

get_parent_sequence

function uvm_sequence_base get_parent_sequence()

Returns a reference to the parent sequence of any sequence on which this method was called.  If this is a parent sequence, the method returns null.

set_depth

function void set_depth( int  value )

The depth of any sequence is calculated automatically.  However, the user may use set_depth to specify the depth of a particular sequence.  This method will override the automatically calculated depth, even if it is incorrect.

get_depth

function int get_depth()

Returns the depth of a sequence from it’s parent.  A parent sequence will have a depth of 1, it’s child will have a depth of 2, and it’s grandchild will have a depth of 3.

is_item

virtual function bit is_item()

This function may be called on any sequence_item or sequence.  It will return 1 for items and 0 for sequences (which derive from this class).

get_root_sequence_name

function string get_root_sequence_name()

Provides the name of the root sequence (the top-most parent sequence).

get_root_sequence

function uvm_sequence_base get_root_sequence()

Provides a reference to the root sequence (the top-most parent sequence).

get_sequence_path

function string get_sequence_path()

Provides a string of names of each sequence in the full hierarchical path.  A “.” is used as the separator between each sequence.

Reporting Interface

Sequence items and sequences will use the sequencer which they are associated with for reporting messages.  If no sequencer has been set for the item/sequence using set_sequencer or indirectly via uvm_sequence_base::start_item or uvm_sequence_base::start), then the global reporter will be used.

uvm_report

virtual function void uvm_report(
    uvm_severity  severity,   
    string  id,   
    string  message,   
    int  verbosity  =  (severity == uvm_severity'(UVM_ERROR)) ? UVM_LOW : (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : UVM_MEDIUM,
    string  filename  =  "",
    int  line  =  0
)

uvm_report_info

virtual function void uvm_report_info( string  id,   
string  message,   
int  verbosity  =  UVM_MEDIUM,
string  filename  =  "",
int  line  =  0 )

uvm_report_warning

virtual function void uvm_report_warning( string  id,   
string  message,   
int  verbosity  =  UVM_MEDIUM,
string  filename  =  "",
int  line  =  0 )

uvm_report_error

virtual function void uvm_report_error( string  id,   
string  message,   
int  verbosity  =  UVM_LOW,
string  filename  =  "",
int  line  =  0 )

uvm_report_fatal

virtual function void uvm_report_fatal( string  id,   
string  message,   
int  verbosity  =  UVM_NONE,
string  filename  =  "",
int  line  =  0 )

These are the primary reporting methods in the UVM. uvm_sequence_item derived types delegate these functions to their associated sequencer if they have one, or to the global reporter.  See uvm_report_object::Reporting for details on the messaging functions.

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.
function new ( string  name  =  "uvm_sequence_item" )
The constructor method for uvm_sequence_item.
function int get_sequence_id()
private
function void set_item_context( uvm_sequence_base  parent_seq,   
uvm_sequencer_base  sequencer  =  null )
Set the sequence and sequencer execution context for a sequence item
function void set_use_sequence_info( bit  value )
function bit get_use_sequence_info()
These methods are used to set and get the status of the use_sequence_info bit.
function void set_id_info( uvm_sequence_item  item )
Copies the sequence_id and transaction_id from the referenced item into the calling item.
virtual function void set_sequencer( uvm_sequencer_base  sequencer )
Sets the default sequencer for the sequence to sequencer.
function uvm_sequencer_base get_sequencer()
Returns a reference to the default sequencer used by this sequence.
function void set_parent_sequence( uvm_sequence_base  parent )
Sets the parent sequence of this sequence_item.
function uvm_sequence_base get_parent_sequence()
Returns a reference to the parent sequence of any sequence on which this method was called.
function void set_depth( int  value )
The depth of any sequence is calculated automatically.
function int get_depth()
Returns the depth of a sequence from it’s parent.
virtual function bit is_item()
This function may be called on any sequence_item or sequence.
function string get_root_sequence_name()
Provides the name of the root sequence (the top-most parent sequence).
function uvm_sequence_base get_root_sequence()
Provides a reference to the root sequence (the top-most parent sequence).
function string get_sequence_path()
Provides a string of names of each sequence in the full hierarchical path.
virtual function void uvm_report(
    uvm_severity  severity,   
    string  id,   
    string  message,   
    int  verbosity  =  (severity == uvm_severity'(UVM_ERROR)) ? UVM_LOW : (severity == uvm_severity'(UVM_FATAL)) ? UVM_NONE : UVM_MEDIUM,
    string  filename  =  "",
    int  line  =  0
)
virtual function void uvm_report_info( string  id,   
string  message,   
int  verbosity  =  UVM_MEDIUM,
string  filename  =  "",
int  line  =  0 )
virtual function void uvm_report_warning( string  id,   
string  message,   
int  verbosity  =  UVM_MEDIUM,
string  filename  =  "",
int  line  =  0 )
virtual function void uvm_report_error( string  id,   
string  message,   
int  verbosity  =  UVM_LOW,
string  filename  =  "",
int  line  =  0 )
virtual function void uvm_report_fatal( string  id,   
string  message,   
int  verbosity  =  UVM_NONE,
string  filename  =  "",
int  line  =  0 )
These are the primary reporting methods in the UVM.
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.
virtual task start ( uvm_sequencer_base  sequencer,   
uvm_sequence_base  parent_sequence  =  null,
int  this_priority  =  -1,
bit  call_pre_post  =  1 )
Executes this sequence, returning when the sequence has completed.