Introduction
Introduction Get started Hello UVM example UVM Phases Part 1 UVM Phases Part 2 UVM Base Classes UVM Object and Core Methods UVM ComponentsBuilding a Testbench
UVM Transaction UVM Sequence UVM Sequencer UVM Driver UVM Monitor UVM Scoreboard UVM Agent UVM Environment UVM TestOther Components
Coverage CollectorExecution Model
UVM Phases ObjectionsCommunication
TLM Basics TLM Blocking Put Port TLM Non-Blocking Put Port TLM Blocking Peek Port Analysis Ports TLM FIFOConfiguration
UVM Factory UVM Config DBRuntime Control
UVM Plusargs Seeds & Reproducibility Verbosity Control Debug Runtime ControlsAdvanced
Virtual Sequences Virtual SequencerUVM RAL
Intro Abstraction Flexibility Comparison Coverage Minimum Requirements Learning Path Register Types First Implementation Register with 2 Fields Register with Reserved Bits Access Policies Part 1 Access Policies Part 2 Access Policies Part 3 Access Policies Part 4 Memory Modeling Register Block Adapter Introduction Adapter Methods Adapter Example Predictor Types Desired and Mirror Values Register Methods Desired Value Mirror ValueUVMArena
Introduction
Introduction Get started Hello UVM example UVM Phases Part 1 UVM Phases Part 2 UVM Base Classes UVM Object and Core Methods UVM ComponentsBuilding a Testbench
UVM Transaction UVM Sequence UVM Sequencer UVM Driver UVM Monitor UVM Scoreboard UVM Agent UVM Environment UVM TestOther Components
Coverage CollectorExecution Model
UVM Phases ObjectionsCommunication
TLM Basics TLM Blocking Put Port TLM Non-Blocking Put Port TLM Blocking Peek Port Analysis Ports TLM FIFOConfiguration
UVM Factory UVM Config DBRuntime Control
UVM Plusargs Seeds & Reproducibility Verbosity Control Debug Runtime ControlsAdvanced
Virtual Sequences Virtual SequencerUVM RAL
Intro Abstraction Flexibility Comparison Coverage Minimum Requirements Learning Path Register Types First Implementation Register with 2 Fields Register with Reserved Bits Access Policies Part 1 Access Policies Part 2 Access Policies Part 3 Access Policies Part 4 Memory Modeling Register Block Adapter Introduction Adapter Methods Adapter Example Predictor Types Desired and Mirror Values Register Methods Desired Value Mirror ValueMinimal Requirement to Include a UVM RAL Model
The UVM Register Abstraction Layer (RAL) is a powerful mechanism used to verify registers and memories in a structured and reusable way. However, not all designs require a register model. This section explains the minimal requirements needed before introducing a RAL model into a verification environment.
When Should We Use RAL?
A register model is not mandatory for every UVM testbench. It becomes useful when the Design Under Test (DUT) contains programmable registers or memories whose functionality must be verified through read and write operations.
If the DUT exposes configurable state through registers, RAL provides a standardized way to access, predict, and compare register values during verification.
Minimal Requirements
1. Presence of at Least One Register or Memory
The DUT must contain at least one storage element such as a register or memory. The RAL model represents these elements and allows them to be accessed in a consistent and abstract way.
reg [31:0] temp;
If no registers or memories exist in the design, a register model provides no benefit.
2. Registers Contain Fields
Registers are typically divided into logical fields, where each field controls or reports a specific function. RAL models these fields individually, enabling fine-grained checking and access control.
reg [31:0] temp;
// [31:16] -> addr
// [15:0] -> data
Modeling fields allows verification to focus on functionality instead of raw bit values.
3. Registers Must Be Address-Mapped
Each register must have a unique address within the DUT address space. This mapping allows the RAL model to generate bus transactions and correctly access registers through the verification environment.
Address Map Example:
TEMP -> 0x1000
CTRL -> 0x1004
STATUS -> 0x1008
Address mapping enables automatic prediction, comparison, and synchronization between expected and actual register values.