Stacking UVCs Methodology. Revision 1.2

Similar documents
User Experience with UVM

FPGA chip verification using UVM

Verification of Digital Systems, Spring UVM Basics

Making it Easy to Deploy the UVM by Dr. Christoph Sühnel, frobas GmbH

Module- or Class-Based URM? A Pragmatic Guide to Creating Verification Environments in SystemVerilog. Paradigm Works, Inc. Dr.

A comprehensive approach to scalable framework for both vertical and horizontal reuse in UVM verification

Design and Verification of Slave Block in Ethernet Management Interface using UVM

Universal Verification Methodology(UVM)

UVM-SystemC Standardization Status and Latest Developments

Mastering Unexpected Situations Safely. Chassis & Safety Vehicle Dynamics

Graph-Based Verification in a UVM Environment

Development of UVM based Reusabe Verification Environment for SHA-3 Cryptographic Core

Formal Contribution towards Coverage Closure. Deepak Pant May 2013

IMPLEMENTATION OF LOW POWER INTERFACE FOR VERIFICATION IP (VIP) OF AXI4 PROTOCOL

Graph-Based IP Verification in an ARM SoC Environment by Andreas Meyer, Verification Technologist, Mentor Graphics Corporation

Efficient Failure Triage with Automated Debug: a Case Study by Sean Safarpour, Evean Qin, and Mustafa Abbas, Vennsa Technologies Inc.

Three Steps to Unified SoC Design and Verification by Shabtay Matalon and Mark Peryer, Mentor Graphics

SPECMAN-E TESTBENCH. Al. GROSU 1 M. CARP 2

Universal Verification Methodology (UVM) Module 5

Contents 1 Introduction 2 Functional Verification: Challenges and Solutions 3 SystemVerilog Paradigm 4 UVM (Universal Verification Methodology)

INDUSTRIAL TRAINING: 6 MONTHS PROGRAM TEVATRON TECHNOLOGIES PVT LTD

Vertical Reuse of functional verification from subsystem to SoC level (with seamless SoC emulation)

6 Month Certificate Program in VLSI Design & Verification" with Industry Level Projects. Tevatron Technologies Prívate Limited

Advanced Verification Topics. Bishnupriya Bhattacharya John Decker Gary Hall Nick Heaton Yaron Kashai Neyaz Khan Zeev Kirshenbaum Efrat Shneydor

Maximize Vertical Reuse, Building Module to System Verification Environments with UVMe

UVM BASED REUSABLE VERIFICATION IP FOR WISHBONE COMPLIANT SPI MASTER CORE

width: 10, 20 or 40-bit interface maximum number of lanes in any direction

Responding to TAT Improvement Challenge through Testbench Configurability and Re-use

DEVELOPMENT AND VERIFICATION OF AHB2APB BRIDGE PROTOCOL USING UVM TECHNIQUE

Universal Verification Methodology (UVM) 10:05am 10:45am Sharon Rosenberg UVM Concepts and Architecture

Configuring a Date with a Model

Practical experience in automatic functional coverage convergence and reusable collection infrastructure in UVM verification

Boost Verification Results by Bridging the Hardware/Software Testbench Gap

CHALLENGES OF TODAY'S COMPLEX SOC: PERFORMANCE VERIFICATION PANKAJ SINGH, MALATHI CHIKKANNA

AXI4-Stream Verification IP v1.0

DO-254 Testing of High Speed FPGA Interfaces by Nir Weintroub, CEO, and Sani Jabsheh, Verisense

Tackling Verification Challenges with Interconnect Validation Tool

UVM for VHDL. Fast-track Verilog for VHDL Users. Cont.

OVM to UVM Migration, or There and Back Again: A Consultant s Tale. by Mark Litterick, Verification Consultant, Verilab GmbH

DDR SDRAM Bus Monitoring using Mentor Verification IP by Nikhil Jain, Mentor Graphics

Verification Prowess with the UVM Harness

Integrate Ethernet QVIP in a Few Hours: an A-to-Z Guide by Prashant Dixit, Questa VIP Product Team, Mentor Graphics

Fast Track to Productivity Using Questa Verification IP by David Aerne and Ankur Jain, Verification Technologists, Mentor Graphics

Will Everything Start To Look Like An SoC?

OVM/UVM Update. Universal Verification Methodology. Open Verification Methodology. Tom Fitzpatrick Verification Technologist Mentor Graphics Corp.

Shortest path to the lab. Real-world verification. Probes provide observability

Verification Prowess with the UVM Harness

Slaying the UVM Reuse Dragon Issues and Strategies for Achieving UVM Reuse

Staffan Berg. European Applications Engineer Digital Functional Verification. September 2017

An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes

SystemVerilog UVM. Student Workbook

