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::*; ... endpackage
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