Universal Verification Methodology (UVM) Fundamentals

Course Description

This course provides fundamental knowledge of UVM, its various features and benefits to verification.
Chip designs are growing in complexity and more highly integrated. Many chip designs also require
integration of design and verification IPs from external vendors.

As a result, functional verification has become more challenging. UVM has been developed to address issues of verification especially for large complex chips. UVM is an industry standard that defines methods to realize modular, scalable, configurable, generic verification environments.



TechSource Systems is the Sole Distributor and Authorised Training Partner of Mathworks Products

Upcoming Program

xilinx ATP 黑.png


2 Days

Who Should Attend

This course is intended for those who are involved in digital design verification. They include chip design engineers, verification engineers and technical managers.


  • Participants must be familiar with SystemVerilog, including SystemVerilog classes, constrained random value generation and interface.

  • Participants can take the SystemVerilog for Design and Verification course to meet this prerequisite.

Software Tools

Simulator, e.g. from Cadence, Mentor or Synopsys


  • Architecture: N/A*

  • NA

Skills Gained

After completing this comprehensive training, you will have the necessary skills to:

  • Create a UVM testbench structure using the UVM library base classes and the UVM factory

  • Declare transaction items types

  • Write test cases using sequences to generate stimulus for your DUT

  • Develop scoreboards for analysis

Course Outline

Day 1

  • SystemVerilog and UVM

  • History and Goals of UVM

  • Limitations of Verilog Verification

  • SystemVerilog Brief Review

  • Classes, new(), Inheritance, Virtual methods

  • Virtual and Parameterized Classes

  • Randomization, Coverage, Interface

  • UVM Basics Overview

  • UVM Class Library and Hierarchy

  • Transactions, Sequences, Components

  • First Look at Test Run

  • Bridging UVM to Modules

  • UVM Component Hierarchy

  • UVM Phase Concepts

  • Build, Connect, Run Phases, etc.

  • Run and Run-Time Phases

  • UVM Component Classes

  • Environment, Agent, Driver, Monitor, etc.

  • TLM Connections

  • Types of TLM Connections

  • Roles of Ports and Exports

  • Get and Put Implementations

  • Sequencer-Driver Connection

  • Analysis Ports


  • UVM Scoreboard

  • Multi-Port Scoreboards

  • UVM Subscriber

  • UVM Transactions

  • Transaction Methods

  • Using Field Automation Macros

  • User-defined do_methods()

  • Printing Transaction Objects

Day 2

  • UVM Sequences

  • Sequence Macros

  • Sequencer-Driver Interaction

  • Basic, Nested and Concurrent Sequence

  • Starting Sequence start()

  • Virtual Sequence

  • Virtual Sequencer

  • UVM Factory

  • Limitations of Constructor new()

  • Factory Registration and Macros

  • Factory Create and Override Methods

  • Override by Type and Instance

  • Factory Override Ordering

  • Configuration Database

  • Configuration Database and Methods

  • Configuring UVM Components

  • Using Configuration Objects

  • Configuration Object Hierarchy

  • Configuring Sequences

  • UVM Test Component and Usage

  • Running Tests

  • Phase Objection

  • Objection by Component

  • Objection by Sequence

  • Drain Time and Timeout

  • UVM Reporting and Macros

  • Severity, Verbosity and Action

  • Configuring Verbosity and Action

  • Command Line Report Control

  • Other UVM Features

  • Choosing Verification Methodologies

  • General Discussions and Q&A