OVM Class Reference

The OVM Class Library provides the building blocks needed to quickly develop well-constructed and reusable verification components and test environments in SystemVerilog.

This OVM Class Reference Guide provides detailed reference information for each user-visible class in the OVM library.  For additional information on using OVM, see the OVM User Guide located in the top level directory within the OVM kit.

We divide the OVM classes and utilities into categories pertaining to their role or function.  A more detailed overview of each category-- and the classes comprising them-- can be found in the menu at left.

BaseThis basic building blocks for all environments are components, which do the actual work, transactions, which convey information between components, and ports, which provide the interfaces used to convey transactions.  The OVM’s core base classes provide these building blocks.  See Core Base Classes for more information.
ReportingThe reporting classes provide a facility for issuing reports (messages) with consistent formatting and configurable side effects, such as logging to a file or exiting simulation.  Users can also filter out reports based on their verbosity , unique ID, or severity.  See Reporting Classes for more information.
FactoryAs the name implies, the OVM factory is used to manufacture (create) OVM objects and components.  Users can configure the factory to produce an object of a given type on a global or instance basis.  Use of the factory allows dynamically configurable component hierarchies and object substitutions without having to modify their code and without breaking encapsulation.  See Factory Classes for details.
SychronizationThe OVM provides event and barrier synchronization classes for process synchronization.  See Synchronization Classes for more information.
PoliciesEach of OVM’s policy classes perform a specific task for ovm_object-based objects: printing, comparing, recording, packing, and unpacking.  They are implemented separately from ovm_object so that users can plug in different ways to print, compare, etc. without modifying the object class being operated on.  The user can simply apply a different printer or compare “policy” to change how an object is printed or compared.  See Policy Classes for more information.
TLMThe OVM TLM library defines several abstract, transaction-level interfaces and the ports and exports that facilitate their use.  Each TLM interface consists of one or more methods used to transport data, typically whole transactions (objects) at a time.  Component designs that use TLM ports and exports to communicate are inherently more reusable, interoperable, and modular.  See TLM Interfaces, Ports, and Exports for details.
ComponentsComponents form the foundation of the OVM.  They encapsulate behavior of drivers, scoreboards, and other objects in a testbench.  The OVM library provides a set of predefined component types, all derived directly or indirectly from ovm_component.  See Predefined Component Classes for more information.
SequencersThe sequencer serves as an arbiter for controlling transaction flow from multiple stimulus generators.  More specifically, the sequencer controls the flow of ovm_sequence_item-based transactions generated by one or more ovm_sequence #(REQ,RSP)-based sequences.  See Sequencer Classes for more information.
SequencesSequences 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.  See Sequence Classes for more information.
MacrosThe OVM provides several macros to help increase user productivity.  See <Utility and Field Macros> and Sequence and Do Action Macros for a complete list.
GlobalsThis category defines a small list of types, variables, functions, and tasks defined in ovm_pkg scope.  These items are accessible from any scope that imports the ovm_pkg.  See Types and Enumerations and Globals for details.
The OVM library defines a set of base classes and utilities that facilitate the design of modular, scalable, reusable verification environments.
The reporting classes provide a facility for issuing reports with consistent formatting.
As the name implies, the ovm_factory is used to manufacture (create) OVM objects and components.
Policy classes are used to implement polymorphic operations that differ between built-in types and class-based types.
The OVM TLM library defines several abstract, transaction-level interfaces and the ports and exports that facilitate their use.
virtual class ovm_component extends ovm_report_object
The ovm_component class is the root base class for OVM components.
Components form the foundation of the OVM.
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.
The sequencer serves as an arbiter for controlling transaction flow from multiple stimulus generators.
Sequences encapsulate user-defined procedures that generate multiple ovm_sequence_item-based transactions.