VerificationTechniques for Macro Blocks (IP) Overview Inspection as Verification Adversarial Testing Testbench Design Timing Verification.

Slides:



Advertisements
Similar presentations
Presenter : Shao-Chieh Hou VLSI Design, Automation and Test, VLSI-DAT 2007.
Advertisements

Copyright 2001, Agrawal & BushnellVLSI Test: Lecture 31/22alt1 Lecture 31 System Test (Lecture 22alt in the Alternative Sequence) n Definition n Functional.
Apr. 20, 2001VLSI Test: Bushnell-Agrawal/Lecture 311 Lecture 31 System Test n Definition n Functional test n Diagnostic test  Fault dictionary  Diagnostic.
Digital Design with VHDL Presented by: Amir Masoud Gharehbaghi
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
CSE241 Formal Verification.1Cichy, UCSD ©2003 CSE241A VLSI Digital Circuits Winter 2003 Recitation 6: Formal Verification.
Verification Plan. This is the specification for the verification effort. It gives the what am I verifying and how am I going to do it!
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Senior Design I Lecture 7 - Verification.
ECE Synthesis & Verification1 ECE 667 Spring 2011 Synthesis and Verification of Digital Systems Verification Introduction.
VHDL Intro What does VHDL stand for? VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit Developed in 1982 by Govt. to standardize.
2/9/2007EECS150 Lab Lecture #41 Debugging EECS150 Spring2007 – Lab Lecture #4 Laura Pelton Greg Gibeling.
SiliconAid Solutions, Inc. Confidential SAJE SiliconAid JTAG Environment Overview – Very Short.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
Principle of Functional Verification Chapter 1~3 Presenter : Fu-Ching Yang.
02/10/06EECS150 Lab Lecture #41 Debugging EECS150 Spring 2006 – Lab Lecture #4 Philip Godoy Greg Gibeling.
Design Synopsys System Verilog API Donations to Accellera João Geada.
Streamline Verification Process with Formal Property Verification to Meet Highly Compressed Design Cycle Prosenjit Chatterjee, nVIDIA Corporation.
System/Software Testing
1 Chapter 2. The System-on-a-Chip Design Process Canonical SoC Design System design flow The Specification Problem System design.
VERIFICATION OF I2C INTERFACE USING SPECMAN ELITE By H. Mugil Vannan Experts Mr. Rahul Hakhoo, Section Manager, CMG-MCD Mr. Umesh Srivastva, Project Leader.
ECE 332 Digital Electronics and Logic Design Lab Lab 5 VHDL Design Styles Testbenches.
Simulation Management. Pass or Fail? Managing Simulations Regression Behavioral Models.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Software Testing.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
ASIC/FPGA design flow. FPGA Design Flow Detailed (RTL) Design Detailed (RTL) Design Ideas (Specifications) Design Ideas (Specifications) Device Programming.
Some Course Info Jean-Michel Chabloz. Main idea This is a course on writing efficient testbenches Very lab-centric course: –You are supposed to learn.
Design Verification An Overview. Powerful HDL Verification Solutions for the Industry’s Highest Density Devices  What is driving the FPGA Verification.
Copyright © 2002 Qualis Design Corporation Industry and Textbook Overview Qualis Design Corporation PO Box 4444 Beaverton, Oregon USA Phone:
1 H ardware D escription L anguages Modeling Digital Systems.
1 Extending FPGA Verification Through The PLI Charles Howard Senior Research Engineer Southwest Research Institute San Antonio, Texas (210)
Chonnam national university VLSI Lab 8.4 Block Integration for Hard Macros The process of integrating the subblocks into the macro.
1 Fly – A Modifiable Hardware Compiler C. H. Ho 1, P.H.W. Leong 1, K.H. Tsoi 1, R. Ludewig 2, P. Zipf 2, A.G. Oritz 2 and M. Glesner 2 1 Department of.
© 2012 xtUML.org Bill Chown – Mentor Graphics Model Driven Engineering.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
The Macro Design Process The Issues 1. Overview of IP Design 2. Key Features 3. Planning and Specification 4. Macro Design and Verification 5. Soft Macro.
Lecture 10: Logic Emulation October 8, 2013 ECE 636 Reconfigurable Computing Lecture 13 Logic Emulation.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
Functional Verification of Dynamically Reconfigurable Systems Mr. Lingkan (George) Gong, Dr. Oliver Diessel The University of New South Wales, Australia.
Electrical and Computer Engineering University of Cyprus LAB 1: VHDL.
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
An Overview of Hardware Design Methodology Ian Mitchelle De Vera.
CHAPTER 8 Developing Hard Macros The topics are: Overview Hard macro design issues Hard macro design process Physical design for hard macros Block integration.
1 Extending FPGA Verification Through The PLI Charles Howard Senior Research Engineer Southwest Research Institute San Antonio, Texas (210)
1 Hardware/Software Co-Design Final Project Emulation on Distributed Simulation Co-Verification System 陳少傑 教授 R 黃鼎鈞 R 尤建智 R 林語亭.
Macro Verification Guidelines Chapter 7.. Chap 7. Macro Verification Guidelines The goal of macro verification The macro is 100 percent correct in its.
Test Plan: Introduction o Primary focus: developer testing –Implementation phase –Release testing –Maintenance and enhancement o Secondary focus: formal.
Static Techniques for V&V. Hierarchy of V&V techniques Static Analysis V&V Dynamic Techniques Model Checking Simulation Symbolic Execution Testing Informal.
EE694v - Verification - Lect Lect 12,13,14 – 762 Testbenches Lets look at the EE 762 testbenches Look at stimulus generation techniques Look at response.
Silicon Programming--Testing1 Completing a successful project (introduction) Design for testability.
FPGA-Based System Design Copyright  2004 Prentice Hall PTR Topics n Modeling with hardware description languages (HDLs).
Chapter 11 System-Level Verification Issues. The Importance of Verification Verifying at the system level is the last opportunity to find errors before.
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
ASIC/FPGA design flow. Design Flow Detailed Design Detailed Design Ideas Design Ideas Device Programming Device Programming Timing Simulation Timing Simulation.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Lecture 5: Design for Testability. CMOS VLSI DesignCMOS VLSI Design 4th Ed. 12: Design for Testability2 Outline  Testing –Logic Verification –Silicon.
EE694v - Verification - Lect 12
ASIC Design Methodology
Topics Modeling with hardware description languages (HDLs).
Digital System Verification
Chapter 13 & 14 Software Testing Strategies and Techniques
Topics Modeling with hardware description languages (HDLs).
Hardware Description Languages
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
Debugging EECS150 Fall Lab Lecture #4 Sarah Swisher
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

