Global training solutions for engineers creating the world's electronics

OVM Dictionary

A Dictionary of the most commonly used OVM names

Introduction

As you start exploring OVM, there is a danger of getting lost in a mass of detail. In the end, there is no substitute for gradually building up your understanding concept by concept, and that takes time. But to try to make things easier, here is an alphabetical dictionary of the more important OVM names, with a brief description of each.

Abbreviations used in this dictionary

c.	class
cp. 	class property (aka. data member, field)
ext. 	extends
f. 	function
h. 	header file
m. 	method
ma. 	macro
pa. 	parameter
pk. 	package
sm. 	static method
t. 	type
*	A wildcard character to abbreviate a family of closely related names

action: t. An enum with the values NO_ACTION, DISPLAY, LOG, COUNT, EXIT, CALL_HOOK. Used to determine the action taken by the report handler. The values can be combined using the or operator, |. See ovm_report_object.

add_seq_cons_if: m. of ovm_virtual_sequencer. Adds an object to a virtual sequencer allowing it to be connected to a downstream sequencer. Call once for each sequencer controlled by the virtual sequencer.

apply: m. of ovm_sequence. A task to execute an existing sequence item without calling the do actions pre_do, mid_do, and post_do. The sequence item must already exist and be randomized. An alternative to `ovm_do. See pre_apply, mid_apply, post_apply.

body: m. of ovm_sequence. Performs the main behavior associated with a sequence. May be overridden by each user-defined sequence class. See pre_body, post_body.

build: m. of ovm_component. Called following construction and before the export_connections phase for a component. May be overridden by each user-defined component. Typically used to instantiate components. Should first call super.build.

check: m. of ovm_component. Called following the extract phase and before the report phase for a component. May be overridden by each user-defined component. Typically used to perform post-processing checks dependent on the results of the extract phase.

clone: m. of ovm_object. Virtual method to create a new copy of the current ovm_object. In order to provide class-specific copying behavior, the user should override the do_copy method, not the clone method.

compare: m. of ovm_object. Method to compare one ovm_object with another. In order to provide class-specific behavior, the user should override the do_compare method, not the compare method.

configure: m. of ovm_threaded_component. Called following the end_of_elaboration phase and before the run phase for a threaded component. May be overridden by each user-defined component. Typically used to perform configuration and initialization actions immediately before simulation.

connect: m. of ovm_component and ovm_port_base. Called following export_connections phase and before the import_connections phase for a component. May be overridden by each user-defined component. Typically used to bind ports to exports. For ovm_port_base, creates a binding between one port or export and another.

connect_if: m. of ovm_seq_item_cons_if and ovm_seq_item_prod_if. Method to connect a sequence item producer interface to a sequence item consumer interface. The method of either interface may be called.

convert2string: m. of ovm_transaction. Method to convert a transaction to a string.

copy: m. of ovm_object. Method to copy the properties of the current ovm_object from another. In order to provide class-specific copying behavior, the user should override the do_copy method, not the copy method.

count: cp. of ovm_sequencer_base. Property used by ovm_random_sequence to determine how many sequences to generate. The default value of -1 indicates that between 1 and max_random_count sequences will be generated. May be set using set_config_int.

current_grabber: m. of ovm_seq_cons_if. A method that returns a reference to the sequence that is currently grabbing the sequencer connected to the current interface, or null if there is none. Must not be called for an interface connected to a virtual sequencer.

default_sequence: cp. of ovm_sequencer_base. The name of the sequence that will be started automatically on the sequencer. May be set using set_config_string.

enable_stop_interrupt: cp. of ovm_component. Set to indicate that a component wishes to have its stop task called following a call to global_stop_request.

end_of_elaboration: m. of ovm_component. Called following the import_connections phase for a component. May be overridden by each user-defined component. Typically used to perform actions that depend on the connections having been hardened.

export_connections: m. of ovm_component. Called following the build phase and before the connect phase for a component. May be overridden by each user-defined component. Typically used to bind exports to exports going down the component hierarchy.

extract: m. of ovm_component. Called following the run phase and before the check phase for a component. May be overridden by each user-defined component. Typically used to extract state and coverage information from the design-under-test and verification environment prior to post-process checking.

finish_on_completion: cp. of ovm_env. A flag with default value 1, meaning $finish gets called at the end of run_test.

generate_stimulus: m. of ovm_random_stimulus. Clones an object of polymorphic type passed as an argument, randomizes, and sends it out though the blocking port of ovm_random_stimulus.

get_full_name: m. of ovm_object, ovm_component and ovm_sequence_item. Method returns the full hierarchical instance name of the given object.

get_next_item: m. of ovm_seq_item_prod_if and ovm_sequencer. Blocking method called from a driver to get the next available transaction from a sequencer.

get_sequence: m. of ovm_sequencer_base and ovm_sequence. Method uses the factory to create a new sequence object given an integer index into the sequence kind map, and returns a reference to that sequence.

get_sequencer_type_name: m. of ovm_seq_cons_if. A method that returns the class name of the sequencer connected to the given sequence consumer interface. If none, returns "NOT_CONNECTED".

get_seq_kind: m. of ovm_sequencer_base and ovm_sequence. Method returns an integer index into the sequence kind map given the string name of a sequence.

get_type_name: m. of ovm_object. Method to return the type name of the object as a string. The type name is set using ovm_object_utils or ovm_component_utils.

global_stop_request: sm. of ovm_component. Causes the run phase to be terminated and simulation to advance to the extract phase, but only after all threaded components with the enable_stop_interrupt bit set have had their stop methods called.

grab: m. of ovm_seq_cons_if. A blocking task that requests exclusive access to the sequencer connected to the current interface. Requesting sequences are blocked until exclusive access can be granted. Must not be called for an interface connected to a virtual sequencer.

import_connections: m. of ovm_component. Called following the connect phase and before the end_of_elaboration phase for a component. May be overridden by each user-defined component. Typically used to bind ports to ports going up the component hierarchy.

item_done: m. of ovm_seq_item_prod_if. Method called from a driver to indicate to the sequencer that it is done processing the current transaction. The item in question may be passed back to the sequencer as an argument.

is_connected: m. of ovm_seq_cons_if. A method that returns true if and only if the interface is connected to a sequence consumer.

is_grabbed: m. of ovm_seq_cons_if. A method that returns true if and only if the sequencer connected to the current interface has been grabbed by a call to the grab method. Must not be called for an interface connected to a virtual sequencer.

is_virtual_sequencer: m. of ovm_seq_cons_if. A method that returns true if and only if the interface is connected to a virtual sequencer, as opposed to a non-virtual sequencer. Do not call unless is_connected returns true.

max_random_count: cp. of ovm_sequencer_base. Property used by ovm_random_sequence to determine the upper limit of the number of sequences to be generated, the actual number being chosen at random between 1 and max_random_count. Only used when count = -1. See count.

mid_apply: m. of ovm_sequence. A task called by the apply task of a sequence after pre_apply and before executing the item or sending it to the consumer. See apply.

mid_do: m. of ovm_sequence. A task called in the middle of the do actions for a sequence, that is, after the sequence item has been randomized and before executing the body method in the case of a sequence, or after passing the item to a consumer in the case of a transaction. May be overridden by each user-defined sequence class. See ovm_do, pre_do, post_do.

ovm.svh: h. Contains all OVM definitions. Either include this file or import ovm_pkg.

ovm_active_passive_enum: t. Enum type intended for use when defining a field within an ovm_agent to indicate whether or not the sequencer and driver components are enabled. See ovm_agent.

ovm_agent: c. ext. ovm_threaded_component. A methodology base class serving as the base class for agents. An agent typically contains a sequencer, a driver and a monitor and thus encapsulates the stimulus generation, checking and coverage functions for a specific interface at a specific level in a protocol stack. By convention, an agent has a configuration flag, specifying whether the agent is active or passive, passive meaning that the sequencer and driver are disabled. See ovm_active_passive_enum.

ovm_analysis_port: c. ext. ovm_report_object. A port that may be registered with multiple subscribers. A call to the write method of the analysis port is automatically propagated to every registered subscriber.

ovm_analysis_export: c. ext. ovm_report_object. An export with the same functionality as an analysis port.

OVM_ALL_ON: pa. Field macro flag to indicate that all options are to be turned on.

ovm_barrier: c. ext. ovm_object. A synchronization primitive that causes processes to block until every process in a given set has reached the barrier.

ovm_barrier_pool: c. ext. ovm_object. An associative array of ovm_barrier objects.

ovm_blocking_get_port: c. A port that forwards the blocking get method. Typically, would be connected to a tlm_fifo.

ovm_blocking_put_port: c. A port that forwards the blocking put method. Typically, would be connected to a tlm_fifo.

ovm_component: c. ext. ovm_report_object. The base class for structural building blocks. A component has a name and a position in the hierarchy of the verification environment. Provides the configuration interface set_config_* and get_config_*. [AVM+URM]

ovm_component_utils: ma. Provides automation for ovm_components such that they can be instantiated by factories. Placed within a component class. ovm_component_utils_begin, ovm_component_utils_end: ma. Provides automation for ovm_components where there are specific fields to be defined using enclosed ovm_field_* macros.

OVM_DEC: pa. Field macro flag to indicate decimal radix is to be used for an integral field.

OVM_DEFAULT: pa. Field macro flag to indicate default settings.

ovm_do: ma. A macro that creates a sequence item, randomizes the item, executes the pre_do, mid_do and post_do action methods, and executes the body method in the case of a sequence, or handshakes with the consumer in the case of a transaction.

ovm_do_seq: ma. A sequence action used within the body method of a virtual sequence to execute a sequence on another sequencer. The first argument is a variable name that will refer to the sequence item created by the macro, the second argument is an element of the seq_cons_if associative array of the virtual sequencer.

ovm_do_with: ma. As for ovm_do, except that the randomize step uses a constraint passed in-line as the second argument.

ovm_do_seq_with: ma. As for ovm_do_seq, except that the randomize step uses a constraint passed in-line as the third argument.

ovm_driver: c. ext. ovm_threaded_component. A methodology base class serving as the base class for drivers. A driver communicates with a sequencer (or other means of generating transactions) and with the design-under-test, typically through an interface. Has a built-in sequence item producer interface.

ovm_env: c. ext. ovm_threaded_component. A methodology base class representing a hierarchical verification environment. May instantiate ovm_components. May be the top-level of the verification environment, or may be instantiated within another ovm_env.

ovm_event: c. ext. ovm_object. A wrapper around a Verilog named event, providing additional services such as callbacks and level sensitivity.

ovm_event_pool: c. ext. ovm_object. An associative array of ovm_event objects.

ovm_exhaustive_sequence: c. ext. ovm_sequence. Built-in sequence that selects and executes every sequence in a sequencer’s list exactly once, but excluding ovm_random_sequence and ovm_exhaustive_sequence itself.

ovm_factory: c. ext. ovm_object. A class that creates polymorphic transactions and components using the string name with which they were registered. Each simulation contains a singleton factory instance. Use in preference to new.

ovm_field_int: ma. Provides automation for integral fields. Used between ovm_*_utils_begin and ovm_*_utils_end.

ovm_field_enum: ma. Provides automation for enum fields. Used between ovm_*_utils_begin and ovm_*_utils_end.

ovm_field_object: ma. Provides automation for fields derived from ovm_object. Used between ovm_*_utils_begin and ovm_*_utils_end.

ovm_field_string: ma. Provides automation for string fields. Used between ovm_*_utils_begin and ovm_*_utils_end.

ovm_get_port: c. A port that forwards the get, try_get and can_get methods. Typically, would be connected to a tlm_fifo.

ovm_*_imp: c. A class that provides an implementation of the appropriate TLM interface for convenience when using an export. The intent is to create a local instance of the imp class, then bind the export to the imp.

ovm_in_order_comparator: c. ext. ovm_threaded_component. A utility class that compares two transaction streams for equality. Uses ovm_report_object to report matches and mismatches.

ovm_macros.svh: h. Contains the OVM macro definitions. Include in any file that uses an OVM macro.

ovm_monitor: c. ext. ovm_threaded_component. A methodology base class serving as the base class for monitors. A monitor is a passive component that performs checking and functional coverage collection.

ovm_nonblocking_get_port: c. A port that forwards the try_get and can_get methods. Typically, would be connected to a tlm_fifo.

ovm_nonblocking_put_port: c. A port that forwards the try_put and can_put methods. Typically, would be connected to a tlm_fifo.

ovm_object: c. ext. ovm_void. The base class for many other OVM classes, including ovm_event, ovm_report_object, ovm_component and ovm_transaction. Has a name, and has methods to copy, compare, pack, unpack and print values.

ovm_object_utils: ma. Provides automation for ovm_objects such that they can be instantiated by factories.

ovm_object_utils_begin, ovm_object_utils_end: ma. Provides automation for ovm_objects where there are specific fields to be defined using enclosed ovm_field_* macros.

ovm_pkg: pk. Contains all OVM definitions. Either import ovm_pkg or include ovm.svh.

ovm_printer: c. The base class for tree, line and table printers. Used to control the formatting of ovm_objects when they are printed. Contains an ovm_printer_knobs object. Unrelated to ovm_report_object.

ovm_printer_knobs: c. Class containing a set of variables that may be modified to control the formatting of the output from class ovm_printer.

ovm_put_port: c. A port that forwards the put, try_put and can_put methods. Typically, would be connected to a tlm_fifo.

ovm_random_sequence: c. ext. ovm_sequence. Built-in sequence that selects at random and executes a number of sequences from a sequencer’s list, but excluding ovm_exhaustive_sequence and ovm_random_sequence itself. The number of sequences is given by the count property of ovm_sequencer_base.

ovm_random_stimulus: c. ext. ovm_component. A utility class that generates a stream of random transactions, where the full flexibility of the ovm_factory mechanism is not required. Has a blocking put port. See generate_stimulus.

ovm_recorder: c. Used to control how an object is recorded when calling the record method of ovm_object.

ovm_report_error: f. Generates a report with severity error.

ovm_report_fatal: f. Generates a report with severity fatal.

ovm_report_handler: c. Implements the state information related to defining custom report actions. Applications should generally use ovm_report_object as the public interface to the report handler.

ovm_report_message: f. Generates a report with severity message.

ovm_report_warning: f. Generates a report with severity warning.

ovm_report_object: c. ext. ovm_object. A class that provides a set of methods for reporting, including ovm_report_error and so on, and giving the ability to customize the behavior of the report handler. Unrelated to ovm_printer, which is specifically concerned with formatting ovm_objects.

ovm_scenario: c. ext. ovm_sequence_item. A stream of sequence items or other scenarios. Scenarios may execute other scenarios in series or in parallel, and scenarios may be interleaved using the scenario controller.

ovm_scenario_controller: c. ext. ovm_threaded_component. Placed between multiple scenarios and a scenario driver to arbitrate between parallel scenarios.

ovm_scenario_driver: c. ext. ovm_threaded_component. Plays a similar role to an ovm_driver, but must be connected to a scenario controller. Receives requests from and sends responses to the scenario controller, and drives pin-level signals on the design-under-test.

ovm_scoreboard: c. ext. ovm_threaded_component. A methodology base class serving as the base class for scoreboards. A scoreboard performs end-to-end functional checking and coverage analysis, typically combining expected and actual transaction streams.

ovm_sequence: c. ext. ovm_sequence_item. The base class for user-defined sequences. Has a set of hook methods that can be overridden to specify the generation of sequences consisting of multiple sequence items.

ovm_sequence_item: c. ext. ovm_transaction. The base class for the individual items of a user-defined sequence. Each item is either a transaction or another sequence.

ovm_sequence_utils: ma. Registers a given sequence with a given sequencer, and declares a variable p_sequencer for use by the methods of a sequence. Placed within a sequence class.

ovm_sequencer: c. ext. ovm_threaded_component. The base class for user-defined sequencer components that are able to generate a sequence of items.

ovm_seq_cons_if: c. ext. ovm_component. Provides the methods necessary to communicate with a downstream sequence consumer. These methods are typically called by a virtual sequencer to control actual sequencers or other virtual sequencers.

ovm_simple_sequence: c. ext. ovm_sequence. Built-in sequence that executes a single transaction as registered with the sequencer.

ovm_subscriber: c. ext. ovm_component. The methodology base class for subscribers. Provides an analysis export. Each subclass must define a write method.

ovm_test: c. ext. ovm_threaded_component. A methodology base class serving as the base class for tests. A test is selected using an argument to run_test or the +OVM_TESTNAME command line argument. OVM_TESTNAME: command line plusarg to set the name of the test, that is, the name of a class derived from ovm_test.

ovm_threaded_component: c. ext. ovm_component. The base class for user-defined components that have a run method representing a concurrent thread.

ovm_transaction: c. ext. ovm_object. The base class for transactions. A user-defined transaction class should invoke the ovm_object_utils macro.

ovm_update_sequence_lib: ma. Populates the sequence list of a virtual sequencer with a minimal set of sequences, that is, ovm_random_sequence and ovm_exhaustive_sequence. Place in the constructor of the virtual sequencer.

ovm_update_sequence_lib_and_item: ma. Populates the sequence list of a sequencer with a minimal set of sequences, that is, ovm_random_sequence, ovm_exhaustive_sequence, and ovm_simple_sequence. Place in the constructor of the sequencer.

ovm_virtual_sequencer: c. ext. ovm_threaded_component. The base class for user-defined virtual sequencers. A virtual sequencer is able to control the execution of other sequencers or virtual sequencers, possibly having them generate sequences in parallel.

ovm_void: c. The base class for ovm_object and for any user-defined types that are to be treated as objects. Permits user-defined objects to be manipulated in a similar way to ovm_objects, for example, to be packed and printed.

pack: m. of ovm_object. Method to pack an ovm_object into a stream of bits. In order to provide class-specific packing behavior, the user should override the do_pack method, not the pack method.

pack_bytes: m. of ovm_object. Method to pack an ovm_object into a stream of bytes. In order to provide class-specific packing behavior, the user should override the do_pack method, not the pack_bytes method.

post_apply: m. of ovm_sequence. A task called by the apply task of a sequence after getting a response back from the consumer. See apply.

post_body: m. of ovm_sequence. Task called after the body task of a sequence is executed. Only called for sequences started by start_sequence, including the default sequence. May be overridden by each user-defined sequence class. See body.

post_do: m. of ovm_sequence. A method called at the end of the do actions for a sequence item, that is, after executing the body method in the case of a sequence, or the consumer finishing with the item in the case of a transaction. May be overridden by each user-defined sequence class. See ovm_do, pre_do, mid_do.

pre_apply: m. of ovm_sequence. A task called by the apply task of a sequence after selecting the item to be applied and before mid_apply. See apply.

pre_body: m. of ovm_sequence. A task called before the body task of a sequence is executed. Only called for sequences started by start_sequence, including the default sequence. May be overridden by each user-defined sequence class. See body.

pre_do: m. of ovm_sequence. A task called at the start of the do actions for a sequence, before randomizing the sequence variable. May be overridden by each user-defined sequence class. See ovm_do, mid_do, post_do.

print: m. of ovm_object. Method to print an ovm_object. Formatting may be controlled by passing an argument of type ovm_printer. In order to provide class-specific printing behavior, the user should override the do_print method, not the print method.

record: m. of ovm_object. Method to record an ovm_object using an ovm_recorder. In order to provide class-specific recording behavior, the user should override the do_record method, not the record method.

report: m. of ovm_component. Called following the extract and check phases for a component. May be overridden by each user-defined component. Typically used to report the results of the previous phases back to the user.

run: m. of ovm_threaded_component. Called after the configure phase and before the extract phase for a threaded component. May be overridden by each user-defined component. Typically used to implement the main behavior of a component.

run_test: f. and m. of ovm_env. Runs the test with the name given as an argument, or if the argument is null, by the +OVM_TESTNAME command line argument. See ovm_test.

print: m. of ovm_object. Method to print an ovm_object. Formatting may be controlled by passing an argument of type ovm_printer. In order to provide class-specific printing behavior, the user should override the do_print method, not the print method.

seq_item_prod_if: cp. of ovm_driver. The sequence item producer interface. Allows a driver to communicate with a sequencer by getting items and putting responses.

seq_kind: cp. of ovm_sequencer_base and ovm_sequence. Variable that may be constrained when selecting a sequence at random from an array of sequences.

set_config_int: f. and m. of ovm_component. Sets configuration information for a field of an integral type. The information is copied to the field itself when the field’s parent object is created by the factory.

set_config_object: f. and m. of ovm_component. Sets configuration information for a field of a type derived from ovm_object. The information is copied to the field itself when the field’s parent object is created by the factory.

set_config_string: f. and m. of ovm_component. Sets configuration information for a string field. The information is copied to the field itself when the field’s parent object is created by the factory.

set_global_timeout: sm. of ovm_component. Sets a global watchdog timer that will cause every run method to return, even if those processes are suffering event starvation, and thus allow the later simulation phases to run.

set_inst_override: sm. of ovm_factory. Causes the factory to generate an object of a given subtype when a given instance of a given supertype are requested.

set_report_id_action: m. of ovm_report_object. Associates an action with a given report id.

set_type_override: sm. of ovm_factory. Causes the factory to generate objects of a given subtype whenever objects of a given supertype are requested.

severity: t. An enum with the four values OVM_INFO, OVM_WARNING, OVM_ERROR, OVM_FATAL, used by the report handler.

start_sequence: m. of ovm_sequencer_base and ovm_seq_cons_if. Non-blocking method to start a given sequence on a sequencer manually. The sequence passed as an argument must already have been created and randomized.

stop: m. of ovm_component. Task called following a call to global_stop_request and before leaving the run phase. May block until the component is ready for the run phase to end.

tlm_fifo: c. ext. ovm_component. A transaction-level FIFO that provides the put, try_put, can_put, get, try_get and can_get methods.

ungrab: m. of ovm_seq_cons_if. A method that removes the effect of a previous call to grab for the sequencer connected to the current interface. Must not be called for an interface connected to a virtual sequencer.

unpack: m. of ovm_object. Method to unpack an ovm_object from a stream of bits. In order to provide class-specific unpacking behavior, the user should override the do_unpack method, not the unpack method.

unpack_bytes: m. of ovm_object. Method to unpack an ovm_object from a stream of bytes. In order to provide class-specific unpacking behavior, the user should override the do_unpack method, not the unpack_bytes method.

write: m. of ovm_analysis_port and ovm_subscriber. Non-blocking method called through an analysis port and implemented by an ovm_subscriber.

 

Click here to download this page in PDF format. In exchange, we will ask you to enter some personal details. To read about how we use your details, click here. On the registration form, you will be asked whether you want us to send you further information concerning other Doulos products and services in the subject area concerned.

Also see:  OVM Hints and Tips

Back to Getting Started with OVM

Great training!! Excellent Instructor, Excellent facility ...Met all my expectations.
Henry Hastings
Lockheed Martin

View more references