Formal Verification: An Essential Toolkit For Modern VLSI Designers
(class CS-5/610 at Portland State University, Winter Quarter 2009.)
What is this class?
Formal Verification (FV) is a powerful technique that enables a designer to directly analyze and mathematically prove the quality of a design, providing 100% coverage of large subsets of the design space without needing to create simulation vectors. Many modern designers see FV techniques as exotic or academic, though, so their full potential is often not realized in industry design processes. In this class, we will see that FV has matured significantly, and learn how to apply current leading-edge FV technologies to real VLSI designs using state-of-the-art commercial tools from Cadence and Jasper.
The instructor, Erik Seligman, is a Formal Verification Architect in the Corporate Design Solutions team at Intel, where he has been working since 1994. This is an engineering class, not a theory class, and will be directly based on techniques he has helped apply to real product designs.
Logistics
M/W 1400-1520, Room FAB 150.
Standard Disclaimer: This page represents the opinions of Erik Seligman only, not those of Intel, Portland State University, or any other entity.
Prerequisites
You should have taken at least one class in Digital VLSI Design, or have equivalent work experience, before taking this class.
Syllabus
- (Mon 1/5/09) Intro: FDIV & history of FV, FV vs DV, Design flows, types of Formal: FEV, FPV, CDC, TOV
- (Wed 1/7/09) Logic & Foundations: Boolean algebra, identities, implication, LTL, BDDs & SAT
- (Mon 1/12/09) Digital RTL design review: Verilog basics, transitors, gates, latches/flops, clocked elements, basic timing issues
- (Wed 1/14/09) Formal Equivalence Verification (FEV) I: FEV basics, comparing designs, mapping state points, proving equivalence, assumptions and constraints
- (Wed 1/21/09) FEV II: FEV & schematics: Various exceptions to state-matching
- (Mon 1/26/09) FEV III: FEV and complexity: split-casing, cut points, hierarchical partitioning, false negatives, etc.
- (Wed 1/28/09) FEV IV: "FEV's Greatest Bloopers": When FEV gives wrong results
- (Mon 2/2/09) Assertions: SVA basics, creating assertions in a design, useful assertions, assertions and assumptions, cover points
- (Wed 2/4/09) Formal Property Verification (FPV) I: Running the tools, proving your assertions, debugging counterexamples
- (Mon 2/9/09) FPV II: Classics of FPV: Examples of good property creation and debug
- (Wed 2/11/09) FPV III: FPV as a Design Exploration Tool
- (Mon 2/16/09) FPV IV: Cut Points On Steroids: FPV and complexity issues
- (Wed 2/18/09) FPV V: Cool FPV Tricks: Semi-Formal / Dynamic Formal / Quasi- Formal methods
- (Mon 2/23/09) Guest lecture: Jin Yang (Intel), Symbolic Trajectory Evaluation (STE)
- (Wed 2/25/09) Guest lecture: Jesse Bingham (Intel), Connecting High Level Models & RTL
- (Mon 3/2/09) SVA 2009: Increased power in assertion creation
- (Wed 3/4/09) Clock Domain Crossing (CDC) : Metastability and CDC checks
- (Mon 3/9/09) Timing Override Verification (TOV): False Paths, Multicycle Paths, and Assertions
- (Wed 3/11/09) Putting It All Together: Guidelines for using FV techniques in real life
Final Project: Due at Noon on Wed 3/18/09
- Locate a nontrivial (50+-line) design you have created for another class. You can get one from a classmate or textbook if you don’t have it, or you can just create one from scratch if you want. The one restriction: No traffic light controllers allowed. (I’m sick of those things! ) I have no objection if it is in another language besides Verilog, though you are on your own for any tool-related challenges that result. (I think both Jasper and Conformal accept VHDL, but you should doible-check on your model.)
- Use techniques and tools from this class (Jasper, Conformal) to prove or disprove at least 10 aspects of your design. Each of the 10 may be:
o A logic-preserving change to your design, that you then verify by comparing two design versions in Conformal. If you implement 2 or more design changes, include at least one that passes and one that fails FEV.
o An assertion you create, and then run in Jasper to prove or disprove. If you implement 2 or more assertions, include at least one that passes and one that fails.
o An asynchronous clock domain crossing that you check with Conformal.
- Turn in your RTL code, descriptions of your changes or assertions, and tool logs and/or screenshots, in an email to myself & Fei by noon on Wed 3/18/09.
Comments (0)
You don't have permission to comment on this page.