Formal Verification of Systems-on-Chip – Industrial Experiences and Scientific Perspectives Wolfgang Kunz Department of Electrical & Computer Engineering University of Kaiserslautern, Germany.

Download Report

Transcript Formal Verification of Systems-on-Chip – Industrial Experiences and Scientific Perspectives Wolfgang Kunz Department of Electrical & Computer Engineering University of Kaiserslautern, Germany.

Formal Verification of Systems-on-Chip
– Industrial Experiences
and Scientific Perspectives
Wolfgang Kunz
Department of Electrical & Computer Engineering
University of Kaiserslautern, Germany
Acknowledgements
Minh Nguyen, Dominik Stoffel, Max Thalmaier, Markus Wedler
Industrial partners:
slide 2
Outline
 System-on-Chip verification tasks
 A methodology for RT-level module verification
 Challenges in module verification
 A methodology for RT-level verification of module interfaces
 Challenges in module interface verification
 Conclusion
slide 3
Example: SoC for automotive application
• processors
• hardware accelerators
• memories
• I/O controllers
• mixed signal blocks
• communication structures
slide 4
SoC Design Flow
Early phase
 set up and assess functional
prototypes
Architecture
spot
 Hot
model
andfor
explore architectural
choices Checking:
Property
 specify modules and communication
for target
Verify
that architecture
RTL implementation
fullfills specification
Design (RT)
 Register-Transfer (RT) description of
modules
 system integration, communication
structures
Implementation
 Synthesis and optimization
 test preparation
slide 5
RT-level module verification
A typical property for RT-level module verification:
AG(a  c)
a : assumptions
- module is in some control state V
- certain inputs X occur
c : commitments
- module goes into certain control state V’
- certain outputs Y occur
slide 6
RT-level module verification: operation by operation
Control 1
Property 1: AG(acontrol 1  ccontrol 2)
/ data_path_control_signals
data path
n cycles
Control 2
Property 2: AG(acontrol 2  ccontrol …)
slide 7
RT-level module verification
AG(acontrol 1  ccontrol 2)
j n
Control 1
acontrol 1 :
acontrol 1(V )   AX j (a j ( X ))
j 0
j n
ccontrol 2 :
 AX j (c j ( X ,Y ))  AX n (ccontrol 2 (V ))
j 0
V: state variables
/ data_path_control_signals
n cycles
data path
Control 2
slide 8
Property for RT-level module verification
Interval Temporal Logic™
AG(a  c)
j n
a  astart (V )   AX j (a j ( X ))
j 0
j n
c   AX j (c j ( X , Y ))  AX n (cend (V ))
j 0
property myExample is
assume:
at t: astart(V);
//starting state //
at t: a0(X);
at t+1: a1(X);
at …
at t+n: an(X);
prove:
at t: c0(X,Y);
at t+1: c1(X,Y);
at …
at t+n: cn(X,Y);
at t+n: cend(V);
//ending state //
end property;
V: state variables, X: inputs, Y: outputs
slide 9
BMC formulation
Properties are proved for finite time interval!
Y0 X1
Y1
X2
Y2
bound k
X0
, 
V0  S0
, 
, 
V2
V1
V3
Property of length n = 3
satisfiable?
generate SAT instance:
k n
I (V )   T (V , X ,V
0
i
i 0
initial states
i
i 1
k
)  [ p ] t
t 0
transition relation propositional formula for
unrolled k+n times internal formula of AGp,
k instances
slide 10
BMC formulation with invariants
Proving safety properties (AGp) by BMC with invariants
Yt Xt+1
Yt+1 Xt+2
Yt+2
Xt
, 
Vt
, 
, 
Vt+2
Vt+1
Vt+3
satisfiable?
Property of length n = 3
generate SAT instance:
t n
 (V )   T (V i , X i ,V i 1 )  [ p] t
t
i t
Invariant
(special case:  = 1)
transition relation
unrolled n times
one instance of propositional
formula for property
slide 11
BMC with invariants: “Interval Property Checking”
Proving AGp
t n
 (V )   T (V t i , X t i ,V t i 1 )  [ p] t
t
i t
Invariants: sets of states closed under reachability
Invariants in this formulation compared to invariants in most other
model checking techniques:
• can be weaker
• can be of simpler syntactic forms
• are more intuitive to the designer
slide 12
Interval Property Checking
The good cases…
System-on-Chip
RISC
=1
DSP
=1
Module Interfaces
I/O controller
=1
=1
HW accelerator
=1
holds in most cases when
verifying individual modules
slide 13
TriCore 2 Microprocessor System of Infineon
MMU
Program
Cache
Program
Scratch RAM
Program
Scratch RAM
Interrupts
Other IP
I
n
t
e
r
f
a
c
e
FPU
TriCore 2
Core
Bus Interface Unit
I
n
t
e
r
f
a
c
e
Data Cache
Data
Scratch RAM
Data
Scratch RAM
Interrupt &
Debug Unit
Crossbar (64 bit)
Other IP
Architectural characteristics
– unified 32-Bit-RISC/DSP/MC
architecture
– 853 instructions
– 6-stage superscalar pipeline
– multithreading extensions
– coprocessor support/floating point unit
Current Implementation
– 0.13 micron technology
– 3 mm2 core area/8 mm2 hardmacro
area
– typical frequency ~ 500 MHz
– typical compiled code 1.5 MIPS / MHz
– 2 MMACS/MHz, 0.5 mW/MHz @ 1.5 V
Bridge
Deployment
primarily in automotive high-end
System Bus
formally verified
slide 14
The Tricore II project – some results
Performance of property checking
 99.9 % of properties run in less than 2 minutes on solaris machine
 current property suite runs in 40 hours on 1 solaris machine
Productivity
 2k LoC per person month exhaustively verified
Quality
 formal techniques identified bugs that are hard or impossible to
find by conventional technique
 drastic reduction of errata sheets seems realistic
slide 15
Infineon Tricore 2 project – scientific challenges
Advanced DSP features of embedded processors
impose new challenges for formal verification
MAC Unit: multiply, multiply/add,
multiply/subtract
saturation, rounding,
shift-bits
 300 different instruction variants
e.g.
 MUL.H
- packed multiply
- 2 parallel multiplications
- 8 variants +12 special cases
- 16 bit operands
- 64 bit result
 MADD(S).Q
- multiply/add in Q-format
- 40 variants + 24 special cases
- 32/16 bit operands
- 64/32 bit results
- some variants with saturation
slide 16
Verification of Integer Pipelines
Goal: Prove that instructions are performed correctly
Example:
theorem mul;
// packed half word multiplication
assume:
at t: command_dec(MUL,op1,op2);
during[t,t+3]: no_reset;
during[t,t+3]: no_cancel;
…
prove:
at t+3: ip_res[31:0]
== op1[15:0]*op2[15:0];
at t+3: ip_res[63:32]
== op1[31:16]*op2[31:16];
end
slide 17
Pipelined data path with multiplication


data path implements large number of operations
complex interaction between control and data path
 bit width reduction may miss corner cases


optimizations for performance and resource sharing
designer specifies arithmetic blocks at the bit-level
 word level abstraction impossible
instr.
pipeline control
control flags
+/-/
data
+/-/
+/-/
overflow
+/-/
+/-/
+/-/
arithmetic result
overflow detection / saturation
slide 18
Research activities
Design Code

- modulo 2 addition (XOR, HA, FA))
- partial products
- comparators
ABL

Normalized
ABL
CNF (SAT-prover)
Arithmetic Bit-Level Description (ABL)
network of elementary arithmetic
operations
ABL Normalization using arithmetic
reasoning
Arithmetic correctness formally proved for
all Tricore2 instructions with multiplication
and all their variants ( 300) at full bit width
[M. Wedler, D. Stoffel, R. Brinkmann, W. Kunz: “A Normalization
Method for Arithmetic Data Path Verification”, IEEE Trans. on
CAD, November 2007]
slide 19
Interval Property Checking
The difficult cases…
1
System-on-Chip
RISC
1
DSP
Module Interfaces
I/O controller
1
HW accelerator
1
1
for implementations of SoC protocols !
slide 20
Interval Property Checking
The difficult cases…
  1 for implementations of SoC protocols !
property myExample is
assume:
at t: astart(V); //starting state + reachability inf. //
at t: a0(X);
at t+1: a1(X);
at …
at t+n: an(X);
prove:
at t: c0(X,Y);
at t+1: c1(X,Y);
at …
at t+n: cn(X,Y);
at t+n: cend(V);
//ending state //
end property;
slide 21
Example
Property
IDLE
input = REQ
assume:
at t: (state = IDLE && input = REQ)
prove:
at t+n: (state = READY && output = ACK)
cnt ≠ n
cnt = n
/ output := ACK
IDLE and READY are specified by asserting
certain state bits in the global state vector
READY
m-1
q
p
…1 0
global state vector with m bits
slide 22
Example
Property
IDLE
input = REQ
cnt ≠ n
assume:
at t: (state = IDLE && input = REQ)
prove:
at t+n: (state = READY && output = ACK)
False negative !
(counter-example: only READY after n-1 cycles)
cnt = n
/ output := ACK
Missing reachability constraint:
state = IDLE  cnt = 0
READY
m-1
q
p
…1 0
slide 23
Interval Property Checking
Typical invariants:
All states of the code space that fulfill certain “reachability
constraints”.
Reachability constraints are often expressed in terms of
simple relations (implications, equivalences…) on state bits.
state = IDLE  cnt = 0
m-1
q
p
…1 0
global state vector with m bits
slide 24
Example
Property
IDLE
input = REQ
assume:
at t: (state = IDLE && input = REQ
&& cnt = 0)
prove:
at t+n: (state = READY && output = ACK)
cnt ≠ n
Property proven !
cnt = n
/ output := ACK
READY
slide 25
Methodology
The difficult cases…
informal
specification
RTL
description
writes
properties
finds reachability
constraints updates
properties
properties
(ITL)
property checking
(interval-based)
false
negative?
property
holds
property fails
counterexample
true
negative?
slide 26
Interval Property Checking
IDLE
input = REQ
cnt ≠ n
Observation: common design styles for
implementing protocols employ a hierachical
design style. There is a central FSM that controls
the overall behavior of the design. Its states can
directly be associated with the states of the
protocol specification
Key idea: identification of a “main-FSM”
cnt = n
/ output := ACK
READY
Main state bits
m-1
q
p
…1 0
slide 27
Design Style for Communication Module
Many designs that implement on-chip communication structures (protocols)
have a hierarchy consisting of a main FSM and several layers of sub-FSMs.
sub FSM
sub FSM
sub FSM
main FSM
sub FSM
sub FSM
sub FSM
Commercial tools exist to extract and visualize the main-FSM.
slide 28
Protocol Compliance Verification
Main FSM
State variables of the main FSM:
0  p  q  m-1
State transition graph ( Sˆ , Tˆ ) represents main FSM
Each main state sˆ  Sˆ belongs to a set of states S sˆ
10110 xx10110xxx
ŝ1
S ŝ1
ŝ2
S ŝ2
Sˆ  {sˆ0 , sˆ1, sˆ3 }
ŝ3
S ŝ3
slide 29
Unbounded Protocol Compliance Verification using BMC
Specify properties in terms of main states
ŝ1
S ŝ1
ŝ2
Main state bits
S ŝ2
property myExample is
assume:
at t: Vˆ  sˆ1 ;
//starting main-state //
at t: a0(X);
at t+1: a1(X);
at …
at t+n: an(X);
prove:
at t: c0(X,Y);
at t+1: c1(X,Y);
at …
at t+n: cn(X,Y);
at t+n: Vˆ  sˆ2 ;
//ending main-state //
end property;
slide 30
Unbounded Protocol Compliance Verification using BMC
Specifying properties based on the main-FSM
•
is intuitive,
•
global understanding of design is sufficient
•
code inspection restricted to main-FSM
But:
•
it does not solve the false negative problem
slide 31
Traversal: transition by transition
Idea: “Transition-by-Transition (TBT)” traversal
compute the sets Ssˆ step by step according to the transitions of the main FSM
ŝ1
S ŝ 4
ŝ4
S ŝ1
ŝ2
ŝ3
S ŝ2
S sˆ1  sˆ3 S ŝ3
S sˆ2  sˆ3
S sˆ3  img sˆ1 sˆ3 ( S sˆ1 )  img sˆ2 sˆ3 ( Ssˆ2 )
[M. D. Nguyen, D. Stoffel, M. Wedler, W. Kunz: "Transition-by-Transition FSM
Traversal for Reachability Analysis in Bounded Model Checking", ICCAD-05]
slide 32
Methodology
RTL
description
automatic
extraction
informal
specification
main FSM
TBTtraversal
reachability
constraints
finds reachability
constraints updates
properties
writes
properties
properties
(ITL)
property checking
(interval-based)
false
negative
property
holds
property fails
counterexample
true negative
slide 33
Industrial case study
Industrial design (flash-memory controller using AMBA-flavor protocol):
493 state variables, 23 properties to prove
– compliance with protocol specification
– correct execution of functional operations
main FSM: 38 states, 103 transitions (extracted automatically by Debussy®)
Verification effort without proposed approach:
approximately 1 person month
70% of the time needed for code inspection to refine reachability constraints
Results with proposed approach:
38 reachability constraints identified: used as assumption in properties
total CPU time: 0:07:10h
all properties proved, no manual refinements needed!
slide 34
Some comparisons
Interval property checking
Abstraction refinement (based
on localization reduction)
Approximating state space by iterative
automaton model + invariants
Approximating state space by
partitioning state vector in concrete
and abstract state variables
Refinement by strengthening of
invariants (automatic and manual)
Refinement by concretization of state
variables (automatic)
Invariants often intuitive and of simple
syntactic form
Abstractions not intuitive (?)
Tailored towards Property Checking of
SoC modules and interfaces
Generic
slide 35
Some comparisons
Interval property checking
Predicate Abstraction
Select main-FSM based on intuition
(or automatically)
Select predicates based on intuition
(or automatically)
Use main-FSM to decompose state
space and to compute invariants
Build abstract machine
Run property checking on original
design with invariants
Run model checking on abstract
machine
Different strategy of exploiting abstract machine
slide 36
Conclusion
FV for modules getting established, what's next?
Correctness by integration…
 Better leverage of low level
guarantees in high level verification
 Better synergy between automatic and
manual abstractions
System level
verification
Low level
guarantees
 FV of interfaces (communication)
 FV of modules (computation)
50% algorithms plus 50% methodology!
slide 37