full-custom design with cadence - tutorial · then a script from austriamicrosystems is used to...

35
Microelectrónica Full-Custom Design with Cadence Tutorial AustriaMicroSystems C35B3 (HIT-Kit 3.70) Marcelino Santos March 2010 Área Científica de Electrónica

Upload: vucong

Post on 26-Aug-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Microelectrónica

Full-Custom Design with Cadence

TutorialAustriaMicroSystems C35B3 (HIT-Kit 3.70)

Marcelino Santos

March 2010

Área Científica de Electrónica

Table of contends ............................................................................................................................................... 3

1. Starting Cadence ................................................................................................................... 3 Starting Cadence for the first time .......................................................................................... 3 Starting Cadence again .......................................................................................................... 4

2. Creating the Schematic ........................................................................................................ 4 Creating a library and a schematic cell view .......................................................................... 4 Drawing the schematic ........................................................................................................... 5 Adding the MOS transistors .................................................................................................... 5 Placing VDD and GND supply ................................................................................................ 7 Adding input and output pins .................................................................................................. 7 Adding wires and wire names ................................................................................................. 7 Miscellaneous ......................................................................................................................... 7 Saving the design ................................................................................................................... 8

3. Creating the Symbol ............................................................................................................. 8

4. Schematic Simulation ........................................................................................................... 9 Creating a test bench (schematic for simulation) ................................................................... 9 Simulating the schematic ...................................................................................................... 11 Waveform Window ................................................................................................................ 12 Expressions .......................................................................................................................... 14 Parametric analysis .............................................................................................................. 15

5. Creating the Layout ............................................................................................................ 16 Starting the layout tool .......................................................................................................... 16 Layer Selection Window (LSW) ............................................................................................ 17 Initialize the layout ................................................................................................................ 17 Settings for the Virtuoso Layout XL Editor ........................................................................... 19 Layout creation - placing the components ............................................................................ 20 Routing between the components ........................................................................................ 25 Layout creation - miscellaneous ........................................................................................... 27

6. Design-Rule-Check (DRC) .................................................................................................. 28 Starting DRC ......................................................................................................................... 28 Processing DRC errors ......................................................................................................... 29

7. Extraction ............................................................................................................................. 30 Starting extraction ................................................................................................................. 31

8. Layout-versus-Schematic Check (LVS Check) ................................................................ 31 Starting LVS checking .......................................................................................................... 31 Analyzing LVS results ........................................................................................................... 32 Parasitics probing ................................................................................................................. 33

9. Post-Layout Simulation ...................................................................................................... 34

10. GDSII Export of the Cell Layout ...................................................................................... 34

2

1. Starting Cadence

Starting Cadence for the first time

At first, open a terminal program and source the configuration files for the cadence software and for the AMS Physical Design Kit.

> source /opt/init/init-cds

Then create a directory for the project files and change to that directory.

> mkdir cds_tutorial> cd cds_tutorial

Then a script from AustriaMicroSystems is used to initialize the Cadence Custom IC Design tools with the process technology C35B4 (-tech c35b4). Also the Command Interpreter Window (CIW) is started in mode Front-To-Back Design (-mode fb).

> ams_cds -mode fb -tech c35b4

After Cadence has been started two important windows appear:

• Command Interpreter Window (CIW): To start Cadence tools and enter SKILL commands. The output of the running tools are displayed here and closing this window causes the whole suite to close.

• Library Manager: To manage the cells with their various views in the libraries. Here new cells and libraries are created. This tool can be started from the CIW via the menu bar: Tools - Library Manager.

Close the “what’s new” windows and select the C35B4C1 process.

The library manager window (Fig. 1) can be used for opening existing libraries or cells or creating new ones. The left column of the library manager window is a list of the current (accessible) libraries. Among these PRIMLIB contains the transistors you will need for the inverter.

Left click at PRIMLIB. The middle column shows the elements of PRIMLIB. Left click at nmos4. This is the basic n-MOS transistor. In the third, rightmost, column you can see several views of nmos4. You will need the symbol view for the schematic and the layout view for building the layout.

3

Fig. 1 Library Manager window

Starting Cadence again

If you want to start a new Cadence session in a directory where the Cadence tools have already been initialized only the following commands are necessary:

> source /opt/init/init-cds> cd cds_tutorial> ams_cds -mode fb

