Hardware Functional Verification By: John Goss Verification Engineer IBM

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Verification and Validation
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
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.
Presenter: PCLee – This paper outlines the MBAC tool for the generation of assertion checkers in hardware. We begin with a high-level presentation.
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!
Spring 07, Feb 6 ELEC 7770: Advanced VLSI Design (Agrawal) 1 ELEC 7770 Advanced VLSI Design Spring 2007 Verification Vishwani D. Agrawal James J. Danaher.
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.
Testing an individual module
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.
From Concept to Silicon How an idea becomes a part of a new chip at ATI Richard Huddy ATI Research.
Introduction to Software Testing
Software Testing & Strategies
Formal Techniques for Verification Using SystemC By Nasir Mahmood.
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
Overview of the Database Development Process
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Simulation Management. Pass or Fail? Managing Simulations Regression Behavioral Models.
CLEANROOM SOFTWARE ENGINEERING.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Chap. 1 Overview of Digital Design with Verilog. 2 Overview of Digital Design with Verilog HDL Evolution of computer aided digital circuit design Emergence.
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.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Design Verification An Overview. Powerful HDL Verification Solutions for the Industry’s Highest Density Devices  What is driving the FPGA Verification.
Presenter : Ching-Hua Huang 2013/7/15 A Unified Methodology for Pre-Silicon Verification and Post-Silicon Validation Citation : 15 Adir, A., Copty, S.
Copyright © 2002 Qualis Design Corporation Industry and Textbook Overview Qualis Design Corporation PO Box 4444 Beaverton, Oregon USA Phone:
FPGA-Based System Design: Chapter 6 Copyright  2004 Prentice Hall PTR Topics n Design methodologies.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
© 2006 Synopsys, Inc. (1) CONFIDENTIAL Simulation and Formal Verification: What is the Synergy? Carl Pixley Disclaimer: These opinions are mine alone and.
Logic Verification Industry Perspective Bruce Wile IBM Server Group Verification Lead 4/2/01.
ICS 216 Embedded Systems Validation and Test Instructor: Professor Ian G. Harris Department of Computer Science University of California Irvine.
An Overview of Hardware Design Methodology Ian Mitchelle De Vera.
Verification – The importance
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
1 IAF0620, 5.0 AP, Exam Jaan Raik ICT-524, , Digital systems verification.
ELEE 4303 Digital II Introduction to Verilog. ELEE 4303 Digital II Learning Objectives Get familiar with background of HDLs Basic concepts of Verilog.
Lecture 1 – Overview (rSp06) ©2008 Joanne DeGroat, ECE, OSU -1- Functional Verification of Hardware Designs EE764 – Functional Verification of Hardware.
EE694v-Verification-Lect7-1- Verification Plan & Levels of Verification The Verification Plan Yesterdays and today’s design environment Design specification.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Silicon Programming--Testing1 Completing a successful project (introduction) Design for testability.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Chapter 11 System-Level Verification Issues. The Importance of Verification Verifying at the system level is the last opportunity to find errors before.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
FEV And Netlists Erik Seligman CS 510, Lecture 5, January 2009.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
Lecture 1 – Overview (rSp06) ©2008 Joanne DeGroat, ECE, OSU -1- Functional Verification of Hardware Designs EE764 – Functional Verification of Hardware.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Testing Integral part of the software development process.
ASIC Design Methodology
Software Testing.
Hardware Functional Verification
Software Development Cycle
Introduction to Software Testing
Lecture 09:Software Testing
Software life cycle models
Verification Plan & Levels of Verification
Chapter 10 – Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Software Development Cycle
Presentation transcript:

Hardware Functional Verification By: John Goss Verification Engineer IBM

Other References Text References: Writing Testbenches: Functional Verification of HDL Models by Janick Bergeron A Designers Guide to VHDL by Peter Ashenden Additional information can be on the web found at:

Introduction

What this course is about? 60% – 80% of effort in design is dedicated to verification Unlike synthesizeable code, no strict coding styles for verification (free-for-all) Absence of constraints and lack of available expertise and references in verification has resulted in ad hoc approaches Most HDL books (VHDL or Verilog) deal with design, not verification Over the years, these HDL books have been refined as synthesis tools have been refined