VerificationTechniques for Macro Blocks (IP) Overview Inspection as Verification Adversarial Testing Testbench Design Timing Verification

Overview of Macro Verification Overall verification plan Strategies Sub-block simulation Macro simulation Prototyping Limited production

Overall Verification Plan Functional verification based on Requirements Specifications Behavioral models Extended functions (for generalization and re-use) Engineering review of verification plan Documentation of verification steps

Strategy: Bottom Up Testing Verify individual sublocks Focus on coverage of data values and internal states Verify complete macro (block) Focus on interfaces and timing among sub-blocks Test I/O timing and “corner cases” Perform prototyping Proto-board PC board FPGA Platform based design*

Verification vs. Validation In the hardware world: Verification means testing Validation means “formal proof” In the software world: Verification means “formal proof” Validation means testing Don’t be confused…

Verification vs. Manufacturing Testing Verification is to confirm that the design is correct It meets the requirements, specifications It meets timing, power, and area goals It meets the re-use goals It assumes a debugging cycle Manufacturing Test Fixed set of tests (vectors from above) Go/NoGo tests

Fundamental Ideas Controllability Can you wiggle every wire? Can you set every bit? Observability Can you see the state of every bit? Can you see the value on every wire? During validation, we can do this in the simulator – especially in a bottom-up mode (In manufacturing test this is not so easy)

Types of Verification Tests Compliance Testing Against specifications and/or standards Corner Case Testing Try to break the design with complex scenarios “Answer Yes or No [Y]?” > fred Random Testing Use statistical models to generate data patterns Real Code Testing Work with the software team, use real data Regression Testing Keep all tests in a suite and add to them

Testing in the Product Development Cycle More complete tests find more subtle bugs Fixes often make design more complex Test time goes up New bugs are introduced by fixes Repeat… time bugs found

Verification Tools Simulation functional, cycle, RTL, gate level, circuit level Testbench automation tools Verisity (and others) testing language Code coverage tools Measurements of what got wiggled Hardware Modeling Comparison against / with real hardware Emulation High speed hardware boxes interfaced to simulator Prototyping

“Static” Tools Static timing analysis tools “Lint-like” tools Formal verification tools Model checking  Build abstract model of design and environment  Uses “smart” exhaustive methods for safety and liveness tests Liveness: something good will eventually happen Safety: nothing bad will ever happen Theorem proving  Uses automatic theorem provers to verify assertions about the design

