6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens...

37
6/14/99 1 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University

Transcript of 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens...

Page 1: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 1

Symbolic verification of systems with state machines

David L. Dill

Jeffrey Su

Jens Skakkebaek

Computer System Laboratory

Stanford University

Page 2: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

Outline

Introduction• Verification Method• TORCH• Verifying Instruction Fetch Unit of TORCH• Conclusion

Page 3: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 3

The context

For the last few years, my research group has been working on “symbolic verification” methods

Defining characteristics:– Higher-level data types: integers, bitvectors, arrays,

uninterpreted functions– High level symbolic simulation– Automatic procedures for deciding the validity of logical

formulas

Applied to microprocessor design verification

Page 4: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 4

The problem

How can we formally verify systems that are both control- and data-intensive?

(e.g., memory systems, communications protocols, etc.)

Problems with model checking:• Values in data path blow up state space.• Abstracting data path is often difficult.• Specifying control without data path is hard

“The control is correct if it makes the data path do the right thing.”

Page 5: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 5

Symbolic approaches

Theorem proving and/or symbolic simulation often can deal with data paths, but have problems with control-dominated systems.

Reachability invariants are required, to capture– legal combinations of FSM states– relations between FSMs and datapath elements– relations between values in different parts of datapath.

Automatic methods for discovering invariants are weak.

Invariants for systems that combine control and data are especially hard.

Page 6: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 6

Key Idea

• Many systems can be considered as processing a sequence of transactions.

• Processing a transaction involves a sequence of steps.• When the system is not processing a transaction, its states are

defined as “clean states.” Otherwise, they are in “dirty states.”

Observation:

Invariants needed for the clean states are much simpler than for the other states.

Page 7: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 7

A simple example

Data Path Control FSMSource

M

Dest

C

W

T1

T2

readytrue

true new_data

new_data

ready

Clean state: C

Dirty states: W, T1, T2

0

1 1

0

Page 8: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 8

A simple example

Control FSM

C

W

T1

T2

readytrue

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

037

62

37

6262

Desired Property: (FSM = C) => (Source = Dest)

Page 9: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 9

A simple example

Data Path Control FSMSource

M

Dest

C

W

T1

T2

readytrue

true new_data

new_data

ready

0

1 1

037

6262

25

74

New valuesloaded

Page 10: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 10

A simple example

Data Path Control FSMSource

M

Dest

C

W

T1

T2

readytrue

true new_data

new_data

ready

0

1 1

037

62

25

74

First half ofvalue

25

Requirement: (FSM = T1) =>(Source[0] = M)

Page 11: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 11

A simple example

Data Path Control FSMSource

M

Dest

C

W

T1

T2

readytrue

true new_data

new_data

ready

0

1 1

0

62

25

74

Second half of value

2574

First half ofvalue

Requirement: (FSM = T2) =>

((Source[1] = M) (Source[0] = Dest[0]))

Page 12: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 12

A simple example

Data Path Control FSMSource

M

Dest

C

W

T1

T2

readytrue

true new_data

new_data

ready

0

1 1

025

74

2574

74

Requirement:(FSM = C) => (Source = Dest)

Page 13: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 13

Invariants to Prove

• The invariant we want:

(FSM = C) => (Source = Dest)

• But to prove the invariant, we need the stronger property:

(FSM = C) => (Source = Dest) (FSM = T1) => (Source[0] = M) (FSM = T2) => ((Source[1] = M) (Source[0] = Dest[0]))

Page 14: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 14

Summary of the problem

• Invariants for clean states are:– Relatively simple– Directly related to desired properties

• Required properties of dirty states makes it much harder to find inductive invariants.

• Goal: Prove invariants on clean states without considering invariants on dirty states.

Page 15: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

Outline

• Introduction Verification Method• TORCH• Verifying Instruction Fetch Unit of TORCH• Discussion

Page 16: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 16

Verification Method

• Identify control FSMs and clean states in the design.• Extract regular expressions from FSMs that describe all paths

between clean states.• Symbolically simulate all the paths.

– Intuition: computes next state function from clean states to clean states, skipping over dirty states.

• Prove that invariants hold on clean states.• Note: explanation below is “somewhat idealized.”

Page 17: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 17

Extracting Regular Expressions

C

W

T1

T2

readytrue

true new_data

new_data

ready

new_data + new_data ready * ready True True

Page 18: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 18

Symbolic simulation example

Control FSM

C

W

T1

T2

ready

true

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

0M0

A0

A1

A0

A1

Initial state

Page 19: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 19

Symbolic simulation example

Control FSM

C

W

T1

T2

ready

true

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

0M0

B0

B1

