EDA Academy Navigation

Universal Verification Methodology (UVM) – Fundamentals

Explore Practical Applications of UVM for Creating Robust Verification Environments

This course offers a comprehensive introduction to the Universal Verification Methodology (UVM), an industry-standard framework for functional verification. Through step-by-step guidance, you’ll learn to design scalable and reusable testbenches using UVM components, sequences, and configurations. Explore key topics like transaction modeling, hierarchical stimulus flows, and debugging techniques, supported by hands-on examples and practical exercises. Ideal for beginners and intermediate learners, this course equips you with the knowledge and tools to tackle complex verification challenges confidently. By the end, you’ll be ready to apply UVM in real-world projects, improving productivity and verification accuracy.

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) – Fundamentals



OR



USD $199.9

-55% Today

$89.9

One-time Purchase

& Lifetime Access


After this course you will be able to:

  • Understand Key Benefits of Universal Verification Methodology
  • Explore the YAPP Router Design Specifications and Protocols
  • Model Transaction Data and Manage Randomization Techniques
  • Construct and Link UVM Components Using Simulation Phases
  • Create and Debug a UVM Interface UVC for Verification
  • Explain the Requirements and Implementation Process of UVM Test Classes
  • Apply UVM Configuration Mechanism to Control Verification Environment
  • Enhance Object Behavior Control with UVM Factory and Override Techniques
  • Utilize UVM Sequences to Improve Simulation Flow and Test Efficiency

This course includes:

  • 9 Modules 32 Lectures
  • 5.4 hours on-demand video
  • 129 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 (UVM) - Fundamentals (Preview)
✓ About this Course (Preview)
✓ Course Objectives (Preview)
✓ Course Agenda (Preview)
Module 1: Introduction to UVM Methodology

✓ Verification Methodology

  • The Need for Methodology
  • Advantages of Verification Methodology I
  • Advantages of Verification Methodology II
  • What Is UVM

✓ Hardware Acceleration

  • Metric-Driven Verification Review
  • Hardware Acceleration
  • Signal-Based vs Transaction-Based Acceleration

✓ Reusable Environments

  • Creating Reusable Environments
  • Creating Reusable Components
  • Self-Checking and Coverage
  • Enhancing Interface Flexibility
  • Moving to System Level
  • Monitors
  • Checking and Coverage

✓ UVM Verification Component

  • Active and Passive Modes
  • Interface UVC Architecture
  • Common Interface
  • Vision for Multi-Language UVM
  • What Is a UVC
  • Interface and Module UVCs

✓ UVM Library

  • UVM Library Layers
  • Simplified UVM Class Hierarchy
  • Using the UVM Class Library
  • Locating UVM Library Files
  • Key Advantages of UVM
Module 2: DUT and Project Overview

✓ Design Specification

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

✓ Verification Plan

  • How Will We Verify the YAPP
Module 3: Data Modeling

✓ Model Transaction Data Items

  • Data Modeling: Requirements
  • Data Item Example: YAPP Packet
  • Design for Test Writing Using Knobs

✓ Layered Constraints

  • Basic Constraints for Legal Packets
  • Layering Constraints for Testing
  • Example: Layering Constraints

✓ Class Methods, UVM Inheritance, and Data Modeling

  • Class Methods
  • UVM Inheritance Tree for Data Items
  • Data Modeling with UVM

✓ Field Macros

  • UVM Field Macros
  • Field Macros for Array Types
  • Flag Arguments for Field Macros
  • Field Macro Usage Examples

✓ UVM Automation

  • Copy and Clone Automation Methods
  • Compare Automation Method
  • Print Automation Method

✓ Transaction Recording, UVM Package, and Compiling UVM

  • Transaction Recording in UVM
  • Creating and Using a UVM Package
  • Compiling UVM Code
Module 4: Simulation Phases

✓ UVM Simulation Phase

  • Simulation Phases for Components
  • Simulation Phases and Coordination
  • UVM Simulation Phase Names and Descriptions

✓ Run-Time Sub-Phases

  • Run-Time Sub-Phases
  • Guidelines for Run-Time Sub-Phases

✓ Build and Connect Phases

  • Build Phase
  • Connect Phase
  • Activating Phases
  • Key Points on Phase Methods
Module 5: Building Interface UVC

✓ Implementation of UVM Components

  • Router Verification Environment: Front end
  • Modeling Topology with UVM
  • Structural Components Inheritance Tree
  • Component Macros and Constructor

✓ Interface UVC

  • Interface UVC Hierarchy
  • Sequencer-Driver TLM Connection
  • Sequencer-Driver Operation
  • Driver
  • Sequencer
  • Sequence and Default Settings
  • Creating the Agent: Declarations
  • Creating the Agent: Build and Connect

