Verification Ch3
Verification Ch3
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!
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?
The plan starts from the design specification why The reconvergence model!! Must exist in written form
the same thing as before, but at twice the speed, with these additions Not acceptable specification.
The specification is a golden document it is the law. It is the common source for the verification efforts and the implementation efforts.
If, and only if, it is in the plan will it be verified. The plan provides the forum for the entire design team to determine 1st time success. For 1st time success, every feature must be identified and under what conditions. As well as expected response.
Plan documents these features (as well as optional ones) and prioritized them.
This way, consciously, risk can be mitigated to bring in the schedule or reduce cost.
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 Number of resources it will take people, machines, etc Number of tasks that needs to be performed Time it will take with current resources
Verification Plan
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:
Verification Levels
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
Unit Level
Usually pretty small Interfaces and functionality tend to change often Usually dont 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
Independent of any particular use Intended to be used as is in many different parts of a design. Saves in verification time.
Can code BFMs for these pieces that others who communication with the reusable component can use.
They necessitate a regression suite Components will not be reused if users do not have confidence in them
ASIC/FPGA Level
FPGAs used to get debugged at integration. Now they are so dense, that a more ASIC flow is required.
System Level
What is a system?
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.
Board Level
Purpose is to confirm that the connectivity that the board design tool is correct. When doing board level verification, one must ensure that what is in the system, is what is to be manufactured. Things to consider
Many board level components dont fit into a digital simulation analog! What are suitable models (3rd party?) How to generate the net list (hand stitch or tool)
In an Ideal World.
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
Reality
May be over 100 macros on a chip would require 200 verification engineers Number of skilled verification engineers does not exist Business cant support the development expense
Verification Strategies
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
Error identified when it takes place easier to debug No wasted simulation cycles
Random Verification
Does not mean randomly apply 0s and 1s to input - Still must produce valid stimulus The sequence of operations and the content of the data transferred is random! This creates conditions that one does not think of.
Hit corner cases Unexpected conditions Reduces bias from the engineer
Very complex to specify and code Must be a fair representation of what the operating conditions are for the design. Must include distributions and ranges More complicated to determine expected response. With proper constraints, a random environment can produce directed tests, the converse is not true.
Specifications to Features
Each feature labeled with short description Ideally the specification and verification plan are cross referenced Describe where the function will be verified
Features to testcases
Must have features gate tape out Less important receive less attention
This helps project managers make informed decisions when schedule pressures arise. Group features into groups these become the testcases. Testcases should have descriptions and cross-references to features list. If a feature does not have a testcase assigned, it is not being verified. Define dependencies This will help prioritize Specify testcase stimulus (or constraints for random) Also must specify how each feature will be checked Inject errors to ensure that checks are working
Testcases to testbenches
Cross-reference testbenches with testcases Assign testbenches to verification engineers Verifying the testbench
Use a broken model for each feature to be verified Peer reviews Provide logging messages in the testbench
2.
3.
Thou shalt stress thine logic harder than it will ever be stressed again! Thou shalt place checking upon all things! Thou shalt not move onto a higher platform until the bug rate has dropped off!
Do:
Talk to designers about the function Spend time thinking about all the pieces that need to be verified Talk to other designers about the signals that interface to DUV
Rely on the designers word for input/output specification Allow a chip to go out without being properly verified pay now or pay later (with inflation!)
Dont: