Escolar Documentos
Profissional Documentos
Cultura Documentos
Review On
Verification of PCI bus using
Universal Verification Methodology (UVM).
in
M.E/M.TECH - (VLSI & ESD Design)
Guided by
Srikanth Jadcherla
Prepared by
Pithadiya Nayan V.
111060752029
ad
CERTIFICA
TE
Date: 10/01/2013
Place: Ahmadabad
Guide:-
Seal of Institute
Apart from the effort of myself, the success of any task depends largely on the
encouragement and guidelines of many others. I take this opportunity to
express my gratitude to the people who have been instrumental in the
successful completion of this literature review. I would like to express my
deepest gratitude to Santosh Sir, Teaching Assistant, Seer-Akademi, without
his encouragement and guidance this literature review would not have
materialized. I would like to show my greatest appreciation to my external
guide Srikanth jadcherla, CEO, Seer Akademi. I can't thank him enough for his
tremendous support and help. I feel motivated and encouraged every time I
talked with him. I take immense pleasure in thanking Mr. Amaranth Sir,
Teaching Assistant (Seer-Akademi) and Mr. Karthik, Coordinator, GTU for
having permitted me to carry out this work and for all valuable assistance in the
literature review.
Table of Contents
Pithadiya Nayan Page 3
1. Problem Statement..........................................................................................................7
1.1 Objective....................................................................................................................7
1.2 Scope of thesis............................................................................................................7
1.3 Expected Outcome.....................................................................................................8
1.4 Motivation..................................................................................................................8
2. Introduction......................................................................................................................9
2.1 Introduction PCI bus..................................................................................................9
2.2 WISHBONE Slave Unit................................................................................................10
2.2.1 WISHBONE Slave Unit Architecture........................................................................10
2.2.1.1 WISHBONE Slave module............................................................................11
2.2.1.2 WBW_FIFO..................................................................................................11
2.2.1.3 WBR_FIFO....................................................................................................11
2.2.1.4 PCI MASTER Module..................................................................................11
2.3 PCI Target Unit.....................................................................................................11
2.3.1 PCI Target Unit Architecture..................................................................................12
2.3.1.1 PCI Target Module........................................................................................12
2.3.1.2 PCIW_FIFO..................................................................................................12
2.3.1.3 PCIR_FIFO....................................................................................................13
2.3.1.4 WISHBONE Master Module........................................................................13
2.4 Clocks...................................................................................................................13
2.5 FIFO........................................................................................................................13
2.6 Address Translation Logic....................................................................................15
2.6.1 Description of Address Translation Logic......................................................15
3. UVM................................................................................................................................17
3.1 UVM Verification Component Overview................................................................17
3.1.1 Data Item (Transaction)....................................................................................17
3.1.2 Driver (BFM)...................................................................................................17
3.1.3 Sequencer..........................................................................................................17
3.1.4 Monitor.............................................................................................................18
3.1.5 Agent.................................................................................................................19
3.1.6 Environment.....................................................................................................19
Pithadiya Nayan Page 4
3.2 The UVM Class Library...........................................................................................21
3.3 Other UVM Facilities..............................................................................................21
3.3.1 UVM Factory...................................................................................................22
3.3.2 Transaction-Level Modeling (TLM).................................................................22
Proposed Solution..................................................................................................................24
Reference................................................................................................................................25
Table of Figures
1.1 Objective
c. Verify the PCI bus design using Universal Verification Methodology (UVM)
This project is divided into three phases. First phase is to understand the PCI bus
architecture. Second phase is to understand the flow of UVM and learn UVM programming.
Final phase is to verify the PCI bus design. [1] [7]
First phase is to understand the PCI bus architecture and its operation. This is really main
part for verification because without understand the architecture and behaviour we arent
able to verify our design.
The Second phase is to understand UVM flow and learn the UVM programming. Thats
really challenging for me because to understand new methodology and implement some
design. UVM is latest methodology which is industrial standard today.so I choose to verify
my design with this methodology.
The third and final most phase is to verify the PCI bus design using UVM. In this I will write
some assertions. I will also try to make my coverage maximum as much as I can.
1.4 Motivation
Verification is used to confirm that the system, subsystem or component meets documented
requirements or specifications levied on the design. Verification takes huge time for any
design. Verification takes 60% of time in any design. So if your design will take 1 year than
verification will take 8 months from that one year. So you can understand the importance of
Verification.
Verification can be done using different kind of methodology like systemverilog, UVM,
OVM and VMM.
I choose the Universal Verification Methodology for verify my design because UVM is latest
and now a days very popular. Even it is industrial standard now. So I would like to learn it
and make my design using that methodology.
PCI Bridge consists of two units: PCI target unit and WISHBONE slave unit. Each unit
consists of its own set of functions to support bridging operations from WISHBONE to PCI
and from PCI to WISHBONE. WISHBONE slave unit acts as a slave on WISHBONE side
of the bridge and initiates transactions as a master on PCI bus. PCI target unit acts as a
target on PCI side of the bridge and as master on WISHBONE side. Both units operations
are independent of each other. PCI target unit implements target interface on PCI bus and
master interface on WISHBONE bus, while WISHBONE slave unit implements slave
interface on WISHBONE bus and master [1]
WISHBONE slave unit consists of a few functional parts allowing WISHBONE master to
perform a Read/Write accesses to PCI bus.
2.2.1.2 WBW_FIFO
WISHBONE slave module uses WBW_FIFO (WISHBONE WRITE FIFO) for posting
memory and I/O writes performed by WISHBONE master. Parameterized depth of
WBW_FIFO leaves system designer an option of defining it, regarding needs of particular
application for posting more or less writes.
Writing to WBW_FIFO is adapted to WISHBONE bus speed, while writing to PCI bus
from WBW_FIFO is adapted to PCI bus speed.
2.2.1.3 WBR_FIFO
WISHBONE slave module uses WBR_FIFO (WISHBONE READ FIFO) for storing data
read from PCI targets. Reading from PCI bus to WBR_FIFO is adapted to PCI bus
speed, while reading from WBR_FIFO is adapted to WISHBONE bus speed.
PCI target unit consists of a few functional parts allowing PCI initiators to perform a
Read/Write accesses to WISHBONE bus.
2.3.1.2 PCIW_FIFO
PCI TARGET module uses PCIW_FIFO (PCI WRITE FIFO) for posting memory and I/O
Writes performed by PCI initiator. Parameterized depth of PCIW_FIFO leaves system
designer an option of defining it, regarding needs of particular application for posting more
or less writes. Writing to PCIW_FIFO is adapted to PCI bus speed, while writing to
WISHBONE bus from PCIW_FIFO is adapted to WISHBONE bus speed.
2.3.1.3 PCIR_FIFO
WISHBONE master module uses PCIR_FIFO (PCI READ FIFO) for storing data read
from WISHBONE slaves.
Reading from WISHBONE bus to PCIR_FIFO is adapted to WISHBONE bus speed, while
reading from PCIR_FIFO is adapted to PCI bus speed.
2.4 Clocks
The PCI core has two clock domains. One is from PCI bus and the other from
WISHBONE bus. The adjustment of different bus clocks is made by FIFO with its
interconnection logic. And there is no mater, which bus operates on higher frequency, what
leads to the fact, that there is no difference between all four FIFOs.
2.5 FIFO
FIFO is structured from more than one FIFO lines. The number of FIFO lines is the number
of FIFOs depth, and it can be configurable (how the number of FIFO depth is defined will
be discussed in detail in design document and implementation notes). The structure of one
FIFO line is well described in Figure 2-4. It consists of 4 control bits (how they are
used, will be described in detail in design document, e.g. one bit is used to sign last data of
the burst transfer etc.), 4 command or byte enable bits (coding will be described in detail in
design document), 32 address or data bits.
The Output Pointer (output counter) stores the value of the output offset address of the
first FIFO line from which data is to be read. Its clock frequency is the same as the
frequency of the output bus side, with which the data are read.
The comparator between both Pointers (counters) validates if there is any data waiting in
the FIFO to be read (exact counter/comparator operation will be described in detail in
design document). There is also a comparator between the counter, with a value of an Input
Pointer incremented for one, and the Output Pointer. When both are equals, the FIFO is
full.
3. UVM
3.1.3 Sequencer
A sequencer is an advanced stimulus generator that controls the items that are provided to
the driver for execution. By default, a sequencer behaves similarly to a simple stimulus
generator and returns a random data item upon request from the driver. This default
behavior allows you to add constraints to the data item class in order to control the
distribution of randomized values. Unlike generators that randomize arrays of transactions
or one transaction at a time, a sequencer captures important randomization requirements
out-of- the-box. A partial list of the sequencers built-in capabilities includes:
Ability to react to the current state of the DUT for every data item generated.
Captures the order between data items in user-defined sequences, which forms a
more structured and meaningful stimulus pattern.
3.1.4 Monitor
A monitor is a passive entity that samples DUT signals but does not drive them. Monitors
collect coverage information and perform checking. Even though reusable drivers and
sequencers drive bus traffic, they are not used for coverage and checking. Monitors are used
instead. A monitor:
Collects transactions (data items), A monitor extracts signal information from a bus
Checking typically consists of protocol and data checkers to verify that the DUT
output meets the protocol specification.
3.1.5 Agent
Sequencers, drivers, and monitors can be reused independently, but this requires the
environment integrator to learn the names, roles, configuration, and hookup of each of these
entities. To reduce the amount of work and knowledge required by the test writer, UVM
recommends that environment developers create a more abstract container called an agent.
Agents can emulate and verify DUT devices. They encapsulate a driver, sequencer, and
monitor. Verification components can contain more than one agent. Some agents (for
example, master or transmit agents) initiate transactions to the DUT, while other agents
(slave or receive agents) react to transaction requests. Agents should be configurable so
that they can be either active or passive. Active agents emulate devices and drive
transactions according to test directives. Passive agents only monitor DUT activity. [7]
Proposed Solution
As we all know PCI bus design is very complex so obviously verification of PCI bus
also very complicate. Generally everyone do verification using simple Verilog or
system Verilog method. If I verify my design using with same method than it will get
very complicated and will take much more time.
UVM is latest method and any industries want their design should verify with UVM
only.
I took this challenge and will verify my design with UVM method. For that I will
study systemverilog first because all the basic of systemverilog going to use in UVM.
Even UVM have advantages of code reuse and make design verification easy.
Reference
[1] PCI Bus In High Speed I/O Systems Applications, Al chame, 1988.
[2] The Design of PCI Bus Interface, Haruyasu Hayasaka Hi roaki Harami i sh i Naohiko
Shimizu
[3] The Control Unit of PCI Bus, Antonyuk V.P., Klepfer E.I., Lobur M.V., Zaharko
J.M., Pereyma M. Y.
[4] Beyond UVM for practical Soc Verification, Young-Nam Yun, Jae-Beom Kim,
Nam-Do Kim, Byeong Min