The Verification Future needs an Easier UVM

Similar documents
Easier UVM Functional Verification for Mainstream Designers

Easier UVM Making Verification Methodology More Productive. John Aynsley, Dr David Long, Doulos

UVM Rapid Adoption: A Practical Subset of UVM. Stuart Sutherland, Sutherland-HDL, Inc. Tom Fitzpatrick, Mentor Graphics Corp.

Easy migration between frameworks using UVM Multi- Language (UVM-ML) Dr. Mike Bartley, Test and Verification Solutions

Easier UVM for Functional Verification by Mainstream Users

Getting Started with UVM. Agenda

User Experience with UVM

UVM Ready: Transitioning Mixed-Signal Verification Environments to Universal Verification Methodology

UVM hardware assisted acceleration with FPGA co-emulation

The Communication and Customization Mechanisms in OVM and UVM

package uvm_svid_monitor_package; import uvm_pkg::*; // //svid_transmit_packet_configuration

5 Developing Acceleratable Universal Verification Components (UVCs)

SystemVerilog Virtual Classes, Methods, Interfaces and Their Use in Verification and UVM

Hiding the Guts by Ray Salemi, Senior Verification Consultant, Mentor Graphics

Small, Maintainable Tests

Universal Verification Methodology(UVM)

Getting Started with OVM 2.0

Making the most of SystemVerilog and UVM: Hints and Tips for new users

UVM Rapid Adoption: A Practical Subset of UVM

Applying Stimulus & Sampling Outputs UVM Verification Testing Techniques

Verification Prowess with the UVM Harness

An Introduction to Universal Verification Methodology

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

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

Self- Tuning Coverage

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

A Beginner's Guide to Using SystemC TLM-2.0 IP with UVM

SVA in a UVM Class-based Environment by Ben Cohen, author, consultant, and trainer

Verification Prowess with the UVM Harness

e/erm to SystemVerilog/UVM

UVM Ready: Transitioning Mixed-Signal Verification Environments to Universal Verification Methodology

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

UVM Tips & Tricks. By: Shankar Arora. Logic Fruit Technologies. White Paper

Monitors, Monitors Everywhere Who Is Monitoring the Monitors

Perplexing Parameter Permutation Problems? Immunize Your Testbench

SVA Advanced Topics: SVAUnit and Assertions for Formal

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

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

UVM Tips and Tricks - Runtime Tips

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

Advancing system-level verification using UVM in SystemC

Configuring a Date with a Model

Creating Stimulus and Stimulating Creativity:

Slicing Through the UVM's Red Tape A Frustrated User's Survival Guide

My Testbench Used to Break! Now it Bends: Adapting to Changing Design Configurations

Simulation-Based FlexRay TM Conformance Testing using OVM. Mark Litterick Senior Consultant and Co-Founder, Verilab

Simulation-Based FlexRay TM Conformance Testing - An OVM Success Story

Stitching UVM Testbenches into Integration-Level

Figure 5. HDL BFM interface with HVL proxy class

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

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

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

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

FlexRay TM Conformance Testing using OVM

The Design and Verification of a Synchronous First-In First-Out (FIFO) Module Using System Verilog Based Universal Verification Methodology (UVM)

Stick a fork in It: Applications for SystemVerilog Dynamic Processes. Doug Smith and David Long Doulos

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

Simplified UVM for FPGA Reliability UVM for Sufficient Elemental Analysis in DO-254 Flows by Shashi Bhutada, Mentor Graphics

UVM: The Next Generation in Verification Methodology

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

Please! Can someone make UVM easy to use?

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

Seven Separate Sequence Styles Speed Stimulus Scenarios

Using bind for Class-based Testbench Reuse with Mixed- Language Designs

Accellera Systems Initiative SystemC Standards Update

Effective SystemVerilog Functional Coverage: design and coding recommendations

Slicing Through the UVM s Red Tape

An Introduction to the Next Generation Verification Language Vlang. Puneet Goel Sumit Adhikari

How to use IDesignSpec with UVM?

166 SystemVerilog Assertions Handbook, 4th Edition

Simulation-Based FlexRay TM Conformance Testing an OVM success story

Constrained Random Data Generation Using SystemVerilog

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

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

Modeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist

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

You will also need to download the source code for this tutorial from the same location as this PDF file on

Want a Boost in your Regression Throughput? Simulate common setup phase only once.

UVM usage for selective dynamic re-configuration of complex designs

A User s Experience with SystemVerilog

Boost Verification Results by Bridging the Hardware/Software Testbench Gap

Open Verification Methodology (OVM)

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

SVA Alternative for Complex Assertions

UVM TRANSACTION RECORDING ENHANCEMENTS

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

Error Injection in a Subsystem Level Constrained Random UVM Testbench

Simplifying UVM in SystemC

Modular SystemVerilog

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

Verification of AHB Protocol using UVM

PG DIPLOMA COURSE IN VERIFICATION USING SYSTEMVERILOG & UVM NEOSCHIP TECHNOLOGIES

Getting to Grips with the SystemVerilog Scheduler

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

Relieving the Parameterized Coverage Headache

Universal Verification Methodology (UVM) Module 5

SystemVerilog UVM. Student Workbook

Mastering Unexpected Situations Safely. Chassis & Safety Vehicle Dynamics

SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For