Advancing system-level verification using UVM in SystemC

2. Learn how to use Bus Functional Models (BFM) and write test cases for verifying your design.

IOT is IOMSLPT for Verification Engineers

AN INTRODUCTION TO UNIT TESTING

UVM usage for selective dynamic re-configuration of complex designs

Next Generation Design and Verification Today UVM REG: Path Towards Coverage Automation in AMS Simulations

Set a longer list of transaction attributes as per protocol legality Perform the cache data/state update at end of transaction, as needed

UVM-RAL: Registers on demand Elimination of the unnecessary

Software Driven Verification at SoC Level. Perspec System Verifier Overview

Veloce2 the Enterprise Verification Platform. Simon Chen Emulation Business Development Director Mentor Graphics

NoC Generic Scoreboard VIP by François Cerisier and Mathieu Maisonneuve, Test and Verification Solutions

Modeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist

Stitching UVM Testbenches into Integration-Level

VERIFICATION OF RISC-V PROCESSOR USING UVM TESTBENCH

Making the Most of your MATLAB Models to Improve Verification

An Introduction to Universal Verification Methodology

SystemC Standardization Update Including UVM for SystemC Introduction to the Universal Verification Methodology in SystemC

Reuse MATLAB Functions and Simulink Models in UVM Environments with Automatic SystemVerilog DPI Component Generation

SerialLite III Streaming IP Core Design Example User Guide for Intel Stratix 10 Devices

Comprehensive AMS Verification using Octave, Real Number Modelling and UVM

UVM BASED TEST BENCH TO VERIFY AMBA AXI4 SLAVE PROTOCOL

Will Everything Start To Look Like An SoC?

Sunburst Design - SystemVerilog UVM Verification Training by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.

Verification of AHB Protocol using UVM

Simulation-Based FlexRay TM Conformance Testing an OVM success story

Reducing the cost of FPGA/ASIC Verification with MATLAB and Simulink

Verification of Advanced High Speed Bus in UVM Methodology

UNIVERSAL VERIFICATION METHODOLOGY BASED VERIFICATION ENVIRONMENT FOR PCIE DATA LINK LAYER

An approach to accelerate UVM based verification environment

UVM in System C based verification

PowerAware RTL Verification of USB 3.0 IPs by Gayathri SN and Badrinath Ramachandra, L&T Technology Services Limited

Open Verification Methodology (OVM)

Getting Started with UVM. Agenda

UVM: The Next Generation in Verification Methodology

Novel and Robust Implementation of Register Abstraction on UVM Testbench

Design and Verification of FPGA and ASIC Applications Graham Reith MathWorks

UVM based Verification Environment for Performance Evaluation of DDR4 SDRAM using Memory Controller

Perplexing Parameter Permutation Problems? Immunize Your Testbench

SerialLite III Streaming IP Core Design Example User Guide for Intel Arria 10 Devices

A New Class Of Registers

Transaction-Based Acceleration Strong Ammunition In Any Verification Arsenal

Practical Experience in Automatic Functional Coverage Convergence and Reusable Collection Infrastructure in UVM

WALKING THE GRAPH. A holistic approach to graph-based verification for logic with sparse state space

Generation of UVM compliant Test Benches for Automotive Systems using IP-XACT with UVM-SystemC and SystemC AMS

Intel Stratix 10 H-tile Hard IP for Ethernet Design Example User Guide

An Efficient Verification Framework for Audio/Video Interface Protocols

A Generic UVM Scoreboard by Jacob Andersen, CTO, Kevin Seffensen, Consultant and UVM Specialist, Peter Jensen, Managing Director, SyoSil ApS

Nine Effective Features of NVMe Questa Verification IP to Help You Verify PCIe Based SSD Storage by Saurabh Sharma, Mentor Graphics

25G Ethernet Intel Stratix 10 FPGA IP Design Example User Guide

Transcription:

Methodology Revision 1.2

Table of Contents 1 Stacking UVCs Overview... 3 2 References... 3 3 Terms, Definitions, and Abbreviations... 3 4 Stacking UVCs Motivation... 4 5 What is a Stacked UVC... 6 5.1 Stacking UVC Methodology Requirements... 6 5.2 Stacked UVC... 7 5.3 Adapter Package... 7 6 UVC Stack Example... 9 6.1 UVC example tests... 11 6.2 Running the example... 12 6.3 Example details... 12 6.4 Example questions... 13 Revision 1.2 Paradigm Works Inc. Page 2 of 13

1 Stacking UVCs Overview This document describes a methodology that allows for organizations to create UVM Verification Components or UVCs that have the flexibility to optionally be connected to other UVCs. This document is accompanied with an example to help aid users with understanding the solution. 2 References UVM User Guide Universal Verification Methodology (UVM) 1.1 User s Guide 3 Terms, Definitions, and Abbreviations UVM - Universal Verification Methodology UVC - UVM Verification Component Revision 1.2 Paradigm Works Inc. Page 3 of 13