Inspection as Verification “The fastest, cheapest, and most effective way to detect and remove bugs is by careful inspection of the design and the code” Design reviews Large group review requirements, specifications, assumptions and overall design Code reviews Smaller groups perform line-by-line review of implementation Reviews must be done in a collegial atmosphere with the goal of enhanced quality, not to asses designer performance

Prototyping Use Prototyping when: You can afford it  $cost  $time You can not wait for the time it takes to find bugs using available simulation techniques  The prototype is just a fast simulator for the device itself

Adversarial Testing The designer’s tests have the goal to show that the system will work… Adversarial Testing uses a verification team of experts in testing all kinds of designs Goal: develop tests to show that the system will fail Report failures, and test cases to design team

Sub-Block Simulation 1. Use automated response checking Not appropriate for designer to check waveforms “by eye” How many times will it be done? Use of automated test to build macro block testbench Use assertions in code to test assumptions 2. Test sub-blocks for 100% statement and path coverage

Testbench The testbench For each component Is the model of its external world Must generate (all) legal input sequences Must check output sequences Must alert the designer and log discrepancies between expected and actual results The testbench is often more complex than component itself

Sub-block Testbench Design Input transaction data types, sequences Output transaction data types, sequences Input Transaction Generator Output Transaction Checker Device Under Test (DUT) Assume simple I/O relationships

Input Stimulus Generate “all” legal sequences of inputs Look at functionality of DUT Check corner cases Achieve 100% coverage

Output Checking Check for legal sequences of outputs Look at functionality of DUT Check corner cases Check input/output relationships Ideally each sub-block has  Simple Functionality  Simple I/O

Getting ready for integration Timing checks Timing plan for each sub-block Clocking, handshaking Timing budgets, per-cycle latency budget Area and power checks Are the sub-blocks within their bugets

Concurrent Design, Synthesis & Testbench Development Block Integration Functional Specifications, Documentation, Behavioral Model Validate against Specification and Test Plan / Productization Develop Macro- Test Bench, Test Cases Coordinate TimingSpecify Blocks Code and TestSynthesize Test Full BlockSynthesize Full Block Macro Specifications / Behavioral Model Macro Partitioning and Block Specifications Block Design Test Team Design TeamSynthesis Team

Integration Steps Integrating the sub-blocks Top level netlist Final synthesis Final testing Manufacturing testability Scan insertion ATPG Test coverage

Timing Verification Post synthesis timing “more real” delays  Delay models based on statistical models  No layout  Not real delays Check for clock/data skew Signal loading, critical path analysis

Post Synthesis Test Bench Development Refine the Behavioral Model for testing and verification Wrappers for each sub-block as needed (for signal compatibility before/after synthesis)  After synthesis every wire is a “bit” Document test plan and test vectors

Macro Testbench Design is more complex Functional complexity I/O Complexity More people involved Testbench will be delivered with product Testbench will be used to develop scan path and manufacturing tests

Generating Testbenches Not simple “do scripts” Complex state machines: Loop  Generate stimulus  Get output  Check results  Log results  Change stimulus parameters

Simple Example Simulate Busses Check bus timing Check data ranges Simulate ROM Also, supply data values Check address ranges Register File Also, r/w timing Overwriting data I/O Also, response to asynchronous events Response to out of range data DUT ROM Memory Register File I/O Address Bus Data Bus I/O Bus Testbench Clock/Timing Generator

Help! Use existing models for bench components Have a test team, with their own test library Take library components and enhance them with checking/logging functions Use behavioral models for bench Bus functional models  Need to have statistical bounds on input/output timing  Use random generators for stimulus sequences Use C/C++ models and co-simulation for bench Need to have a “master bench controller” to coordinate I/O behaviors on all components

Use the Behavioral Model Input Transaction Generator Output Transaction Checker Synthesized Block Behavioral Model

Use Commercial Tools Vera - Synopsis Specman Elite – Verisity Both tools use abstract data types to allow user to define data-ranges, states, and scenarios. Tools support statistical models, for stimulus, checking, and logging (beyond the scope of this class)

Test, Test, Test Back to Requirements and Specifications Corner Cases Random Cases Regression Testing Code Coverage

Types of Coverage Statement Coverage # times each statement executed Branch Coverage Each side of each if/then else executed Condition Coverage Checks each boolean clause in branch condition Path Coverage Paths between blocks (if – if, if – else, else – if) Trigger Coverage Each signal on sensitivity list Toggle Coverage 1/0 transition on every signal

Still Not Enough Does not verify that code works right, just that it was run Does not verify that design meets specifications or requirements Does not check results of optimization and synthesis tools