UVM
GOLDTN
RËTËRËNCT GUIDË
A concise guide to the Universal Verification Methodology
UVMl'"*w
&oouLos
UVM Golden Reference Guide
Second Edition, December 201 3
Copyright@2013 by Doulos Ltd. All rights reserved.
The information contained herein is the property of Doulos
Ltd and is supplied without liability for errors or omissions.
No part may be used, stored, transmitted or reproduced in
any form or medium without the written permission of
Doulos Ltd.
Doulos@ is a registered trademark of Doulos Ltd.
UVM is licensed under the Apache Software Foundation's
þache License, Version 2.0, January 2004. The full
license ¡s available at http://www.apache.org/licenses/
Al other tradernarks are acknowledged as the property of
their respective holders.
First publ¡shed by Doulos 201 1
Doulos
Church Hatch
22 Market Place
Ringwood
Hampshire
BH24 IAW
UK
Tel +44 (0) 1425471223
rax +44 (0) 1425 471573
Email: info(Adoulos.com
Doulos
2055 Gateway Place
Suite 220
San Jose
c495110
USA
+1-888-GO DOULOS
+1408-762-2246
¡nfo.usa@doulos.com
Web: http://www.doulos.com
Gontents
Secfion
Preface
Page
4
Preface
The UVM Golden Reference Guide is a compact reference guide to the
Universal Verif icatio n Methodology for SystemVeri log.
The intention of the guide is to provide a handy reference. lt does not offer a
complete, formal description of all UVM classes and class members. lnstead it
offers answers to the questions most often asked during the practical application
of UVM in a corvenient and concise reference format. lt is hoped that this guide
will help you understand and use UVM more effectively.
This guide is not intended as a substitute for a full training course and will
probably be of most use to those who have received some training. Also it is not
a replacement for the official UVM Class Reference, which forms part of the
UVM and is available from www.accellera.org.
The UVM Golden Reference Guide was developed to add value to the Doulos
range of training courses and to embody the krnwledge gained through Doulos
methodology and consulti ng activities.
For more information about these, please visit the web-site www.doulos.com.
You will find a set of UVM tuûorials at www.doulos.com/knowhow. For those
needing full scope training in UVM, see the UVM Adopter Class from Doulos.
Using This Guide
The UVM Golden Reference Guide comprises a Brief lntroduction to UVM,
information on Finding What You Need in This Guide, the Alphabetical
Reference section and an lndex.
This guide assumes knowledge of SystemVerilog and testbench automation. lt is
not necessary to know the full SystemVerilog language to understand the UVM
classes, but you do need to understand object-oriented programming in
SystemVerilog. You will find some tutorials at http://www.doulos.com/knowhow.
Oroanization
The main body of this guide is organized alphabetically into sections and each
section is indexed by a key term, which appears prominently at the top of each
page. Often you can find the information you want by flicking through the guide
looking for the appropriate key term. lf that fails, there is a full index at the back.
Except in the index, the alphabetical ordering ignores the prefix uvm_. So you
will find Field Macros between the articles uvm_f actory and uvm_heartbeat.
Finding What You Need in This Guide on page I contains a thematic index to
the sections in the alphabetical reference.
The lndex
Bold index entries have corresponding pages in the main body of the guide. The
remaining index entries are followed by a list of appropriate page references in
the alphabetical reference sections.
Methods and Members
Most sections document the methods and members of UVM classes. Not all
public members and methods are included; we have tried to concentrate on
those that you may want to use when using the UVM. For details on all the
members and methods, please refer to the official UVM Class Reference and the
actual UVM source code.
A Brief Introduction to
uvM
Background
Various verification methodologies have emerged in recent years. One of the
first notable ones was the ¿ Reuse Methodology for verification lP using the e
language. This defines an architecture for verification components together with
a set of naming and coding recommendations to support reuse across multiple
projects. The architecture of eRM and some of its concepts (e.9. sequences)
were used to create the Cadence Universal Reuse Methodology (URM), for
SystemVerilog.
The SystemC TLM-I and TLM-2.0 libraries define a transport layer for
transaction level models. Mentor Graphics' Advanced Verification Methodology
(AVM) used SystemVerilog equivalents of the TLM-1 ports, channels and
interfaces to communicate between verification components. Support for TLM-
2.0 was introduced in UVM.
The Verification Methodology Manual (VMM) was co-authored by Synopsys and
ARM and enables the creation of robust, reusable and scalable verification
erviro nments usi ng SystemVeri log.
URM and AVM were joined together to form the Open Verification Methodology
(OVM). OVM combines the classes from AVM and URM. lt is backwards
compatible with both.
UVM was developed by Accellera in collaboration with Cadence, Mentor
Graphics and Synopsys. Version 1.0 and, subsequently, version 1.'l were
released in2011, although an early access version (UVM f .OEA) was made
available in 2010. UVM is based on OVM 2.1.1 and adds a Register Layer based
on the Register Abstraction Layer (RAL) from VMM and TLM-2.0 interfaces,
based on the SystemC standard. UVM versions 1.1a through 1.1c provide bug
fixes with only a few minor changes.
lransaction-level Modelinq
Transactionlevel modeling (TLM) involves communication using function calls,
with a transaction being the data structure passed to or from a function as an
argument or a return value.
Transaction level modeling is a means of accelerating simulation by abstracting
the way communication is modeled. Whereas an HDL simulator models
communication by having a separate event for each pin wiggle, a transaction
level model works by replacing a bunch of related pin wiggles by a single
transaction. Obvious examples would be a bus read or bus write.
6
Copyriglìt @2013 by DoulosLtd. All r¡!¡hts ßwed.
uvM
UVM is implemented entirely in SystemVerilog so it should work on any
simulator that supports the full IEEE 1800-2009 standard.
The UVM source code can be downloaded from the UVM web site. There is also
an active user forum on this site that any registered user can freely participate in.
UVM Glass Hierarchy
Data
Register Layer
Structuro
The main UVM classes form a hierarchy as shown here. The uvm object class
is the base class for all other UVM classes.
User defined transaction classes should be derived from uvm_seguence_item.
TLM channels such as uvm_ttm_fifo are derived from urrm_report_object
so include the ability to print their state. There are also implementations of the
SystemC TLM-1 and TLM-2.0 interface classes (not shown here) that are
inherited by TLM channels.
The uvm_component class, which also derives from uvm_report_object, is
for user-defined verification components. lt has a run phase task that is
automatically invoked at the start of a simulation.
Base classes for common verification components such as environments,
agents, drivers and monitors are also provided.
Copyr¡ght@ 20'13 by OoulosLld. Allr¡ghts resfled.
7
Finding What You Need in
This Guide
This section highlights the major areas of concern when creating or modifying a
UVM verification environment, and indicates the most important classes that you
will need to use for each of these areas. Classes and UVM features highlighted
in bold have their own articles in the Alphabetical Reference section of this
Guide.
Designing Transaction Data
UVM verification environments are built using fransacfion level modeling.
Stimulus, responses and other information flowing around the testbench are, as
far as possible, stored as transactions - objects carryirg a high-level, fairly
abstract representiation of the data. Because these objects are designed as
SystemVerilog classes, they can all be derived from a common base class,
usually uvm_sequence_item. When designing classes derived from th¡s, you
not only add data members ard methods to model the data itself, but also
overload various base class methods so that each data object knows howto do
a standard set of operations such as copying or printing itself.
Greatinq Problem.Specific Testbench Gomponents
The core of a testbench is the set of testbench components that will manipulate
the transaction data. Some of these components need a direct connection to
signals in HDL modules representing the device-undertest (DUT) and its
supporting structures. Other components operate at a higher level of abstraction
and work only with transaction data. All the components you create should be
represented by classes derived from uvm_component.
Components need to pass data to and from other components. ln UVM this is
achieved by providing the components with suitable ports and exports (TLM-1 )
or sockets (TLM-2.0) through which they can communicate with one anotåer,
(Note that all the standard components described below use TLM-I interfaces;
TLM-2.0 interfaces are provided for communication between SystemVerilog and
SystemC components that have TLM-2.0 interfaces.) Components never need
to know about neighboring components to which they are connected; instead,
components send and receive data by means of calls to methods in their ports.
The set of methods implemented by ports is known as the TLM-I Interfaces
(uvm_tlm_if in TLM-2.0). This is the fundamental principle of transaction level
modeling: one component calls a TLM interface method in its porf and, thanks to
the connection mechanism, the corresponding method is automatically called in
a different component's exporf.
I
Copyright@2013 by Douloe Ltd. Allrþhts reswêd.