Macro Verification Guidelines Chapter 7.. Chap 7. Macro Verification Guidelines The goal of macro verification The macro is 100 percent correct in its.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Test Yaodong Bi.
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.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Reporter:PCLee With a significant increase in the design complexity of cores and associated communication among them, post-silicon validation.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
1 Software Testing and Quality Assurance Lecture 15 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
Fundamentals of Information Systems, Second Edition
Chapter 1 Principles of Programming and Software Engineering.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Principle of Functional Verification Chapter 1~3 Presenter : Fu-Ching Yang.
Introduction to Systems Analysis and Design
VerificationTechniques for Macro Blocks (IP) Overview Inspection as Verification Adversarial Testing Testbench Design Timing Verification.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
VERIFICATION OF I2C INTERFACE USING SPECMAN ELITE By H. Mugil Vannan Experts Mr. Rahul Hakhoo, Section Manager, CMG-MCD Mr. Umesh Srivastva, Project Leader.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Chapter 2 The process Process, Methods, and Tools
CLEANROOM SOFTWARE ENGINEERING.
Managing the development and purchase of information systems (Part 1)
Software Testing Life Cycle
RUP Implementation and Testing
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
© Grant Thornton | | | | | Guidance on Monitoring Internal Control Systems COSO Monitoring Project Update FEI - CFIT Meeting September 25, 2008.
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
Teaching material for a course in Software Project Management & Software Engineering – part II.
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.
Verification Plan & Levels of Verification
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Chonnam national university VLSI Lab 8.4 Block Integration for Hard Macros The process of integrating the subblocks into the macro.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
1 Introduction to Software Engineering Lecture 1.
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.
Software Testing and Quality Assurance Software Quality Assurance 1.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
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.
1 Extending FPGA Verification Through The PLI Charles Howard Senior Research Engineer Southwest Research Institute San Antonio, Texas (210)
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering Saeed Akhtar The University of Lahore.
Focus on design principles and on a process for doing design = To produce a precise, complete, high- quality foundation for product implementation.
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.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Test Plan: Introduction o Primary focus: developer testing –Implementation phase –Release testing –Maintenance and enhancement o Secondary focus: formal.
Dynamic Testing.
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.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Lecture 1 – Overview (rSp06) ©2008 Joanne DeGroat, ECE, OSU -1- Functional Verification of Hardware Designs EE764 – Functional Verification of Hardware.
Regression Testing with its types
Software Engineering (CSI 321)
Fundamentals of Information Systems, Sixth Edition
Unified Modeling Language
Chapter 8 – Software Testing
CS240: Advanced Programming Concepts
Verification Plan & Levels of Verification
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Presentation transcript:

Macro Verification Guidelines Chapter 7.

Chap 7. Macro Verification Guidelines The goal of macro verification The macro is 100 percent correct in its functionality and timing. This Chapter ’ s Topic Overview of macro verification Testbench design Timing verification

7.1 Overview of Macro Verification Design verification is one of the most difficult and challenging aspects of design. Some particular challenges The verification goal must be for zero defects because the macro may be used in many applications. The goal of zero defects must be achieved for all legal configurations of the macro. The integration team must be able to reuse the macro-level testbenches and test suites. The entire set of testbenches and test suites must be reusable by other design teams. The testbenches must be compatible with the verification tools used throughout the system testing process.

7.1.1 Verification plan It is essential that comprehensive functional verification plans be created, reviewed, and followed by the design team. By defining the verification plan early, the design team can develop the verification environment, including testbenches and verification suites, early in the design cycle. The verification environment is the set of testbench components. The verification plan should be fully described either in the functional specification for the macro or in a separate verification document.

7.1.2 Verification Strategy Verification of a macro consists of three major phases Verification of individual subblocks Macro verification Prototyping Overall verification strategy is to achieve a very high level of test coverage at the subblock level, and then to focus the macro-level verification at the interfaces between blocks, overall macro functionality, and corner cases of behavior. At each phase of the verification process, the team needs to decide what kinds of test to run, and what verification tools to use to run them.

The basic types of verification tests Compliance testing Compliance to the functional specification for the design is checked as fully as possible. Corner case testing  These tests try to find the complex scenarios, or corner cases, that are most likely to break the design. Random testing Can create scenarios that the engineers do not anticipate, and often uncover the most obscure bugs in a design unlike compliance and cornet case test. Real code testing Running the design in a real application, with real code. Regression testing Verify that the existing baseline of functionality is maintained as new features are added and bugs are fixed Verification Strategy