Chap 4 Connecting the Testbench and. Design. Interfaces Clocking blocks Program blocks The end of simulation Top level scope Assertions

Transcription:

Verification Futures The Verification Future needs an Easier UVM John Aynsley, CTO, Doulos 1

The Verification Future needs an Easier UVM Motivation Introducing Easier UVM Coding Guidelines Code Generation

SystemVerilog for Constrained Random 3

UVM UVM = Universal Verification Methodology UVM is actively supported by all major vendors Drives mutually consistent SystemVerilog implementations One standard enhances interoperability and ecosystem growth Increases confidence for SystemVerilog adoption 4

UVM Itself is Challenging Doulos training Verilog SystemVerilog for Verification UVM Adopter 4 days 4 days What next? Tools? Coaching? Guidelines? 5

UVM Itself is Challenging ~ 300 classes in UVM Base Class Library The UVM documentation does not answer all the questions There are many ways to do the same thing - need a methodology 6

The Verification Future needs an Easier UVM Motivation Introducing Easier UVM Coding Guidelines Code Generation

Easier UVM First Version (2011) Aimed at mainstream Verilog & VHDL users Goal = Reduce UVM to a set of simple concepts and coding idioms Easier UVM is UVM Use more features of UVM as you learn Learning UVM is still not easy... 8

Easier UVM Second Version Same principles, plus... Specific coding guidelines "One way to do it" Automatic code generator 9

Benefits Help individuals and project teams learn UVM and avoid pitfalls become productive with UVM (saves ~ 6 weeks) use UVM consistently Reduce the burden of supporting UVM code 10

Easier UVM Code Generator Written in Perl Apache 2.0 open source license Generates code conforming to the Easier UVM guidelines Can be modified 11

The Verification Future needs an Easier UVM Motivation Introducing Easier UVM Coding Guidelines Code Generation

Coding Guidelines Lexical Guidelines and Naming Conventions General Guidelines General Code Structure Clocks, timing and synchronization Transactions Sequences Objections and Sequences Components Connection to the DUT TLM Connections Configurations The Factory Tests Messaging Functional Coverage The Register Layer Agent Data Structure and Packaging 13

Coding Patterns class my_comp extends uvm_component; `uvm_component_utils(my_comp) function new(string name, uvm_component parent); super.new(name, parent); endfunction function void build_phase(...);... endclass Pattern 2a Pattern 1 The order of the declarations Specific naming conventions Which macros to use Which methods to override Coding patterns for specific situations Pattern 2b class my_tx extends uvm_sequence_item; `uvm_object_utils(my_tx) function new (string name = ""); super.new(name); endfunction function string convert2string;... endclass class my_seq extends uvm_sequence #(my_tx); `uvm_object_utils(my_seq) function new(string name = ""); super.new(name); endfunction... task body;... endclass 14

How to Structure a Verification Env 15

Examples class my_component extends uvm_env; `uvm_component_utils(my_component) // Transaction-level ports and exports uvm_analysis_port #(my_tx) a_port; // Virtual interfaces virtual dut_if vif; // Internal data members (variables) my_agent m_agent; // Constructor function new (string name, uvm_component parent); super.new(name, parent); endfunction // Standard phase methods function void build_phase(uvm_phase phase); a_port = new("a_port", this); m_agent = my_agent::type_id::create("m_agent", this); endfunction... 16

The Verification Future needs an Easier UVM Motivation Introducing Easier UVM Coding Guidelines Code Generation

Output from Generator 18

Boilerplate Code `ifndef SPI_SEQ_ITEM_SV `define SPI_SEQ_ITEM_SV class spi_seq_item extends uvm_sequence_item; `uvm_object_utils(spi_seq_item) // class properties rand logic [127:0] data; rand bit [6:0] no_bits; rand bit RX_NEG; extern function new(string name="spi_seq_item"); extern function void do_copy(uvm_object rhs); extern function bit do_compare(uvm_object rhs, uvm_comparer comparer); extern function string convert2string(); extern function void do_print(uvm_printer printer); extern function void do_record(uvm_recorder recorder); endclass : spi_seq_item function spi_seq_item::new(string name = "spi_seq_item"); super.new(name); endfunction : new... 19

Placeholders task spi_driver::run_phase(uvm_phase phase); // add additional declarations here super.run_phase(phase); `uvm_info(get_type_name(),"run_phase",uvm_medium) // set signals on reset values here @(posedge vif.reset) // reset goes inactive forever begin seq_item_port.get_next_item(req); @(posedge vif.clk) `uvm_info(get_type_name(), {"req item\n",req.sprint}, UVM_MEDIUM) // insert the driver protocol here $cast(rsp, req.clone()); // adopt the rsp seq_item_port.item_done(); end endtask : run_phase 20

Examples module example_top_tb;... apb_if apb_if_i(); spi_if spi_if_i(); initial begin uvm_config_db #(int)::set(null, "*", "recording_detail", 1); uvm_config_db #(virtual apb_if)::set(null, "uvm_test_top", "apb_if_i", apb_if_i); uvm_config_db #(virtual spi_if)::set(null, "uvm_test_top", "spi_if_i", spi_if_i); run_test(); end always #10 clock = ~clock; initial begin clock=0; reset=1; #75 reset=0; end endmodule //active high reset for this example 21

Downloads Get it from http://www.doulos.com/knowhow/sysverilog/uvm/ 22

23