What this course is about? (cont) To teach necessary concepts for tools of verification Describe a process for carrying out effective functional verification Present techniques for applying stimulus and monitoring the response of a design utilizing bus functional models Present the importance of behavioral modeling

Prior Knowledge This class focuses on functional verification of hardware design using either VHDL or Verilog Expect students to have a basic knowledge of one of these languages Expect students to have basic understanding of digital hardware design Class will focus more on VHDL

VHDL vs.. Verilog What language should I use? This is usually dictated by one’s experience and personal preference Typically, when working with a language, you do not notice the things that are simple to do, instead you notice the frustrations and how easy it would be if you were using the other language Both languages are inadequate for verification (by themselves) Both languages are equal in terms of the area under the learning curve. VHDL’s learning curve is steeper, but Verilog’s goes on much further

Why HDL Verification? I mentioned 60% - 80% time spent in verification – WHY?? Product time-to-market hardware turn-around time volume of "bugs" Development costs "Early User Hardware" (EUH)

Why HDL Verification? (cont) Cost of bugs over time Longer a bug goes undetected, the more expensive it is Bug found early (designer sim) has little cost Finding a bug at chip/system has moderate cost Requires more debug time and isolation time Could require new algorithm, which could effect schedule and cause board rework Finding a bug in System Test (test floor) requires new ‘spin’ of a chip Finding bug in customer’s environment can cost hundreds of millions and worst of all - Reputation

What is Verification? Not a testbench Not a series of testbenches

Verification is a process used to demonstrate the functional correctness of a design. Also called logic verification or simulation.

What is a testbench? A “testbench” usually refers to the code used to create a pre- determined input sequence to a design, then optionally observe the response. Generic term used differently across industry Always refers to a testcase Most commonly (and appropriately), a testbench refers to code written (VHDL, Verilog, etc) at the top level of the hierarchy. The testbench is often simple, but may have some elements of randomness Completely closed system No inputs or outputs effectively a model of the universe as far as the design is concerned. Verification challenge: What input patterns to supply to the Design Under Verification and what is expected for the output for a properly working design

Importance of Verification Most books focus on syntax, semantics and RTL subset Given the amount of literature on writing synthesizeable code vs.. writing verification testbenches, one would think that the former is a more daunting task. Experience proves otherwise. 70% of design effort goes to verification Properly staffed design teams have dedicated verification engineers. Verification Engineers usually outweigh designers % of all written code is in the verification environment

Verification is on critical path

Want to minimize Verification Time!

Ways to reduce verification time Verification can be reduced through: Parallelism: Add more resources Abstraction: Higher level of abstraction (i.e. C vs.. Assembly) Beware though – this means a reduction in control Automation: Tools to automate standard processes Requires standard processes Not all processes can be automated

Reconvergence Model Conceptual representation of the verification process Most important question What are you verifying? Verification Transformation

Human Factor in Verification Process An individual (or group of individuals) must interpret specification and transform into correct function. Specification Interpre- tation RTL Coding Verification

Ways to reduce human- introduced errors Automation Take human intervention out of the process Poka-Yoka Make human intervention fool-proof Redundancy Have two individuals (or groups) check each others work

Automation Obvious way to eliminate human- introduced errors – take the human out. Good in concept Reality dictates that this is not feasible Processes are not defined well enough Processes require human ingenuity and creativity

Poka-Yoka Term coined in Total Quality Management circles Means to “mistake-proof” the human intervention Typically the last step in complete automation Same pitfalls as automation – verification remains an art, it does not yield itself to well- defined steps.

Redundancy Duplicate every transformation Every transformation made by a human is either: Verified by another individual Two complete and separate transformations are performed with each outcome compared to verify that both produced the same or equivalent result Simplest Most costly, but still cheaper than redesign and replacement of a defective product Designer should NOT be in charge of verification!

What is being verified? Choosing a common origin and reconvergence points determines what is being verified and what type of method to use. Following types of verification all have different origin and reconvergence points: Formal Verification Model Checking Functional Verification Testbench Generators

