Sequence Classes

Sequences encapsulate user-defined procedures that generate multiple ovm_sequence_item-based transactions.  Such sequences can be reused, extended, randomized, and combined sequentially and hierarchically in interesting ways to produce realistic stimulus to your DUT.

With ovm_sequence objects, users can encapsulate DUT initializaton code, bus-based stress tests, network protocol stacks-- anything procedural-- then have them all execute in specific or random order to more quickly reach corner cases and coverage goals.

The OVM sequence item and sequence class hierarchy is shown below.

  • ovm_sequence_item - The ovm_sequence_item is the base class for user-defined transactions that leverage the stimulus generation and control capabilities of the sequence-sequencer mechanism.
  • ovm_sequence #(REQ,RSP) - The ovm_sequence extends ovm_sequence_item to add the ability to generate streams of ovm_sequence_items, either directly or by recursively execting other ovm_sequences.
class ovm_sequence_item extends ovm_transaction
The base class for user-defined sequence items and also the base class for the ovm_sequence class.
virtual class ovm_sequence #(
   type REQ =  ovm_sequence_item,
   type RSP =  REQ
) extends ovm_sequence_base
The ovm_sequence class provides the interfaces necessary in order to create streams of sequence items and/or other sequences.