A0

A1

Page 20: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 20

Symbolic simulation example

Control FSM

C

W

T1

T2

ready

true

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

0B0

B1

A0

A1

B0

Page 21: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 21

Symbolic simulation example

Control FSM

C

W

T1

T2

ready

true

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

0B0

B1 A1

B0B1

Page 22: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 22

Symbolic simulation example

Control FSM

C

W

T1

T2

ready

true

true new_data

new_data

ready

Data PathSource

M

Dest

0

1 1

0B0

B1

B0B1

B1

Invariant holds again

Page 23: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 23

Proving clean state invariants

C C

Assuming source = dest

here

Provesource = dest

here

Use symbolic simulation to “skip over” dirty states

and assumingconditions that

enable this path(path constraints)

Prove for every clean state and path to next clean state:

Page 24: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 24

Simulating along regular expressions

• Regular expressions have three operators– concatenation (sequencing)– union (choice)– star (repetition)

• We have to deal with each operation• Concatenation is easy

– simulate(s, ( )) = simulate(simulate(s, ), )

Page 25: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 25

Simulating union

• Path splitting: Simulate ( ) as two separate paths– prove invariant separately for each path

– problem: multiplicative growth (1 1) (2 2) splits into four paths.

• State merging: simulate( ) =

merge(simulate() simulate())• s’’ = merge(s, s’): For each variable v,

– if s(v) = s(v’) = e, then s’’(v) = e– else, set s’’(v) = a, where a is a new variable that appears

nowhere else.

Page 26: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 26

Simulating repetition

* represents a cycle in the state machine• It is the most difficult case because it represents infinitely many

paths: . . .• Approach

– Use path splitting for first 1 to 3 cases– Merge remaining infinite number of cases

• This basically only works because * is often a wait loop– No important variables change after the first few iterations.

Page 27: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 27

Verification Process

VerilogTranslator

GuidanceTool

SymbolicSimulator

SVC

Impl.(Verilog)

Impl.(HLN)

Impl. (HLN)

CorrectnessProperty

Theoremsto prove Counter

Example

Valid

Page 28: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

Outline

• Introduction• Verification Method TORCH• Verifying Instruction Fetch Unit of TORCH• Conclusion

Page 29: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 29

TORCH

• TORCH was designed by Prof. Horowitz’s group at Stanford University.

• The design was for research into the microprocessor architectures and has not been fabricated.

• It has several interesting features:– Two asymmetric pipelines– 40 bit instruction– Instruction cache and Data cache

• The Verilog description of TORCH is publicly available at http://www-flash.stanford.edu/torch/.

Page 30: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 30

Block Diagram of TORCH

TLB

Load/StoreUnit

IFetchUnit

Shadow Register File

Register FileA-Side

Decoder &Execution Unit

B-SideDecoder &

Execution Unit

Level 2 Cache

Page 31: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 31

Instruction Fetch Unit

IFetchDatapath

PC UnitDatapath

ICache

IFetchControl

Level 2 Cache

Instrs

• 3000 lines of Verilog• No independent specification

Page 32: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

Outline

• Introduction• Verification Method• TORCH Verifying Instruction Fetch Unit of TORCH• Conclusion

Page 33: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 33

Verifying IFetch Unit of TORCH

The correctness invariant about the ICache:

Every valid location in the cache has the “same” contents as the corresponding location in memory.

(The actual property is somewhat more complicated because data is rearranged in the cache.)

Page 34: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 34

Results

• This method is capable of finding bugs in the design.– Four bugs were found in the IFetch unit.

• Updating the tag for noncacheable instructions• Writing an incorrect tag when two consecutive cache

misses access the same cache line (two bugs)• Transferring FSM to an incorrect state when there is a

level 2 cache miss– These bugs had been found previously with much more

difficulty using symbolic verification and computing invariants on the dirty states.

Page 35: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 35

Limitations

• These results are very preliminary and has many restrictions– Sequential transactions– There must be few clean states– FSMs must be small– Loops must be wait loops

• Still requires some manual invariants• We’re working on it . . .

Page 36: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

Outline

• Introduction• Verification Method• Verification Process• TORCH• Verifying Instruction Fetch Unit of TORCH Conclusion

Page 37: 6/14/991 Symbolic verification of systems with state machines David L. Dill Jeffrey Su Jens Skakkebaek Computer System Laboratory Stanford University.

6/14/99 37

Conclusion

• A method is presented to verify systems with data and control.• This method was used to verify a non-trivial microprocessor.• Verification was finished in manageable time.• Verification revealed the design errors.

• Future work:– Fully automate the method– Eliminate limitations of the method– Try on more examples