6: Placing circuit layouts
by copying the library, Tutorial_5, into a new library called
Tutorial_6.Ensure, when you copy, that “update instances” is selected
so that the new library doesn’t reference cells in the other libraries.
Create a new layout cell called "pad"
If we have 12 pad cells on a side (10 plus two corners) then each cell
must be 1.5mm/12 or 125 um.
In order to ensure this pad falls on the 0.15 um grid let’s reduce the
pad cell size to 120 um.
This also ensures that the final chip size is smaller than the 1.5 mm
square size we are allowed.
Select the pad layer and add an arbitrary size rectangle as seen below.
The pad layer has no fabrication significance (so you really don’t need
We’ll use the pad layer as an outline for the cell. We could also use
the text layer for a cell outline.
Next edit the rectangle’s properties so that it is 120 um square
centered upon the origin.
a metal3 square that is 75 um square and an overglass (called glass)
layer that is 6um smaller or a size of 63 um square. Notice that
both 75 and 63 are divisible by .15, this is to ensure that when we DRC
we have no off the grid errors. Add both of the rectangles
centered around the origin. DRC then save.
Next, add a pin called "pad". The pin will be made out of metal3 and
pin's rectangle will cover the original metal3 square. The pin
will have a direction of inputOutput.
Select the pin name and set its height to 18 um.
DRC and save the layout.
Next create a new layout cell called "padframe" and instantiate the pad
cell into it.
Make a pin out of the metal3 layer called pin<1> with a direction
of inputOutput. Make the pin the same size and the metal3
layer. Ensure that Display Pin Name is selected. Then set the
text height to 15 um.
It will look something like this:
Next copy the pad and the pin, the set the number of rows and
columns to 12.
Then click on the lower left hand corner of the layout.
Next, click on the lower right hand corner of the layout.
This ensures that the new cells are aligned.
Then drag the copies horizontally and when they are aligned perfectly
click. Finally click on the top right hand corner of the original pad.
This will align the copies vertically.
Its ok to make mistakes, to try again just hit "u".
Delete the middle, corners, and extra pads/pins to get the basic
padframe seen below.
DRC and save the layout of the padframe.
The padframe is likely bonded to the package with the configuration
seen below (the bonding diagram).
All of the pins in the above layout are labeled pin<1>. Change
the labels so that they match the bonding diagram seen below. For
example, pin 1 of the package corresponds to the 5th bonding pad from
the top on the right side of the die.
To make this go a bit faster set your display level stop to 0.
In order to change the name you have to click on the metal3 not the
text. This will take a moment. When you are finished DRC and
Next delete the pad layer from the pad layout cell. The yellow
boxes will disappear from the pad frame layout.
Let’s measure the size of the padframe (our chip) since we’ll need this
information if we submit to MOSIS. To use the ruler press "k" .
Using the ruler we get the following sizes (1.395 mm square).
Now generate an extracted view, then open it.
We now need to make the schematics for the pad and padframe layouts.
Make a schematic cell view in pad. Add a pin called "pad" with a
direction of inputOutput.
Check and Save the schematic.
Ignore the warning that the pin is floating.
Check and save the schematic again.
Note that an LVS can't be performed between the pad schematic and
layout since there are no devices (resistors, capacitors, transistors)
in the circuit.
Now create a new cell view from the current one. To create a
symbol for the pad.
Delete everything except the green box and the label "pad". Then rotate
the box, and save.
Close and save.
In padframe create a new schematic cell and place in it the pad cell
Then add an array of 40 to the name of the cell.
Add a pin with a name of "pin<1:40>" with a direction of
inputOutput. Connect the pin and pad with a wide wire and label
"pin<1:40>". check and save the schematic.
Now let's create a symbol for the padframe. Create a new cell
from a cellview.
Create the following symbol.
We are now ready to create our chip layout.
Create a new schematic cell view called "chip" and add all the symbols
we have created to it.
Add wires and label them as below the connections are arbitrary.
Note how we’ve used pin<20> for ground and pin<40> for
power(label on thick wire)
Don't forget to add vdd and gnd.
Check and save, you might have to move some parts around.
Ignore all the warnings then check and save again. If the warnings
reappear mouse over to "Check" then click on "Rule Setup"
In the popup window change Floating Nets to "ignored"
Then check and save.
We are ready to connect the cells up to the padframe in the layout.
Create of layout view of the “chip” cell.
Place the R_div, NMOS_IV, PMOS_IV, inverter, nand2, and ring oscillator
cells near the pads that they will connect to, below.
Draw a metal3 connection starting at pin<40> almost to the other
side. This will be our power in.
Then draw a metal3 from pin<20> and going almost to the other
side. This will be our ground.
Next draw the metal3 connections from the pins you selected in the
schematic. It does not have to be pretty. For example
below I have drawn the metal3 connections for the voltage divider and
for the nmos.
DRC and fix any errors.
Next, start to wire your connections.
Metal1 connects to metal2 which connects to metal3. However the
metal2 can crossover metal3. Each one of the layers is on a
different level. We will connect the levels later.
For example here is the ring oscillator connections.
Continue to wire up the rest of the components. DRC after each
on. Then, save.
Your finial drawing might look something like this:
Now we are going to add the vias. They are m2_m1 and m3_m2.
Below are some finished
Add vias to the rest of the layout. DRC and save. after adding
the vias extract the layout.
Finally run and LVS.
To help fix LVS errors click on "Output" and scroll down to view
errors, or click on "Error Display" and change the display to
When the netlists match...Congratulations you have finished