UVM Basics: Nagesh Loke ARM CPU Verification Lead/Manager
UVM Basics: Nagesh Loke ARM CPU Verification Lead/Manager
UVM Basics: Nagesh Loke ARM CPU Verification Lead/Manager
Nagesh Loke
ARM CPU Verification Lead/Manager
1
What to expect …
2
ARM CCN-512 SoC Framework
3
What are the challenges of verifying complex systems?
4
What is UVM and why use it?
5
Key components of a UVM testbench
TOP Env
TX Env RX Env
Scoreboard
TX Agent RX Agent
Sequencer Sequencer
Functional Coverage
Driver Monitor Driver Monitor
Interface Interface
DUT
6
UVM Sequence Item & Sequence Inheritance tree
7
UVM Component
▪ Basic building block for all
components that exercise
control over testbench or
manage transactions
▪ They all have a time consuming
run() task
▪ They exist as long as the test
exists
8
UVM Sequence Item & Sequence
▪ Sequence Item is the same as a transaction
▪ It’s the basic building block for all types of data in
UVM
▪ Collection of logically related items that are
shared between testbench components
▪ Examples: packet, AXI transaction, pixel
▪ Common supported methods:
▪ create, copy, print, compare
9
Key components of a UVM testbench
TOP Env
TX Env RX Env
Scoreboard
TX Agent RX Agent
Sequencer Sequencer
Functional Coverage
Driver Monitor Driver Monitor
Interface Interface
DUT
10
UVM Sequencer & Driver
▪ A UVM sequencer connects a UVM sequence
to the UVM driver
▪ It sends a transaction from the sequence to the
driver
▪ It sends a response from the driver to the
sequence
▪ Sequencer can also arbitrate between multiple
sequences and send a chosen transaction to the
driver
▪ Provides the following methods:
▪ send_request (), get_response ()
11
UVM Monitor
▪ Monitor’s responsibility is to observe
communication on the DUT interface
▪ A monitor can include a protocol checker that
can immediately find any pin level violations of
the communication protocol
▪ UVM Monitor is responsible for creating a
transaction based on the activity on the
interface
▪ This transaction is consumed by various
testbench components for checking and
functional coverage
▪ Monitor communicates with other testbench
components using UVM Analysis ports
12
Key components of a UVM testbench
TOP Env
TX Env RX Env
Scoreboard
TX Agent RX Agent
Sequencer Sequencer
Functional Coverage
Driver Monitor Driver Monitor
Interface Interface
DUT
13
UVM Agent
▪ UVM Agent is responsible for
connecting the sequencer, driver and
the monitor
▪ It provides analysis ports for the
monitor to send transactions to the
scoreboard and coverage
▪ It provides the ability to disable the
sequencer and driver; this will be
useful when an actual DUT is
connected
14
UVM Scoreboard
15
UVM Environment
▪ The environment is
responsible for managing
various components in the
testbench
▪ It instantiates and connects:
▪ all the agents
▪ all the scoreboards
▪ all the functional coverage
models
16
UVM Test
17
Key components of a UVM testbench
TOP Env
TX Env RX Env
Scoreboard
TX Agent RX Agent
Sequencer Sequencer
Functional Coverage
Driver Monitor Driver Monitor
Interface Interface
DUT
18
UVM TLM
19
UVM Phasing
build Create components and allocate memory
connect Hook up components; key step to plumbing
check Do end of test checks (all queues empty, all responses received)
21
Useful pointers
▪ https://verificationacademy.com/
▪ Accelera: http://accellera.org/downloads/standards/uvm
▪ Recommend watching short videos on UVM introduction on YouTube
22