EDA Academy Navigation

Universal Verification Methodology (UVM) – Register Verification I

Explore UVM Techniques for Efficient Register Verification

Learn how to verify registers in modern chip design using the Universal Verification Methodology (UVM). This comprehensive course guides you through creating, integrating, and testing register models with UVM's powerful framework. You’ll explore key topics like prediction, adapters, and IP-XACT extensions while mastering techniques for handling special registers and memory. With practical examples and hands-on practice, this course equips beginners and professionals with the skills to create efficient, reusable verification setups. Build your confidence in using UVM for register verification, from foundational concepts to advanced methods.

Purchase

Our course syllabus undergoes regular updates to reflect the latest advancements and best practices in the field. Students who purchase lifetime access to this course are entitled to receive these updates for free, ensuring they stay abreast of the most current content. Subscribers, on the other hand, can access the latest content for free as long as they maintain their subscription to the course. This approach guarantees that our students and subscribers always have access to the most relevant and up-to-date information in the field.

Created by EDA Academy

English

Last updated Dec 2024


Universal Verification Methodology (UVM) – Register Verification I



OR



USD $199.9

-60% Today

$79.9

One-time Purchase

& Lifetime Access


After this course you will be able to:

  • Identify key elements of UVM Register Layer for verification
  • Describe the YAPP router design and its functionality
  • Generate a register model from IP-XACT specifications
  • Apply vendor-specific extensions to IP-XACT register models
  • Create and modify adapters for register data conversion
  • Integrate Register Model and Adapter into the testbench efficiently
  • Design and Implement Custom Register Testing Sequences
  • Understand How to Add Explicit Prediction to Register Model Operations
  • Explore Advanced Techniques in Register and Memory Access Methods

This course includes:

  • 9 Modules 30 Lectures
  • 4.6 hours on-demand video
  • 79 Quiz
  • Certificate of completion
  • Access on mobile and computer
  • Ongoing support from EDA Academy
  • Further learning plan

Course Content (Preview)

Module 0: About this Course (Preview)
✓ Universal Verification Methodology - Register Verification I (Preview)
✓ About this Course (Preview)
✓ Course Objectives (Preview)
✓ Course Agenda (Preview)
Module 1: Introduction to Register Modeling

✓ Verifying Register in Design

  • Register Verification and Reference Models
  • Overview of Verification Scenario
  • Steps to Verify the Design

✓ Register Model

  • UVM Register Modeling Framework
  • UVM Register Model Class Hierarchy

✓ Register API

  • Register API
  • Frontdoor and Backdoor Access
  • Prediction and Register Updates

✓ Register Layer

  • Address Maps in Register Models
  • Benefits of Register Layer Methodology
  • Register Layer Overview
Module 2: Overview of Project DUT

✓ Packet Specification and Protocol

  • DUT: YAPP Router
  • Packet Router DUT Specification
  • Router Input Port Protocol Overview
  • HBUS Protocol Overview

✓ Configuration Registers and Memory Blocks

  • Router Address Mappings and Block Names
  • Router Configuration Registers
  • Router Enable Register Bits
  • Router Memory Blocks

✓ Verification Environment

  • Router Verification Environment
  • Recorded HBUS Transaction
Module 3: Generating the Register Model

✓ Register Model Generation

  • Understanding the UVM Register Model
  • Register Model Generators
  • iregGen: XML-Based Register Generator

✓ IP-XACT Register Definition

  • Understanding IP-XACT and XML
  • IP-XACT Register Definitions
  • Using iregGen
  • IP-XACT for Simple Register – addr0_cnt_reg
  • Generated Register Definition for addr0_cnt_reg
  • Field Configuration in Registers
  • IP-XACT for Register with Fields – en_reg
  • Generated Register Definition for en_reg

✓ IP-XACT: Wrap Registers in an Address Block

  • IP-XACT: Wrap Registers in an Address Block
  • Generated Register Block with Address Map

✓ IP-XACT: Memory

  • Memory Management in Address Blocks
  • IP-XACT: Memory Definition
  • Generated Memory

✓ IP-XACT: Top Level Declarations

  • IP-XACT: Top Level Declarations
  • Register Model Top Level 1 – Register Block
  • Register Model Top Level 2 – Memories
Module 4: IP-XACT Vendor Extensions

✓ UVM Field Access Policies

  • Defining Register Access Policies
  • UVM Field Access Policies

✓ Vendor Extension

  • Extending IP-XACT with Vendor Extensions
  • Vendor Extension: Constraints and Description
  • Vendor Extension: type
  • Vendor Extension: resets
  • Vendor Extension: hdl_path
  • Simple Model Customization
Module 5: Creating and Modifying Adapters

✓ Register Adapter

  • Register Adapter Overview
  • Register Sequence to UVC Adapter
  • UVC to Register Adapter
  • Adapter class – uvm_reg_adapter
  • Register Data Structure: uvm_reg_bus_op

✓ HBUS Adapter

  • HBUS UVC Data Item: hbus_transaction
  • HBUS Adapter – constructor and reg2bus
  • Adapter bus2reg
  • HBUS UVC Package and Adapter

