| Release Notes | |
| uvm_register-2. 0 May 7, 2010 | *** New Features |
| uvm_register-2. 0beta2 March 2, 2010 | uvm_broadcast_register.svh uvm_indirect_register.svh |
| uvm_register-1.0 | Formalizes the existing, field tested final beta8. |
| uvm_register-1. 0 Beta 8 June 29, 2009 | |
| uvm_register-1. 0 Beta 7 March 26, 2009 | Adds support for backdoor access, an id register implementation and a modal register implementation. |
| uvm_register-1. 0 Beta 6 January 16, 2009 | Added additional examples. |
| uvm_register-1. 0 Beta 5 December 22, 2008 | General housecleaning. |
*** New Features
Certain SystemVerilog features and capabilities are re-implemented for NCSIM. Those changes are wrapped with `ifdef NCV. You can run Questa with those turned on if you like: vlog +define+NCV ...
Due to the port to NCSim, any function that returned a list had to be changed to return the list as an output argument to the function. For example, peek_bytes() changed from
function bytearray_t peek_bytes( address_t address, int nbytes);
to function void peek_bytes( output bytearray_t ba, address_t address, int nbytes);
Another example is get_register_array(), which changed from
virtual function register_list_t get_register_array();
to virtual function void get_register_array( output register_list_t register_array);
function new(string name, uvm_component parent); ... endfunction
should change to function new(string name, uvm_named_object parent); ... endfunction
Furthermore, a register used to be an uvm_transaction. Now it is an ‘uvm_named_object’ - it has hierarchy, and a parent, but it doesn’t have phasing and other uvm_component attributes.
Register maps and register files are also uvm_named_objects.
The main reason to change to uvm_named_objects was to make it much easier to copy and clone registers and register maps.
Bug Fixes
uvm_broadcast_register.svh uvm_indirect_register.svh
Updated examples 11_masking_notification
14_register_map_lookup 15_backdoor 16_apb_zin 17_broadcast_registers 18_ap_notification 19_constraints 20_simple_indirect
New Register Inheritance In register definitions, the register parent used to be ‘uvm_component’. It is now ‘uvm_named_object’. You must change the register construction definition:
< function new(string name, uvm_component p); New:
function new(string name, uvm_named_object p);
Lightweight analysis ports
Constructor arguments. Creating registers using the factory.
reset() uses poke() now instead of write().
ReadOnly bits can be updated by the shadow
bus_read_bv() message changed to be more informative.
Formalizes the existing, field tested final beta8.
Release: January 25, 2010
Extends support for various field and register permissions and usages. For example a field can now have “RW” permission when accessed from one bus, and “RO” permission when accessed from another bus.
Adds support for backdoor access, an id register implementation and a modal register implementation.
vlog +incdir+$(UVM_HOME)/src+$(UVM_REGISTER_HOME)/src \ +define+BACKDOOR_DPI \ $(UVM_REGISTER_HOME)/src/uvm_register_pkg.sv
05_backdoor_simple is a simple example of using the shadow register to write directly to an HDL path name. (via the PLI - a backdoor into the design).
06_id_register is an example of a special functionality in a register - an ID register. This ID register is not a general purpose register, but is provided to use as is or as a demonstration of how to create your own special purpose register functionality. See uvm_id_register.svh
08_register_field_modes is an example of a special functionality in a register - a modal register. This modal register is a register whose field representation changes depending on which mode it is in. It is provided as a demonstration of using modes. It is expected that most modal registers are customer specific, and so this modal register and example serves as a template for customization.
Added backdoor access support.
Normalized names. Raw access is peek_*() or poke_*(). Masked access is read_data32() or write_data32() (set_data32() still exists but is deprecated in favor of peek_data32())
Added get_byte_array_no_masking().
Cleaned up error messaging.
Backdoor implementation.
Message printing fixed.
Added additional examples. Instrumented library with MACROS. NO API changes.
Added new examples 02_register_transactions 03_layered_sequences 04_simple_bus
01_bus_transactions contains new sequences and interesting constraints. All register fields can be random in this example.
02_register_transactions is simple example that builds a driver and a sequencer for register transactions. Register sequence is started, and the register driver prints them.
03_layered_register_sequences is a simple example that builds a layer of register transactions over bus transactions. The register transactions generated from the automatic test are converted into bus specific transactions.
04_simple_bus is a simple example that shows a bus with an OVC-style component integrated to a register test.
Added factory registration for all library components. Added field automation.
Copyrights adjusted from 2008 to 2009. Changed base type of uvm_register_bus_driver from uvm_threaded_component to uvm_component. Changed base type of uvm_register_auto_test from uvm_threaded_component to uvm_component.
General housecleaning. Added NaturalDocs automated documentation generation.
Package name changed to ‘uvm_register_pkg’. Use it as import uvm_register_pkg::*;
Added Natural Docs comments to allow HTML documentation generation.
1) Example register verification on an XBUS OVC. 2) Backdoor access. 3) Auto-generation of SystemVerilog register definitions from a standard format. 4) Memory support.