Title: Detecting State Coding Conflicts in STGs Using SAT
1Detecting State Coding Conflicts in STGs Using
SAT
- Victor Khomenko, Maciej Koutny,
- and Alex Yakovlev
- University of Newcastle upon Tyne
2Talk Outline
- Introduction
- Asynchronous circuits
- Complete state coding (CSC)
- State graphs vs. net unfoldings
- Translating a CSC problem into a SAT one
- Analysis of the method
- Experimental results
- Future work
3Asynchronous Circuits
- Asynchronous circuits no clocks
- Low power consumption
- Average-case rather than worst-case performance
- Low electro-magnetic emission
- No problems with the clock skew
- Hard to synthesize
- The theory is not sufficiently developed
- Limited tool support
4Example VME Bus Controller
5Example CSC Conflict
6Example enforcing CSC
dtack-
dsr
csc
010000
000000
100000
100001
lds
ldtack-
ldtack-
ldtack-
dtack-
dsr
010100
101001
000100
100100
ldtack
lds-
lds-
lds-
dtack-
dsr
101101
011100
101100
001100
d
d-
dtack
dsr-
csc-
011111
111111
101111
011110
7State Graphs vs. Unfoldings
- State Graphs
- Relatively easy theory
- Many efficient algorithms
- Not visual
- State space explosion problem
8State Graphs vs. Unfoldings
- Unfoldings
- Alleviate the state space explosion problem
- More visual than state graphs
- Proven efficient for model checking
- Quite complicated theory
- Not sufficiently investigated
- Relatively few algorithms
9Translation Into a SAT Problem
conf111111110100
conf111000000000
Code(conf)10110
Code(conf)10110
- Configuration constraint conf and conf are
configurations - Encoding constraint Code(conf) Code(conf)
- Separating constraint Out(conf) ? Out(conf)
10Translation Into a SAT Problem
Conf(conf ') ? Conf(conf '') ? Code(conf
',, val) ? Code(conf '',, val) ? Out(conf
',, out') ? Out(conf '',, out'') ? out'?
out''
11Configuration constraint
Conf(conf ') ? Conf(conf '') ? Code(conf
',, val) ? Code(conf '',, val) ? Out(conf
',, out') ? Out(conf '',, out'') ? out'?
out''
12Configuration constraint
13The efficiency of the BCP rule
1
14The efficiency of the BCP rule
0
15Encoding constraint
Conf(conf ') ? Conf(conf '') ? Code(conf
',, val) ? Code(conf '',, val) ? Out(conf
',, out') ? Out(conf '',, out'') ? out'?
out''
16Tracing the value of a signal
17Computing the signals values
18Separating constraint
Conf(conf ') ? Conf(conf '') ? Code(conf
',, val) ? Code(conf '',, val) ? Out(conf
',, out') ? Out(conf '',, out'') ? out'?
out''
19Computing the enabled outputs
20Translation Into a SAT Problem
Conf(conf ') ? Conf(conf '') ? Code(conf
',, val) ? Code(conf '',, val) ? Out(conf
',, out') ? Out(conf '',, out'') ? out'?
out''
21Analysis of the Method
- A lot of clauses of length 2 good for BCP
- The method can be generalized to other coding
properties, e.g. USC and normalcy - The method can be generalized to nets with dummy
transitions - Further optimization is possible for certain net
subclasses, e.g. unique-choice nets
22Experimental Results
- Unfoldings of STGs are almost always small in
practice and thus well-suited for synthesis - Huge memory savings
- Dramatic speedups
- A few intractable examples easily solved
- Several orders of magnitude speedups for many
other examples - The hardest example we tested took less than 3
minutes
23A philosophical remark
- The combination unfolding solver seems to be
quite powerful unfolding reduces a
PSPACE-complete problem down to an NP-complete
one, which can efficiently be tackled by a solver
24Future Work
- What about a full design cycle based on PN
unfoldings?
25- Thank you!
- Any questions?