Thought Leadership

UVM Register Kit Available for OVM 2.1.2

By Tom Fitzpatrick

When we looked at requirements for UVM in Accellera, one of the highest priority requests from users was to have a single standard Register Modeling Package. After much discussion in the committee, Mentor and Synopsys worked together to create the UVM Register package, which was subsequently adopted as part of UVM.

In developing the UVM register layer, we combined the VMM RAL data model with a sequence-based API that lets you write UVM sequences in terms of register read/write transactions, independent of the specific address or bus protocol implemented on the desired interface. The collaboration was productive and efficient and gave UVM a head start in addressing a substantial installed base of register users while keeping a consistent use model for OVM-savvy users as they consider moving to UVM.

So we asked ourselves, if having a standard register package is so important, why not make it available to OVM users without requiring them to move everything else to UVM? Our answer was to release a UVM Register package that does, in fact, work with OVM 2.1.2. As it says in the Release Notes, “This package is a near verbatim copy of the register layer portion of the Accellera Universal Verification Methodology (UVM 1.1) reference library. Minor additions and modifications¬† were made to enable its use as a standalone package and be compatible¬† with OVM 2.1.2. ” Having this register package means that OVM users now have a standard, robust and vendor-independent register solution that will not require rewrites or use-model changes if/when they decide to migrate to UVM.

To use the UVM Register package with OVM, you’ll need to import the uvm_reg_pkg and include the uvm_reg_macros.svh file:

`include "ovm_macros.svh"
`include "uvm_reg_macros.svh"
package my_reg_model;
  import ovm_pkg::*;
  import uvm_reg_pkg::*;

That’s it! If you’re using a code generator that creates UVM register code directly, you can use that code as-is with the UVM Register Package and OVM2.1.2, with the minor caveat of requiring the import and include statements mentioned above.

The OVM2.1.2 and UVM Register package kits are available at the Verification Academy here




2 thoughts about “UVM Register Kit Available for OVM 2.1.2
  • This looks like a pretty straightforward engineering project, but I see the register package on UVM as one of those biggest motivations to migrate. Let’s look at the threeconditions in which the register package would affect your decision — you are not working with a register package on OVM already, you are but it’s not the UVM one (‘cuz Mentor just integrated it!), or you are in that narrow window where you just committed to OVM, planned to use a register package, and you have time to switch.

    If you haven’t already implemented a register package, its a big methodology advance. If you are going to make that deep investment, it probably makes the most sense to take the tiny step and run the UVM migration script to become fully immersed in the future.

    If you are already using either the Mentor or Cadence packages (or your own), I would agree that you can re-target your register descriptions relatively easily. However, you still need to fully re-validate your entire regression environment to be sure the migration was successful and that will take some time.

    If you are in that narrow window, it looks like you have a new option!

    Additional options are great and I applaud Mentor for creating this one. However, the simple risk-analysis above suggests that if you are ready for a methodology change as big as adopting a new register package, then moving fully to the UVM may well be the lowest risk decision. In the end, the choice is yours!

    =Adam Sherer

Leave a Reply

This article first appeared on the Siemens Digital Industries Software blog at