![Page 1: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/1.jpg)
Introduction toCMOS VLSI
Design
Datapath Functional Units
![Page 2: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/2.jpg)
Datapath Slide 2CMOS VLSI Design
Outline Comparators Shifters Multi-input Adders Multipliers
![Page 3: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/3.jpg)
Datapath Slide 3CMOS VLSI Design
Comparators 0’s detector: A = 00…000 1’s detector: A = 11…111 Equality comparator: A = B Magnitude comparator: A < B
![Page 4: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/4.jpg)
Datapath Slide 4CMOS VLSI Design
1’s & 0’s Detectors 1’s detector: N-input AND gate 0’s detector: NOTs + 1’s detector (N-input NOR)
A0
A1
A2
A3
A4
A5
A6
A7
allones
A0
A1
A2
A3
allzeros
allones
A1
A2
A3
A4
A5
A6
A7
A0
![Page 5: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/5.jpg)
Datapath Slide 5CMOS VLSI Design
Equality Comparator Check if each bit is equal (XNOR, aka equality gate) 1’s detect on bitwise equality
A[0]B[0]
A = B
A[1]B[1]
A[2]B[2]
A[3]B[3]
![Page 6: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/6.jpg)
Datapath Slide 6CMOS VLSI Design
Magnitude Comparator Compute B-A and look at sign B-A = B + ~A + 1 For unsigned numbers, carry out is sign bit
A0
B0
A1
B1
A2
B2
A3
B3
A = BZ
C
A B
N A B
![Page 7: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/7.jpg)
Datapath Slide 7CMOS VLSI Design
Signed vs. Unsigned For signed numbers, comparison is harder
– C: carry out– Z: zero (all bits of A-B are 0)– N: negative (MSB of result)– V: overflow (inputs had different signs, output sign B)
![Page 8: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/8.jpg)
Datapath Slide 8CMOS VLSI Design
Shifters Logical Shift:
– Shifts number left or right and fills with 0’s• 1011 LSR 1 = ____ 1011 LSL1 = ____
Arithmetic Shift:– Shifts number left or right. Rt shift sign extends
• 1011 ASR1 = ____ 1011 ASL1 = ____ Rotate:
– Shifts number left or right and fills with lost bits• 1011 ROR1 = ____ 1011 ROL1 = ____
![Page 9: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/9.jpg)
Datapath Slide 9CMOS VLSI Design
Shifters Logical Shift:
– Shifts number left or right and fills with 0’s• 1011 LSR 1 = 0101 1011 LSL1 = 0110
Arithmetic Shift:– Shifts number left or right. Rt shift sign extends
• 1011 ASR1 = 1101 1011 ASL1 = 0110 Rotate:
– Shifts number left or right and fills with lost bits• 1011 ROR1 = 1101 1011 ROL1 = 0111
![Page 10: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/10.jpg)
Datapath Slide 10CMOS VLSI Design
Funnel Shifter A funnel shifter can do all six types of shifts Selects N-bit field Y from 2N-bit input
– Shift by k bits (0 k < N)
B C
offsetoffset + N-1
0N-12N-1
Y
![Page 11: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/11.jpg)
Datapath Slide 11CMOS VLSI Design
Funnel Shifter Operation
Computing N-k requires an adder
![Page 12: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/12.jpg)
Datapath Slide 12CMOS VLSI Design
Funnel Shifter Operation
Computing N-k requires an adder
![Page 13: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/13.jpg)
Datapath Slide 13CMOS VLSI Design
Funnel Shifter Operation
Computing N-k requires an adder
![Page 14: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/14.jpg)
Datapath Slide 14CMOS VLSI Design
Funnel Shifter Operation
Computing N-k requires an adder
![Page 15: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/15.jpg)
Datapath Slide 15CMOS VLSI Design
Funnel Shifter Operation
Computing N-k requires an adder
![Page 16: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/16.jpg)
Datapath Slide 16CMOS VLSI Design
Simplified Funnel Shifter Optimize down to 2N-1 bit input
![Page 17: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/17.jpg)
Datapath Slide 17CMOS VLSI Design
Simplified Funnel Shifter Optimize down to 2N-1 bit input
![Page 18: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/18.jpg)
Datapath Slide 18CMOS VLSI Design
Simplified Funnel Shifter Optimize down to 2N-1 bit input
![Page 19: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/19.jpg)
Datapath Slide 19CMOS VLSI Design
Simplified Funnel Shifter Optimize down to 2N-1 bit input
![Page 20: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/20.jpg)
Datapath Slide 20CMOS VLSI Design
Simplified Funnel Shifter Optimize down to 2N-1 bit input
![Page 21: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/21.jpg)
Datapath Slide 21CMOS VLSI Design
Funnel Shifter Design 1 N N-input multiplexers
– Use 1-of-N hot select signals for shift amount
– nMOS pass transistor design (Vt drops!)k[1:0]
s0s1s2s3Y3
Y2
Y1
Y0
Z0Z1Z2Z3Z4
Z5
Z6
left Inverters & Decoder
![Page 22: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/22.jpg)
Datapath Slide 22CMOS VLSI Design
Funnel Shifter Design 2 Log N stages of 2-input muxes
– No select decoding needed
Y3
Y2
Y1
Y0Z0
Z1
Z2
Z3
Z4
Z5
Z6
k0k1
left
![Page 23: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/23.jpg)
Datapath Slide 23CMOS VLSI Design
Multi-input Adders Suppose we want to add k N-bit words
– Ex: 0001 + 0111 + 1101 + 0010 = _____
![Page 24: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/24.jpg)
Datapath Slide 24CMOS VLSI Design
Multi-input Adders Suppose we want to add k N-bit words
– Ex: 0001 + 0111 + 1101 + 0010 = 10111
![Page 25: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/25.jpg)
Datapath Slide 25CMOS VLSI Design
Multi-input Adders Suppose we want to add k N-bit words
– Ex: 0001 + 0111 + 1101 + 0010 = 10111 Straightforward solution: k-1 N-input CPAs
– Large and slow
+
+
0001 0111
+
1101 0010
10101
10111
![Page 26: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/26.jpg)
Datapath Slide 26CMOS VLSI Design
Carry Save Addition A full adder sums 3 inputs and produces 2 outputs
– Carry output has twice weight of sum output N full adders in parallel are called carry save adder
– Produce N sums and N carry outsZ4Y4X4
S4C4
Z3Y3X3
S3C3
Z2Y2X2
S2C2
Z1Y1X1
S1C1
XN...1 YN...1 ZN...1
SN...1CN...1
n-bit CSA
![Page 27: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/27.jpg)
Datapath Slide 27CMOS VLSI Design
CSA Application Use k-2 stages of CSAs
– Keep result in carry-save redundant form Final CPA computes actual result
4-bit CSA
5-bit CSA
0001 0111 1101 0010
+
10110101_
0001 0111+1101 10110101_
XYZSC
0101_ 1011 +0010
XYZSC
ABS
![Page 28: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/28.jpg)
Datapath Slide 28CMOS VLSI Design
CSA Application Use k-2 stages of CSAs
– Keep result in carry-save redundant form Final CPA computes actual result
4-bit CSA
5-bit CSA
0001 0111 1101 0010
+
10110101_
01010_ 00011
0001 0111+1101 10110101_
XYZSC
0101_ 1011 +0010 0001101010_
XYZSC
01010_+ 00011
ABS
![Page 29: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/29.jpg)
Datapath Slide 29CMOS VLSI Design
CSA Application Use k-2 stages of CSAs
– Keep result in carry-save redundant form Final CPA computes actual result
4-bit CSA
5-bit CSA
0001 0111 1101 0010
+
10110101_
01010_ 00011
0001 0111+1101 10110101_
XYZSC
0101_ 1011 +0010 0001101010_
XYZSC
01010_+ 00011 10111
ABS
10111
![Page 30: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/30.jpg)
Datapath Slide 30CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510
![Page 31: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/31.jpg)
Datapath Slide 31CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510 1100
![Page 32: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/32.jpg)
Datapath Slide 32CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510 1100 0000
![Page 33: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/33.jpg)
Datapath Slide 33CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510 1100 0000 1100
![Page 34: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/34.jpg)
Datapath Slide 34CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510 1100 0000 1100 0000
![Page 35: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/35.jpg)
Datapath Slide 35CMOS VLSI Design
Multiplication Example: 1100 : 1210
0101 : 510 1100 0000 1100 000000111100 : 6010
![Page 36: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/36.jpg)
Datapath Slide 36CMOS VLSI Design
Multiplication Example:
M x N-bit multiplication– Produce N M-bit partial products– Sum these to produce M+N-bit product
1100 : 1210 0101 : 510 1100 0000 1100 000000111100 : 6010
multiplier
multiplicand
partialproducts
product
![Page 37: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/37.jpg)
Datapath Slide 37CMOS VLSI Design
General Form Multiplicand: Y = (yM-1, yM-2, …, y1, y0)
Multiplier: X = (xN-1, xN-2, …, x1, x0)
Product:
1 1 1 1
0 0 0 0
2 2 2M N N M
j i i jj i i j
j i i j
P y x x y
x0y5 x0y4 x0y3 x0y2 x0y1 x0y0
y5 y4 y3 y2 y1 y0
x5 x4 x3 x2 x1 x0
x1y5 x1y4 x1y3 x1y2 x1y1 x1y0
x2y5 x2y4 x2y3 x2y2 x2y1 x2y0
x3y5 x3y4 x3y3 x3y2 x3y1 x3y0
x4y5 x4y4 x4y3 x4y2 x4y1 x4y0
x5y5 x5y4 x5y3 x5y2 x5y1 x5y0
p0p1p2p3p4p5p6p7p8p9p10p11
multiplier
multiplicand
partialproducts
product
![Page 38: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/38.jpg)
Datapath Slide 38CMOS VLSI Design
Dot Diagram Each dot represents a bit
partial products
multiplier x
x0
x15
![Page 39: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/39.jpg)
Datapath Slide 39CMOS VLSI Design
Array Multipliery0y1y2y3
x0
x1
x2
x3
p0p1p2p3p4p5p6p7
B
ASin Cin
SoutCout
BA
CinCout
Sout
Sin
=
CSAArray
CPA
critical path BA
Sout
Cout CinCout
Sout
=Cin
BA
![Page 40: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/40.jpg)
Datapath Slide 40CMOS VLSI Design
Rectangular Array Squash array to fit rectangular floorplan
y0y1y2y3
x0
x1
x2
x3
p0
p1
p2
p3
p4p5p6p7
![Page 41: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/41.jpg)
Datapath Slide 41CMOS VLSI Design
Fewer Partial Products Array multiplier requires N partial products If we looked at groups of r bits, we could form N/r
partial products.– Faster and smaller?– Called radix-2r encoding
Ex: r = 2: look at pairs of bits– Form partial products of 0, Y, 2Y, 3Y– First three are easy, but 3Y requires adder
![Page 42: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/42.jpg)
Datapath Slide 42CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 43: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/43.jpg)
Datapath Slide 43CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 44: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/44.jpg)
Datapath Slide 44CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 45: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/45.jpg)
Datapath Slide 45CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 46: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/46.jpg)
Datapath Slide 46CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 47: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/47.jpg)
Datapath Slide 47CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 48: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/48.jpg)
Datapath Slide 48CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 49: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/49.jpg)
Datapath Slide 49CMOS VLSI Design
Booth Encoding Instead of 3Y, try –Y, then increment next partial
product to add 4Y Similarly, for 2Y, try –2Y + 4Y in next partial product
![Page 50: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/50.jpg)
Datapath Slide 50CMOS VLSI Design
Booth Hardware Booth encoder generates control lines for each PP
– Booth selectors choose PP bits
Mi
yj
Xi
yj-1
2Xi
PPij
BoothSelector
BoothEncoder
x2i+1
x2i
x2i-1
![Page 51: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/51.jpg)
Datapath Slide 51CMOS VLSI Design
Sign Extension Partial products can be negative
– Require sign extension, which is cumbersome– High fanout on most significant bit
multiplier x
x0
x15
0
00
x-1
x16x17
ssssssssssssssss
ssssssssssssss
ssssssssssss
ssssssssss
ssssssss
ssssss
ssss
ss
PP0
PP1
PP2
PP3
PP4
PP5
PP6
PP7
PP8
![Page 52: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/52.jpg)
Datapath Slide 52CMOS VLSI Design
Simplified Sign Ext. Sign bits are either all 0’s or all 1’s
– Note that all 0’s is all 1’s + 1 in proper column– Use this to reduce loading on MSB
s111111111111111s
s1111111111111s
s11111111111s
s111111111s
s1111111s
s11111s
s111s
s1s
PP0
PP1
PP2
PP3
PP4
PP5
PP6
PP7
PP8
![Page 53: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/53.jpg)
Datapath Slide 53CMOS VLSI Design
Even Simpler Sign Ext. No need to add all the 1’s in hardware
– Precompute the answer!
ssss
ss1
ss1
ss1
ss1
ss1
ss1
ss
PP0PP1PP2PP3PP4PP5PP6PP7PP8
![Page 54: Introduction to CMOS VLSI Design Datapath Functional Units](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d745503460f94a54512/html5/thumbnails/54.jpg)
Datapath Slide 54CMOS VLSI Design
Advanced Multiplication Signed vs. unsigned inputs Higher radix Booth encoding Array vs. tree CSA networks