Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
31.01.2017
1 Introduction
In this exercise, you will design the Miller compensated operational amplifier (op amp) of Fig. 1
based on given specifications. The transistors of the op amp are first sized by hand calculations.
The preliminary design is then evaluated by simulations and revised accordingly. Finally, the
revised design is layouted and re-evaluated. The transistor models to be used are based on a
generic (imaginary but on-the-level) 45 nm CMOS process.
This exercise is done in pairs. Each pair of students will be given an individual set of
specifications to fulfill. The specifications are listed in MyCourses.
VDD
M3 M4
M6
CC vout
M8
VDD vin- vin+
M1 M2 CL
IBIAS
M5B M5 M7
VSS
The Miller-compensated amplifier topology of this exercise was discussed in Lecture 4 and
analyzed in Exercise 4. Being a very common piece of circuitry, this amplifier is thoroughly
discussed and analyzed also in virtually all IC design basics textbooks.
This exercise is graded based on a report document that each group submits in MyCourses.
The report can be thought as a designer’s way to demonstrate the design process and outcome
to a supervisor. Check section 5 for further information about the desired content of the final
report.
2 Miller-compensated op amp
2.1 Specifications
The basic specification set for the op amp is listed in Table 1. Certain specifications are com-
monly fixed (supply voltages VDD and VSS , input DC-voltage level (VICM ) and phase margin
PM) while the others (DC-gain, gain-bandwidth GBW, slew rate SR and load capacitance CL )
1
will be given separately to each pair of students. The necessary process parameter values for
hand calculations are listed and described in Table 2.
Hints:
2
Table 3: Calculated values for the designed op amp
Transistor M1 ; M2 M3 ; M4 M6 M5 M7
gm x x
ID
W x x
L
Assume a two-pole transfer function for the op amp (neglect possible zeros at this phase)
Assume that the output capacitance of the first stage (CO1 ), i.e the capacitance at gate node
of M6 , is much smaller than the compensation and load capacitances (CO1 CC ; CL )
By and large, making CC equal to CL should lead to a PM of at least 60o . Unfortunately, the
compensation capacitor CC creates a right half plane (RHP) zero, which can substantially de-
grade the PM. In many cases, effect of the RHP zero on the PM is not negligible, and therefore
must be compensated. In order to improve the PM, a series resistor (implemented with a PMOS
transistor M8 ) is added to the feedback path. There are two approaches to improve the compen-
sation. One can set the RHP zero to infinity, or shift it to a left half plane (LHP) and cancel the
lowest non-dominant pole by setting magnitude of the zero equal to the pole. The resistance
value should be sized in accordance with the selected approach.
Hints:
Once the resistance is calculated, use the triode (linear) region current equation for M8 to
determine the respective WL ratio.
3
Run and report the following set of analyses to your revised amplifier. Do your simulation
results make sense? Collect the results, discuss them shortly and move to layouting your design.
Noise density
PSRR
Instructions of how to run these analyses are given in exercise CAD 1d.
4
The first step is to draw the layout of the Miller-compensated op amp. Once the design rule
check (DRC) and the layout versus schematic (LVS) check are clean, the layout is ready for
parasitic extraction. With the parasitics extracted, the op amp can be simulated in a post-layout
configuration.
First, go though the layouting tutorial in Appendix A and then proceed to drawing the layout
for your Miller op amp. When your layout is ready, continue to the next section for parasitic
extraction.
1. After a clean DRC and LVS, in the layout drawing window, select QRC->Run PVS -
Quantus QRC from the menu.
2. In the Quantus QRC (PVS) Interface window, fulfill your design’s cell name and ensure
that the PVS data directory points to ./mylvs/svdb . The technology library path should
point to file /prog/cadence/gpdk/g045/gpdk045_v_4_0/pvtech.lib. The correct technol-
ogy is gpdk045_pvs.
3. In the Quantus QRC (PVS) Parasitic Extraction Run Form, check that the Setup, Extrac-
tion and Netlisting tabs are corresponding to figures 3, 4 and 5 (except that the library and
cell names are replaced by your naming convention, e.g ’miller_opamp’!).
4. The other tabs should be ok. Click ’Apply’ to start the extraction. Extraction process will
take a moment.
5. Once the extraction is completed, one should be able to open a new layout view ’av_extracted’
of the ’miller_opamp’ cell. Zoom in the see the parasitic components added to the layout.
6. In the new layout view, select ’Launch->ADE L’ to generate the netlist (including the
parasitics).
Repeat the previous simulations with the new netlist. Report the results. Are they different? If
yes, can you find explanations for the difference?
5
Figure 3: Setup tab of Quantus QRC flow
6
Figure 4: Extraction tab of Quantus QRC flow
7
Figure 5: Netlisting tab of Quantus QRC flow
8
5 Submission
Submission:
Each pair of students should compose a report based on their design process and results
and upload it to MyCourses in pdf form. The report should describe:
In addition to the final report, upload the summary files (.sum) of clean DRC and LVS
runs and the ELDO netlist of the revised (pre-layout) amplifier. The DRC and LVS run
summaries can be found in their respective run folders.
Grading:
0 - 20 points
Clean DRC and LVS check are required for passing the exercise
Hints:
A good format for justifying the hand calculations is, for instance:
Equation N was used to size transistor M. Ideally, this should ensure that E (based on e.g.
Allen-Holmberg page P).
In order to easily interpret agreement of the calculated and simulated values, making of a
comparison table is recommended. A comparison table for essential pre- and post-layout
simulations results would also be beneficial.
9
A screen shot program can be utilized in order to take snapshots, for instance a program
called Spectacle (this program is availble at least in KDE desktop environment, do not
work in GNOME). The program can be started by simply pressing the Print Screen button.
When making a large integrated capacitor, construct it from an array of small unit ca-
pacitors as shown in Fig. 6. A suitable spacing between the unit capacitors is 0.6 m.
Multiple unit capacitors can be connected in parallel in schematic by using the multiplier
parameter of a unit capacitor component.
Figure 6: Large capacitor connected between the input and the output of an inverter.
In Eldo, internal nodes of an imported netlist are visible to the test bench. That is, you
can plot or extract the voltage of an internal node of your amplifier with a simple plotting
command in the test bench file.
10
A Layout drawing tutorial
This section is a tutorial of how to use Cadence Virtuoso Layout Editor to construct a mask level
layout of a circuitry. Now it is a good time to look back at the theory in Lecture 1 about how
a typical CMOS process functions. Having a good grip on the process basics helps with avoid-
ing layout errors and, in general, following this tutorial. We will use the push-pull amplifier
(inverter) of CAD exercise 1a as a template.
First, we create a new layout cellview for the inverter. We will place instances of transistors
pmos1v and nmos1v in the Layout Editing window. Then, we will draw guard rings around
transistors (to suppress substrate noise), create wiring and add pins. When the layout is com-
pleted, a DRC (Design Rule Check) and a LVS check (Layout Versus Schematic check) will
be run. DRC uses a pre-defined set of layouting rules in attempt to make sure that the drawn
design is manufacturable (what you draw is also what you get). LVS checks that the drawn
layout matches with the schematic that it represents.
1. Open the Library Manager and open the schematic view of the inverter cell of you train-
ing library.
3. Select Create new and Automatic buttons in the Startup Option window. Click OK.
4. In the New File window, verify that the Cell is set to inverter and the View is set to
layout. Click OK.
5. A pop-up window will appear asking if you are willing to check for a Layout Suite XL
license instead of Layout-L. Click Yes.
6. A blank Virtuoso Layout Suite XL window appears (Figure 7). If a “What’s new...”
window appears, you can close it.
1. Open the Create Instance window with the Create->Instance pull-down menu item or
typing [i].
2. In the Create Instance window, click the Browse button. A Library Browser window
appears.
i
Figure 7: Layers and Virtuoso Layout Editing windows
5. Close the Library Browser and place the pmos1v instance in the Layout Editing window.
6. Repeat steps 1-5 to add a nmos1v (NMOS) instance below the PMOS transistor.
Notes:
In this exercise, you do not have to optimize the design area! Leave at least 1:2um
distance between instances so that there is enough space to draw guard rings.
A ruler can be created with the Tools->Create Ruler pull-down menu item, by typing [k]
or with the Ruler shortcut icon on the left side of the Layout Editing window.
Rulers can be removed with the Tools->Clear All Rulers pull-down menu item or by
typing [Shift+k].
Next, edit properties of the transistors so that their parameters match with the schematic.
The correct parameters are shown in Table 4.
ii
1. Select a transistor with a left-click on it.
2. Open Edit Instance Properties window (Figure 8) by typing [q] or selecting Edit->Basic-
>Properties.
4. Change parameters.
5. If the instance is sidewards or backwards, you can rotate it in the Attribute tab of the Edit
Properties window or by selecting the instance, pressing [Shift + o] and clicking on the
instance.
When you pick up instances from a library, only a generic box is shown in the design
window. Perform the following steps to set layers of the transistors visible.
1. Press [e].
2. Select Display Levels Start to 0 and Stop To 30, and click OK.
The shortcut for making transistors and other embedded objects visible and invisible is [Shift
+ f] and [Ctrl + f], respectively. Click the Save icon or select Design->Save (or File->Save
depending on the software version) to save the design.
At this point, your design should look as in Figure 9. Do not worry about exact placement
of the transistors, you will arrange them later.
iii
Figure 9: Inverter layout view: step 1
1. Use your mouse’s scroll to zoom in and out. Alternatively, to scale the current window
by 0.5 type [Shift+z] or select View->Zoom Out. To scale the current window by 2, type
[Ctrl+z] or select View->Zoom In.
2. To pan the design, you can use the arrow keys, or press the [Tab] key followed a left-click
on a center point of the desired display.
3. By selecting View->Fit All or typing [f], you can fit the design to the window.
iv
4. To zoom area you want to display, select View->Zoom To Area or type [z] followed
left-clicks on the corner points of the area you want to display.
1. Select the metal 1 layer with a left-click on the Metal1 drw list item of the Layers win-
dow.
Left click on the layout to start drawing the path. Left click again to make a turn.
End the path by pressing [Enter].
4. Select the path and change its width to 0:26m (object properties can be edited by typing
[q]).
Sometimes larger layers have to be drawn, in which cases rectangles become useful.
1. Select the metal 2 layer with a left-click on the Metal2 drw list item of the Layers win-
dow.
Left click on the layout to start drawing a rectangle. Left click again or press [Enter]
to finish the rectangle.
1. Type [s] to activate the stretching tool. Bringing the cursor on an object will highlight the
part of the object that the stretch tool is about to modify.
With left clicks, try changing the position of a part of your path.
Try stretching the end of a path.
Try stretching a rectangle.
v
Rotate an object by first selecting it and then pressing the rotation tool icon on the layout
drawing window. Alternatively, choose the tool by pressing [Shift+o].
The effect of a tool can be extended to multiple objects at a time by first selecting a group
of objects with a long left click and then selecting the tool.
Finally, remove your trial drawings by pressing [Delete] and clicking on the objects you
want deleted.
A.5 Contacts
Contacts and vias are needed to connect objects on different levels to each other. Follow these
steps to draw vias:
1. Choose Create->Via command or press [o] to create a via. Choose the via type in the
via definition drop-down menu and alter the via size by changing the number of rows or
columns.
2. The alternative, though more seldomly used, way is to draw a via as a rectangle by using
the respective layer. For instance, Via1 drw layer is used to create a via between metal 1
and metal 2.
(a) With a square using the Cont (b) With the M1_PIMP contact
drw layer item
Figure 10: Two different ways to create a contact between a metal 1 and a p-diffusion object
vi
Perform the following steps to create a P+ guard ring around the NMOS transistor.
2. The correct guard ring type is P-tap (an NMOS transistor stands on p+ type bulk). A
suitable enclosure is 0.3.
3. Click apply.
2. The correct guard ring type is N-tap (a PMOS transistor stands on an N-type well). A
suitable enclosure is 0.3.
3. Click apply.
4. Notice that there is now a gap between the transistor’s and the ring’s N-type implant.
This is easy to observe by choosing the Nwell drawing layers and then pressing the none
visible (NV) button on the Layers menu window. Press the all visible (AV) button to make
all layers visible again.
5. Draw a Nwell rectangle over the whole guard ring in order to make the well continuous.
1. Open the Create Via window (Figure 12) with the Create -> Via pull-down menu item or
by typing [o].
2. In the Create Via window, select M1_PO in the Via Definition list box.
3. Click Hide and place the contact object at the edge of the PMOS gate as shown in Figure
13.
4. Next, place another M1_PO contact at the edge of the NMOS gate as shown in Figure
14.
5. Gates will be connected using Metal 2 layer. Therefore, you need to create a via between
Metal 1 and Metal 2 (M2_M1 via).
vii
Figure 11: PMOS and the N+ guard ring
viii
Figure 13: PMOS and the M1_PO contact
Figure 15:
ix
Figure 16: Gate connection
1. Use the Metal 2 layer to connect drains of the transistors together as shown in Figure 17.
2. Use the Metal 2 layer to create paths for input and output pins as shown in Figure 18.
x
3. Use the Metal 1 layer to connect the source of the PMOS to the guard ring as shown in
Figure 19.
4. Then, use the Metal 1 layer to draw a power rail for the vdd operating voltage.
5. Connect the source of the NMOS to the guard ring and draw a power rail for the vss
operating voltage with the Metal 1 layer as shown in Figure 20.
2. Use the Pimp layer to draw a rectangle with the Create->Shape->Rectangle pull-down
menu item or by pressing [r] on the PMOS transistor as shown in Figure 21.
4. Use the Nimp layer to draw a rectangle on the NMOS as shown in Figure 22.
A.10 Pins
There are pins for the input (IN) and output (OUT) on the schematic you drew in the beginning
of this exercise. In this section, you will learn how to define pins in a layout cellview.
Perform the following steps to place pins on the inverter layout:
2. Use the above steps to add the OUT pin. The I/O Type should be selected as output. Also
create pins for vdd! and vss! of type inputOutput.
xi
Figure 17: Drain connection
3. Verify that your inverter with pins looks like in Figure 23 (The supply pins are missing
from the figure but should be included).
xii
Figure 18: Input and output paths
1. In the Layout Editing window of the inverter, select File -> Save to ensure that the design
is saved.
2. Select Launch -> Plugins -> PVS in order to take Cadence’s Physical Verification system
xiii
Figure 20: Source of the NMOS
in use.
3. Then, select PVS -> Run DRC.... DRC Run Submission Form window opens.
xiv
Figure 22: The bigger N+ area
4. In the Run Data menu, set the run directory as ./drc. Your DRC data will processed and
saved there.
5. In the Rules menu, verify that the technology file path field is filled as
/prog/cadence/gpdk/g045/gpdk045_v_4_0/pvtech.lib. Choose gpdk045_pvs as the tech-
nology and use the default rule set.
6. The other menu items do not need any modifications. Click Apply to run the DRC. A
DRC run log window and a DRC Debug Environment window will open. Use the DRC
Debug Environment to clean all generated errors. Clicking an item on the generated error
list will create a highlight on the layout that helps locating the error, like in Figure 24. In
addition, a description of the chosen error is shown in the bottom of the window.
xv
Figure 23: The complete inverter layout
1. In the Layout Editing window of the inverter, select File -> Save to ensure that the design
is saved.
xvi
Figure 24: Highlighted error. The purple quadrangle shows a points where two metal lines
(blue) of different nets are too close to each other.
2. Select PVS -> Run LVS.... The LVS Run Submission Form window appears.
4. In the Output menu, make sure that the Create Quantus QRC Input Data tab is selected.
5. In the LVS Options menu’s Extract Options tab, write your power and ground net names
in their respective fields in the Net Names section (vdd! and vss!).
6. Click Apply to run LVS. An LVS run log window and an LVS Debug Environment win-
dow will open. Use the LVS Debug Environment to clean all generated errors. Clicking
an item on the generated error list will show a description of that error in the bottom of
the window.
7. Choose Tools -> Probing form to open a probe tool. By clicking on the Add Probe
menu item and then a net on the layout, the tool will highligh all drawing layers that the
probed net is connected to. This helps locating an open or a short. Click on the Clear
Probe menu item to remove old probes.
8. Choose Tools -> Graphical LVS Debugger to see a colour-coded comparison figure of
your layout and schematic.
9. A separate "clean" window will pop up after an LVS run once all LVS errors are cleared.
Remember to rerun DRC after making any changes to the layout.
xvii