Optimization of Verification Effort using Reusable Sequence Collection Dipesh Handa Gaurav Chugh Gaurav Minda Kumar Rajeev Ranjan.

Slides:



Advertisements
Similar presentations
Igor Umansky Huub van Helvoort
Advertisements

3 Copyright © 2005, Oracle. All rights reserved. Designing J2EE Applications.
1 System Level Verification of OCP-IP based SoCs using OCP-IP eVC Himanshu Rawal eInfochips, Inc.,4655 Old Ironsides Drive, Suite 385,Santa Clara, CA
Parag Goel Sr. Corporate Application Engineer Synopsys India Pvt. Ltd.
ASP.NET Best Practices Dawit Wubshet Park University.
Verification SV3.1a Assumptions Surrendra Dudani Nov. 14, 2003 Synopsys, Inc.
Multi-Mode Survey Management An Approach to Addressing its Challenges
by Adiel Khan Staff CAE Synopsys
CAL (CAN Application Layer) and CANopen J. Novák Czech Technical University in Prague Faculty of Electrical Engineering Department of Measurement.
Unconstrained UVM SystemVerilog Performance You may add your company logo to this page, ONLY Presented by Wes Queen Verifcation Manager IBM.
Verification/Simulati on –GUI for simulation and formal verification –Simulator: Exploration of dynamic behavior Checking.
Puneet Arora ESCUG, 09 Abstraction Levels in SoC Modelling.
CSE 1302 Lecture 8 Inheritance Richard Gesick Figures from Deitel, “Visual C#”, Pearson.
Chapter 5 Functions.
Fall 2007CS 225 Introduction to Software Design Chapter 1.
 2007 Pearson Education, Inc. All rights reserved C Functions.
 2007 Pearson Education, Inc. All rights reserved C Functions.
Chapter 7 design rules.
10 ThinkOfANumber program1July ThinkOfANumber program CE : Fundamental Programming Techniques.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Design Synopsys System Verilog API Donations to Accellera João Geada.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
CS 356 Systems Security Spring Dr. Indrajit Ray
Gaurav Gupta Freescale Semiconductors Adiel Khan, Parag Goel, Amit Sharma, Varun S, Abhisek Verma Synopsys
LECTURE LECTURE 17 More on Templates 20 An abstract recipe for producing concrete code.
OCP: Open Core Protocol Marta Posada ESA/ESTEC June 2006.
1 Yolanda Gil Information Sciences InstituteJanuary 10, 2010 Requirements for caBIG Infrastructure to Support Semantic Workflows Yolanda.
BCS 2143 Introduction to Object Oriented and Software Development.
Lecture 8 Inheritance Richard Gesick. 2 OBJECTIVES How inheritance promotes software reusability. The concepts of base classes and derived classes. To.
An Introduction to Software Architecture
MICROPROCESSOR INPUT/OUTPUT
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
System Verilog Testbench Language David W. Smith Synopsys Scientist
(Business) Process Centric Exchanges
SystemVerilog and UVM for the ABC system verification Francis Anghinolfi 14 Nov 2013 SystemVerilog MiniWorkshop.
TTCN-3 MOST Challenges Maria Teodorescu
Boost Verification Results by Bridging the Hw/Sw Testbench Gap by Matthew Ballance Verification Technologist Mentor Graphics.
ANKITHA CHOWDARY GARAPATI
November 25, 2015 © IBM Corporation Unified Method Framework (UMF) RMC Reference Architecture Overview Kelli Houston
Memory Subsystem verification – Can it be taken for granted ?
Sequence, Sequence on the Wall...
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
SVA Encapsulation in UVM enabling phase and configuration aware assertions by Mark Litterick Verification Consultant Verilab GmbH, Munich, Germany.
Software Engineering Chapter: Computer Aided Software Engineering 1 Chapter : Computer Aided Software Engineering.
Charm++ overview L. V. Kale. Parallel Programming Decomposition – what to do in parallel –Tasks (loop iterations, functions,.. ) that can be done in parallel.
SWE 4743 Abstraction Richard Gesick. CSE Abstraction the mechanism and practice of abstraction reduces and factors out details so that one can.
1 Classes II Chapter 7 2 Introduction Continued study of –classes –data abstraction Prepare for operator overloading in next chapter Work with strings.
Systems Integration EGN 5623 Enterprise Systems Optimization (Professional MSEM) Fall, 2011 Systems Integration EGN 5623 Enterprise Systems Optimization.
Learning OmniServer Webinar Series Webinar #2: OmniServer: Understanding Protocols Presenter: Kevin Rutherford.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
INTRODUCTION TO CLASSES & OBJECTS CREATING CLASSES USING C#
The PLA Model: On the Combination of Product-Line Analyses 강태준.
1 CASE Computer Aided Software Engineering. 2 What is CASE ? A good workshop for any craftsperson has three primary characteristics 1.A collection of.
Register This! Experiences Applying UVM Registers
System on Chip Design and Test ECE 715
PCIe control interface for user logic.
Deitel- C:How to Program (5ed)
Krishnan Balakrishnan, Courtney Fricano, and Kaushal Modi
Stitching UVM Test benches into Integration-Level
Functional Programming with Java
Database Applications (15-415) Hadoop Lecture 26, April 19, 2016
Stitching UVM Test benches into Integration-Level
Yet Another Memory Manager
Yet Another Memory Manager
Lecture 22 Inheritance Richard Gesick.
Interfaces.
An Introduction to Software Architecture
CIS 199 Final Review.
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer Low level programming language: A programming.
UDP Principles (Chapter 24) (User Datagram Protocol)
Presentation transcript:

Optimization of Verification Effort using Reusable Sequence Collection Dipesh Handa Gaurav Chugh Gaurav Minda Kumar Rajeev Ranjan

Authors Dipesh Handa : R & D Engineer Gaurav Chugh Manager CAE Gaurav Minda CAE Kumar Rajeev Ranjan CAE

Agenda Introduction  Reusable sequence collection  Guidelines to develop reusable sequences Use model Benefits

Reusable Sequence Collection It is a set of configurable sequences with different level of complexities. Depending on requirement, user can use different level of sequences. Different levels can be – Level 0 - Sequences to model functionality check for basic operations Level 1 - Sequences to model functionality check for basic scenarios Level 2 - Sequences to model functionality check for complex scenarios Sequence collection should be implemented in layered architecture NOTE : Levels may increase as per requirement of complexity. Level 2 Level 1 Level 0 COMPLEXITYCOMPLEXITY

Guidelines : Reusable Sequence Collection Sequence collection should be implemented in layered architecture Level 1 sequences will use Level 0 sequences and Level 2 sequences will use level 1 sequences and so on Level 0 sequences : Model basic scenarios like Single READ, Single WRITE.  Identify configurable properties of transaction class and declare them as local properties  Configuration mechanism to get value of local properties and assign the local properties to transaction properties Level 1 sequences : Model intermediate scenarios like READ followed by WRITE.  Declare local properties in Level 1 sequence to map with the Level 0 sequence properties  Configuration mechanism to get value of local properties and assign the local properties to sequence 0 properties

Better Understanding of Implementation and Guidelines Scenario : Multiple number of Write -> Read operation between Master and Slave Master transaction class : MASTERSLAVE Clock data Class master_transaction extends uvm_transaction; rand bit [7:0] address = 8’h01; rand bit [7:0] data = 8’h00; rand bit [1:0] command; bit enable; bit reset; constraint valid_cmd { command inside {READ, WRITE}; } constraint valid_data {data inside {[8’h00:8’hff]};} constraint valid_addr {address inside {[8‘h00, 8’h04]};} endclass : master_transaction Out of 5 properties only 2 properties (address and data) can be reused. Commonly used in all scenarios Constraints to provide control on range

