Title: Introduction%20to%20Formal%20Equivalence%20Verification%20(FEV)
1Introduction to Formal Equivalence Verification
(FEV)
- Erik Seligman
- CS 510, Lecture 4, January 2009
2Goals
- Introduce basic concepts of FEV
- Enable you to try FEV using Cadence Conformal
- Examine some corner cases
3FEV The Basic Concepts
4What Is FEV?
- Best-established form of FV
- Other names Equivalence Checking
- Answers Are two models equivalent?
5Main Uses of FEV
- RTL-Netlist equivalence
- Essential part of design flows
- Also leveraged for late hand edits (ECOs)
- Verifying quick changes to a model
- Fast easy if model almost the same
6Types of FEV
- Combinatorial / Synchronous
- Models must be (mostly) state-matching
- Very efficient due to no time calculations
- Works very well for synthesized netlists
- Most synthesis tools expect this
- Cadence Conformal is leader
- Others Synopsys Formality, Magma Quartz
- Sequential
- Allows more abstract RTL, or HLM-RTL FEV
- More flexibility for late netlist timing edits
- Much more risk/expense
- Few commercial tools (Calypto, NEC)
7State-Matching FEV
8Are these equivalent?
a
f1
f2
b
out
ck
a
f3
f4
b
out
ck
9Step 1 Map key points
a
f1
f2
b
out
f4
f3
ck
a
f3
f4
b
out
ck
Inputs?- Match. Outputs? Match. States? f1-gtf3,
f2-gtf4
10Step 2 Build Equations
a
f1
f2
b
out
f4
f3
ck
a
f3
f4
b
out
ck
f3 b, f4 f3, out !(af4) f3b, f4 !(!f3),
out !a !f4
11Step 3 Compare Equations
a
f1
f2
b
out
f4
f3
ck
a
f3
f4
b
out
ck
f3 b b EQUAL f4 f3 !(!f3)
EQUAL out !(af4) !a !f4 EQUAL
12What if there was an error?
a
f1
f2
b
out
f4
f3
ck
a
f3
f4
b
out
ck
f3 b b EQUAL f4 f3 !f3
DIFFER out !(af4) !a !f4 EQUAL
13Debugging Where To Look
- Fanin cones (support set)
- Different fanin ? major issue
- Set of counterexample values
- If only specific values cause cex, provides hint
of root cause - Intelligent hints from tools
- Is an overall inversion suspected?
- Identify similar areas of logic within cone?
- Isolate error
14Debug Schematic View
1
1
f1
f2
f4
f3
ck
1
0
1
f3
f4
ck
- Combinational ? other logic irrelevant
- Good tools provide annotated cex value
15Introduction To Conformal
16Conformal Terminology
- Gold golden model (often RTL)
- Rev revised model (often netlist)
- Many commands have gold/-rev option
- Key Point points to map
- Basic ones primary inputs/outputs, states
- Others blackboxes, dangling (Z) nodes,
- Can refer to by name or integer ID
- Support Set fanin cone
17Conformal Modes
- Setup Mode initial state
- Can load models, assign renaming rules
- Can set various global options
- Return to this mode set sys mode setup
- LEC Mode checking state
- Transition with set sys mode lec
- Automatically tries to map key points
- Models have been loaded, can compare
18Conformal Usage Model
- Based on command console
- Startup with LEC nogui
- Capable of taking general tcl scripts
- help available for any command
- Example help read design
- Full manuals in /pkgs/cadence6/CONFRML71/doc
- set log file ltfilenamegt to start logging
- Always do this for homework!
- set gui on / set gui off can be done any time
- dofile ltfilenamegt.do to execute script
- Script any set of console commands
19Mapping Key Points
- LEC has good automapper
- Can guess many mappings
- But sometimes fails
- View mapping as renaming
- Temporarily rename RTL sig to match netlist
- add renaming rule to specify mappings
- Or add mapped point in LEC mode
20Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
21Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
22Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
23Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
24Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
25Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
26Skeleton LEC Dofile
- set log file lec.log replace
- read design systemverilog gold f
myrtl.filelist - read design systemverilog rev f
mynetlist.filelist - add renaming rule r1 foo bar gold
- set sys mode lec
- report unmapped points
- add compare points all
- compare
- report compare data
27Debugging Mismatches
- Debug commands available in console
- diagnose ltpointgt Display basic info
- But easier to debug in gui
- Report-gtCompare Data to see all points
- Red dots indicate mismatches
- Right-click at mismatch point, and Diagnose
- Gives support set, cex values, and LECs hints
- From Diagnose window can launch sch view
28Report -gt Compare Data
29Example Fanin Cone
30Example Inversion
31Example Messy Error
32Schematic View
33Model Flattening
- Minor exceptions to state-matching
- Useful if flops/latches dont map
34Are These Equal?
rst
d
rst
d
DLAT
35Are These Equal?
rst
d
rst
d
DLAT
set flatten model dff_to_dlat_zero
36Are These Equal?
rst
ck
rst
DLAT
ck
37Are These Equal?
rst
ck
rst
DLAT
ck
set flatten model dff_to_dlat_feedback
38Are These Equal?
ck
39Are These Equal?
ck
set flatten model seq_constant
40Are These Equal?
d
ck
d
DLAT
DLAT
ck
41Are These Equal?
d
ck
d
DLAT
DLAT
ck
set flatten model latch_fold
42Are These Equal?
DLAT
43Are These Equal?
DLAT
set flatten model latch_transparent
44Model Flattening
- Tool modified cases on previous slides
- Internally changes view of logic
- Only on request, not automatic
- May cause mismatches rather than curing!
- Often useful if key point imbalance
- In Conformal set flatten model
- Many options, not just ones on slides
- Can also use remodel on single point
45FEV Constraints
46Are these equivalent?
a
f1
f2
b
out
ck
f3
f4
b
out
ck
47Are these equivalent?
a
f1
f2
b
out
ck
f3
f4
b
out
ck
- No! BUT What if a is always 1?
48FEV Why Constraints?
- RTL is often very general
- ifdef CHIP_VERSION_1
- define A 1
- else
- define A 2
- endif
- Design reuse irrelevant RTL remains
- assign A 1b1
-
- if (!A)
49Why Do Contraints Matter?
- Good synthesis tools take advantage
- Assume constants to reduce size/scope
- Dont synthesize masked-out RTL
- Allow out-of-band constraint specs in control
files - FEV must recognize constraints
- Otherwise get mismatches
- No effort if constraints visible at FEV level
- But may be only in wrapper RTL
- Or inside analog blackbox
- Or could be due to software / outside specs
- If not visible to tool, may need to specify
- add pin constraint 0 /foo/bar
50Some References
- http//en.wikipedia.org/wiki/Formal_equivalence_ch
ecking - http//cad-for-vlsi.blogspot.com/2007/03/111-art-o
f-equivalence-checking.html - Full Conformal docs at /pkgs/cadence6/CONFRML71/do
c