This is an Engineer Explorer series course. The Engineer Explorer courses explore advanced topics.
The course begins with a short review of SystemVerilog classes and class constructs, together with an overview of object-oriented concepts and features.
The remainder of the course describes the Universal Verification Methodology (UVM) class library, which provides the building blocks and infrastructure for a verification environment, and defines a methodology to show how the class library can be used to create powerful, reusable UVM Verification Components (UVCs) based on a standard architecture.
UVM is the Accellera standard replacement for OVM (Open Verification Methodology), a class-based verification library and reuse methodology for SystemVerilog®. UVM is supported and endorsed by almost all EDA vendors, including Cadence, Mentor, and Synopsys. The UVM class library provides the basic building blocks for creating verification data and components. The UVM methodology allows engineers to quickly develop powerful, reusable, and scalable object-oriented verification environments. It also shows how to combine multiple UVCs into a full verification environment.
After completing this course you will be able to:
o Review SystemVerilog class-based features and to examine the use of dynamic class instances to create both data objects and verification components.
o Explore the features and capabilities of the UVM class library for SystemVerilog.
o Define and explain a clear, proven methodology for creating reusable, scalable and robust verification components.
o Gain hands-on experience of how the UVM class library can be used to implement a verification environment based on the methodology above.
Software Used in This Course
o Incisive Enterprise Simulator XL
Note that this course can be tailored to better meet your needs – contact the Cadence training staff for specifics.
For onsite training, this course can be tailored to three or four days in length. The first-day material or the fifth-day material can easily be removed to suit your learning objectives without altering the overall learning flow.
Essential SystemVerilog and object-oriented design:
o Review of basic SystemVerilog classes
o Polymorphism and casting
o Virtual classes and methods
o Developing robust class methods
o Class-based component hierarchy
o Factory and builder design patterns
Data, phases and simple environments:
o Introduction to UVM methodology and universal verification component (UVC) structure
o Overview of the design under test (DUT) and the project
o Stimulus modeling
· Declaring data items
· Field automation
· Data operations (copy, clone, print, etc.)
o Simulation phases
· Standard phases
· Run-time phases
o Creating a simple environment
· UVM component classes
· Structure of a simple environment
· Driver, sequencer, monitor, agent, and environment
· Packaging and directory structures
o Test classes
· uvm_test class
· Test selection
Configuration, sequences, and connections:
o Controlling environment behavior
· Configuring topology with set_config
· set_config rules
· Configuration database (uvm_config_db)
· Recommendations for set_config and uvm_config_db usage
· Factories and creating data and objects
· Type and instance overrides
o UVM sequences
· Sequence components
· uvm_do macros
· Alternatives to uvm_do macros
· Nested sequences and sequence properties
· Objection mechanism for stopping simulation
· Sequence libraries
o Connecting to a design under test (DUT)
· The testbench layer
· Virtual SystemVerilog interfaces
· Assigning interfaces using the configuration database
Multi-channel sequences and scoreboards:
o Interface and module UVCs
· Integrating multiple UVCs
· UVCs with multiple agents
o Multi-channel sequences (virtual sequences)
· Virtual sequencers
· Defining virtual sequences
o Building a scoreboard
· Scoreboard requirements and considerations
· Connecting components with TLM analysis interfaces
Transaction-level modeling (TLM) and coverage
o Transaction-level modeling (TLM)
· Concepts and terminology
· Simple uni-directional connections (put, get, peek)
· More complex connections (transport, analysis)
· TLM fifo
· Hierarchical connections with exportAnalysis
o Functional coverage modeling
· Coverage-driven verification
· Temporal and data-oriented coverage
· UVM_REG register modelling overview
· Other new features in UVM1.0
Lab exercises are based around the verification of a real-life router design.
The labs sessions include:
o Creating simple stimulus
o Simple environments and universal verification components (UVCs)
o Factories and multiple tests
o Integrating multiple UVCs
o Writing multi-channel and system-level tests
o Building a scoreboard
o TLM connections
o Functional coverage
o Design engineers
o Verification engineers
You must have:
o Experience reading and writing SystemVerilog code.
Knowledge of object-oriented design with languages such as C++ or Java is advantageous, but not essential. No prior knowledge of UVM is required.