



















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
These are the Lecture Slides of Functional Verification which includes Reusable Verification Components, Verilog Implementation, Implementation, Autonomous Generation and Monitoring, Input and Output Paths, Verifying Configurable Designs, Reusable Test Harness, Testcase Specific Code, Abstraction etc. Key important points are: v
Typology: Slides
1 / 27
This page cannot be seen from the preview
Don't miss anything!




















Verification Plan
When are you done? Metrics The specification determines the “what has to be done”! The specification does NOT determine the following: How many will it take? How long will it take? Are you are doing needs to be done? Verification Plans define that!
The plan starts from the design specification
Plan creates a well defined line, that when crossed can endanger the whole project and its success in the market. It defines: How many test scenarios (testbenches/testcases) must be written How complex they need to be Their dependencies From the plan, a detailed schedule can be produced: Number of resources it will take – people, machines, etc Number of tasks that needs to be performed Time it will take with current resources
Team owns it! Everyone involved in the project has a stake in it. Anybody who identifies deficiencies should have input so they are fixed. The process used to write the plan is not new. It has been used in the industry for decades. It is just now finding its way to hardware. Others who use it: NASA FAA Software
How to decide what levels? There are trade- offs: Smaller ones offer more control and observability but more effort to construct more environments Larger ones, the integration of the smaller partitions are implicitly verified at the cost of lower control and observability but less effort because fewer environments Whatever level is decided, those pieces should remain stable. Each verifiable piece should have its own specification document Docsity.com
Usually pretty small Interfaces and functionality tend to change often Usually don’t have independent specification associated with them Environment (if one) is usually ad hoc Not intended to gain full coverage, just enough to verify basic operation (no boundary conditions) High number of units in a design usually means it is not reasonable to do unit level due to high level of effort for environments
Once specified, very little change due to ramification down stream.
What is a system? Everyone’s definition is a little different. Verification at this level focuses on interaction, not function buried in one piece. A large ASIC may take this approach. (Assuming that all pieces that make up the ASIC are specified, documented, and fully verified). Assume that individual components are functionally correct. Testcase defines the system.
Designer Level Sim
Verification of a macro (or a few small macros)
Unit Level Sim
Verification of a group of macro’s
Chip (Element) Sim
Verification of an entire logical function (I.E. processor, storage controller, Ethernet MAC, etc)
System Level Sim
Multiple chip verification Sometimes done at a ‘board’ level Can utilize a mini operating system
Every Macro would have perfect verification performed All permutations would be verified based on legal inputs All outputs checked on the small chunks of the design Unit, Chip, and System level would then only need to check interconnections Ensure that macros used correct Input/Output assumptions and protocols
White Box, Black Box, Grey Box Types of testcases Level of abstraction where majority of verification takes place How to verify the response How random will it be
Deciding how to apply stimulus is usually easy part. Deciding response is hard part. Must plan how to determine the expected response How to determine that design provided response that you expected Detect errors and stop simulation as early as possible. Why? Error identified when it takes place – easier to debug No wasted simulation cycles