ENGG3190
Logic Synthesis
Computational Boolean Algebra
Winter 2014
S. Areibi
School of Engineering
University of Guelph
Outline
•
•
•
•
•
•
2
Computational Boolean Algebra “Basics”
Shannon Cofactors and Properties
The Boolean Difference Operator
Quantification Operators
Recursive Tautology
URP (Unate Recursive Paradigm)
Computational Boolean Algebra
Computational Boolean Algebra are
algorithmic and computational strategies
for manipulating Boolean Functions and
Circuits.
It is a set of
Data structures,
Techniques and theorems,
Algorithms,
It will help us to simplify and optimize
circuits, repair circuits, prove that they
perform certain tasks.
Co-factors of F()
y + z’ + yz’
xz’
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. xjC
• if xj appears negatively in C, i.e. xjC
Example
If C = x1 x4‘ x6
Cx 2 = C
(x2 does not appear in C )
Cx1 = x4‘x6 (x1 appears positively in C)
Cx4 = (x4 appears negatively in C)
8
Fxi = Positive Co-factor
Fxi’ = Negative Co-factor
Not a proof but a case study
Let xi = 1
F(x1, x2, …, xi=1, ….) = 1.F(xi=1) + 0.F(xi=0) = F(xi=1)
Which is the same!!
The same can be obtained by letting xi=0
Shannon (Boole) Cofactors
The cofactor fa of f by a literal a=xi or a=xi is
fxi (x1, x2, …, xn) = f (x1, …, xi-1, 1, xi+1,…, xn)
fxi (x1, x2, …, xn) = f (x1, …, xi-1, 0, xi+1,…, xn)
The computation of the cofactor is a fundamental operation in Boolean
reasoning!!!!
Example:
F no longer depends on a
f = abc + abc
fa = bc
c
c
b
b
a
a
11
Shannon Cofactor
f abc ab c a b c a bc
on
off
Don’t care
a
f a bc b c
12
Shannon Expansion
Definitions:
f : Bn B
f xi f xi x i f xi
Theorem: F is a cover of f. Then
F x i Fx i x i Fx i
is also a cover of f.
We say that f (F) is expanded about xi.
xi is called the splitting variable.
13
Example
F ab ac bc
F aFa aFa a (b c bc) a (bc)
ab ac abc abc
bc
c
b
a
Cube bc got split into two cubes
c
b
a
14
Generalized 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 C=xi 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).
15
Assume we have a mux with two Inputs (a,b).
Let variable x control the selection Line.
Negative Co-factor
If x = 0, we send a
If x = 1, we send b
F = a.x’ + b.x
x’ . F(x=0) + x . F(x=1)
This is Shannon Expansion!!
Positive Co-factor
F(x=1) = y . F(x=1,y=1) + y’ . F(x=1,y=0)
F(x=0) = y . F(x=0,y=1) + y’ . F(x=0,y=0)
x.y.F(x=1,y=1) + x.y’.F(x=1,y=0) + x’.y.F(x=0,y=1) + x’.y’.F(x=0,y=0)
Notice we have four sub-Boolean Functions when cofactoring around two vars
Shannon Cofactors: Example
F = a.b + a.c + a.b’.c’ + a’
Fa = b + c + b’.c’ (a’ is gone since a=1)
Fa’ = 1 (first three terms dissapear)
F = a.Fa + a’Fa’
Fa = b + c + b’.c’
Decompose F further around b
bFab + b’Fab’ (function of c only)
Fab = 1 + c
Fab’ = c + c’
Recursive?
Binary Recursion Tree
The recursive Shannon expansion corresponds to a
binary recursion tree
f xf x x f x
x( yf xy y f x y ) x( yf xy y f x y )
x
Example:
x1
1
x3
0
0
1
(v)
1
1
0
x2
y
1
0
y
0
f xy
1
fx y
f xy
0
fx y
v
Path (v) to node v corresponds to cube c(v)
Example: c(v) = x1 x2‘x3
20
Computational Boolean Algebra
Use of Shannon Cofactors
Properties of Cofactors
Boolean Difference
F
H
G
(Fx)’
We are measuring the sensitivity
of f to small changes in x
Fx xor Fx’
XOR is the ODD Function
Like Additions
f = x’,
df/dx = fx xor fx’
fx=0, fx’=1
df/dx = 0 xor 1 = 1
What makes this function == 1?
We must make y=1,
if you change x f will change
f = x.y, fx = y and fx’=0,
df/dx = y xor 0 = y
what make this function == 1?
We must make y=0,
Any change on x will change f
f = x+y, fx=1, fx’=y
df/dx = 1 xor y = y’,
f = x xor y, fx= y’, fx’ =y,
df/dx = y xor y’ = 1,
APPLICATIONS?
When does a change in Cin make a change to Cout?
((Cout) Cin =1) = ab + (a + b).1 = ab + (a+b) = a(b+1) + b = a + b
((Cout) Cin =0) = ab
dCout /dCin = Cout (cin =1) xor Cout (cin=0) =
= (a + b)
xor ab
= (a+b)’ ab + (a+b) (ab)’
= a xor b
What does this mean?
When a != b any change cin will cause change in Cout
Computational Boolean Algebra
New Quantification Operators
Existential Quantification
Universal Quantification
A Realistic Application
Application to Logic Network Repair
ALSO CALLED CONSENSUS
OF F wrt Xi
ALSO CALLED the SMOOTHING
OF F wrt Xi
Universal
Quantification
What makes this a 1?
These other inputs make F=1 FOR ALL values of x
What makes this a 1?
There exits a value of ‘x’ that makes F=1 for this input
Pattern of other variables.
Existential
Quantification
Quantify the ‘x’ then quantify the ‘y’
What if we quantify the A Operands?
Independent of A1 A0!!
X+D
0
0
XD
X + C + 0 + XD + 0 = X + D
0
F(a,b) = ab + b’ == a + b’
Note: This is a simple
and Trivial Example!!
What we want?
Values of constants d0,d1,d2,d3 that make Z == 1 For all possible values
of original inputs a, b!!
Universally quantify the variables ‘a’ and ‘b’ out of the Z function, this
function will then depend only on d0,d1,d2,d3 == 1
(a, b) will disappear by cofactors
MUX Eqn
We will first use the above expression of
the MUX written and then substitute:
a.b for s1 and
b’ for s0
G = d0(ab)’b’’ + d1 (ab)’b’ +d2 (ab) b’’ + d3 (ab)b’
= d0(ab)’b + d1(ab)’b’ + d2 ab b + 0
= d0 (a’ + b’)b + d1 (a’ + b’)b’ + d2 ab
= d0a’b + d1b’ + d2 ab
If we Calculate Z
So now Z = G xnor F == GF + G’F’
then find Co-factors, this
What I want is to go calculate ** (For all a b Z)
will be complicated!!
= Z ab . Z a’b . Z ab’ . Z a’b’
Is there an easier way!
When a=0,b=0 then Za’b’ = d1 xnor 1 = d1
When a=0,b=1 then Za’b = d0 xnor 0 = d0’
When a=1,b=0 then Zab’ = d1 xnor 1 = d1
When a=1,b=1 then Zab = d2 xnor 1 = d2
The thing that I need to calculate is the universal quantification (FOR ALL ab Z)
(d0,d1,d2,d3) = AND of all cofactors= d0’d1d2 !!
What did we get??
How do we make this a ‘1’??
To make this a 1 (i.e. repair it) we need to make d0=0, d1=1,d2=1, d3=x
0
1
1
x
0
1
1
1
0
1
1
0
Computational Boolean Algebra
Positional Cube Notation (PCN)
Tautology Checking
Recursive Tautology
Concrete data structure
URP (Unate Recursive Paradigm)
Tautology
F acd bcd abd acd cd ac
ad bcd abd abc
Given a cover F, we want to know if F = 1? NOT EASY !!!
1311
3111
2132
2322
F=
3321
1323
1332
3212
2231
2213
== 1?
53
bc
a’
ab
Is this a minimal representation?
NO
Anding Two Cubes
and getting 00 (void)
means kill the cube
a’
bc
[a b c]
a’ = [10 11 11]
[a b c]
bc = [11 01 01]
EX: f(a,b,c) = a’ + bc + ab [10 11 11], [11 01 01], [01 01 11]
What if the function I am looking at is too complex?
Break it into two pieces (cofactors) thereby decomposing it into simpler problems!!
Steps
a1
abd
bc’
c1
[11 01 11 01] (change 01 to 11)
[01 01 11 01] (nothing!)
[11 01 10 11] (nothing !)
Cube Vanishes!!
is unate? Why?
Because you see variable ‘a’ but not a’ you see c’ but not c …
is not unate? Why?
Because you see variable ‘x’ and x’ … but it is unate in variable y!!
Analogy to Continuous Functions?
x1
x2
A Boolean function is called
positive unate in x if the variable
x orginally 0 changes to 1 and
therefore the value of f(…,x,…)
will remain flat or increases from
0 to 1
a
b’c
ac
a
b’c
bc
Why do we care
about this result?
1
1
1
1 1
1
1
1
1
Tautology
Not a Tautology
You can have many rules but
It will be computationally
Expensive to check all of them!!
x
x’
x + x’ = 1
The Binate Select Heuristic
Example Unate and non-unate covers:
a b c d
G = ac+cd
1 - 1 - - 1 0
F = ac+cd+bcd
a
1
-
b
1
c
1
0
1
d
1
0
is unate
is not unate
=> Choose c for splitting!
•
•
The binate variables of a cover are those with both 1’s and 0’s 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.
66
Heuristic !!
Rules of
Termination
Selection Rule ..
Recursion ..
Generic 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;
}
69
when we set a=1
when we set a=0
b [11 01 11]
c [11 11 01]
b’c’[11 10 10]
fourth disappears
Should we Stop?
73
Tautology …
n
Check if a function is always TRUE.
n
Plays an important role in all algorithms for logic optimization.
n
Recursive paradigm
• Expand about a variable.
• If all cofactors are TRUE then function is a tautology.
n
TAUTOLOGY
• The cover has a row of all 1s (Tautology cube).
• The cover depends on one variable only, and there is no column of
0s in that field.
n
NO TAUTOLOGY
• The cover has a column of 0s (A variable that never takes a certain
value).
n
When a cover is the union of two subcovers that depend on
disjoint subsets of variables, then check tautology in both
subcovers.
74
… Tautology
n
Unate heuristics
• If cofactors are unate functions, additional criteria to
•
determine tautology.
Faster decision.
n
A cover is not tautology if it is unate and there is not a
row of all 1’s.
n
If a function is expanded in a unate variable, only one
cofactor needs to be checked for tautology
• Positive unate in variable xi, fxi fxi’ ; only fxi’ needs to be
•
checked for tautology.
Negative unate in variable xi, fxi fxi’ ; only fxi needs to be
checked for tautology.
75
Tautology Example
n
n
f = ab+ac+ab’c’ +a’
Select variable a.
• Cofactor w.r.to a’
•
n
Cofactor w.r.to a is:
Select variable b.
• Cofactor w.r. to b’ is:
•
n
• 11 11 11 => Tautology.
• Depends on a single variable, no column of 0’s => Tautology.
Cofactor w.r. to b is: 11 11 11 => Tautology
Function is a TAUTOLOGY.
76