Formal Verification Once the end points of formal verification reconvergence paths are understood, then you know exactly what is being verified. 2 Types of Formal: Equivalence Model Checking

Equivalence Checking Compares two models to see if equivalence Proves mathematically that the origin and output are logically equivalent Examples: RTL to Gates (Post Synthesis) Post Synthesis Gates to Post PD Gates

Equivalence Reconvergence Model RTLGates Check Synthesis

Model Checking Form of formal verification Characteristics of a design are formally proven or disproved Looks for generic problems or violations of user defined rules about the behavior of the design

Model Checking Reconvergence Model Specification RTL Assertions RTL Interpretation Model Checking

Functional Verification Verifies design intent Without, one must trust that the transformation of a specification to RTL was performed correctly Prove presence of bugs, but cannot prove their absence

Functional Reconvergence Model Specification RTL Functional Verification

Testbench Generators Tool to generate stimulus to exercise code or expose bugs Designer input is still required RTL code is the origin and there is no reconvergence point Verification engineer is left to determine if the testbench applies valid stimulus If used with parameters, can control the generator in order to focus the testbenches on more specific scenarios

Testbench Generation Reconvergence Model RTL Testbench Generation Code Coverage/Proof Metrics

Functional Verification Approaches Black-Box Approach White-Box Approach Grey-Box Approach

Black-Box The black box has inputs, outputs, and performs some function. The function may be well documented...or not. To verify a black box, you need to understand the function and be able to predict the outputs based on the inputs. The black box can be a full system, a chip, a unit of a chip, or a single macro.

White-Box White box verification means that the internal facilities are visible and utilized by the testbench stimulus. Examples: Unit/Module level verification

Grey-Box Grey box verification means that a limited number of facilities are utilized in a mostly black-box environment. Example: Most environments! Prediction of correct results on the interface is occasionally impossible without viewing an internal signal.

Perfect Verification To fully verify a black-box, you must show that the logic works correctly for all combinations of inputs. This entails: Driving all permutations on the input lines Checking for proper results in all cases Full verification is not practical on large pieces of designs, but the principles are valid across all verification.

Verification VS. Test Two often confused Purpose of test is to verify that the design was manufactured properly Verification is to ensure that the design meets the functionality intent

Verification and Test Reconvergence Model Specification Silicon Verification HW Design Net list Test Fabrication

Verification And Design Reuse Won’t use what you don’t trust. How to trust it? Verify It. For reuse, designs must be verified with more strict requirements All claims, possible combinations and uses must be verified. Not just how it is used in a specific environment.

Cost of Verification Necessary Evil Always takes too long and costs too much Verification does not generate revenue Yet indispensable To create revenue, design must be functionally correct and provide benefits to customer Proper functional verification demonstrates trustworthiness of the design

When is Verification Done? Never truly done on complex designs Verification can only show presence of errors, not their absence Given enough time, errors will be uncovered Question – Is the error likely to be severe enough to warrant the effort spent to find the error?

When is Verification Done? (Cont) Verification is similar to statistical hypothesis. Hypothesis – Is the design functionally correct?

Hypothesis Matrix ErrorsNo Errors Bad DesignType II (False Positive) Good DesignType I (False Negative)

Verification Terminology EDA: Engineering Design Automation – Tool vendors. I.E. Synopsys, ModelTech, Cadence, etc. Behavioral: Code written to perform the function of logic on the interface of the DUV. Macro: 1) A behavioral. 2) A piece of logic. Driver/Agitator/Stimulator/Generator/Bus Functional Model (BFM): Code written to manipulate the inputs of the DUV. Typically this is behavioral code. It understands the interface protocols. Checker: Code written to verify the outputs of the DUV. A checker may have some knowledge of what the driver has done. A check must also verify interface protocol compliance.

Verification Terms (continued) Snooper/Monitor: Code that watches interfaces or internal signals to help the checkers perform correctly. Also can be used by drivers to be more stressful and adaptive. Architecture: Design criteria as seen by the customer. Design’s architecture is specified in documents – usually a specification in which the design must be compliant with (verified against) Micro Architecture: The design’s implementation. It refers to the constructs that are used in the design (I.E. pipelines, caches, etc).