Professional Documents
Culture Documents
Formal Verification: Outline
Formal Verification: Outline
Formal Verification: Outline
Outline
What is formal verification Why formal verification Different types of formal verification
Only address digital functionality
Definition
Formal Verifier (stolen from ???):
An automated decision procedure that can prove or disprove statements in some logical system of reasoning.
Motivation
Find more bugs
Dynamic verification (simulation) always has a limited coverage Static verification is complete
This has been realized for years for timing verification Drawback: Only certain classes of errors can be caught
Motivation (2)
Find bugs faster
Static verification is much faster Simulation test benches are complex
Requires lots of man power Requires more skills than RTL coding Ideally uses a different language
freeze silicon ECOs are normal part of time to volume driven design flow
Doesnt work with gate-level simulation
Motivation (3)
Find bugs earlier (property checking)
Automatically check design intent against implementation Can be applied to all levels of design
Theorem Proving
Application of mathematical methods under operator guidance
Implication, Induction ...
High level of abstraction spec to implementation High degree of manual interaction with the tool
Property Checking
assert statements statically evaluated Can be inline with code or in separate file Can use (extension of) standard HDL or a custom language Assertions has time (in clocks) as a property
Equivalence Checking
Check that to implementations of a design are (logically) identical
RTL to RTL RTL to gate gate to gate
Constraint can be tricky if synthesis includes rescheduling or pipelining Register mapping also more complicated
Should mimic synthesis tool for name mapping
How register names are formed from variable [index] How hierarchical names are constructed when flattening How too long names are truncated
False negative due to dont care semantics False negatives due to state encoding Running out of memory / time for some functions (primarily custom multipliers)
IP flow FV usage
Today
Part of the deliverables is a FV script
Applies equivalence checking to verify that synthesis to a new target library is valid (Just as TV script does for timing) Has all the issues of debugging RTL vs gate
Tomorrow
Automated property checker (and lint)
Check that the block adheres to coding style and design rules
IP synthesis w / DFT
netlist2
ATPG
netlist3
gdsii
Test vector format Chip formal verif. (gate vs gate) LVS / DRC Gate level simulation (ATPG and functional)
Tapeout