✓ Directory Structure for UVC Files

  • Creating the UVC Top-Level
  • Directory Structure
  • UVC Directory Structure
  • UVC Package and Include Files
  • Top-Level Module for Initial Testing

✓ UVM Messages

  • Messages for Debug and Error Reporting
  • Message Macros: Info
  • Verbosity
  • Full Range of Message Macros
  • Message Actions
Module 6: Test Classes

✓ Implementation of UVM Test Classes

  • Router Verification Environment: Test Classes
  • Requirements for Test Classes

✓ Select Specific Test Classes to Execute

  • uvm_test Inheritance Tree
  • Simple Test Example
  • Option 1: Select Test in run_test
  • Option 2: UVM_TESTNAME
  • run_test and uvm_test_top

✓ Topology Report

  • uvm_top
  • Topology Report Example
Module 7: Configuration

✓ Config Property

  • Configuring Topology
  • Configuring is_active Agent Property
  • Setting Config Properties
  • Config Property Setting Example

✓ Config Setting

  • Configuration Mechanism Overview
  • Selected Configuration Database Methods
  • Setting YAPP Agent to Passive from Test
  • Config Setting Rules
  • Debugging Configuration Settings
  • set_config Methods
Module 8: Factory and Override Methods

✓ Constraint Layering

  • Enhancing Object Behavior in UVM
  • Constraint Layering
  • Constraint Layering Problem

✓ UVM Factory Method

  • Solution: Factory
  • UVM Factory Overview
  • Object Factory Use: create

✓ UVM Override Method

  • Type Overrides with Factory
  • Overriding Specific Instances
  • Type Versus Instance Overrides
  • Alternative Syntax for Type/Instance Overrides
  • Override Rules
  • Notes About the Factory
Module 9: UVM Sequences

✓ UVM Sequences Overview

  • Understanding UVM Sequences
  • UVM Sequence Features
  • Sequences and UVCs Overview
  • uvm_sequence Base Class
  • UVM Sequences Example

✓ UVM Macros

  • The do Operation
  • Understanding uvm_do Macro Execution
  • Additional `uvm_do Macros
  • Directed Stimulus Using Macros
  • Alternative to uvm_do Macros: Explicit Flow
  • Sequence Properties
  • Nesting Sequences

✓ Sequence Execution

  • Executing Sequences
  • Setting Default Sequence in Run Phase
  • Executing UVC Sequence in Test
  • Sequence Callback Methods

✓ UVM Objection

  • Ending Simulation
  • Objection Methods in Sequences
  • Test Objections
  • Objection Changes in UVM1.2
  • Drain Time

Requirements

To maximize the benefits of this course, you should have a basic understanding of object-oriented programming and verification concepts. Familiarity with SystemVerilog fundamentals, such as syntax, basic constructs, and testbench creation, will provide a strong foundation for learning. Prior experience in digital logic design or programming will be advantageous in understanding the practical implementation of advanced UVM concepts. A working knowledge of debugging strategies, hierarchical design principles, and simulation environments will help you apply the concepts effectively. This course is ideal for engineers or students looking to create scalable, reusable, and efficient verification frameworks using UVM, with a focus on bridging theory and practical skills. To get the most out of this course, it’s recommended that you meet the following prerequisites:

  • Basic understanding of SystemVerilog syntax and its common features.
  • Prior experience with digital logic design and its practical applications.
  • Familiarity with object-oriented programming principles, such as classes and inheritance.
  • Basic knowledge of transaction-level modeling (TLM) concepts.
  • Knowledge of testbench architecture and basic verification flow.

Who this course is for

  • Verification engineers looking to enhance testbench skills
  • Professionals aiming to master UVM methodologies
  • Testbench architects aiming for reusable designs
  • 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
  • Professionals managing complex verification projects
  • Engineers interested in advanced verification techniques

Description

The Universal Verification Methodology (UVM) is a standardized approach for functional verification, designed to help engineers create scalable and reusable testbenches for digital designs. This course offers a comprehensive introduction to UVM, providing the foundational knowledge and practical skills needed to implement advanced verification techniques. Through structured modules, you’ll explore UVM components, reusable verification environments, and techniques for managing configurations, sequences, and simulations. With an emphasis on real-world applications, the course demonstrates how UVM’s features—such as automation, randomization, and hierarchy—enable efficient and accurate verification of complex systems. Whether you are new to verification or seeking to refine your expertise, this course delivers a practical guide to mastering UVM and addressing modern verification challenges.


Universal Verification Methodology (UVM) is the industry-standard approach to functional verification, helping engineers create scalable and reusable testbenches. This course covers the essential aspects of UVM, guiding you step-by-step through its concepts and practical applications. From understanding the architecture of UVM components to learning how to manage sequences and objections, this course equips you with the skills needed to build efficient and robust verification environments. You’ll also explore techniques for optimizing testbench execution, managing configurations, and reusing components across projects. Whether you're starting your UVM journey or looking to strengthen your expertise, this course provides a strong foundation.


In this course, you’ll dive into various UVM features such as building reusable components, handling complex stimuli, and debugging testbench designs. With clear examples and hands-on exercises, you'll learn how to model transactions, manage randomization, and implement hierarchical stimulus flows. This practical approach ensures you gain confidence in applying UVM techniques to real-world scenarios. By the end of this course, you’ll be prepared to leverage UVM to improve productivity and verification accuracy.


Whether you’re just starting your UVM journey or want to deepen your understanding, this course is ideal. The content is structured for beginners while providing enough depth for intermediate learners to enhance their expertise. By the end of this course, you’ll be equipped with the knowledge and tools to create effective, reusable, and scalable verification environments for complex designs.

Learning Objectives

  • Discuss the benefits of using the Universal Verification Methodology (UVM) to improve verification efficiency. Define the architecture of UVM Verification Components (UVCs) and explain their key roles in test environments. Recognize the structural differences between interface-based and module-based UVCs. Describe how the UVM library is organized and identify its various layers. Highlight how UVM promotes reusability in both components and environments. Understand the advantages of self-checking and coverage-driven verification. Differentiate between transaction-based and signal-based verification, especially in accelerated environments.
  • Describe the YAPP router design specification, including its packet routing mechanism and input port protocols. Define the key elements of the verification plan to ensure accurate and efficient testing of the YAPP router. Recognize the significance of the DUT’s register specifications and the HBUS protocol in supporting data communication. Explain how each component of the router design contributes to overall system functionality. Identify the necessary steps to develop a thorough and reusable verification plan tailored for the YAPP router.
  • Model transaction data items for both inputs and outputs of the DUT with appropriate constraints to define basic and default behavior. Control the randomization process using configurable switches or control knobs, allowing greater flexibility in data generation. Use layered constraints to enable the creation of specialized data for different testing scenarios. Incorporate UVM automation methods, such as printing, copying, and comparing data items, using the UVM "opt-in" system. These automated methods simplify the verification process by ensuring consistent and reusable transaction handling.
  • Discuss the importance of simulation phases in ensuring smooth and structured execution of verification environments. Describe the UVM simulation phase implementation, focusing on the sequence and coordination of phases like build, connect, and run-time sub-phases. Create hierarchical component structures by applying the build and connect phases, ensuring seamless connections within the verification environment. Understand how UVM phases enable coordination between components and manage the activation of each phase for efficient simulation. Learn to apply key methods and guidelines to effectively use simulation phases throughout the verification process.
  • Describe the fundamental components of a UVM interface UVC, focusing on their roles and relationships. Create a basic interface UVC by defining components like sequencers, drivers, and agents, ensuring proper connections through TLM ports. Establish a recommended directory structure for organizing UVC files, improving maintainability and clarity. Implement UVM messaging techniques to handle debug information and error reporting, using message macros such as uvm_info, uvm_error, and verbosity settings to enhance clarity and control during verification.
  • Define the essential requirements and implementation process for UVM test classes, ensuring a clear understanding of how to structure and inherit from the uvm_test base class. Identify different methods to select specific test classes for execution, including using run_test() and the UVM_TESTNAME command-line argument. Utilize print_topology() to generate detailed reports of the test environment, enabling efficient debugging and verification of the hierarchy and connectivity within the UVM testbench. Focus on the integration of test classes within the broader UVM environment to streamline and improve verification workflows.
  • Use the UVM configuration mechanism to control and customize the verification environment. Adjust the topology by setting UVC agents as active or passive, based on specific testing needs. Configure the number of master and slave agents in the environment for flexible setups. Assign instance-specific properties, such as defining illegal address ranges to ensure appropriate stimulus is applied. Utilize the configuration database methods for setting and retrieving values. Debug configuration settings by analyzing their effects to ensure the correct operation of UVC components.
  • Use UVM factory and override methods to adjust the behavior of objects in your testbench dynamically. Learn how to create objects through the UVM factory and apply type or instance overrides to modify specific object behaviors. Understand the difference between type and instance overrides and when to use each method. Gain insight into alternative syntax for overrides and important rules to follow for proper usage. By mastering these techniques, improve flexibility and maintainability in your verification environment, allowing easier customization to meet different testing requirements.
  • Use UVM macros and methods to create sequences that generate different types of stimulus, including randomized data and directed tests. Configure hierarchical stimulus flows and control them using properties. Specify which sequence the sequencer should execute for various scenarios. Learn how to nest sequences for complex test scenarios and set default sequences during execution. Apply the UVM objection mechanism to manage simulation flow and ensure all tasks are performed before simulation concludes. By mastering these techniques, create flexible, reusable, and controlled sequences to enhance verification effectiveness.

55% discount

USD $199.9

$89.9