Bi-decomposition of large Boolean functions using blocking edge graphs
Mihir Choudhury, Kartik Mohanram(ICCAD’10 best paper nominee)
Presentor: ABert Liu
m
Introduction Terminology Algorithm Illustration Experimental Result Conclusion
Outline
m
Introduction
m
Bi-decomposition is a special kind of functional
decomposition Functional decomposition
Break a large function into a network ofsmaller functions
Reduce circuit and communication complexityand thus simplify physical design
Bi-decomposition plays an important role in logic synthesis for restructuring Boolean networks
Introduction
m
Problem
f
fA f B
h
XA XB XC
XBXC
Bi-decompose
XA
m
Terminology
m
Blocking Edge Graph (BEG):
It’s an undirected graph. Every vertex represent a variable. One graph represents only one non-
decomposability of and, or, or xor. The edges connected variable pair {i , j} means
no variable partition can decompose this variable pair.
BEG can extract variable partition.
Terminology
m
( a, b) and ( b, d) are not blocked in the and BEG.
( c, d) and ( c, b) are not blocked in the or BEG. The xor BEG is complete graph.
BEG Example
ORAND
a b
dc
a b
dc
XOR
a b
dc
m
Algorithm
m
1.Construct BEG 2.Do variable partition on the BEG. 3.Compute the decomposed functions. 4.Recursively bi-decompose the decomposed
functions from 3. In 4. if the function is not decomposable it will
do some relaxation to make further decompose. (It’s not bi-decomposition)
Algorithm
m
Illustration
m
Giving a function f with variable set V. To construct BEG for f: 1.Choose a variable pair { i, j }. 2.Give an assignment c to V/{ i, j}. (Restricting the K-map of function to 2x2 squares.) (There are 2x2 K-maps for each pair { i, j}) 3.Test the blocking condition to add edges ( i,
j) to BEGs. 4. Go back to 1. until all the pairs have been
tested.
Construct BEG
m
Blocking condition:
One square blocks the others.
Construct BEG
m
K-map ij\k 0 1 00 1 1 01 1 0 11 0 1 10 1 0
Example
AND
i
kj
OR
i
kj
XOR
i
kj
For { i, j } pair : assign k=0 assign k=1 i\j 0 1 i\j 0 1 0 1 1 or 0 1 0 xor 1 1 0 square 1 0 1 squareBlocking all { i, j} in all BEGs.Other pair do the same thing to finish constructing the BEGs.
m
K-map ij\k 0 1 00 1 0 01 1 0 11 0 0 10 0 0
Example
AND
i
kj
OR
i
kj
XOR
i
kj
For { i, j } pair : assign k=0 assign k=1 i\j 0 1 i\j 0 1 0 1 1 Literal 0 0 0 Zero 1 0 0 square 1 0 0 square
m
We can compute whether the edge ( i, j)
should be added or not in and and or BEGs by compute x. If x is not constant 0 the edge will be added.
Construct BEG
i
j
k
On-SetOff-set
m
The same for or and and:
Construct BEG
i
j
k
On-SetOff-set
m
Whether the function is bi-decomposable or not?
Guarantee the existence of variable partition.
Variable Partition
m
Who can be common variable?Vertex cut is necessary but not sufficient condition.
Variable Partition
m
Vertex Cut: A set of vertices whose removal
renders a connected graph disconnected. Examples:
Variable Partition
a b
dc
Legal cut
Not a vertex cut
a b
dc
e Legal cut
Another legal cut
m
Decomposed function for or and and: For an or bi-decomposition.
Decomposed Function
Off-set
On-set
An and bi-decomposition can be obtained in a similar manner by interchanging the off-set and the on-set of f.
It’s subset of off-set of f.
It’s obtained from expanding on-set of f and does not overlap with off-set of decomposed function.
m
For xor :
Decomposed Function
m
Example
m
Experimental Result
m
Experimental Result
m
Experimental Result
m
Conclusion
m
The experimental result looks good. This work implemented in ABC using CUDD
package, it might have memory problem when function is large.
Solving problem with new graph structure might be a good idea. The BEG has global view of the decomposability of
every variable pairs to choose the best partition. Maybe we can improve our bi-decomposition
work.
Conclusion
m
Thanks for Attention