2. Creating the Schematic

Creating a library and a schematic cell view

At first, a new library that will contain the data for the implemented cell must be created. From the menu bar of the Library Manager select

File - New - Library

and enter a name for the new library, e.g. STUDENTS. In the next window we choose to attach the library to an existing techfile. After pressing OK the techfile can be selected: Set Technology File to TECH_C35B4 and press OK.

Now we can start to create the schematic of our cell. Select the newly made library and choose

File - New - Cell View

from the menu bar of the Library Manager. Enter a name for the cell in the appearing form (e.g. inverter1) and check whether the correct options are selected: Library Name must be set to STUDENTS, View Name must be set to schematic and Tool must be set to Composer-Schematic in order to start the Virtuoso Schematic Composer. After pressing OK the Schematic Composer should start automatically.

4

Drawing the schematic

The following schematic is now entered into the Schematic Composer:

Fig. 2 Schematic of the inverter.

Before adding instances or wires in the inverter schematic, briefly read the Miscellaneous part in this section.

Adding the MOS transistors

First, add the pMOS and nMOS transistors. Select from the Composer menu bar

Add - Instance (or use the shortcut <i>)

Fill out the form by hand or press the Browse button to search the libraries for the appropriate cell. The MOS transistors are in the library PRIMLIB and are called pmos4 and nmos4 respectively. To place them in a schematic the selected View must be symbol. After choosing the right cell, parameters of the cell can be set in the form (Fig. 3). Change the default values of the transistor width (wpmos = 4 µm and wnmos = 1 µm) and place each symbol in the schematic using the left mouse button.

5

Fig.3 Dialogue box for the transistor properties.

6

To hide the Add Instance form during placing press the Hide button. To rotate or flip the cell press the Rotate (shortcut <r>), Sideways or Uside Down buttons.

Placing VDD and GND supply

Add instances of vdd and gnd supply cells which can be found in the library analogLib.

Adding input and output pins

To add input and output pins select

Add - Pin (shortcut <p>)

from the menu bar and fill out the appearing form. Give a list of Pin Names separated by spaces, e.g. IN OUT, and select the direction of the first pin in the list (IN is an input pin). Now place the first pin. To hide the Add Pin form, press the Hide button. To rotate or flip the pin press the Rotate (shortcut <r>), Sideways or Uside Down buttons.After placing the first pin its name is automatically deleted from the Pin Names list and the next pin direction can be changed and the pin placed. Place the input pin IN and the output pin OUT.

Adding wires and wire names

To add wires select

Add - Wire (narrow) (shortcut <w>)

from the menu bar and place wires by clicking on the begin and end point of a wire. Connect the objects via their connection ports. If the mouse pointer is moved near to a connection port and the port is marked with the diamond symbol the wire can be quick-connected to that port by pressing <s>.

Don't forget to connect the bulk-ports of the pMOS transistors with VDD and the bulk-ports of the nMOS transistors with GND!

To name a wire select

Add - Wire Name (shortcut l)

and fill in a list of wire Names in the appearing form. To hide the Add Wire Name form during naming press the Hide button. Add the wire names in the order as the appear on the Names list by clicking the appropriate wire. Note that wires given the same name are connected implicitly. The wires connected to the vdd cell are automatically named vdd! and the wires connected to the cell gnd are automatically named gnd!.

Miscellaneous

• To zoom in on the schematic select Windows - Zoom - Zoom in (shortcut <z>) and drag a box around the area of interest. Alternatively, right click and draw the rectangle to zoom in.

• To fit the schematic window to the current design select Window - Fit (shortcut <f>).

• To move an object:

7

Very useful!

• Select the object and move the mouse pointer over it until the pointer changes to a move-object symbol. Press the left mouse button and move the object.

• Select Edit - Move (shortcut <M>) from the menu bar and select the object to move.

• To edit cell instance properties select the cell in the composer window and choose Edit - Properties - Objects (shortcut <q>) from the menu bar.

• In the Composer window you can see which command is currently activated and how many instances are currently selected. In the lower status bar you can see the current actions assigned to the mouse buttons according to the currently activated command.

• Multiple objects can be selected by:

• Holding down the <shift> key and selecting the objects. • Draging a box around them with the mouse pointer while pressing the left mouse

button.

• Other useful commands:

command menu bar command shortcut

copy object Edit - Copy <c>

detele object Edit - Delete <DEL>

rotate object Edit - Rotate <r>

undo last action Edit - Undo <u>

save the design Design - Save <S>

move within window <UP>, <DOWN>, <LEFT>, <RIGHT>

redraw window <F6>

terminate any command <ESC>

Saving the design

Save the design by choosing

Design - Check and Save (shortcut <X>)

from the menu bar. Possible errors are indicated by flashing markers. These markers can be deleted by selecting Check - Delete All Markers and pressing OK.

3. Creating the Symbol

Creating a symbol of the cell is necessary if the cell should be instantiated in another schematic (i.e. the simulation schematic). The symbol defines the shape your cell will assume in another schematic.

To create the symbol, open the cell schematic in the Virtuoso Composer and select

Design - Create Cellview - From Cellview

and check whether the appearing form is filled in correctly: To View Name must be set to symbol and Tool / Data Type must be set to Composer-Symbol. After hitting OK the form

8

Very useful!

Very important!

Symbol Generation Options appear where the initial positions of the pins can be chosen. Press OK after assigning the pins to the desired lists.

The Virtuoso Schematic Composer will open in symbol-editing mode and a default symbol will be created for the cell. Now the symbol can be designed. The “[@partName]” text should be replaced by two labels with “[@cellName]” and “[@libName]”. This is required in order to provide useful information (the cell name and the library of origin) when the symbol is instantiated in schematic.

After finishing the design of the symbol check and save it with: Design - Check and Save.

The final symbol could look like this (click on the picture to enlarge it):

Fig.4 Inverter symbol.

After finishing the design of the symbol check and save it with: Design - Check and Save.

4. Schematic Simulation

Creating a test bench (schematic for simulation)

The first step to simulate the inverter is to create a library with the same name of the design library followed by “_sim” (ex: STUDENTS_sim). This is the library where all the testbenches for the cells design in library STUDENTS must be placed. The cell name of the testbench must be the same as the cell name to simulate (inverter1) and the view name must have a name that allows the identification of the analysis performed in the testbench (all testbenchs are schematics and, since all designers know that, it is not required to give the name “schematic“ to the view and it is more useful to give a representative name). In summary you

9

need to refer to section 2 and (1) create a library with the previous library name followed by “_sim” (using the same procedure previously described) and you also need to (2) create a cell, in this new library, with the same cell name used for the inverter, and the view to be created can be, for instance tr (referring to a transient analysis). By default, the tool uses the schematic editor to edit this view with a different name but asks you to confirm that you know that you are creating a schematic view with a different name. Please do confirm. In this new testbench schematic you will instantiate the symbol of the inverter that you want to simulate (from library STUDENTS, cell inverter1, view symbol).

Add a instance (<i>) of a DC voltage source between vdd and gnd. Use the cell vdc from the library analogLib and set the parameter DC Voltage to vdd_val V. By connecting this voltage source to the cells vdd and gnd, from the library analogLib, you are defining vdd and gnd for all the cells that use these labels.

10

V

Fig.5 vdc instance with parametric “DC voltage”

In order to generate the input signal for the simulation use a voltage source of type vpulse (rectangular signal) from the library analogLib. Define the voltage source with the following parameters:

vpulse voltage source at input IN

Voltage 1 3.3 V

Voltage 2 0.0 V

Delay time 0 s

Rise time 5n s

Fall time 5n s

Pulse width 45n s

Period 100n s

Note that all parameters in the previous table can be defined as function of parameters (e.g. Pulse with = input_slew; Pulse with = 50n-input_slew). These parameters must be assigned in the simulator environment, with a constant value or in a parametric analysis.

We also have to name the input wire (e.g. IN) and the output wire (e.g. OUT) so that we can select them during simulation and plot their voltage curves.

Add a capacitor (cap) of 1pF to the output pin from the library analogLib.

You should end up with the test bench of Fig. 6. In alternative, you can add a more realistic load and driving strength (ex: use additional instances of the same inverter).

Fig. 6 Test bench for the inverter transient simulation.

11

vdc = vdd_value

Simulating the schematic

After creating the simulation schematic you are ready to simulate the inverter gate. Select from the Composer window of the simulation schematic

Tools - Analog Environment

The following simulator settings have to be made:

menu bar command Details

Setup - Simulator/Directory/Host- Set Simulator to spectreS - Also the Project Directory could be changed here

Setup - Model Path…

- Check the model library files. In some cases the library /soft/ams/3.7/spectres/cmos53/tm is referred as …cmos15/tm. Double click the library to change, edit and select the CHANGE button.

Setup – Temperature - Set Degrees to 25

Setup – Environment- Switch View List should be set to spectreS cmos_sch schematic- Stop View List should be set to spectreS ahdl

Analyses – Choose

- Set Analysis to trans- Set Stop Time to 200n- Accuracy Defaults should be set to conservative- A description of the analysis will be listed in the field Analyses of the Virtuoso Analog Environment tool- To edit the Analyses entries either double-click on an entry or select Analyses Choose again

Variables - Copy From Cellview

- Variables in the simulation schematic will be identified and will be listed in the field Design Variables of the Virtuoso Analog Environment tool- To edit the Design Variables entries either double-click on an entry or select Variables - Edit from the menu bar- Set vdd_val to 3.3V

Outputs - To Be Plotted - Select On Schematic

- Select the signals to be ploted in the simulation schematic: net (must be named!) => voltage; object node => current into the object through this node- Selected signals will be listed in the field Outputs of the Virtuoso Analog Environment tool- To edit the Outputs entries either double-click on an entry or select Outputs - Setup from the menu bar

After configuring the simulator it should look like Fig. 7.

12

Fig. 7 Simulation configuration window.

To build the netlist and run the simulation select

Simulation - Netlist and Run.

First the simulator output log window appears and shows the simulation progress. After the simulation has finished the waveform window appears and the selected signals are plotted.

Waveform Window

13

Fig. 8 Simulation waveform window.

In order to perform arithmetic operations you can use the calculator:

Tools – calculator

In the IO area of the calculator window (see Fig. 9) you can type the expression to evaluate (see the list of functions presented) and see the result after clicking “eval”.

Fig. 9 Calculator window.

Expressions

It is also possible to enter expressions in the field Outputs of the Virtuoso Analog Environment to calculate parameters of the cell (propagation delay, output slew, ...) from the simulation results directly or to plot modified signal curves. These expressions can be tested with the Calculator!

Select Outputs - Setup from the menu bar of the Virtuoso Analog Environment and add the following expression:

• Name = propagation delay, Expression = delay(v("/IN" ?result "tran") 1.65 1 "rising" v("/OUT" ?result "tran") 1.65 1 "falling")

The expression propagation delay gives the propagation delay of the gate when the input value changes from IN = 0 to IN = 1.

IO area

14

Fig. 10 Adding an expression to be evaluated or displayed.

After plotting the expression with Results - Plot Outputs - Expressions the result of the expression for the propagation delay is displayed in the field Outputs of the Virtuoso Analog Environment.

The current curve of an object node can be accessed with the command i("/object/node" ?result "tran").

Fig. 11 Expression value display in the Virtuoso Analog Environment.

Parametric analysis

It is very important to evaluate the circuit behaviour with different temperatures, supply voltages and technological parameters. Parametric analysis is used in this tutorial to sweep the vdd_val parameter and the temperature. In the Virtuoso Analog Environment select

Tools – Parametric Analysis

15

Fig. 12 Parametric analysis window.

In the Parametric analysis window select

Setup – Pick Name for Variable – sweep 1…

and select temp. In the Parametric analysis window assign:

Field ValueStep Control Linear StepsFrom -10To 50Step Size 10Range Type From/To

and select

Analysis – Start

Fig. 13 Parametric analysis display in the waveform window (with a 1-> 0 zoom in).

Fig. 13 shows how results of parametric analysis with expressions are displayed in the waveform window: a new graph is displayed with the expression result evolution.

16

In order to change the power supply value, in the Parametric analysis window select

Setup – Pick Name for Variable – sweep 1…

and select vdd_val. In the Parametric analysis window assign:

Field ValueStep Control Linear StepsFrom 2To 4Step Size 1Range Type From/To

and, once again, select Analysis – Start.

5. Creating the Layout

Starting the layout tool

Open the schematic view of the inverter1 cell and select

Tools - Design Synthesis - Layout XL

from the menu bar. Selecting this option will first open a small dialog box that will let the user create a new layout or open an existing one. We opt for Create New. The next dialog gives us the possibility to change the properties of the new cellview. Check whether the View Name is set to layout and the Tool is set to Virtuoso. After pressing OK the Virtuoso Layout XL Editor will start.

Layer Selection Window (LSW)

Also the Layer Selection Window (LSW) is started (Fig.14). Each LSW entry is divided in three categories which are color, abbreviated name and purpose. Color shows the appearance of the layer in the layout. The abbreviation is the official name of the layer for Virtuoso, it can appear in messages, etc.

The Layer Selection Window is used to select the active layer (left mouse-button), to set whether a layer is selectable or not (right mouse-button) and to set whether a layer is visible or not (middle mouse-button). After the visibility status of a layer has been changed press the <F6> key to refresh the screen.

Each layer appears in the LSW window with purpose drw for drawing and pin for pin, you will almost always need drw.

Initialize the layout

To initialize the layout according to the schematic (i/o pins, device instances, ...) select

Design - Generate From Source

17Fig.14 LSW

in the Virtuoso Layout XL Editor menu bar. Fill out the appearing form to set some properties of the components in the layout: set the boundary width to 3 µm and the boundary height to 13 µm. Compare the other fields of the form with Fig 15.

Check the Pin Label Shape = Label box and enter the Pin Label Options… dialogue window. Set the Layer Name and Layer Purpose to Same as Pin.

Fig.15 Layout generation options.

After hitting OK the Virtuoso Layout XL Editor creates the chosen components in the layout window (Fig. 16).

18

Fig.16 Layout automatically generated based on the schematic.

Settings for the Virtuoso Layout XL Editor

Select Options - Display and, in the new opened window, assign X Snap Spacing and Y Snap Spacing to 0.025, and Display Levels: From = 0, To = 2.

Useful commands are:

command menu bar command shortcut

save the layout Design - Save <F2>

zoom in Window - Zoom - In <z>

fit complete layout in the layout window Window - Fit All <f>

redraw layout window Window - Redraw <F6>

create ruler Window - Create Ruler <k>

delete all rulers Window - Clear All Rulers <K>

undo last action Edit - Undo <u>

move object Edit - Move <m>

stretch object Edit - Stretch <s>

delete object Edit - Delete <DEL>

edit object properties Edit - Properties <q>

terminate any command <ESC>

19

Very useful!

Layout creation - placing the components

A first placement iteration can be obtained by selecting

Edit – Place as in Schematic

The replaced cells will look like Fig. 17. At this stage, in more complex cells, the commands Connectivity – show incomplete nets / hide incomplete nets may be of interest.

Fig. 17 Layout after Place as in schematic command.

When a pin or MOS transistor is selected in the Layout Window, the corresponding device is also highlighted in the Schematic Window. This works also when a component is selected in the Schematic Window.

When the Drain or Source contacts of two similar transistors are connected directly, Virtuoso XL will chain these transistors automatically after shifting the according areas over each other. Furthermore Virtuoso XL determines the necessity for an additional connection to this area.

To rotate a transistor either select the command Edit - Move, select the transistor you want to rotate and press the right mouse button or bring up the object properties of the appropriate transistor and change the entry Rotation (Fig.18).

prBoundary = limits of the cell layout

20

Fig. 18 Transistor properties including Rotation = 90º.

While a command is activated its detailed behavior can be customized by pressing the <F3> key (e.g. set snap mode).

Very useful is Virtuoso XL's status bar just above the menu bar:

• X: and Y: indicate the actual mouse pointer's position. • The letter enclosed by parenthesis indicates whether partial selection mode (P) or full

selection mode (F) is activated. Toggle between these two settings by pressing <F4>. • The Select: entry shows how many objects are currently selected. • When moving components, dX:, dY: and Dist: show the difference between starting

point and end point. • In the Cmd: field one can determine the currently active command.

Also very useful is the mouse function indicator at the bottom of the Layout Window. There the currently assigned functions to the mouse buttons according to the active command are indicated.

Gnd and vdd rectangles

Zoom in the bottom of the prBoundary (<z>).

Select the layer metal 1(MET1) of type drawing (drw), clicking in the corresponding layer in the LSW (see Fig.14).

Draw a ruler (<k>) from coordinates (0, 0) to (0, 1.8).

Starting at coordinates (0, 0), draw a rectangle (<r>) of metal 1 with the total width of the prBoundary (that will be the limit of the cell) and 1.8 µm of height (see Fig. 19).

21

Fig. 19 Gnd rectangle in metal1.

Copy this metal 1 rectangle to the top of the prBoundary box (for vdd usage).

Place the gnd pin and label over the metal 1 rectangle in the bottom of the cell. For simulation purpose it can be placed anywhere. If the cell would be used in an automatic placement and routing process, two rectangles of metal 1 of type pin should be overlapped to the metal 1 drw, at each access of the ground rectangle. Each metal 1 pin rectangle points to an access to the net and therefore its properties must include the directions from where the access is allowed (Fig.20). Place the vdd pin and label over the metal 1 rectangle in the top of the cell.

The placement of the global pins gnd! and vdd! needs some additional setting. Their properties have to be additionally edited. After selecting them and depressing <q> the Edit Instance Properties dialog box opens. Here Connectivity has to be checked. Terminal Name is displayed (gnd! or vdd!). Net Expression Property and its Default value has to be defined as gnd and gnd! as well as vdd and vdd! respectively. If this property is missing then everything will run correctly with the only exception of the simulation of the extracted netlist. The LVS will not be influenced, but the simulator will not be able to connect the power supply to the power rails of the layout and, therefore, the circuit will not function at all.

22

Fig. 20 Assigning access directions to a pin.

Substrate and n-well connection

In order to connect the ground metal 1 rectangle to the substrate a contact can be automatically generated selecting:

Create – Contact

and selecting PD_C. Place the bottom-left corner of the contact at coordinates (0, 0). This contact includes the active area (diff), p+select (pplus), metal 1 (met1), and the contact (cont). It performs a good ohmic contact between metal 1 and the substrate.

In order to connect the n-well to vdd, the n-well included in the pmos transistor must be extended to include the vdd line. Select the layer NTUB of type drawing and draw a rectangle starting from the top of the pmos n-well and ending 0.9 µm above the vdd line. (see Fig. 24).

Similarly to the gnd contact to substrate, select the ND_C and place the top-left corner of the contact at coordinates (0, 13). This contact includes the active area (diff), n+select (nplus), metal 1 (met1), and the contact (cont). It performs a good ohmic contact between metal 1 and n-well (see Fig. 24).

Placing the transistors

Create a ruler (<k>), starting from the top of the gnd rectangle, with 0.45 µm of lenght.

Rotate (see item Layout creation – placing the components in this section) and move (<m>) the nmos transistor, centring in the prBoundary box and bringing the metal 1 drain and source to the distance pointed by the ruler (see Fig. 21).

23

Fig. 21 Gnd rectangle with pin assignment, substrate connection and nmos placement.

Create a ruler (<k>), starting from the top of the nplus of the nmos transistor, with 1.2 µm of lenght (see Fig. 22).

Rotate and move (<m>) the pmos transistor, centring in the prBoundary box and bringing the nwell (ntub – see Fig. 22) to the distance pointed by the ruler.

24

Fig. 22 pmos placement.

Routing between the components

The next step in layout creation is to connect the components electrically according to the schematic. Connections can be drawn in three different ways:

type of connection menu bar command shortcut

rectangle Create - Rectangle <r>

polygon Create - Polygon <P>

path Create - Path <p>

Before activating a command select the desired layer in the Layer Selection Window (LSW)!

When the path command is activated and the path has been started at an identifiable connection Virtuoso XL highlights the geometries and terminals of other components which should be connected. To change the layer while drawing a path use the path options invoked by pressing <F3>. There the Change To Layer option can be modified and Virtuoso XL automatically generates the contacts from one layer to another.

Inter-layer contacts can be created explicitly through Create - Contact (shortcut <o>). To establish a connection between the metal layer 2 and the poly layer 1, two of these contacts

25

have to be placed: MET2 -> MET1 (VIA1_C) and MET1 -> POLY1 (P1_C). They can be placed right over each other.

With the command Connectivity - Show Incomplete Nets one can highligt signal nets that haven't been routed correctly and completely. To end the highlighting of incomplete nets select Connectivity - Hide Incomplete Nets from the menu bar.

Fig. 23 Gates and drains interconnection.

