svt_dispatch_sequence Class Reference

Inheritance diagram for class svt_dispatch_sequence:

List of all members.


Detailed Description

Sequence used to queue up and dispatch seqeunce items. This sequence supports two basic use models, controlled by the continuous_dispatch field.

The client can initially create a 'non-continuous' svt_dispatch_sequence, but once continuous_dispatch gets set to '1', the svt_dispatch_sequence will continue to be a continuous sequence until it is deleted. It is not possible move back and forth between continuous and non-continuous dispatch with an individual svt_dispatch_sequence instance.

If Sequence dispatched in continuous, it also supports multiple transactions to be dispatched concurrently, without blocking, controlled by enable_multiple_tr_dispatch method.



Public Member Functions

task   body ( )
function ovm_object  create ( string name = "" )
function void  delete_reqs ( )
task   dispatch ( ovm_sequencer seqr, REQ req, bit continuous_dispatch = 1 )
function void  enable_multiple_tr_dispatch ( )
virtual function ovm_object_wrapper  get_object_type ( )
static function type_id  get_type ( )
virtual function void  m_set_p_sequencer ( )
function void  new ( string name = "svt_dispatch_sequence" )
function void  response_handler ( ovm_sequence_item response )
task   send_forever ( )
task   send_one ( )

Class Parameters

type  REQ = ovm_sequence_item
type  RSP 

Public Attributes

ovm_sequencer  p_sequencer 
static ovm_report_object  reporter = ovm_root; 

Member Typedefs

 typedef class  type_id 


Member Function Documentation

  task
 svt_dispatch_sequence::body

 (   ) 


Sequence body implemeentation, basically sends 'req' on the sequencer.

 Superseded tasks 
 ovm_sequence_item :: body 
 ovm_sequence_base :: body 

  function ovm_object
 svt_dispatch_sequence::create

 (  string name = ""  ) 


 Superseded functions 
 ovm_object :: create 

  function void
 svt_dispatch_sequence::delete_reqs

 (   ) 


Method used to remove all the elements from the queue which are pushed for dispatch.

  task
 svt_dispatch_sequence::dispatch

 (  ovm_sequencer seqr , REQ req , bit continuous_dispatch = 1  ) 


Method used to dispatch the request on the sequencer. The dispatch sequence can move from 'single' dispatch to 'continuous' dispatch between calls. It can also move between sequencers between calls while using 'single' dispatch, or when moving from 'single' dispatch to 'continuous' dispatch. But once 'continuous' dispatch is established, attempting to move back to 'single' dispatch, or changing the sequencer, will result in a fatal error.

seqr - Sequencer the request is to be dispatched on.

req - Request that is to be dispatched.

continuous_dispatch - Indicates whether the dispatch process should be continuous.

  function void
 svt_dispatch_sequence::enable_multiple_tr_dispatch

 (   ) 


Method used to enable dispatch of multiple non blocking concurrent transactions.

 virtual function ovm_object_wrapper
 svt_dispatch_sequence::get_object_type

 (   ) 


 Superseded functions 
 ovm_object :: get_object_type 
 ovm_sequence_item :: get_object_type 

 static function type_id
 svt_dispatch_sequence::get_type

 (   ) 


Factory Registration.

 Superseded functions 
 ovm_object :: get_type 
 ovm_sequence_item :: get_type 

 virtual function void
 svt_dispatch_sequence::m_set_p_sequencer

 (   ) 


 Superseded functions 
 ovm_sequence_item :: m_set_p_sequencer 

  function void
 svt_dispatch_sequence::new

 (  string name = "svt_dispatch_sequence"  ) 


CONSTRUCTOR: Creates a new instance of the svt_dispatch_sequence class.

name - The sequence name.


 Superseded functions 
 ovm_object :: new 

  function void
 svt_dispatch_sequence::response_handler

 (  ovm_sequence_item response  ) 


No-op which can be used to avoid clogging things up with responses and response messages.

 Superseded functions 
 ovm_sequence_base :: response_handler 

  task
 svt_dispatch_sequence::send_forever

 (   ) 


Method used to create a forever loop to take care of the dispatch.

  task
 svt_dispatch_sequence::send_one

 (   ) 


Method used to do a single dispatch.

Class Parameters Documentation

 type  attribute
 svt_dispatch_sequence::REQ = ovm_sequence_item

 type  attribute
 svt_dispatch_sequence::RSP


Member Attribute Documentation

 ovm_sequencer  attribute
 svt_dispatch_sequence::p_sequencer


Parent Sequencer Declaration.

 static ovm_report_object  attribute
 svt_dispatch_sequence::reporter = ovm_root


All messages originating from data objects are routed through `SVT_XVM(root)

Member Typedef Documentation

 typedef class  svt_dispatch_sequence::type_id
 Typedefe'd string ==>   ovm_object_registry#(svt_dispatch_sequence)