The verification tools available to the macro design team Simulation Most of the macro verification is performed by simulating the RTL on an event-driven simulator. Event-driven simulators give a good compromise between fast compile times and good simulation speed at the RTL level. Testbench Automation Tools Vera and Specman Elite tools can aid the task of creating reusable testbenches. Provide mechanisms for generating random tests and for checking test coverage Provide mechanisms for communication between testbench objects Code Coverage Tools VHDLCover, VeriSure, VeriCov, CoverMeter tools provide the ability to assess the quality of the verification suite Verification Strategy

The verification tools available to the macro design team Hardware modeling A Hardware modeler provides an interface between a physical chip and the software simulator. Allow the designer to compare the simulation results of the RTL design with those of an actual chip. Emulation It is an appropriate tool for running real code on a large design, but is not a very useful tool for small macro development. Prototyping Allows execution of real code in a real application at real-time speeds. Prototyping should only occur late in the design phase Verification Strategy

7.1.3 – SUMMARY 초고속 지능망 전송 / 교환 실험실 전 승 용

Goal at this stage : 100 percent statement and path coverage as measured by a test coverage tool such as VeriSure or VHDLCover. The best way to do this is to add checking logic to the testbench. Automated response checking is superior to visual verification of waveforms because: It is less error-prone. It enables checking of longer tests. It enables checking of random tests Subblock Simulation

Rule : All response checking should be done automatically. Guideline : Subblock testing is the easiest place to detect design errors Subblock Simulation(Cont ’ )

7.1.4 Macro Simulation The major source of errors at the macro integration level will either be interface problems or the result of the design misunderstanding the specification. The emphasis at this stage is on testing the interaction between the component subblocks and the interfaces of the macro with its environment.

7.1.5 Prototyping The design reuse methodology encourages rapid prototyping to complement simulation, and to compensate for the less-than-100 percent coverage at the macro verification stage. Building a prototype ASIC is required for macros that must be tested at speeds or gate counts exceeding those of FPGA and laser technologies.

7.1.6 Limited production Typically, limited production involves working with just a few (1-4) customers and making sure that they are successful using the macro, before releasing the macro to widespread distribution.

7.2 Inspection as Verification Code inspections are much more effective that test and debug for finding bugs. Typical approach to performing design and code reviews: Design review reviews the requirements for the design, and describes in some detail how the design meets these requirements purpose is to review the approach to solving the problem, and to make sure that it is sound

Code review object of the code review is to do a detailed peer review of the code it is usually done after a subblock has been designed and verified, and before it is integrated into the macro Lining tools such as Verilint, VHDLlint, and tools from Leda S.A. and Escalade can check for a variety of potential sources of error. 7.2 Inspection as Verification(cont ’ )

7.3 Adversarial Testing Subblock or unit testing is done by the designer, and typically much of the macro verification is done by the design team. The combination of these two approaches usually gives the best results.

7.4 Testbench Design Testbench design differs depending on the function of the macro. There are significant differences between subblock testbench design and top-level macro testbench design.

7.4.1 Subblock Testbench Output Transaction Checker Input Transaction Generator Input InterfaceOutput Interface Figure 7-1. typical testbench for a subblock Testbenches for subblocks tend to be rather ad hoc, developed specifically for the subblock under test. At some abstract level, though, they tend to look like Figure 7-1.

7.4.1 Subblock Testbench(Cont ’ ) Stimulus Generation We start by analyzing the functionality of the subblock to determine useful sequences that will verify that the subblock complies with the specification. Then we search for the corner cases of the design: those sequences of combinations of transaction and data values that are most likely to break the design.

7.4.1 Subblock Testbench(Cont ’ ) Once we have developed all the tests we can in this manner, we ruin a code coverage tool. This tool gives us a good indication of the completeness of the test suite.

Output Checking An automatic output checker is a necessary part of the testbench. Some common aspects to most checkers: Verify that only legal transactions are generated at the output port of the design. Verify that the specific transactions are correct responses to the input transactions generated Subblock Testbench(Cont ’ )

7.4.2 Macro Testbench There are several reasons why we want to develop a more powerful and well-documented testbench at this level: The design is now considerably more complex, and so more complex test scenarios will be required for complete testing. More people will typically be working on verification of the macro, often the entire team that developed the subblocks. The testbench will be shipped along with the macro so that the customer can verify the macro in the system design.