Fig. 23 shows the gates and drains interconnections and the OUT pin placement over the corresponding metal 1 connection. Fig. 23 also shows a poly-metal 1 contact that allows connectivity in metal 1 to the input of the inverter (Create – Contact – P1_C).

The sources of the transistors must be connected to vdd! and gnd! (see Fig. 24). The IN pin and label must be moved to the top of the metal 1 connected to the inverter input (overlapping the P1_C contact, not displayed in Fig. 23 for clarity).

26

Fig. 24 Connection of the pmos source, n-well contact and vdd! pin assignment.

Layout creation - miscellaneous

While placing components and routing, periodically start the Design-Rule-Check (DRC) in order to identify any violations of the design rules of the current process technology (min. spacing between geometries, min. width of geometries, ...). When implementing a standard cell it is also very important to consider the distances of geometries on the various layers to geometries in adjacent placed cells. These errors can't be found by the DRC of the single cell. The DRC will be explained in detail in the next section.

If the schematic of the cell is changed during or after the layout of the cell has been designed, the following commands could be of interest:

command menu bar command

change the nets at the terminals of an instance Connectivity - Propagate Nets

update of components and netsConnectivity - Update - Components And Nets

27

6. Design-Rule-Check (DRC)

The layout of a cell must be drawn according to a set of strict design rules. During the Design-Rule-Check a program checks the design against the design rules and reports any violations.

Starting DRC

To start the DRC for the layout select

Verify - DRC

from the menu bar of the Virtuoso Layout XL Editor where the layout intended for checking is opened. In the appearing form, the DRC can be parameterized. Set the following options:

option set to comment

Checking Method flatany instances of other cells found in the layout should also be checked (layout of this cells must also be available!)

Checking Limit full

Switch Names ...to set additional options for the DRC e.g. to ignore some rules

Rules File ../divaDRC.rul design rules file name

Rules Library TECH_C35B3 Disable the library that contains the design rules file

Fig. 25 DRC options.

28

After hitting OK the DRC is carried out and any violations are highlighted in the layout by flashing markers and the errors are reported in the CIW (see Fig. 26).

Fig. 26 CIW DRC errors.

Processing DRC errors

To get a complete list of all errors select

HIT-Kit utilities - Find DRC Markers

Only the errors listed in Fig. 27 should be identified by the DRC of the inverter.

Fig. 27 Expected errors in the inverter.

They could easily be avoided when we set the switch no_coverage in the DRC options form. These errors (Minimum ... density ...) only make sense in the scope of the whole layout of the chip where they must be treated as severe errors. Generally, if you neglect a DRC error you should really be able to explain why this error can be ignored.

When we select an error in the list, Virtuoso XL focuses to the area in the layout where the error occurs. If there is more than one error with the same name, we can switch between

29

these errors with the Error Number slider. The Zoom Factor applied by Virtuoso XL to focus to an error can also be set with a slider.

To delete all markers press the button Delete all Marker in the DRC Error Search form or select Verify - Markers - Delete All from the Virtuoso XL menu bar.

Some c35b3 rules are:

Minimal: Width Spacing NTUB 3 3DIFF 0,3 0,6POLY1 0,35 0,45PPLUS/NPLUS 1,6 1,6POLY2 0,65 0,5CONT 1 1,2MET1 0,5 0,45*VIA 1,2 1,6MET2 0,6 0,5**PAD 15 25* If the MET1 is wide (width>10μm) then 0,8** If the MET2 is wide (width >10μm) then 0,8

Minimum spacing between different layers:DIFF – PPLUS 0,35CONT in MET1 – POLY1 0,8CONT in POLY2 – POLY1 1,6POLY1 – VIA 1POLY2 – VIA 1,2CONT – VIA 1,2POLY1 – POLY2 1,4POLY1 – DIFF 0,4POLY2 – DIFF 1,2

Overhang in transistors:POLY1 over DIFF 0,6DIFF over POLY1 1,4

Spacing inside the surrounding layer (overlap)VIA in MET1 0,2VIA in MET2 0,3NDIFF in NTUB 0,2DIFF in NPLUS 0,45DIFF in PPLUS 0,45

7. Extraction

30

Spacing

Width

Circuit extraction is performed after the mask layout design of the cell is completed. It creates a detailed netlist (extracted netlist) of the cell which can be used for example in the Layout-versus-Schematic check or by a circuit simulator. The circuit extractor is capable of identifying the individual transistors and their interconnections as well as the parasitic resistances and capacitances that are inevitably present in the cell. Thus, the extracted netlist provides a very accurate model of the cell.

