Backward Compatibility Means You Can Move Forward with Confidence
OVM 2.0, like the previous versions, offers backward compatibility. Mentor and Cadence have built this notion into the OVM from the start to make it easy for engineers to move to the new version with confidence. Cadence validates this backward compatibility and we'll blog more on that in the future.
Unified Sequence Mechanism
Possibly the most significant advance in the OVM 2.0 is the unified sequence mechanism. Some of you may have seen that previous versions of the OVM had a scenario mechanism which appealed to users accustomed to directed test and that option was also part of the sequence mechanism. In the OVM 2.0, the scenarios have been deprecated and all of the functionality implemented in the sequences. This includes new arbitration modes, sequence library management, and virtual sequence enhancements. The new arbitration modes add five new modes to the single FIFO policy available in the OVM 1.1 providing greater control in situations where more than one sequence attempts to move to the driver at the same time. The sequence library support in the OVM 2.0 enables the test writer to add or remove specific sequences to override the library default. Finally, the virtual sequencer now has a simplified use model in the OVM 2.0.
OVM User Guide
The user guide has been one the most requested items in the OVM World forums. This guide was jointly edited by Cadence and Mentor leveraging the user guide we delivered with Incisive and Mentor's AVM cookbook. The user guide details three usage models: developing OVM verification components (OVCs), using OVCs, and references/advanced topics. It includes details on assembling tests and testbenches, transaction level modeling, and advanced sequence control. The user guide provides detailed descriptions of the capabilities using the Xbus example.
Improved Debugging and Expanded Use of Parameterized Classes
The OVM 2.0 expands the use of parameterized classes to drivers, sequencers, and sequences. The advantage to you is better compile time checking which makes it easier to debug your environment. In addition, the expanded parameterized class usage reduces the run-time casting simplifying your coding. We have carried the parameterization into the factory as well which means you can now use proxy classes instead of strings to define types for the factory. This reduces bugs that come from misspelling the type names which should also simplify debugging. For users of the OVM 1.1, the string-based API is still there as part of our backward compatibility.
Driver/Sequencer Communication Enhancements
In addition to unifying the sequence mechanism, the OVM 2.0 adds additional debug, TLM support, and channel modes to the driver/sequencer communications. For debug, the OVM 2.0 provides a driver API and embeds sequence and transaction IDs in data item randomized by the sequencers. This simplifies out-of-order and parallel sequence debug because the IDs can be printed and viewed in your favorite waveform debug tool (like Incisive SimVision). The OVM 2.0 also completes the TLM support inherited from AVM and URM to with extra modularity and support for pipelining. It also now supports push mode in addition to pull mode in the TLM channel. In pull mode the driver pulls items from the sequencer a it senses an item request from the bus while in push mode the sequencer randomizes items and pushes them to the driver to be executed. The pull mode supports advanced techniques for reactive generation and sequence layering, but the push mode is often more intuitive for engineers more accustom to directed test. With the OVM 2.0, both modes are now supported.