Core Base Classes

The OVM library defines a set of base classes and utilities that facilitate the design of modular, scalable, reusable verification environments.

The basic building blocks for all environments are components and the transactions they use to communicate.  The OVM provides base classes for these, as shown below.

  • ovm_object - All components and transactions derive from ovm_object, which defines an interface of core class-based operations: create, copy, compare, print, sprint, record, etc.  It also defines interfaces for instance identification (name, type name, unique id, etc.) and random seeding.
  • ovm_component - The ovm_component class is the root base class for all OVM components.  Components are quasi-static objects that exist throughout simulation.  This allows them to establish structural hierarchy much like modules and program blocks.  Every component is uniquely addressable via a hierarchical path name, e.g.  “env1.pci1.master3.driver”.  The ovm_component also defines a phased test flow that components follow during the course of simulation.  Each phase-- build, connect, run, etc.-- is defined by a callback that is executed in precise order.  Finally, the ovm_component also defines configuration, reporting, transaction recording, and factory interfaces.
  • ovm_transaction - The ovm_transaction is the root base class for OVM transactions, which, unlike ovm_components, are transient in nature.  It extends ovm_object to include a timing and recording interface.  Simple transactions can derive directly from ovm_transaction, while sequence-enabled transactions derive from ovm_sequence_item.
  • ovm_root - The ovm_root class is special ovm_component that serves as the top-level component for all OVM components, provides phasing control for all OVM components, and other global services.
virtual class ovm_object extends ovm_void
The ovm_object class is the base class for all OVM data and hierarchical classes.
virtual class ovm_component extends ovm_report_object
The ovm_component class is the root base class for OVM components.
virtual class ovm_transaction extends ovm_object
The ovm_transaction class is the root base class for OVM transactions.
class ovm_root extends ovm_component
The ovm_root class serves as the implicit top-level and phase controller for all OVM components.