✓ Extending the Adapter

  • Extending the Adapter
  • Declaring and Using the Adapter Extension
  • Accessing the Adapter Extension
Module 6: Simple Model Integration

✓ Integrate Register Model and Adapter into Testbench

  • Simple Model Integration: Assumptions
  • Register Model Creation and Simple Integration
  • Configuration Database Overview
  • Simple Adapter Connection
  • Managing Multiple Address Maps

✓ Verify Model and Adapter

  • Resetting the Register Model
  • Detecting Reset
  • Checking Topology for Adapter Connection
  • Test Execution of a Built-In Register Sequence
Module 7: Register Sequences

✓ Create Base Class for Register Sequences

  • Register Sequences Require a Model Handle
  • Retrieve Register Model from Configuration Database
  • Sequence Callbacks
  • Base Sequence Callbacks

✓ UVM Built-In Sequences for Registers

  • Register Sequence Using UVM Built-In Sequences
  • Subset of UVM Built-In Sequences for Registers
  • Built-In Sequences and Access Policies
  • Customizing Register Sequences
  • Configuring Built-In Sequences
Module 8: Prediction

✓ Implicit and Explicit Prediction

  • Understanding Prediction
  • Implicit Prediction
  • Challenges with Implicit Prediction
  • Explicit Prediction

✓ Passive Prediction

  • Predictor Component Functions
  • Predictor Creation and Configuration
  • Analysis TLM Components
  • Predictor Connection
  • Passive Prediction
  • Prediction Modes

✓ Manual Prediction

  • Manual Prediction from Sequences
  • Manual Prediction from Scoreboard
  • Initiating Manual Prediction
Module 9: Register and Memory Access Methods

✓ Register API Method

  • Data Modelling and the Register Model
  • Mirroring and the Register Model
  • Choosing the Right Register API Method
  • Register write() Method Signature

✓ Basic Access, and Backdoor DUT Access

  • Basic Access: Read/Write – Frontdoor
  • Basic Access: Read/Write – Backdoor
  • Examples of Read and Write
  • Backdoor DUT Access: Peek/Poke
  • Examples of Peek and Poke

✓ Accessing Mirrored, and Model Access Only

  • Accessing Mirrored: predict/get_mirrored_value
  • Model Access Only: get/set
  • Model Access Only: randomize

✓ Update DUT to Match Register Model, and Mirror Register Model to Match DUT

  • Update DUT to Match Register Model – Frontdoor
  • Update DUT to Match Register Model – Backdoor
  • Mirror Register Model to Match DUT – Frontdoor
  • Mirror Register Model to Match DUT – Backdoor
  • Mirror Usage Examples

✓ Disabling check-on-read, and Convenience Handles

  • Disabling check-on-read
  • Convenience Handles

✓ Memory Access Methods

  • Memory Access Methods
  • Memory write() Method
  • Memory burst_write() Method

Requirements

To maximize your learning experience, you should have a foundational understanding of object-oriented programming and verification principles. Familiarity with SystemVerilog, including syntax, testbench creation, and basic constructs, will serve as a strong foundation. Experience in digital logic design or programming will help in understanding advanced UVM techniques. Knowledge of debugging strategies, hierarchical design principles, and simulation environments will be advantageous for applying the concepts in practice. To get the most out of this course, it’s recommended that you meet the following prerequisites:

  • Basic knowledge of object-oriented programming principles.
  • Familiarity with SystemVerilog syntax and constructs.
  • Experience in building testbenches for verification purposes.
  • Knowledge of verification methodologies, especially UVM.
  • Ability to interpret IP-XACT specifications.

Who this course is for

  • Verification engineers looking to enhance testbench skills
  • Professionals aiming to master UVM methodologies
  • Experienced UVM users exploring advanced register modeling
  • Designers seeking to integrate UVM in their workflow
  • Verification engineers seeking reusable testbench techniques
  • Professionals exploring advanced verification strategies
  • ASIC/FPGA designers expanding verification skills
  • Researchers studying UVM applications in modern projects
  • Engineers working with complex DUT register structures
  • Engineers interested in advanced verification techniques

Description

The UVM Register Verification course offers an in-depth exploration of the UVM Register Layer, a framework designed to simplify and enhance register verification in complex digital designs. This course provides a structured approach to understanding and applying UVM methodologies, covering topics such as register modeling, integration, and advanced verification techniques. Learners will gain insights into creating scalable and reusable register models, leveraging IP-XACT standards, and applying prediction, synchronization, and sequence management strategies. The course emphasizes practical application, providing hands-on exercises and real-world examples to reinforce theoretical concepts. Whether you’re an engineer looking to build robust test environments or a professional aiming to refine your UVM expertise, this course equips you with the knowledge and tools needed to streamline register verification and ensure design reliability.


The Universal Verification Methodology (UVM) is the industry-standard framework for building reusable and scalable verification environments. This course focuses on UVM Register Verification, offering a deep dive into the techniques needed to model, access, and verify registers effectively. Starting from the basics of register modeling, you’ll progress to advanced topics like prediction, memory access methods, and custom register sequences. With a hands-on approach, the course ensures you gain practical skills to build robust test environments.