4 Stacking UVCs Motivation Often verification teams are performing verification tasks against dealing with designs that include multiple protocols that contain multiple layers. An example of a 3 layer protocol is PCIE which contains a Transaction, Data Link, and Physical Layer. Additionally, the teams will often create multiple unit level testbenches to test each RTL layer as well as a system level testbench to test all the layers connected up in RTL. This is just one example of many layered protocols. A verification team may decide to architect three separate unit testbenches for each protocol layer as shown below. Inside each testbench, the unit level teams may independently develop UVCs for the protocol stack layer a Transaction UVC, Data Link UVC, and Physical Layer UVC. The teams may develop their entire stimulus at each layer without taking into account data coming in from the higher layers. This results in stimulus that cannot easily be reused amongst the testbenches. Even worse the stimulus will likely not be able to easily be reused in a system level testbench. 4-1 UVCs without Reuse Taken Into Account An alternative architect approach is shown below. Using this approach each of the upper layer's UVC and their associated stimulus libraries may be reused in subsequent testbenches. For example, the Transaction's UVC's sequences developed in Environment 1 can be reused in Environment 2 and Environment 3. In addition, the Transaction UVC developed in Environment 1 is reused in Environment 2 and Environment 3. Revision 1.2 Paradigm Works Inc. Page 4 of 13

4-2 Vertical Reuse Example Another example of a common verification scenario where stacking UVCs comes in handy is shown below. In this example, we generate stimulus at a higher level of abstraction in the TOP Master & Slave UVCs rather than Bottom UVCs. The Top UVC is an abstract UVC. Ethernet is an example of an abstract Top UVC. The Bottom UVC is an interface UVC which communicates directly to the RTL. Two examples of interface UVCs are SPI and PCIE. Using this example, we generate stimulus, predict, and scoreboard data at the Ethernet level of abstraction. The Ethernet transactions are converted to either PCIE or SPI. This methodology allows us to easily swap the PCIE and SPI UVCs while reusing the same stimulus, prediction, and scoreboarding. So if a design operates with different low level interface protocols but a high level protocol is used by the design or designs then this methodology is very beneficial. Revision 1.2 Paradigm Works Inc. Page 5 of 13

4-3 Horizontal Reuse Example 5 What is a Stacked UVC A stacked UVC is a standard UVC that includes the flexibility to optionally be connected to other UVCs. A SV "adapter package" is used to setup an interconnection strategy for UVCs. With this ability we can easily meet the reuse concepts described above. 5.1 Stacking UVC Methodology Requirements This is a list of stacking requirements that we agreed upon UVCs do not have handles or references of other UVCs UVCs have a configuration field which allow it to exclude its SV interface A SV adapter package that is separate from the UVC connects to other UVCs The SV adapter package are reusable from testbench to testbench The SV adapter package includes configuration Revision 1.2 Paradigm Works Inc. Page 6 of 13

5.2 Stacked UVC An example of an UVC Agent is shown below. For stacking capabilities, the has_interface configuration switch is added. When has_interface=1 the UVC operates in the same exact manner as that described in the UVM User Guide. When has_interface=0 the UVC's Agent excludes its Driver and the SV interface is not setup and used by the Agent's Monitor. In this mode, we setup the Agent to communicate to other UVCs. 5.3 Adapter Package 5-1 UVC Agent with has_interface The adapter is a SV package that allows a UVC to connect to one or more additional UVCs. It consists of an SV extension of the UVM's monitor, sequencer, and configuration class. TLM ports are added inside the adapter monitor and sequencer. Additionally, an adapter sequence is included inside the adapter package. Finally, transfer functions that convert the UVC transaction to/from other UVCs are included inside the adapter packages. The UVM factory mechanism is used to override the UVM monitor, sequencer, and configuration with the adapter extensions. Revision 1.2 Paradigm Works Inc. Page 7 of 13

5-2 Adapter Package The adapters are used in the lower layer UVCs as shown below in this example the Bottom UVC. The adapter monitor, sequencer, and configuration object are connected to the upper UVC's monitor, sequencer, and configuration object. Revision 1.2 Paradigm Works Inc. Page 8 of 13

5-3 Stacking UVC with Adapter 6 UVC Stack Example Below is the testbench architecture of the Paradigm Work's UVC Stack Example. Revision 1.2 Paradigm Works Inc. Page 9 of 13

