BDD-Based Logic Optimization System

Logic Decomposition
ECE1769
Jianwen Zhu
(Courtesy Dennis Wu)
Introduction
Functional Decomposition
• Re-express a Boolean function as
f ( X )  F ( 0 (Y ), 1 (Y ),...,  k (Y ),Z )
– Where
X  {x 0, x1,..., xn};
Y,Z  X.
Y  { y 0, y1,..., ys};
– Free set:
– Bound set: Z  {z 0, z1,..., zm};
– Disjoint decomposition
Ashenhurst Decomposition Chart
• Classic method
– Row: bound set
– Column: free set
– Disjoint decomposition if column multiplicity = 2
Specialized Decompositions
• Algebraric Factorization:
– F = A*B + C, where supp(A) and supp(B) are disjoint
• Boolean Factorization:
– F = A*B + C, where supp(A) and supp(B) are not
disjoint
• Bi Decomposition:
– F = A (op) B, where op is any operation
Boolean Division
• F = QD
• Definition: Function D is a Boolean divisor of F if
there exists a function Q, called the quotient, such
that F = QD
• Theorem: Function D is a Boolean divisor of F iff
F  D.
– On-set of F is subset of the on-set of D
– F implies D
• Example: e + bd = (e + b)(e + d)
Boolean Subtraction
• F=D+R
• Definition: Function D is a Boolean
subtractor of F if there exists a function R,
called the remainder, such that F = D + R.
• Theorem: A function D is a Boolean
subtractor of F iff F  D.
– On-set of D is a proper subset of the on-set of F
– D implies F
BDD Summary
• Canonical
• Compact
• Efficient algorithms for many Boolean operations
Procedure
Result
Time Complexity
Apply
f1 <op> f2
O(|G1|·|G2|)
Restrict
f|xi = b
O(|G|·log|G|)
Compose
f1|xi = f2
O(|G1|2··|G2|)
Cut
• A cut (D, V – D) of a
BDD is a partition of
its nodes V into
disjoint subsets D and
(V – D) such that
– root  D and terminals
0, 1  (V-D).
– A cut cannot cross any
path more than once.
Horizontal Cut
• A cut where support of
D and (V-D) are
disjoint.
– Bound set
– Free set
• Idea:
– Exploit structures in
horizontal cut
• Cut edge classification
– 0: pointing to 0
– 1: :pointing to 1
– x :pointing to internal
nodes
Generalized Dominator
• Consider a cut partitioning the set of BDD nodes
function F into D and (V-D). The portion of the
BDD defined by D is copied to form a separate
graph. In that graph, an edge e is connected to 0 if
e  0 in the original BDD of F, and it is
connected to 1 if e  1 in the original BDD of F.
All the internal edges e  x are left dangling.
The resulting graph is called a generalized
Dominator.
Example Generalized Dominator
Boolean AND Decomposition
1. Obtain divisor by redirecting dangling
edges of generalized dominator to 1.
2. Obtain quotient by minimizing F with the
off-set of the divisor as a don’t care set.
Example of Boolean AND
Decomposition
Boolean OR Decomposition
1. Obtain subtractor by redirecting dangling
edges of generalized dominator to 0.
2. Obtain remainder by minimizing F using
the on-set of the subtractor as a don’t care
set.
Example of Boolean OR
Decomposition
Finding Generalized Dominators
• Number of BDD cuts is exponential.
• Filtering Cuts
– Valid Cuts contain at least one edge connected
to a terminal node.
– 0-Equivalent Cuts (same 0 ) result in the same
AND decomposition.
– 1-Equivalent Cuts (same 1 ) result in the same
OR decomposition.
Algebraic Bi-Decomposition
1-Dominator
• A node which belongs
to every path leading
to a ‘1’ terminal is
called a 1-dominator
• Enables fast algebraic
AND decomposition
1-Dominator
0-Dominator
• A node which belongs
to every path leading
to a ‘0’ terminal is
called a 0-dominator
• Enables fast algebraic
OR decomposition
0-Dominator
X-Dominator
• A node which is
contained in every
path is called an xdominator
• Enables fast XNOR
Decomposition
X-Dominator
X-Dominator
Finding Simple Dominators
• All simple dominators common in that all internal
edges converge to a single node.
• Complexity of O(V)
– V is the # of variables.
• All Simple Dominators are found at the same
time.
• The simple dominator closest to the middle height
of the BDD is used for decomposition
Generalized X-Dominator
• A node which is
pointed to by both
complement and
regular edges is called
a generalized xdominator.
• F=(f) ! (f ! F)
Generalized X-Dominator
Simple MUX Decomposition
• Each node in a BDD
can be decomposed as
a simple MUX
• Only useful when
overlap between its
two cofactors is small.
MUX Decomposition
Functional MUX Decomposition
• Control Signal is a
function
• Requires 2 nodes
which cover all paths.
Functional MUX Decomposition
Functional MUX Decomposition
Logic Synthesis
Sweep
• Constant and Single-Variable Nodes
Removal
• Removal of Functionally Equivalent Nodes
AND
x y1
AND
x y
x
OR
OR
y
x y
Eliminate
• Balance between Global vrs. Local Scenario
• Partial Collapsing
Global vrs Local BDDs
• Representing large
Boolean networks in
a global BDD causes
serious computational
problems.
• Leave in multilevel
form.
BDD Decomposition Engine
Order of Decomposition
1.
2.
3.
4.
5.
Simple Dominator
Functional MUX
Single MUX
Generalized Dominator
Generalized X-Dominator
Typical Logic Optimization Flow
BDDlopt
• Boolean Simplification
– (Variable Ordering)
• Factorization
– (Recursive BDD Decomposition)
• Logic Sharing
– (Detected on Factoring Trees)
Factoring Trees
• Retains information about the
decomposition process
• Extract functionally equivalent sub-trees
Experimental Results
• BDDlopt Vrs SIS-1.2
• AND / OR-Intensive Circuits
– Resulting area almost the same
– BDDlopt out-performs SIS in CPU time
• XOR-Intensive Circuits
– BDDlopt uses 23% less gates
– BDDlopt uses 14% less area
– BDDlopt uses 84.4% less CPU time
BDS Vrs SIS Experimental
Results
•
•
•
•
•
Area is 3% larger
Delay is 13% smaller
Memory Requirement is 30% smaller
Synthesis is 8X faster
Superior performance on large circuits
Comparison between BDS and
SIS
Performance Comparison on
Large Circuits
Conclusion
• Decomposition
– Boolean decomposition using cuts and generalized
dominators.
– Fast algebraic decomposition with simple dominators.
– XOR, variable and functional MUX decomposition.
• Logic Synthesis
– Sweep to remove simple redundancy.
– Elimination to remove inter-gate redundancy.
– Decomposition to recursively break down large
functions in to basic gates.