Through this course, you’ll master the UVM Register Layer and its powerful features. Key topics include generating register models from IP-XACT specifications, integrating adapters for data conversion, and applying vendor extensions for customization. You'll also explore techniques for designing efficient test sequences, managing register-to-DUT synchronization, and handling special registers and memory. By the end, you’ll be confident in creating efficient and reusable register verification setups for complex designs.


This course is designed for verification engineers, hardware designers, and anyone looking to improve their UVM skills. Beginners will appreciate the step-by-step guidance, while experienced professionals can explore advanced techniques and best practices. Whether you’re building your foundation or refining your expertise, this course provides the knowledge and tools to excel in register verification.

Learning Objectives

  • Identify the main elements provided by the UVM Register Layer to support register verification in designs. Explain the use of the UVM Register Model framework for effective verification. Recognize the structure and purpose of the UVM Register Model Class Hierarchy. Analyze the Register API and understand its role in simplifying interactions with registers. Explore the concepts of frontdoor and backdoor access for efficient communication with hardware. Describe how prediction and register updates are performed within the UVM Register Layer. Understand the importance of address maps and how they assist in modeling register structures. Discuss the advantages of the UVM Register Layer methodology in improving verification productivity.
  • Describe the structure and purpose of the YAPP router design, highlighting its key functional components. Understand the protocols used at the router’s input ports and their role in ensuring correct data flow. Explore the HBUS protocol and its integration into the router design. Map the router’s address spaces and identify the names of its various blocks. Examine the configuration and enable registers that control the router’s operations. Analyze the router’s memory blocks and their roles in data storage and retrieval. Investigate the router’s verification environment and its key elements, focusing on how recorded HBUS transactions are managed.
  • Define the hierarchy and structure of a register model, focusing on its key building blocks. Use IP-XACT as a standard for defining registers and their configurations, understanding its role in generating structured models. Generate a register model with iregGen, an XML-based register generator, by using predefined IP-XACT specifications. Leverage vendor extensions to add essential functionality to the register model. Understand how fields are configured within registers and explore methods to wrap registers into address blocks. Analyze the process of managing memory blocks within an address space and integrating them into a register model. Investigate top-level declarations for creating a complete and functional UVM register model.
  • Use vendor extensions to enhance the characteristics of the register model, adding features beyond those defined by IP-XACT. Customize the register model by applying constraints, descriptions, and specific settings for access policies. Incorporate vendor-defined resets and HDL paths to tailor the register model to unique requirements. Explore how subclasses can be used to apply simple customizations, extending the functionality of the base model. Understand the use of vendor extensions for refining register behavior and aligning it with project-specific needs. Develop skills to efficiently apply these extensions to improve the flexibility and functionality of your register models.
  • Create an HBUS register adapter to enable conversion between generic register data structures and HBUS transactions. Implement adapter methods to handle the translation of data fields and protocols. Use the UVM uvm_reg_adapter class to define the adapter and its key functions, such as reg2bus and bus2reg. Extend the adapter to support custom data structures and align it with project-specific requirements. Incorporate UVC data item definitions like hbus_transaction into the adapter to ensure compatibility with HBUS protocols. Understand how to declare, construct, and utilize adapter extensions for enhanced functionality and flexibility in handling register-to-bus operations.
  • Integrate the YAPP Router Register Model and the HBUS/Register Adapter into the testbench to establish a functional test environment. Set up the connections between the register model and adapter while ensuring compatibility with multiple address maps. Use a configuration database to manage the integration process and reset the register model as needed. Verify the connections by simulating a pre-built test and analyzing the results to ensure proper functionality of both the register model and adapter. Identify and troubleshoot any issues in the topology or adapter connection to guarantee a seamless integration and reliable test environment.
  • Create a base register sequence to simplify testing by ensuring every sequence retrieves the register model from the configuration database. Extend this base sequence to develop custom register testing sequences. Use built-in UVM register sequences to test register models effectively and adapt these sequences to meet specific testing requirements. Apply appropriate access policies and callbacks within sequences to ensure flexibility and functionality. Understand how to manage register models and their access policies through built-in and user-defined sequences, ensuring seamless integration and reuse across various test scenarios.
  • Understand the different modes of prediction available in UVM and their practical applications in verification environments. Identify the characteristics of implicit, explicit, and passive prediction methods and evaluate their usage in various scenarios. Apply explicit prediction to enhance the YAPP register model by using appropriate configuration techniques. Learn how to manually trigger predictions from sequences or scoreboards, ensuring the accuracy and synchronization of verification models. Configure and connect predictor components using TLM analysis ports for improved model management.
  • Learn how to create and use register and memory sequences with API calls. Understand the difference between frontdoor and backdoor access and their effects on registers and memories. Access the DUT using read, write, peek, and poke methods. Manage and update register models using mirroring and prediction. Handle special cases like write-once or clear-on-write registers. Use efficient techniques for accessing multiple memory addresses with burst methods. Explore methods for syncing the DUT with the register model and vice versa.

60% discount

USD $199.9

$79.9