Title: Logic Synthesis
1Logic Synthesis
2Representation of Boolean Functions
- Sum of Products
- A function can be represented by a sum of cubes
(products) - f ab ac bc
- Since each cube is a product of literals, this
is a sum of products (SOP) representation - A SOP can be thought of as a set of cubes F
- F ab, ac, bc
- A set of cubes that represents f is called a
cover of f. - F1ab, ac, bc and F2abc,abc,abc,abc,bc
- are covers of
- f ab ac bc.
3SOP
ac
bc
onset minterm Note that each onset minterm
is covered by at least one of the cubes! None
of the offset minterms is covered
ab
c
b
a
- Covers (SOPs) can efficiently represent many
practical logic functions (i.e. for many, there
exist small covers). - Two-level minimization seeks the minimum size
cover (least number of cubes)
4Irredundant Cubes
- Let F c1, c2, , ck be a cover for f, i.e.
- f ?ik1 ci
- A cube ci? F is irredundant if F\ci ? f
- Example f ab ac bc
ac
bc
bc
Not covered
ab
ac
c
b
F\ab ? f
a
5Prime Cubes
- A literal j of cube ci ? F ( f ) is prime if
- (F \ ci ) ? ci ? f
- where ci is ci with literal j of ci deleted.
- A cube of F is prime if all its literals are
prime. - Example
- f ab ac bc
- ci ab ci a (literal b deleted)
- F \ ci ? ci a ac bc
Fac bc a F \ci ? ci
bc
a
ac
c
b
Not equal to f since offset vertex is covered
a
6Prime and Irredundant Covers
- Definition 1 A cover is prime (irredundant) if
all its cubes are prime (irredundant). - Definition 2 A prime of f is essential (essential
prime) if there is a minterm (essential vertex)
in that prime that is in no other prime. - Definition 3 Two cubes are orthogonal if they do
not have any minterm in common - E.g. c1 ab c2 bc are orthogonal
- c1 ab c2 bc are not orthogonal
7Prime and Irredundant Covers
- Example
- f abc bd cd is prime and irredundant.
- abc is essential since abcd?abc, but not in bd
or cd or ad - Why is abcd not an essential vertex of abc?
- What is an essential vertex of abc?
- What other cube is essential? What prime is not
essential?
abc
bd
c
b
d
cd
a
8PLAs - Multiple Output Functions
- A PLA is a function f Bn ? Bm represented in
SOP form
n3, m3
Personality Matrix
a
a
b
b
c
c
abc f1f2f3 10- 1 - - -11 1 - - 0-0 - 1 - 111
- 1 1 00- - - 1
f2
f3
f1
9PLAs (cont.)
- Each distinct cube appears just once in the
AND-plane, and can be shared by (multiple)
outputs in the OR-plane, e.g., cube (abc). - Extensions from single output to multiple output
minimization theory are straightforward. - Multi-level logic can be viewed mathematically as
a connection of single output functions.
10Shannon (Boole) Cofactors
- Let f Bn ? B be a Boolean function, and x
(x1, x2, , xn) the variables in the support of
f. - The cofactor fa of f by a literal axi or axi
is - fxi (x1, x2, , xn) f (x1, , xi-1, 1, xi1,,
xn) - fxi (x1, x2, , xn) f (x1, , xi-1, 0, xi1,,
xn) - The computation of the cofactor is a
fundamental operation in Boolean reasoning!!!! - Example
-
f abc abc
fa bc
c
c
b
b
a
a
11Generalized Cofactor
- The generalized cofactor fC of f by a cube C is f
with the fixed values indicated by the literals
of C, e.g. if Cxi xj, then xi 1, and xj 0. - if C x1 x4 x6
- fC is just the function f restricted to the
subspace - where x1 x6 1 and x4 0.
- As a function, fC does not depend on x1,x4 or x6
anymore - (However, we still consider fC as a
function of all n variables, it just happens to
be independent of x1,x4 and x6). - x1f ? fx1
- Example f ac ac , af ac, fac
12Fundamental Theorem
- Theorem Let c be a cube and f a function. Then c
? f ? fc ? 1. - Proof. We use the fact that xfx xf, and fx is
independent of x. - If Suppose fc ? 1. Then cffccc. Thus, c ? f.
f
c
13Proof (cont.)
- Only if. Assume c ? f
- Then c ? cf cfc. But fc is independent of
literals i ? c. - If fc ?1, then ? m ? Bn, fc(m)0.
- We will construct a m from m and c in the
following manner - mimi, if xi?c and xi?c,
- mi1, if xi ? c,
- mi0, if xi ? c.
- i.e. we made the literals of m agree with c,
i.e. m ? c Þ c(m)1 - Also, fc is independent of literals xi,xi ? c Þ
fc(m) fc(m) 0 - Þ fc(m) c(m) 0
- contradicting c ? cfc.
Cxz
m 000 m 101
m
m
14Cofactor of Covers
- Definition The cofactor of a cover F is the sum
of the cofactors of each of the cubes of F. - Note If Fc1, c2,, ck is a cover of f, then
Fc (c1)c, (c2)c,, (ck)c is a cover of fc. - Suppose F(x) is a cover of f(x), i.e.
- Then for 1?j?n,
- is a cover of fxj(x)
-
15Cofactor of Cubes
- Definition The cofactor Cxj of a cube C with
respect to a literal xj is - C if xj and xj do not appear in C
- C\xj if xj appears positively in C, i.e. xj?C
- ? if xj appears negatively in C, i.e. xj?C
- Example
- C x1 x4 x6,
- Cx2 C (x2 and x2 do not appear in C )
- Cx1 x4 x6 (x1 appears positively in C)
- Cx4 ? (x4 appears negatively in C)
16Cofactor of Cubes (cont.)
- Example
- F abc bd cd
- Fb ac cd
- (Just drop b everywhere and throw away cubes
containing literal b)
17Shannon Expansion
- f Bn ? B
- Shannon Expansion
- Theorem F is a cover of f. Then
- We say that f (F) is expanded about xi.
- xi is called the splitting variable.
-
18Shannon Expansion (cont.)
- Example
-
- Cube bc got split into two cubes
ac
bc
ab
c
c
b
b
a
a
19List of Cubes (Cover Matrix)
- We often use a matrix notation to represent a
cover - Example F ac cd
- a b c d a b c d
- ac? 1 2 1 2 or 1 - 1 -
- cd? 2 2 0 1 - - 0 1
- Each row represents a cube
- 1 means that the positive literal appears in the
cube - 0 means that the negative literal appears in the
cube - The 2 (or -) here represents that the variable
does not appear in the cube. It implicitly
represents both 0 and 1 values.
20Operations on Lists of Cubes
- AND operation
- take two lists of cubes
- computes pair-wise AND between individual cubes
and put result on new list - represent cubes as pairs of computer words
- set operations are implemented as bit-vector
operations
Algorithm AND(List_of_Cubes C1,List_of_Cubes C2)
C Æ foreach c1 Î C1 foreach c2 Î C2
c c1 Ç c2 C C È c
return C
21Operations on Lists of Cubes
- OR operation
- take two lists of cubes
- computes union of both lists
- Naive implementation
- On-the-fly optimizations
- remove cubes that are completely covered by other
cubes - complexity is O(m2) m is length of list
- conjoin adjacent cubes
- remove redundant cubes?
- complexity is O(2n) n is number of variables
- too expensive for non-orthogonal lists of cubes
Algorithm OR(List_of_Cubes C1, List_of_Cubes C2)
return C1 È C2
22Operations on Lists of Cubes
- Simple trick
- keep cubes in lists orthogonal
- check for redundancy becomes O(m2)
- but lists become significantly larger (worst
case exponential)
Example
01-0 01-0 0-1-
1-01 1-01 1-11 001-
0111 1-11
OR
23Operations on Lists of Cubes
- Adding cubes to orthogonal list
- How can the above procedure be further improved?
- What about the AND operation, does it gain from
orthogonal cube lists?
Algorithm ADD_CUBE(List_of_Cubes C, Cube c)
if(C Æ) return c c TOP(C) Cres c-c
/ chopping off minterms / foreach
cres ÎCres C ADD_CUBE(C\c,cres) È
c return C
24Operation on Lists of Cubes
- Naive implementation of COMPLEMENT operation
- apply DeMorgans law to SOP
- complement each cube and use AND operation
- Example
- Naive implementation of TAUTOLOGY check
- complement function using the COMPLEMENT operator
and check for emptiness - We will show that we can do better than that!!
Input non-orth.
orthogonal 01-10 gt 1---- gt 1----
-0--- 00--- ---0- 01-0-
----1 01-11
25A Possible Solution?
- Let A be an orthogonal cover matrix. Let all
cubes of A be pair-wise distinguished by at least
two literals (this can be achieved by an
on-the-fly resolution of cube pairs that are
distinguished by only literal). - Does the following conjecture hold?
- A ? 1 Û A has a row of all -s ?
- This would dramatically simplify the tautology
check!!!
26Generic Tautology Check
Algorithm CHECK_TAUTOLOGY(List_of_Cubes C)
if(C Æ) return FALSE if(C
-...-)return TRUE // cube with all - xi
SELECT_VARIABLE(C) C0 COFACTOR(C,Xi)
if(CHECK_TAUTOLOGY(C0) FALSE) print xi
0 return FALSE C1 COFACTOR(C,Xi)
if(CHECK_TAUTOLOGY(C1) FALSE) print xi
1 return FALSE return TRUE
27Improvements
- Variable ordering
- pick variable that minimizes the two sub-cases
(-s get replicated into both cases) - Quick decision at leaf
- return TRUE if C contains at least one complete
- cube among others (case 1) - return FALSE if number of minterms in onset is lt
2n (case 2) - return FALSE if C contains same literal in every
cube (case 3)
28Example
-1-0 --10 1-11 0---
x1
x1
-1-0 --10 ----
tautology(case 1)
-1-0 --10 --11
x2
x2
--10 --11
No tautology(case 3)
---0 --10 --11
x3
No tautology(case 3)
---0
x3
x4
----
tautology(case 1)
---0 ---1
x4
tautology(case 1)
----
x4
29Some Special Functions
- Definition A function f Bn ? B is symmetric
with respect to variables xi and xj iff - f(x1,,xi,,xj,,xn) f(x1,,xj,,xi,,xn)
- Definition A function f Bn ? B is totally
symmetric iff any permutation of the
variables in f does not change the function
Symmetry can be exploited in searching the binary
decision tree because - That
means we can skip one of four sub-cases -
used in automatic variable ordering for BDDs
30Some Special Functions
- Definition A function f Bn ? B is positive
unate in variable xi iff -
- This is equivalent to monotone increasing in xi
- for all min-term pairs (m-, m) where
- For example, m-31001, m31011(where i3)
31Some Special Functions
- Similarly for negative unate
- monotone decreasing
- A function is unate in xi if it is either
positive unate or negative unate in xi. - Definition A function is unate if it is unate in
each variable. - Definition A cover F is positive unate in xi iff
?xi ? cj for all cubes cj?F
32Example
positive unate in a,b negative unate in c
m
c
f(m-)1 ? f(m)0
b
m-
a
33The Unate Recursive Paradigm
- Key pruning technique is based on exploiting the
properties of unate functions - based on the fact that unate leaf cases can be
solved efficiently - New case splitting heuristic
- splitting variable is chosen so that the
functions at lower nodes of the recursion tree
become unate
34The Unate Recursive Paradigm
- Unate covers F have many extraordinary
properties - If a cover F is minimal with respect to
single-cube containment, all of its cubes are
essential primes. - In this case F is the unique minimum cube
representation of its logic function. - A unate cover represents the tautology iff it
contains a cube with no literals, i.e. a single
tautologous cube. - This type of implicit enumeration applies to many
sub-problems (prime generation, reduction,
complementation, etc.). Hence, we refer to it as
the Unate Recursive Paradigm.
35Unate Recursive Paradigm
- Create cofactoring tree stopping at unate covers
- choose, at each node, the most binate variable
for splitting - recure till no binate variable left (unate leaf)
- Operate on the unate cover at each leaf to
obtain the result for that leaf. Return the
result - At each non-leaf node, merge (appropriately) the
results of the two children. - Main idea Operation on unate leaf is
computationally less complex - Operations complement, simplify,tautology,generat
e-primes,...
a
b
merge
c
36The Binate Select Heuristic
- Tautology and other programs based on the unate
recursive paradigm use a heuristic called
BINATE_SELECT to choose the splitting variable in
recursive Shannon expansion. The idea is for a
given cover F, choose the variable which occurs,
both positively and negatively, most often in the
cubes of F.
37The Binate Select Heuristic
- Example Unate and non-unate covers
- a b c d
- G accd 1 - 1 -
- - - 1 0
- a b c d
- F accdbcd 1 - 1 -
- - - 0 1
- - 1 1 0
- gt Choose c for splitting!
- The binate variables of a cover are those with
both 1s and 0s in the corresponding column. - In the unate recursive paradigm, the
BINATE_SELECT heuristic chooses a (most) binate
variable for splitting, which is thus eliminated
from the sub-covers. -
is unate
is not unate
38Example
c
1
0
1 - 1 - F - - 0 1 - 1 1 0
1--- -1-0 unate
FC
F??C
---1 unate
c
1
0
1 - 1 - 0 F - - 0 1 - - 1 1 0 1
1---0 -1-01
---1- unate
e
0
1
-1-0- unate
1---- unate
39Two Useful Theorems
- Theorem
- Theorem Let A be a unate cover matrix.
- Then A?1 if and only if A has a row of all
-s. - Proof
- If. A row of all -s is the tautology cube.
- Only if. Assume no row of all -s. Without loss
of generality, suppose function is positive
unate. Then each row has at least one 1 in it.
Consider the point (0,0,,0). This is not
contained in any row of A. Hence A?1.
40Unate Reduction
- Let F(x) be a cover. Let (a,x) be a partition of
the variables x, and let - where
- the columns of A correspond to variables a of x
- T is a matrix of all -s.
- Theorem Assume A ?1. Then F?1 ? F?1
41Example
We pick for the partitioning unate variables
because it is easy to decide that A¹1
42Unate Reduction
A1
B1
- Result Only have to look at D1 to test if this
is a tautology. - Note A1, A2 has no row of all -s.
- Hence is a unate cover.
- Hence (A1, A2)?1
C2
C1
D1
B2
A2
43Proof
A?1 T-s
- Theorem Assume A ?1. Then F?1?F?1
- Proof
- if Assume F?1. Then we can replace F by all
-s. Then last row of F becomes a row of all
-s, so tautology.
44Proof (contd)
- Only if
- Assume F ?1. Then there is a minterm m2 such
that F(m2)0, i.e. m2?cube of F. Similarly, m1
exists where A(m1)0, i.e. m1?cube of A. Now the
minterm (m1,m2) in the full space satisfies
F(m1,m2)0 since m1m2 ?AX and m1m2?TF. - (a, x) is any row of first part
- a(m1) x(m2)0 x(m2)0
- (t,f) is any row of the last part
- t(m1) f(m2)t(m1) 0 0
- So m1m2 is not in any cube of F.
45Improved Tautology Check
Algorithm CHECK_TAUTOLOGY(List_of_Cubes C)
if(C Æ) return FALSE if(C
-...-)return TRUE // cube with all - C
UNATE_REDUCTION(C) xi BINATE_SELECT(C) C0
COFACTOR(C,xi) if(CHECK_TAUTOLOGY(C0)
FALSE) return FALSE C1
COFACTOR(C,xi) if(CHECK_TAUTOLOGY(C1) FALSE)
return FALSE return TRUE
46Previous Example
Unate reduction
-1-0 --10 1-11 0---
0---
No tautology(case 2)
x1
-1-0 --10 ----
x1
tautology(case 1)
-1-0 --10 --11
x2
--10 --11
x2
No tautology(case 3)
---0 --10 --11
x3
No tautology(case 3)
---0
x3
----
x4
tautology(case 1)
---0 ---1
x4
tautology(case 1)
----
x4
47Recursive Complement Operation
- We have shown how tautology check (SAT check) can
be implemented recursively using the Binary
Decision Tree - Similarly, we can implement Boolean operations
recursively - Example COMPLEMENT operation
Theorem
Proof
48COMPLEMENT Operation
Algorithm COMPLEMENT(List_of_Cubes C) if(C
contains single cube c) Cres
complement_cube(c) // generate one cube per
return Cres // literal l in c with
l else xi SELECT_VARIABLE(C)
C0 COMPLEMENT(COFACTOR(C,xi)) Ù xi C1
COMPLEMENT(COFACTOR(C,xi)) Ù xi return
OR(C0,C1)
49Complement of a Unate Cover
- Complement of a unate cover can be computed more
efficiently - Idea
- variables appear only in one polarity on the
original cover - (ab bc ac) (ab)(bc)(ac)
- when multiplied out, a number of products are
redundant - aba abc aca acc bba bbc bca bcc
- ab ac bc
- we just need to look at the combinations for
which the variables cover all original cubes - this works independent of the polarity of the
variables because of symmetry to the (1,1,1,,1)
case
50Complement on a Unate Cover
- Map cube matrix F into Boolean matrix B
-
- convert 0,1 to 1 (literal is present)
- - to 0 (literal is not
present) -
51Complement of a Unate Cover
- Find all minimal column covers of B.
- A column cover is a set of columns J such that
for each row i, ?j?J such that Bij 1 - Example 1,4 is a minimal column cover for
- All rows covered by at least one 1.
52Complement of a Unate Cover
- For each minimal column cover create a cube with
opposite column literal from F. - Example 1,4 ad is a cube of f
53Complement of a Unate Cover
- The set of all minimal column covers cover of
?f. - Example
- (1,4), (2,3), (2,5), (4,5) is the set of all
minimal covers. This translates into -
54Unate Complement Theorem
- Theorem
- Let F be a unate cover of f. The set of cubes
associated with the minimal column covers of BF
is a cube cover of?f. - Proof
- We first show that any such cube c generated is
in the offset of f, by showing that the cube c is
orthogonal with any cube of F. - Note, the literals of c are the complemented
literals of F. - Since F is a unate cover, the literals of F are
just the union of the literals of each cube of
F). - For each cube mi?F, ?j?J such that Bij1.
- J is the column cover associated with c.
- Thus, (mi)jxj? cj ?xj and (mi)j ?xj ? cjxj.
Thus mic ?. Thus c ? ?f .
55Unate Complement Theorem
- Proof (cont.)
- We now show that any minterm m??f is contained
in some cube c generated - First m must be orthogonal to each cube of F.
- For each row of F, there is at least one literal
of m that conflicts with that row. - The union of all columns (literals) where this
happens is a column cover of BF - Hence this union contains at least one minimal
cover and the associated cube contains m.
56Unate Covering Problem
- Definition
- The problem, given a Boolean matrix B, find a
minimum column cover, is called a unate covering
problem. - The unate complementation is one application that
is based on the unate covering problem. - Unate Covering Problem
- Given B, Bij?0,1 find x, xi?0,1 such that
- Bx?1 and ?j xj is minimum.
- Sometimes we want to minimize
- ?j cjxj
- where cj is a cost associated with column j.
57Incompletely Specified Functions
- F (f, d, r) Bn ? 0, 1,
- where represents dont care.
- f onset function - f(x)1 ? F(x)1
- r offset function - r(x)1 ? F(x)0
- d dont care function - d(x)1 ? F(x)
- (f,d,r) forms a partition of Bn. i.e.
- f d r Bn
- fd fr dr ? (pairwise disjoint)
58Incompletely Specified Functions
- A completely specified function g is a cover for
F(f,d,r) if - f? g ? fd
- (Thus gr ?). Thus, if x?d (i.e. d(x)1), then
g(x) can be 0 or 1, but if x?f, then g(x)1 and
if x?r, then g(x)0. - (We dont care which value g has at x?d)
59Primes of Incompl. Spec. Functions
- Definition A cube c is prime of F(f,d,r) if
c?fd (an implicant of fd), and no other
implicant (of fd) contains c, i.e. - (i.e. it is simply a prime of fd)
- Definition Cube cj of cover Fci is redundant
if f? F\cj. - Otherwise it is irredundant.
- Note that c?fd ? cr ?
60ExampleLogic Minimization
- Consider F(a,b,c)(f,d,r), where fabc, abc,
abc and d abc, abc, and the sequence of
covers illustrated below
F1 abc abc abc
Expand abc?a
on
off
F2 aabc abc
Dont care
abc is redundant a is prime F3 aabc Expand
abc ? bc
F4 abc
61Checking for Prime and Irredundant
- Let Gci be a cover of F(f,d,r). Let D be a
cover for d. - ci?G is redundant iff
- ci ?(G\ci)?D ? Gi (1)
- (Since ci? Gi and f?G?fd then ci ? cifcid
- and cif? G\ci. Thus f? G\ci.)
- A literal l ? ci is prime if (ci\ l ) ( (ci)l
) is not an implicant of F. - A cube ci is a prime of F iff all literals l ? ci
are prime. - Literal l ? ci is not prime ? (ci)l ? fd (2)
- Note Both tests (1) and (2) can be checked by
tautology - (Gi)ci ? 1 (implies ci redundant)
- (F?D)(ci)l ? 1 (implies l not prime)