Class wr/rd_seq_level0 extends uvm_sequence #(master_transaction) rand bit [7:0] address = 8’h01; rand bit [7:0] data = 8’h00; constraint valid_range {address inside {[8’h00: 8’h04]}} // controlled value of local variables virtual task body(); // getting values in local variables from test case level uvm_config_db#(bit[7:0]) :: get (null, get_full_name(),”address”, address); uvm_config_db#(bit[7:0]) :: get (null, get_full_name(),”data”, data); `uvm_do_with(req, { req.address == address; req.data == data; req.command == WRITE/READ; }) // Write transaction endtask: body endclass : wr_seq_level0 Level 0 Sequence for Write and Read transfer Declaration and initialization of Local properties of random type Apply constraint on local properties UVM Configuration setting to get value from test case level Applying local properties as constraints to generate transaction

Class wr_rd_seq_level1 extends uvm_sequence #(master_transaction) rand int unsigned count = 1; rand bit [7:0] address = 8’h01; rand bit [7:0] data = 8’h00; constraint valid_range (address inside {[8’h00: 8’h04]}; count inside {[0:10]}; ) // controlled value of local variables wr_seq_level1 wr; // handle of Level 0 write sequence rd_seq_level1 rd; // handle of Level 0 read sequence virtual task body(); // getting values in local variables from higher level uvm_config_db#(bit[7:0]) :: get (null, get_full_name(),”address”, address); uvm_config_db#(bit[7:0]) :: get (null, get_full_name(),”data”, data); uvm_config_db#(int unsigned) :: get (null, get_full_name(),”count”, count); for(int i =0; i<count; i++) // no. of iteration begin `uvm_do_with(wr, { wr.address == address; wr.data == data; }) // Write transaction `uvm_do_with(rd, { rd.address == address;}) // Read transaction end endtask: body endclass: wr_rd_seq_level1 Level 1 Sequence for multiple Write-Read transaction Local properties of level 1 sequence Handles of level 0 sequences Configuration mechanism to get the value from test case Applying local properties as constraints to generate transaction Count to generate multiple transaction

Class seq_test extends uvm_test; virtual function void build_phase(uvm_phase phase); // Apply the master sequence to the master sequencer uvm_config_db#(uvm_object_wrapper)::set(this,"env.master.sequencer.main_phase", "default_sequence", wr_rd_seq_level1 ::type_id::get()); // Apply directed values to local variables of sequence uvm_config_db#(int unsigned)::set(this,"env.master.sequencer.wr_rd_seq_level1",“count", 2); uvm_config_db#(bit [7:0])::set(this, "env.master.sequencer.wr_rd_seq_level1",“address", 8‘h02); uvm_config_db#(bit [7:0])::set(this,"env.master.sequencer.wr_rd_seq_level1",“data", 8’hff); endfunction: build_phase endclass: seq_test Test to provide configuration information to sequence Configuration setting to set default sequence on manster sequencer Configuration setting to pass directed value to sequence properties

Captured Configurable Fields from various protocols AXI UART  Id  Address  Burst_length  Burst_size  Burst_type  Cmd_type  Data  Write_strob etc.  count_packet  rts_delay  cts_delay  delay_packets  payload etc. MIPI CSI2  Virtual_channel_id  Num_data_lines  Num_embedded_lines  Num_data_pixels  Num_embedded_pixels  Num_frames etc.

Benefits It optimizes the verification process by reducing  Number of sequences  Time span  Manual Efforts  Engineering Cost In Terms ofWith ReusabilityWithout Reusability Number of Test & Sequences required ~5 Reusable Sequences~30 Normal Directed Sequences Comparative Study

Abstract As a result of increasing complexity of Designs, majority of verification effort goes into stimulus pattern generation by writing UVM/OVM sequences and tests. Sometimes there is no reuse across common type of sequences which results in code duplication and verification closure time is on higher side This paper showcases the concept of building reusable UVM/OVM sequences which can be used to generate different stimulus patterns by configuring the reusable sequences. Reusability reduces code verification efforts and verification closure time. Code snippet of sample reusable sequences are shown to help verification engineers to apply the same concepts while building the reusable sequences for different protocols like AMBA, UART, MIPI