The testbench includes the following: 6-1 Example Stack UVC Env layer that may be reused in multiple testbenches. The Env includes a virtual sequences, instantiates the UVCs, predictor, and scoreboard component. The "ENV" code is located inside the "simple/env" directory. Virtual Sequence used to coordinate sending sequences to any one of the UVCs sequencers. The testbench sequences are located inside the "simple/env/seq_lib" directory. There is a sequence for the UVM 1.x reset, configure, main, and shutdown phase is located inside this directory. Predictor & Scoreboard The predictor component takes in datapath transactions from the Abstract Top In UVC and send them into the expected side of the scoreboard based on the state of the DUT. Transactions from the CPU UVC are sent into the predictor to help shadow the state of the DUT. Transactions monitored inside the Abstract Top Out UVC are sent to the actual side of scoreboard. When actual data enters the scoreboard it is compared against the actual data. If there is a mismatch then the testbench will assert an error. The testbench utilizes the UVM_REG feature to shadow the DUT registers. The registers are instantiated inside the Env. An initialization sequence inside file "simple/seq_lib/init_sequence.sv" and called out by the "configure" sequence. We also include an UVM_REG adapter "reg2cpu_adapter" which converts UVM REG transactions to CPU UVC transactions. Revision 1.2 Paradigm Works Inc. Page 10 of 13

UVCs. All the "UVCs" are located inside the "vips" directory. o o o o Interface UVCs PI UVC - This is the datapath "master" UVC. It drives "transactions" into the DUT. The PI UVC is located inside the "vips/pi" directory. PO UVC - This is the datapath "slave" UVC. It reacts to "transaction" exiting out of the DUT. It also drives a "ready" backpressure signal. The PO UVC is located inside the "vips/po" directory. CPU UVC This is the cpu host access "master" UVC. It drives cpu read and cpu write "transactions" into the DUT. The CPU UVC is located inside the "vips/cpu" directory. Interface Control UVC (not shown in the figure above) This UVC controls asserting/de-asserting the DUT's reset signal. Abstract UVCs Top IN UVCs This is a "higher level abstraction" that drives transactions into the lower layer stacked UVCs, and the predictor/scoreboard. The Top IN UVC is located inside directory "vips/top_in". Top OUT UVCs This is a "higher level abstraction" that sends reactive transactions into the lower layer stacked PO UVC and receives "slave" transactions from the lower layer stacked PO UVC. It also passes transactions onto the expect side of the scoreboard. The Top IN UVC is located inside directory "vips/top_out". Adapter Packages PI_STACK This is the adapter package that extends the PI UVC and adds TLM ports and transfer functions that allows us to connect up with the TOP_IN Abstract UVC. The PI Stack is located inside directory "pi_stack". PO_STACK This is the adapter package that extends the PO UVC and adds TLM ports and transfer functions that allows us to connect up with the TOP_OUT Abstract UVC. The PO Stack is located inside directory "po_stack". Scoreboard Base scoreboard class. See http://www.uvmworld.org/contributionsdetails.php?id=100 for more details. 6.1 UVC example tests The tests are located under the "simple/tests" directory. A base test called "simple_base_test.sv" is responsible to instantiating the ENV and setting up common test parameters. One test called "bringup.sv" is included in the testbench and it is located inside directory "simple/tests/basic". The test does not override any of the default settings in the ENV. Revision 1.2 Paradigm Works Inc. Page 11 of 13

6.2 Running the example There is a Makefile that allows users to run test(s). You can see all the different options by typing "help" on the command line. >>make help At minimum set the following: STEP 1: Set the variable UVM_HOME to pint to your UVM distribution. We tested this code against UVM-1.1. STEP 2: Compile the test/testbench and run the simulator To run Synopsys's VCS type: >>make test_vcs We tested against VCS version E-2011.03. To run Mentor's Questa simulator type: >>make test_mti We tested against vsim 10.0a Simulator version 2011.02. To run Cadence IUS type: >>make test_ius We tested against irun version 10.20-s009. After the test runs you should see a message similar to the one below indicating how many packets were sent in (posted) and then checked by the scoreboard: UVM_INFO pw_scoreboard(0) @ 21425.000 ns: uvm_test_top.simple_env_inst.packet_sb_inst [packet_sb_inst] Posted to Stream 0->0: 20 UVM_INFO pw_scoreboard(0) @ 21425.000 ns: uvm_test_top.simple_env_inst.packet_sb_inst [packet_sb_inst] Checked in Stream 0->0: 20 6.3 Example details A detailed listing of all the files included in the testbench can be found inside file "SIMPLE_README.txt". Revision 1.2 Paradigm Works Inc. Page 12 of 13

6.4 Example questions If you have any questions or would like to learn about other Paradigm Work's UVM Methodologies please do not hesitate to contact us at Paradigm Works. pw-support@paradigm-works.com Revision 1.2 Paradigm Works Inc. Page 13 of 13