Professional Documents
Culture Documents
FIFO Example
We will now try to put together the concepts of:
Cell based design Super Buffer Clock trees IP reuse Getting a chip into a Pad frame
FIFO
Simple, Regular
EE166 FIFO Example 2
Getting Started
The first thing we must do is decide the pins in an actual pad frame with the package. This will give us the context we need to make intelligent decisions about routing.
Packaged Part
Pin# Pin Name Pin# Pin Name 1 VDD 40 Y0 2 CK 39 Y1 3 NPRE 38 Y2 4 NCLR 37 Y3 5 A0 36 Y4 6 A1 35 Y5 7 A2 34 Y6 8 A3 33 Y7 9 A4 32 Y8 10 A5 31 Y9 11 A6 30 Y10 12 A7 29 Y11 13 A8 28 Y12 14 A9 27 Y13 15 A10 26 Y14 16 A11 25 Y15 17 A12 24 UNUSED 18 A13 23 UNUSED 19 A14 22 UNUSED 20 A15 21 GND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 DP40 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
You can get more area buy using less pins. (Read Data in serially?) You can have larger circuits but they use up more MOSIS money
Bonding Diagram
Saving Space
We could get rid of not clock by adding an inverter and save 3m.
We could overlay the clock and reset signals and save 10m.
Trade offs
Replacing not clock with an inverter.
New Cell Height 33 (450/33 gives 13) New Cell Width 72+8 (900/ gives 11) Routing is easier Do not have to worry about skew between not clock and clock Will the power go up?
Maybe. You would need another super buffer to drive not clock. In this case you only need one.
EE166 FIFO Example 10
Trade offs
Overlay the reset and clock signals
New average Cell Height 31 (450/31 gives 14) No New Cell Width Need two DFF parts one flipped with different wiring to the global signals one unchanged
We already need two type of FF one with D and not D and the other with D input only. This would make 4 different FF!
EE166 FIFO Example 11
Trade offs
Overlay the ground signals
New average Cell Height 34.5 (450/34.5 gives 13) No New Cell Width Electro migration?
Nothing works!
We have to try it all! Still only 15 wide! We could shrink height by 3m which would give us 16 bits wide but then AOI logic would not fit into the cell height. We beg the senior engineer for 50m more space.
EE166 FIFO Example
12
40 min
20 min
4 DFFs
5 min
Not D Internal Not D External Routing UP DFF_DI_RU DFF_DE_RU Routing Down DFF_DI_RD DFF_DE_RD
7 min
All The FFs need to have the Not clock removed! Need to have to verify 4 new parts from one old part! This will take some time! No choice. New Average Cell Height 31.375 16 bits high will give less than 500 microns so it it will fit in the expanded space.
EE166 FIFO Example 13
14
15
CK
NCLR
NPRE
DFF_DI_RU
16
DFF_DI_RD
CK NPRE NCLR
EE166 FIFO Example 17
DFF_DE_RU
18
DFF_DE_RU
D ND
19
DFF_DE_RD
D ND
Q QN
20
DFF_INV
21
Design Review
After looking at the parts so far it looks like there could be an electro migration problem where the VDD is bought into the circuit
Since all the FF use the same basic parts, We just have to fix it once in each cell. You can even edit it in place! I had to flatten the NTAP to do this. I had to add some nwell due to a DRC error.
EE166 FIFO Example 22
23
The power for an alfa of one and 3360 Inverters is 58mW We know that not all transistors do not switch every clock cycle so this is an upper bound.
EE166 FIFO Example 25
FIFO Schematic
Start off with the basic structure that can be copied and pasted.
27
FIFO Schematic
Hard to see!
28
29
FIFO Symbol
30
31
32
33
Input Vectors
34
Input Vectors
35
Input Vectors
36
Output
37
Output
38
Spice Summary
The circuits has been validated The simulation took about 10 minutes to run!
39
Layout
40
41
42
VDD
GND
DATA FLOW
43
44
45
Sample Padframe
Load in a sample padframe. To change a pin just select it and press q for edit, and then change the same to what you want.
47
48
Not correct!
Pin 26
EE166 FIFO Example 49
50
FIFO_PF
After you make a padframe open up a new cell and add the the instance of your padframe. Then add pins.
51
Finished pin
FIFO_PF Layout
Parts:
Super buffer for clock FIFO Padframe
54
PAD I/O
OEN: Output enable DO: sends output to pad DIB: inverts data coming from the pad DI: does not invert data coming in from the pad
OEN
DO
DB
DI
55
PAD VDD/GND
GND
56
57
DRC
The pads do not pass DRC. Pads are an exception to the rule, and these pads have proven themselves in the field. We have to do DRC on everything else.
Draw a Do not do DRC layer around the pads with the edge of the pads just over the metal 2 connection (We want to make sure we are connect right?)
EE166 FIFO Example 58
59
FIF0_PF Symbol
FIF0_PF_TB
61
Simulation Trouble
I ran into some major trouble that took two days to fix.
The pad frame I had built was off a little bit It takes 3 minutes to extract and almost 10 minutes to simulation (Then you see an error.) That is almost 15 minutes to try each solution. Also the pad frame kept moving on me when I would inadvertently moved it when I was zoomed in on a small feature.
EE166 FIFO Example 62
Solutions
Start off with just the pad frame and just wire the input and outputs together and see if it acts like a buffer. Build the pad frame in the top most cell.
Put all the parts in the center. Select everything inside the pad frame and make it a cell. Edit the cell in place.
Do the shortest simulation possible to make sure everything is connected (Like a reset or set operation) You can probe the extracted wires by descend editing to the extracted view and selecting the wire you want. Get the pad frame working on its own in parallel with the circuit design.
EE166 FIFO Example 63
The rise time on the when NPRE goes low is 4ns! The output Y seems ok and since the circuit is supposed to work at 30 MHz I will not try to buffer the signal. This simulation ran for 8mins 40 secs to get 20ns
64
65
Analysis
Point A is when NCLR goes low thus changing the state of every FF (notice the power surge Point B is when NCLR goes high and the FIFO begins to fill Point C is when the all the FF are turning on at the same time. (Note the power surge.) We will take the average power from ~600 to 700ns, and average over 4 clock cycles. Average Power 305mW/4 gives 76mW
EE166 FIFO Example 66
Outputs Y15-Y8
10 Clock Cycles for Y to get A after NCLR goes high. A B
67
Outputs Y7-Y0
68
Inputs A15-A8
69
Inputs A7-A0
70
A15 GND
F L O W
Y15
EE166 FIFO Example 71
72
Design Statistics
DRC Extract Time to Simulation Design Part #Transistors Time Time Simulate time time DFF_INV 2 1 1 6 4 0.08333333 DFF 42 1 1 6 8 1.2 FIFO 6720 41 101 519 40 8 FIFO 9636 55 227 1949 720 24 CHIP
This does not include the time to write the documentation. The total project took somewhere between 40 to 60 hours. This means that documentation can take a lot of time. The numbers do not add up but one can easily see that the time required to complete a step goes up at the best linearly with # of transistors and at worst exponentially! EE166 FIFO Example 73 You need to plan accordingly!
200
Time (s)
50
74
2000
Time(s)
500
75
Time(hours)
76
77
Design Review
Clock Rate:30MHz Power:76mW Area : 1500m x 1500m=2.25x106m Power Density:76mW/Area gives .33 3x10-7 W/m2 . No cooling required!
2.3x10-7 W/m2 no cooling 1.0x10-6 W/m2 with expensive cooling
EE166 FIFO Example 78
Lessons Learned
Design re-use is a faster method of design. Getting the circuit into a pad frame can take a large amount of time.
Get pad frame done before you need it.
Verilog simulation are very fast but give no timing data unless it is built in. The project will all ways take longer than expected! (even if you plan for it!)
EE166 FIFO Example 79