7.4.2 Macro Testbench(Cont ’ ) An interface macro, such as a PCI interface might have a testbench like the one shown in Figure 7-2.

PCI BFM Primary Master PCI BFM Primary Master PCI BFM Primary Master PCI BFM Primary Master PCI BFM Primary Master PCI Bus Testbench Command File PCI Macro Monitor Log File Application Interface - Slave Application Interface - Master On-the-Fly Checker Application BFC Master Application Monitor slave Application BFC Master Application Monitor slave TEST BENCH Monitor Log File Check Log File Monitor Log File Figure 7-2 Macro development and verification environment

Application Software Drivers Translator PCI Bus Functional Model HW/SW Cosim Environment Application Bus Functional Model PCI Macro PCI Bus Monitor Application Bus Monitor Figure 7-3 Software-driven testbench for macro-level testing A more complex testbench is shown in Figure Macro Testbench(Cont ’ )

7.4.3 Bus Functional models The bus functional models(BFM) are a common method of creating testbenches. The intent of these models is to model only the bus transactions of an agent on the bus. Well-designed BFMs allow the test developer to specify the transactions on the bus at a relatively high level of abstraction. BFMs are also extremely useful for system-level simulation.

7.4.4 Automated Response Checking One effective technique is to compare the output responses of the macro to those of a reference design. If the macro is being designed to be compatible with an existing chip, then the chip itself can be used as a reference model. A hardware modeler can be used to integrate the physical chip as a model in the simulation environment.

Stimulus 8051 chip 8051 macro (RTL) Hardward Modeler Compare response Figure 7-4 Self-checking testbench using as hardware modeler Automated Response Checking(Cont ’ ) Figure 7-4 shows a such a configuration.

7.4.5 Verification Suite Design Developing a verification environment that can completely verify a macro is every bit as difficult as specifying or designing the macro in the first place.

Functional Testing The first step in developing the verification suite. It is verifying that the macro implements the functions described in the specification. Testbench automation tools can help by providing powerful constructs for describing this functionality. Functional tests are necessarily a subset of a complete verification of the macro Verification Suite Design(Cont ’ )

Corner Case Testing Corner case testing is intended to test the implementation details not covered in the functional testing. Another typical set of corner cases involve designs with shared resources, such as a bus arbiter, or a block that has multiple agents accessing the same FIFO Verification Suite Design(Cont ’ )

Code Coverage and Random Testing There are two useful techniques for completing the verification suite: code coverage & random testing Code coverage It is indicates what parts of the code have been tested. This information allows the designer to create focused tests for these untested section of code. When manually adding new tests has become tedious or impractical, random testing can help test coverage Verification Suite Design(Cont ’ )

Random testing It greatly enhances our verification capabilities, but it does have limitations. Runtimes can get very long for achieving very high coverage Verification Suite Design(Cont ’ )

7.4.6 Code Coverage Analysis The coverage tool provides: Statement coverage Branch coverage Condition coverage Path coverage Toggle coverage Triggering coverage

Types of Coverage Tests State coverage gives a count, for each executable statement, of how many times it was executed. Branch coverage verifies that each branch in an if-then- else or case statement was executed. Condition coverage verifies that all branch sub-conditions have triggered the condition branch. Path coverage checks which paths are taken between adjacent blocks of conditional code. Triggering coverage checks which signals in a sensitivity list trigger a process. Toggle coverage counts how many times a particular signal transitions from ‘ 0 ’ to ‘ 1 ’ and how many times it transitions from ‘ 1 ’ to ‘ 0 ’.

Recent Progress in Coverage Tools Code coverage can be used to prune the overall test suite, eliminating redundant tests and ordering tests so that the first tests run provide the highest incremental coverage. Code coverage tools are still limited in their coverage; see the comments on path coverage above.

7.5 Timing Verification Static timing verification is the most effective method of verifying a macro ’ s timing performance. Static timing analysis should be performed on the resulting netlists to verify that they meet the macro ’ s timing objectives Gate-level simulation is most useful in verifying timing for asynchronous logic. Static timing verification tends to be pessimistic unless false paths are manually defined and not considered in the analysis. The best overall timing verification methodology is to use static timing analysis as the basis for timing verification.