Starting extraction

To start the extraction select

Verify - Extract

from the menu bar of the Virtuoso Layout XL Editor where the layout intended for extraction is opened. In the appearing form, the options for the extractor can be given. Set the following options:

option set to comment

Extract Method flatany instances of other cells found in the layout should also be extracted (layout of this cells must also be available!)

Switch Names capallto set additional options for the extraction process e.g. capall tells the extractor to additionally extract parasitic capacitances

View Names Extracted extracted

Rules File ../divaEXT.rul extraction rules file name

Rules Library TECH_C35B3 Disable the library that contains the extraction rules file

After hitting OK the extraction is carried out and a new view called extracted is generated for the cell (Library Manager).

8. Layout-versus-Schematic Check (LVS Check)

After the mask layout design of the cell is completed, it should be checked against the schematic of the cell created earlier. The Layout-versus-Schematic check (LVS check) will compare the circuit given by the schematic with that one extracted from the mask layout and tries to prove that both networks are equivalent.

The LVS step provides an additional level of confidence for the integrity of the design and ensures that the mask layout is a correct realization of the intended circuit. Note that the LVS check only guarantees topological match: A successful LVS check will not guarantee that the mask layout of the cell will actually satisfy the performance requirements.

Any errors that may show up during the LVS check (such as unintended connections between transistors, missing connections/devices, ...) should be corrected in the mask layout. Note that the extraction step must be repeated every time the layout of the cell is modified.

Starting LVS checking

To start the LVS check select

31

Verify - LVS

from the menu bar of the Virtuoso Layout Editor where the extracted netlist of the cell intended for LVS checking is opened. If a form called "LVS Form Contents Different" appears, select Use: Form Contents and press OK. In the next form, the options for the LVS check can be set: It can be specified which cell views should be compared and where to find the LVS rules file. Fill out the form as Fig. 28.

Fig. 28 LVS options.

After clicking Run the LVS check is started.

Analyzing LVS results

When the LVS check is finished, a window appears that indicates whether the check was successful or not. To view the LVS check results in detail, press the Output button in the LVS Window. The file si.out in the given working directory contains the LVS check results. For further information (LVS run log file, schematic/extracted netlist, ...) press the Info button.

32

Fig. 29 LVS result.

Parasitics probing

The different nets in the extracted netlist can be probed to get a summary of the parasitics (resistances, capacitances) present on the nets. Since we could only extract parasitic capacitances during the extraction of the netlist, no values for parasitic resistances are indicated.

To set a parasitics probe press the button Parasitic Probe in the LVS Window. In the next window press the button Whole Net and select a net in the layout window where the extracted view is shown. It is also possible to get a summary of parasitics between nets. Therefore, use the button Net To Net before selecting two nets in the extracted view.

33

9. Post-Layout Simulation

It is now easy to simulate the layout (more exactly the extracted netlist) with the Virtuoso Analog Circuit Design Environment. Close the layout editor window and open the test bench for the simulation of the cell schematic (Section 4. Schematic Simulation). The same test bench can be used for the extracted simulation. Open the test bench schematic and select from the Composer window of the simulation schematic

Tools - Analog Environment

Configure the simulation conditions as described in Section 4 and choose:

Setup - Environment

and set Switch View List to spectreS cmos_sch extracted schematic. As a result of this, if the simulator now creates the netlist of the simulated circuit it uses the extracted netlist of the cell rather than the schematic.

10. GDSII Export of the Cell Layout

To export the mask layout of the cell in GDSII format select the following command in the CIW:

File - Export - Stream.

Fill out the appearing form like depicted below:

34

Fig. 30 GDSII export.

Note that the run directory gds2Export must be created in the current directory cds_tutorial before the export can be started. The log file of the export process (PIPO.LOG), which explains warnings and errors during export in detail, and the GDS2-file itself will be stored in the run directory.

The Layer Map Table, which can be stated by pressing the button User-Defined Data, should be set to

/soft/ams/artist/HK_C35/TECH_C35B4/strmInOut.layertable

There are two warnings given for the export process concerning the layers (changedLayer 220 tool0) and (prBoundary 235 drawing). These warnings can be safely ignored.

35