1/page - 6.004

Synthesis of Combinational Logic
A
B
• 
• 
• 
• 
• 
• 
Sum of products
Inverting logic
Logic minimization
Karnaugh Maps
Muxes/Table Lookup
Read-only Memories
6.004 Computation Structures
Today’s handouts:
•  Lecture slides
Notes:
•  Lab #1 due Thursday
L4: Logic Synthesis, Slide #1
Functional Specifications
There are many ways of specifying the function of a
combinational device, for example:
A
B
C
Argh… I’m tired of word games
If C is 1 then
copy B to Y,
otherwise copy
A to Y
Y
Truth Table
Concise alternatives:
•  truth tables are a concise description of the
combinational system’s function.
•  Boolean expressions form an algebra in whose
operations are AND (multiplication), OR
(addition), and inversion (overbar).
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
Y
0
1
0
1
0
0
1
1
Y = CBA + CBA + CBA + CBA
Any combinational (Boolean) function can be specified as
a truth table or an equivalent sum-of-products Boolean
expression!
6.004 Computation Structures
L4: Logic Synthesis, Slide #2
Here’s a Design Approach
Truth Table
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
Y
0
1
0
1
0
0
1
1
-it’s systematic!
-it works!
-it’s easy!
-are we done yet???
6.004 Computation Structures
1. Write out our functional spec as a
truth table
2. Write down a Boolean expression with
terms covering each ‘1’ in the output:
Y = CBA + CBA + CBA + CBA
3. Wire up the gates, call it a day, and
declare success!
This approach will always give us
Boolean expressions in a particular form:
SUM-OF-PRODUCTS
L4: Logic Synthesis, Slide #3
Sum-of-products Building Blocks
A Z
INVERTER:
A
€
Z = A⋅ B
B
€
€
€
Z = A+ B
B
€
€
1
1
0
0
0
0
0
1
0
1
0
0
1
1
1
A B Z
A
OR:
0
A B Z
€
A
AND:
6.004 Computation Structures
Z=A
€
0
0
0
0
1
1
1
0
1
1
1
1
L4: Logic Synthesis, Slide #4
Straightforward Synthesis
We can implement
SUM-OF-PRODUCTS
with just three levels of
Logic:
1. Inverters
2. ANDs
3. OR
A
B
C
A
B
C
Y
A
B
C
A
B
C
Propagation delay -No more than 3 gate delays? *
*assuming gates with an arbitrary number of inputs
which, as we’ll see, isn’t a good assumption!
6.004 Computation Structures
L4: Logic Synthesis, Slide #5
ANDs and ORs with > 2 Inputs
Replace 2-input AND gates with 2input OR gates to create large fan-in
OR gates
A
B
C
€
€
€
€
€
€
€
€
€
Chain: Propagation delay
increases linearly with number
of inputs
€
A
B
C
D
Z = A⋅ B⋅C⋅ D
Which one should I use?
€
A
B
Z = A⋅ B⋅C⋅ D
C
D
6.004 Computation Structures
€
€
Z = A⋅ B⋅C
€
Tree: Propagation delay increases
logarithmically with number of inputs
L4: Logic Synthesis, Slide #6
More Building Blocks
NAND (not AND)
A
Z = A⋅ B
B
0 0 1
0 1 1
A
1 0 1
B
1 1 0
Z = A+ B
0 1 0
1 0 0
1 1 0
€
€
€ outputs and vice-versa,
In a CMOS gate, rising inputs lead to falling
so CMOS gates are naturally€inverting. Want to use NANDs and NORs
€
€
A B Z
NOR (not OR)
0 0 1
€
€
A B Z
in CMOS designs…
XOR (exclusive OR)
A B Z
0
A
0
0
Z=A⊕B 0 1 1
B
€
6.004 Computation Structures
1
0
1
1
1
0
XOR is very useful when
implementing parity and arithmetic
logic. Also used as a “programmable
inverter”: if A=0, Z=B; if A=1, Z=~B
Wide fan-in XORs can be created with
chains or trees of 2-input XORs.
L4: Logic Synthesis, Slide #7
Universal Building Blocks
NANDs and NORs are universal:
=
=
=
=
=
=
Any logic function can be implemented using only
NANDs (or, equivalently, NORs). Note that chaining/
treeing technique doesn’t work directly for creating
wide fan-in NAND or NOR gates. But such gates can
be created with trees involving both NANDs, NORs and
inverters.
6.004 Computation Structures
L4: Logic Synthesis, Slide #8
CMOS
♥︎ Inverting Logic
http://6004.mit.edu/currentsemester/handouts/tool_docs/stdcell.html
AND4:
tPD = 0.16 ns, size = 20μ2
NAND4 + INV:
tPD = 0.09 ns, size = 27μ2
Demorgan’s A ⋅ B = A + B
Laws: A + B = A ⋅ B
2*NAND2 + NOR2:
tPD = 0.08 ns, size = 30μ2
6.004 Computation Structures
L4: Logic Synthesis, Slide #9
CMOS Sum-of-products Implementation
“Pushing Bubbles”
AB=A+B
NAND-NAND
C
C
A
A
≡
Y
B
NOR-NOR
B
AC + AB + BC
AB=A+B
C
C
A
A
Y
B
You might think all these extra inverters
would make this structure less attractive.
However, quite the opposite is true.
6.004 Computation Structures
≡
Y
Y
B
AC + AB + BC
L4: Logic Synthesis, Slide #10
Logic Simplification
Can we implement the same function with fewer gates? Before
trying we’ll add a few more tricks in our bag.
BOOLEAN ALGEBRA:
OR rules:
a + 1 = 1, a + 0 = a, a + a = a
AND rules:
a1 = a, a0 = 0, aa = a
Commutative:
a + b = b + a, ab = ba
Associative:
(a + b) + c = a + (b + c), (ab)c = a(bc)
Distributive:
a(b+c) = ab + ac, a + bc = (a+b)(a+c)
Complements:
Absorption:
a + a = 1, aa = 0
a + ab = a, a + ab = a + b
Reduction:
ab + ab = b, (a + b)(a + b) = b
DeMorgan’s Law: a + b = ab,
6.004 Computation Structures
a(a + b) = a, a(a + b) = ab
ab = a + b
L4: Logic Synthesis, Slide #11
Boolean Minimization
Can’t he come up
with a new example???
Let’s (again!) simplify
Y = C B A + CB A + CBA + C BA
Using the identity
αA + α A = α
For any expression
α and variable A:
Y = C B A + CB A + CBA + C BA
Hey, I could write
A program to do
That!
Y = C B A + CB + C BA
Y = C A + CB
6.004 Computation Structures
L4: Logic Synthesis, Slide #12
The Case for a Non-minimal SOP
A(1)
C(1)
C B A Y
0 0 0 0
B(1)
0 0 1 1
0 1 0 0
0
0
Y(1)
1
A
B
C
Y
That’s
what we
call a
“glitch” or
“hazard”
Y = C A + CB
CA
NOTE: The steady state
behavior of these circuits is
identical. They differ in their
transient behavior.
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
BA
6.004 Computation Structures
A
C
CB
Y
B
A
B
C
Y
Y = CA + CB + AB
Now it’s
LENIENT!
L4: Logic Synthesis, Slide #13
Truth Tables with “Don’t Cares”
One way to reveal the opportunities for a more compact
implementation is to rewrite the truth table using “don’t
cares” (-- or X) to indicate when the value of a particular input is
irrelevant in determining the value of the output.
C B A Y
C B A Y
0 0 0 0
0 -- 0 0
0 0 1 1
0 1 0 0
0 1 1 1
0 -- 1 1
1 0 -- 0
1 0 0 0
1 1 -- 1
1 0 1 0
-- 0 0 0
1 1 0 1
-- 1 1 1
1 1 1 1
6.004 Computation Structures
CA
CB
Note: Some input
combinations (e.g.,
000) are matched by
more than one row in
the “don’t care” table.
It would be a bug if all
the matching rows
didn’t specify the
same output value!
BA
L4: Logic Synthesis, Slide #14
Karnaugh Maps: A Geometric Approach
K-Map: a truth table arranged so that terms which differ by exactly one
variable are adjacent to one another so we can see potential reductions
easily.
Here’s the layout of a 3-variable K-map
Truth Table
filled in with the values from our truth
C A B Y
Why did he
table:
shade that
0
0
0
0
0
0
1
0
0
1
0
1
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
0
1
1
1
1
C\AB 00
01
11
10
0
0
0
1
1
1
0
1
1
0
row Gray?
010
It’s cyclic. The left edge is adjacent to the
right edge. (It’s really just a flattened out
cube).
6.004 Computation Structures
000
110
100
011
001
111
101
L4: Logic Synthesis, Slide #15
On To Hyperspace
4-variable K-map for a multipurpose
logic gate:
A ×B
if CD = 00
A +B
if CD = 01
B
if CD = 10
Y =
A
⊕
B
if CD = 11
\AB
CD\
00
01
11
10
00 01 11 10
0
0
1
0
0
1
1
1
0
1
0
1
1
0
0
1
Again it’s cyclic. The left edge is adjacent to the right
edge, and the top is adjacent to the bottom.
6.004 Computation Structures
L4: Logic Synthesis, Slide #16
Finding Subcubes
We can identify clusters sharing “irrelevant” variables by
circling adjacent subcubes of 1s. A subcube is just a lower
dimensional cube.
C\AB 00
01
11
10
0
0
0
1
1
1
0
1
1
0
\AB
CD\
00
01
11
10
00 01 11 10
0
0
1
0
0
1
1
1
0
1
0
1
1
0
0
1
The best strategy is generally a greedy one.
- Circle the largest N-dimensional subcube (2N adjacent 1’s)
- Continue circling the largest remaining subcubes
(even if they overlap previous ones).
- Circle smaller and smaller subcubes until no 1s are left.
6.004 Computation Structures
L4: Logic Synthesis, Slide #17
Write Down Equations
Picking just enough clusters/subcubes to cover all the 1’s in the
KMap, write down a product term for the portion of each
cluster/subcube that is invariant.
C\AB 00
01
11
10
0
0
0
1
1
1
0
1
1
0
\AB
CD\
00
01
11
10
6.004 Computation Structures
00 01 11 10
0
0
1
0
0
1
1
1
0
1
0
1
1
0
0
1
Y = CA + CB
We’re done!
Y = ABC + ABD
+ ABD + BCD
L4: Logic Synthesis, Slide #18
Recap: K-map Minimization
1.  Copy truth table into K-Map
2.  Identify subcubes, selecting the largest available subcube at
each step, even if it involves some overlap with previous
cubes, until all ones are covered. (Try: 4x4, 2x4 and 4x2, 1x4
and 4x1, 2x2, 2x1 and 1x2, finally 1x1)
3.  Write down the minimal SOP realization
JARGON: The circled terms are called
implicants. An implicant not completely
contained in another implicant is called a
prime implicant.
Truth Table
C
B
A
Y
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
0
1
1
0
1
1
1
1
1
6.004 Computation Structures
C\BA 00
01
11
10
0
0
1
1
0
1
0
0
1
1
Y = CA + CB
L4: Logic Synthesis, Slide #19
We’ve Been Designing a Mux
Truth Table
D0
0
D1
1
S
0
0
0
0
1
1
1
1
DS
S
2-input Multiplexer
MUXes can be generalized to
2k data inputs and k select
inputs …
D00
D01
D10
D11
00
01
10
11
S0
S1
6.004 Computation Structures
DS1S0
D1 D0
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
DS
0
1
0
1
0
0
1
1
… and implemented
as a tree of smaller
MUXes:
D00
D01
0
0
1
1
0
0
1
1
S
D10
D11
0
0
1
1
Y
S
S
S0
S1
L4: Logic Synthesis, Slide #20
Systematic Implementation Strategies
Consider implementation of some arbitrary Boolean function,
F(A,B,C) ... using a MULTIPLEXER as the only circuit element:
Full-Adder
Carry Out Logic
A
0
0
0
0
1
1
1
1
B Cin Cout
0 0 0
0 1 0
1 0 0
1 1 1
0 0 0
0 1 1
1 0 1
1 1 1
6.004 Computation Structures
0
0
0
1
0
1
1
1
A,B,Cin
0
1
2
3
4
5
6
7
Cout
L4: Logic Synthesis, Slide #21
Synthesis By Table Lookup
A
Muxes are universal!
B
10
0
01
1
AB Fn(A,B)
00
01
10
11
0
1
1
0
Y
=
A
Y
S
A
MUX
Logic
Fn(A,B)
00
0
B1
1
A
= B
Y
Y= A
B
Y
Y
S
A
Generalizing:
In theory, we can build any 1-output
combinational logic block with multiplexers.
2N
For an N-input function we need a _____ input
mux.
Is this practical for BIG truth tables?
How about 10-input function? 20-input?
B0
0
11
1
S
A
In future
technologies muxes
might be the
“natural gate”.
B0
0
B1
1
Y
What
does that
one do?
S
6.004 Computation Structures
A
L4: Logic Synthesis, Slide #22
A New Combinational Device
D0
D1
DECODER:
•  k SELECT inputs,
•  N = 2k DATA OUTPUTs.
Select inputs choose one of the
DN-1 Dj to assert HIGH, all others
will be LOW,,
k
Have I
mentioned
that HIGH
is a synonym
for ‘1’ and
LOW means
the same
as ‘0’
NOW, we are well on our way to building a
general purpose table-lookup device.
We can build a 2-dimensional ARRAY of
decoders and selectors as follows ...
6.004 Computation Structures
L4: Logic Synthesis, Slide #23
Read-only Memory (ROM)
Each column is large fan-in “NOR”
Note location of pulldowns correspond
to a “1” output in the truth table!
Full Adder
A B
Co
FA
Ci
000
S
A
B
Ci
S
Co
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
6.004 Computation Structures
Shared
decoder
001
010
011
100
101
110
For K inputs,
decoder produces 2K
signals, only 1 of
which is asserted at
a time -- think of it
as one signal for
each possible
product term.
111
A
B
CIN
S
COUT
One column
for each
output
L4: Logic Synthesis, Slide #24
Read-only Memory (ROM)
Full Adder
LONG LINES slow down propagation
times…
A B
Co
FA
The best way to improve this is to build
square arrays, using some inputs to
drive output selectors (MUXes):
Ci
S
A
B
Ci
S
Co
00
0
0
0
0
0
01
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
10
A
B
CIN
11
0
1
S
0
1
COUT
2D Addressing: Standard for ROMs, RAMs, logic arrays…
6.004 Computation Structures
L4: Logic Synthesis, Slide #25
Logic According to ROMs
ROMs ignore the structure of combinational functions ...
• Size, layout, and design are independent of function
• Any Truth table can be “programmed” by
minor reconfiguration:
- Metal layer (masked ROMs)
- Fuses (Field-programmable PROMs)
- Charge on floating gates (EPROMs)
... etc.
ROMs tend to
generate “glitchy”
outputs. WHY?
Model: LOOK UP value of function in truth table...
Inputs: “ADDRESS” of a T.T. entry
ROM SIZE = # TT entries...
2N x #outputs
... for an N-input boolean function, size ≅ __________
6.004 Computation Structures
L4: Logic Synthesis, Slide #26
Summary
•  Sum of products
•  Any function that can be specified by a truth table or,
equivalently, in terms of AND/OR/NOT (Boolean expression)
•  “3-level” implementation of any logic function
•  Limitations on number of inputs (fan-in) increases depth
•  SOP implementation methods
•  NAND-NAND, NOR-NOR
•  Muxes used to build table-lookup
implementations
•  Easy to change implemented function -- just change
constants
•  ROMs
•  Decoder logic generates all possible product terms
•  Selector logic determines which terms are ORed together
6.004 Computation Structures
L4: Logic Synthesis, Slide #27