You are on page 1of 129

Design Specifications

The bottom-up design flow for a transistor-level circuit layout always starts with a set of design specifications. The "specs" typically describe the expected functionality (Boolean operations) of the designed block, as well as the maximum allowable delay times, the silicon area and other properties such as power dissipation. Usually, the design specifications allow considerable freedom to the circuit designer on issues concerning the choice of a specific circuit topology, individual placement of the devices, the locations of input and output pins, and the overall aspect ratio (width-to-height ratio) of the final design. Note that the limitations spelled out in the initial design specs typically require certain design trade-offs, such as increasing the dimensions of the transistors in order to reduce the delay times. In a large-scale design, the initial design specifications may also evolve during the design process to accomodate other specs or limitations. This implies that the designer(s) of individual blocks or modules must communicate clearly and frequently about the spec updates, in order to avoid later inconsistencies. As an example, the initial design specs of a one-bit binary full adder circuit are listed below:

Technology: 0.8 um twin-well CMOS Propagation delay of "sum" and "carry_out" signals < 1.2 ns (worst case) Transition times of "sum" and "carry_out" signals <1.2 ns (worst case) Circuit area < 1500 um^2 Dynamic power dissipation (at VDD=5 V and fmax=20 MHz) < 1 mW

It can be seen that one can design a number of different adders (with different topologies, different maximum delays, different total silicon areas, etc.), all of which essentially conform to the specs listed above. This indicates that the starting point of a typical bottom-up design process usually leaves the designer a considerable amount of design freedom.

Schematic Capture

Please follow the example link (button) for a detailed description of "Schematic Capture". The traditional method for capturing (i.e. describing) your transistor-level or gate-level design is via the schematic editor. Schematic editors provide simple, intuitive means to draw, to place and to connect individual components that make up your design. The resulting schematic drawing must accurately describe the main electrical properties of all components and their interconnections. Also included in the schematic are the power supply and ground connections, as well as all "pins" for the input and output signals of your circuit. This information is crucial for generating the corresponding netlist, which is used in later stages of the design. The generation of a complete circuit schematic is therefore the first important step of the transistorlevel design flow. Usually, some properties of the components (e.g. transistor dimensions) and/or the interconnections between the devices are subsequently modified as a result of iterative optimization steps. These later modifications and improvements on the circuit structure must also be accurately reflected in the most current version of the corresponding schematic.

Example : Schematic Capture (CMOS Inverter)


Step 1 : Open a new schematic window

Note : Before you begin with going through this example, be sure that you have the Library Manager open. 1. Click File on the menu banner in the Library Manager and hold the left mouse button until you choose New and then Cellview.

A small new window called "Create New File" appears.

2. There are four main fields in the Create New File window :

Library Name

You have to choose your working directory by clicking and holding the left mouse button on the Library field. Since our library name is "tutorial" in this example, we choose the corresponding label, "tutorial".

Cell Name

Enter the name of your cell for which you will draw the schematic. In our example, we will draw the schematic of an inverter, so we type "inverter" in the Cell Name field.

View Name

The View Name indicates the level of the design hierarchy. You can determine that you are going to draw either a symbol or a schematic or a layout in this field just by typing the corresponding view name. Since we will draw the schematic of an inverter, the correct view name choice is "schematic" for our example.

Tool

Here, you have to select the design editing tool that you will use to enter your design. The tool depends on the hierarchy level of your design. If you click and hold the left mouse button on the tool field, you will see the available tools. Only three of these tools will be used for all the examples.
Composer Schematic : Schematic editor Composer Symbol Virtuoso Layout : Symbol editor : Layout editor

Since we will draw a schematic, we choose "Composer Schematic". Choosing Composer Schematic automatically converts the View Name to schematic. Actually, the selected tool converts the View Name to the corresponding one.

3. Now, click on "OK" to close this window and open the new schematic editor window chosen in the "Create New File" window.

Example : Schematic Capture (CMOS Inverter)


Step 2 : Add components

Note : At this point, you should have an empty schematic editor window open. 1. The first thing to do is to add and place components which will be used in the schematic. The components we need for a schematic of an inverter are the following :

PMOS : p-type MOSFET NMOS : n-type MOSFET VDD : Power supply voltage GND : Ground line

To add components, click on Add in the menu banner of the schematic entry window and choose Component, as shown below. ( Add --> Component )

2. Two new pop-up windows appear. One of them is "Add Component Window", where you can enter the Library Name, Cell Name and the View Name of the component to be added to the schematic.

The other window is the "Component Browser", which enables the designer to browse easily through the available libraries and select the desired components.

Component Browser pops up every time the Browse button on the Add Component window is clicked. 3. We begin picking up the components by selecting the MOS transistors from the Component Browser window. You must be careful to pick up the components from the correct library. You can change the component library simply by clicking and holding the left mouse button on the library field. The correct library is "NCSU_Analog_Parts", so, select this library if it is not selected when you opened the Component Browser. After all, the window should appear like shown above. There are many folders under this library. Each of them is named depending on the components they include. So, to pick up an n-type MOSFET, you have open the "N_Transistors" folder by clicking once on it. The new folder contains many symbols which are also shown in the picture below. Pick up the NMOS transistor by clicking once on "nmos", which is a model for a three terminal n-type MOSFET.

If you move the mouse cursor on the schematic window, you will see a bright NMOS transistor symbol moving with the mouse pointer showing the gate terminal of the transistor. At this point, you decide where to put this transistor. Click on a location in the schematic window, where you want to put the transistor. Please refer to the images below to see the difference between a "to be placed" transistor (left image) and "a placed transistor" (right image).

The same procedure can be applied to select and to place the PMOS transistor. The only difference is to pick "pmos" from the "P-Transistors" folder in the Component Browser. The "select-and-place" procedure for PMOS is summarized below.

Note : Always make sure that you are not confusing a PMOS transistor with an NMOS transistor. The differences between the PMOS symbol and the NMOS symbol are:

There is a tiny circle at the gate terminal of PMOS transistors.

The direction of the arrow which always marks the source terminal of the transistor is different. The arrow points from the source terminal towards the transistor in the PMOS symbol, while it points out towards the source terminal in the NMOS symbol.

Example : Schematic Capture (CMOS Inverter)


Step 3 : Placing supply voltage components

1. Picking up the supply voltage components involves the same steps as in adding transistors to the schematic.

Choose Add and then Component on the menu banner if you somehow closed the Component Browser window. Click on the folder "Supply_Nets", so that you will access the components in this folder.

We will put the components "vdd" and "gnd" in our schematic. You can pick up one of them simply by clicking on the corresponding one. Let's assume that we take "vdd" first, so, click on "vdd", move the mouse on the schematic window and place the component by clicking a location in that window. The individual steps of this procedure are described in the images below.

2. You can follow similar steps for placing the "gnd" component.

3. At this point, we are finished with selecting and placing the necessary components. Press "ESCAPE" (ESC) key on the keyboard to close the Component Browser and Add Component windows.

Example : Schematic Capture (CMOS Inverter)


Step 4 : Wire components (making connections)

1. After all the components are placed, they should be connected according to the function they realize. To connect the components in a schematic, we use wires by choosing Add and then Wire (narrow) on the menu banner. ( Add --> Wire (narrow) )

This command initiates the wiring mode. 2. A new window called Add Wire will pop-up.

In this window you can change the routing method and the draw mode. 3. We begin to wire the components by connecting VDD and the source terminal of the PMOS transistor. Every component has tiny red squares on its terminals where you can do the wiring. Connecting any two nets in the schematic is done by first clicking at one of the nets and then at the other one.

During these steps, you will always be prompted by the schematic window. The message appears in the bottom most field of the schematic window. If you follow the instructions prompted in that field, you can easily complete your job. In this step, the following phrase will be prompted : Point at the starting point for the router Since we begin with wiring the VDD and the source of PMOS, we click first at the center of the red square which corresponds to the VDD net.

One end of the wire is now fixed, and you will realize that the other end floats and moves according to the mouse pointer. You will also see that the nearest net to the floating end of the wire is automatically highlighted. The new prompt is the following : Point at ending point for the router 3. Click on the target net which is the source terminal of the PMOS transistor .

This was the final step of connecting the two nodes. The same procedure can be applied for the rest of the nodes; first choose any two nodes which should be connected. Then, wire them together just by clicking first one of them and then the other. As long as you are in the wiring mode, you will be prompted about the next step you have to do, as described above. Press ESC on the keyboard, to leave the wiring mode. You will be in this mode, as long as you don't press ESC or choose another command from the menu. 4. The remaining steps are summarized below. In the wiring mode,

Click on the drain terminal of PMOS. Click on the drain terminal of NMOS.

Click on the gate terminal of PMOS. Click on the gate terminal of NMOS.

Click on the GND node. Click on the source terminal of NMOS.

5. Your schematic should look like the schematic shown in the image below.

Press ESC key to leave the wiring mode.

Example : Schematic Capture (CMOS Inverter)


Step 5 : Edit properties of components

The components you select and place from the library always come with a set of default parameters or properties. You can (and usually should) modify component properties according to your design specifications. Here are the steps to edit component properties in the schematic window. 1. Select the PMOS transistor by clicking on it . The selected component should be highlighted by a bright rectangle (box) around it.

2. Choose Properties and then Object from the Edit menu.

A larger window with many editable fields appears which is called the Edit Object Properties window. 3. Edit the properties by clicking on the corresponding field. You may change the values for Width or Length depending on your design specifications. Usually, you will change only the Width value, which stands for the channel width, W. The

default values for these properties are the smallest available values which are determined by the current technology.

To edit the channel width of the transistor, click on the Width field. Then enter a new value which is either a result of your calculations or just an initial value to see how the performance changes depending on this variable. While changing a parameter, you have pay attention to the unit you use (click here for the list of units). The channel width is changed to 1200 nm (nanometers) which is equal to 1.2 um (micrometers).

4. Click OK after editing the properties in the Edit Object Properties Window.

The most important parameters (type, dimensions) always appear in the schematic window. You can easily observe the changes of these properties that are listed near the corresponding transistor in the schematic.

Example : Schematic Capture (CMOS Inverter)


Step 6 : Placing the pins

You must place I/O pins in your schematic to identify the inputs and the outputs. A pin can be an input or an output or an input-output (bi-directional) or a switch pin. We will only use an input pin and an output pin in our inverter schematic. 1. Click Add on the menu and then select Pin on the pull-down menu.

2. The Add Pins window appears.

3. Enter the name of your input pin in the Pin Names field. The input name in this example is "Inp" (note that the pin names can be completely arbitrary). Also, note that the Direction option is set to Input indicating that the current pin is an input pin. As long as you enter pins of the same direction, you can enter pin names one after the other in the Pin Names field, only putting space between them. In this case, each time you place a pin, the next one will appear until all your pins are placed in the schematic.

4. Move the mouse cursor on the schematic window to place pin. Now, you have your input pin with the name "Inp" floating in the schematic window. Point to a location to place the input pin. Since the input is the gate terminals of both transistors, it is more convenient to put this pin in front of the common node of these terminals.

4. Go back to the Add Pin window to pick up an output pin. First, you have to change the pin direction to Output. To do this, click the left mouse button on the Direction field and select Output in the pop-up menu. Enter the output pin name, which is "Outp" in our example.

5. Place the output pin by clicking on a lcoation in the schematic window. The procedure is completely analogous to the placement of input pins. Now it is better to put the output pin near the common drain node which is the output of the inverter circuit.

At this point, you are finished placing the pins. Press ESC on the keyboard to close the Add Pin window.

6. Connect the pins to the corresponding nodes using wires. The wiring procedure is the same as described in the previous steps. Wiring the pins is summarized below : Click on Add on the menu and then select Wire (narrow). You are now in the wiring mode again.

Click on the input pin. => The other end of the wire is floating. Click on a point on the common wire which connects the gate terminals of both transistors, PMOS and NMOS.

Click on the output pin. => The other end of the wire is floating. Click on a point on the common wire which connects the drain terminals of both transistors, PMOS and NMOS.

Press ESC to close the wiring mode.

At the end of this step, your schematic should look like the following:

Example : Schematic Capture (CMOS Inverter)


Step 7 : Check and Save

1. Click Design on the menu banner and then select Check and Save.

During this tutorial, you may save your design selecting Save on the Design menu. It is also strongly advised that you save your designs frequently, every time after you make significant changes, so that you don't loose your data because of a computer crash or because of a mistake that can happen in a complicated design environment such as this one. 2. Check the message field in the CIW window to see the error and the warning messages.

You can see the message in the screen-shot above indicating that there is no error in our schematic. If this wasn't the case, the errors would have been listed in this window. Check the message field every time you save a design.

Symbol Creation

Please follow the example link (button) for a detailed description of "Symbol Creation". If a certain circuit design consists of smaller hierarchical components (or modules), it is usually very beneficial to identify such modules early in the design process and to assign each such module a corresponding symbol (or icon) to represent that circuit module. This step largely simplifies the schematic representation of the overall system. The "symbol" view of a circuit module is an icon that stands for the collection of all components within the module. A symbol view of the circuit is also required for some of the subsequent simulation steps, thus, the schematic capture of the circuit topology is usually followed by the creation of a symbol to represent the entire circuit. The shape of the icon to be used for the symbol may suggest the function of the module (e.g. logic gates - AND, OR, NAND, NOR), but the default symbol icon is a simple rectangular box with input and output pins. Note that this icon can now be used as the building block of another module, and so on, allowing the circuit designer to create a systemlevel design consisting of multiple hierarchy levels.

Example : Creating a Symbol


Step 1: Opening an existing schematic

Note : You can skip this step if you have your schematic window open. 1. Select your library by clicking on it in the library column of the Library Manager. The cells in the library will appear in the cell column. 2. Select your cell by clicking on it in the cell column of the Library Manager. The existing cellviews of your cell will appear in the view section. At this point, there should be only the "schematic" view appearing in the "view" column.

3. Select your cellview by clicking on it in the view column of the Library Manager. The name of the selected view will appear in the small cell window.

4. In the Library Manager Window, select Open from the File menu: ( File --> Open ) The schematic of the design will pop-up.

Example : Creating a Symbol


Step 2 : Creating cellview

1. From the Design menu, select Create Cellview and then From Cellview : ( Design --> Create Cellview --> From Cellview )

The following window will pop up.

2. Check the view names and click OK Before clicking OK, you have to ensure that the target view name is symbol, which is indicated with "To View Name" in the bottom-right corner of the pop-up window. If not, then you can change the target view name to "symbol" by clicking and holding the left mouse button on the corresponding box.

Example : Creating a Symbol


Step 3 : Locating the pins

1. After clicking OK in the Cellview From Cellview, window the following window pops up : In this window (Symbol Generation Options) you can edit your pin attributes and locations. In the default case, you will have your input(s) on the left and your output(s) on the right of the symbol.

You can change your pin locations simply by putting the pin name in the corresponding pin location field. 2. If you don't want to change anything or you are finished with editing the pin specifications, then press OK to continue. A new window will appear, showing your new symbol. This is the "black box" or symbol representation of your schematic.

Example : Creating a Symbol


Step 4 : Editing the shape of the symbol icon

1. In the new window, the automatically generated symbol is shown. As seen in the window, the default shape of the symbol icon is a rectangle, with the pins located as defined during the previous step in Symbol Generation Options pop-up window. The small red squares indicate the connection points for each corresponding pin. The red rectangle surrounding the whole symbol determines the clickable area to select the symbol when used in a schematic.

2. If you are not satisfied with the symbol properties, then you can create a new symbol simply by editing the existing one. You can do the following operations on your symbol :

Deleting/replacing some existing parts Adding new geometric shapes Changing the locations for pins and instance name Adding new labels

The following is an example for a manually created inverter symbol, which was obtained by editing the symbol above.

Example : Creating a Symbol


Step 5 : Check and Save

1. To check and save the symbol, choose Check and Save from the Design menu : ( Design --> Check and Save )

While editing the symbol, you can use only Save, which does not check anything. At this point, checking a symbol means comparing the symbol view with the corresponding schematic view, by matching all of the pin names. This occurs only when you click on Check and Save.

Simulation

Please follow the example link (button) for a detailed description of "Simulation". After the transistor-level description of a circuit is completed using the Schematic Editor, the electrical performance and the functionality of the circuit must be verified using a Simulation tool. The detailed transistor-level simulation of your design will be the first in-depth validation of its operation, hence, it is extremely important to complete this step before proceeding with the subsequent design optimization steps. Based on simulation results, the designer usually modifies some of the device properties (such as transistor width-to-length ratio) in order to optimize the performance. The initial simulation phase also serves to detect some of the design errors that may have been created during the schematic entry step. It is quite common to discover errors such as a missing connection or an unintended crossing of two signals in the schematic. The second simulation phase follows the "extraction" of a mask layout (post-layout simulation), to accurately assess the electrical performance of the completed design.

Example : Simulation
Step 1 : Open a new schematic design

Note : You should first create the symbol of the circuit schematic which you want to simulate. If you did not have the symbol for the schematic, refer to the "Create Symbol" example. 1. Open a new schematic. Follow the same procedure described in "Open a New Schematic" to create a new schematic where you will put your simulation schematic for the inverter. Give a name to your new schematic which makes it clear that the new schematic is to simulate the inverter. The new schematic is called "invTest" in this example.

Example : Simulation
Step 2 : Select and place components

Note : At this point, you should have an empty schematic editor window open. 1. The first step is to add and to place the components which will be used to simulate the inverter. The components we need for the simulation of the inverter are the following :
* inverter Symbol created for the inverter Power supply voltage Ground line DC voltage source Pulse waveform generator Capacitor

* * *

VDD GND vdc

* vpulse * C

Adding and placing components in a schematic was explained previously [click here for the corresponding example]. Here you will see how to pick up a symbol you created from your library, and to place it in your schematic. 2. Click Add and select Component.

Two new pop-up windows appear, Component Browser and Add Component.

Click Browse in the Add Component window to activate the Component Browser. 3. You should pay attention to the library from which you take the components. The point where you have to take care of is picking up the components from the correct library. You can change the component library simply by clicking and holding the left mouse button on the library field. In this step, we have two source libraries, one is the given component library "NCSU_Analog_Parts", and the other is our design library which contains the components that we designed stored previously. This library's name in our example is "tutorial". This means, to pick up the inverter symbol, we have to change the library of the Component Browser to our library, "tutorial". This can be done, as explained in previous steps [click here for the

corresponding example], by clicking and holding the left mouse button until you select the corresponding library in the pop-up library list.

After the library "tutorial" is selected, there will be a new list of components which are included in this library. Every symbol that you created within this library will show up here. So, by clicking on "inverter" in the component list in the Component Browser, you can pick up the symbol you created for the inverter.

You can always check the corresponding fields in the Add Component window to make sure that you selected the desired component. This can be easily seen in the image below.

You can go to the schematic window and place the symbol of the inverter to a point by clicking on it. These two images below show the symbol before placement and after placement.

We are now finished placing the symbol of the inverter. Placement of the other components will be explained in the next step.

Example : Simulation
Step 3 : Select and place components

Note : You do not have to place the components exactly the same way as seen in the example images. As long as you connect them correctly, you can always move a component to some other location in the same schematic. 1. Pick up and place the rest of the components required for the simulation. The remaining components are in the "NCSU_Analog_Parts" library. Change your library from "tutorial" to "NCSU_Analog_Parts". Refer to the previous example (step 3 :"Changing the library in the Component Browser window") to see how you can change the source library.

Place the supply nets, "vdd" and "gnd".

Open the folder "Supply_Nets", select "vdd" and "gnd" and place them anywhere in the schematic window. Your original circuit schematic already does have these supply nets attached to its appropriate nodes, but now you have to define the voltages in the new schematic window.

Place the voltage sources, "vdc" and "vpulse".

Go up one folder to the main content folder. Open the folder "Voltage Sources", select "vdc" and "vpulse" and place them in the schematic window.

Place the capacitance which will be the output load, "cap".

Go up one folder to the main content folder. Open the folder "R_L_C", select "cap" and place it in the schematic window.

We placed all the necessary components for this schematic. 2. Why did we put these components into this schematic ?

You can think of this procedure (creating a new schematic and placing these components into the new schematic) as being analogous to building a "test-bench" for the circuit you designed. As in the real test-bench case, you must build a simple test set-up (consisting of voltage sources, load devices, etc.) around your original circuit to measure its operation and its characteristics.

Example : Simulation
Step 4 : Wire components

Note : Always save your designs if you make any changes on it. If you make a mistake, you can use the undo command under the edit menu. 1. Connect the DC-voltage source "vdc" to "vdd" and "gnd". A DC-voltage source called "vdd" is required as the power supply voltage in all digital circuits. The value of this voltage usually depends on the technology used. The technology we use for this example is HP 0.6u AMOS14TB [click here for further information], which is low-voltage process meaning that the typical VDD voltage value is 3.3 V.

To supply the VDD voltage to the circuit, we will use a DC-voltage source with a constant voltage value of 3.3 V. How to configure the voltage value of the source will be explained in the next steps. The connections of the voltage source are shown in the image below. Simply wire the "vdd" with the positive terminal of the DC-voltage source and the "gnd" with the negative terminal of the voltage source.

2. Connect the pulse wavefrom generator "vpulse" to the input of the inverter "Inp". The pulse generator is a voltage source which can produce pulses of any duration, period and voltage levels. This source will be used to generate the input data (stimuli), so that we can observe the output of the inverter and see if the inverter operates correctly. Wire the positive terminal of the pulse generator to the input pin of the inverter "Inp" and then the negative terminal of the pulse generator to "gnd".

For the sake of simplicity, you can also pick up more "gnd" components and put them into your schematic where it is needed. All nodes connected to the "gnd" symbol will be short circuited throughout the schematic, i.e., all of them will stay at the reference voltage level which is O V (zero volts). The following is an example to describe the case explained in the last paragraph. The connections in the schematic below describe the same circuit as in the schematic shown above.

To add a new component, you can either use the Add Component and the Component Browser window, or copy the component if it exists in the current schematic. For example, you may prefer to copy the existing "gnd" instance which is the one we connected with the DC-voltage source, rather than browsing through the libraries and the components. 3. Connect the load capacitance "cap" to the output of the inverter "Outp". In CMOS digital circuits, the output nodes are typically loaded by purely capacitive loads. One of the important specifications of a circuit would usually be its driving capability for a given capacitive load. The larger the capacitive load at the output, the larger the delays to drive this load. Wire the positive node of the capacitance to the output pin of the inverter "Outp" and then the negative node of the capacitance to "gnd".

Example : Simulation
Step 5 : Define the voltage sources

In this step, we will enter the necessary parameters for the voltage source components. 1. Edit the properties of the DC-voltage source. Select the DC-voltage source by clicking on it. The selected component is highlighted by a bright box (rectangle) around it.

Click Edit on the menu bar and select Properties and Object, respectively.

The Edit Object Properties window appears.

Edit the DC voltage field in the Edit Object Properties window and type the VDD value which is 3.3V in our examples.

Click the "OK" button on the Edit Object Properties window. You can observe the new value entered for the DC-voltage near the DC-voltage source.

2. Edit the properties of the pulse generator Select the pulse generator instance in the schematic.

The Edit Object Properties window for the pulse generator appears.

The parameters which are listed in the image above are used to define a pulse which will be repeated periodically. How to use these parameters to define the input pulse waveform is explained in the figure below.

The following image shows the values for the pulse generator parameters which are used to define the input waveform. Click on OK to apply these changes and close the Edit Object Properties window.

Finally, the new values for the important parameters of the pulse generator appear near the its instance.

Step 6 : Determine the output load

1. Edit the properties of the capacitor which is the output load of the inverter. Select the capacitor by clicking on it.

Click edit on the menu and select Properties and Object, respectively. The Edit Object Properties window appears. This time, the listed parameters are valid for the selected capacitor.

The only parameter we change is the capacitance. As shown in the previous image above, the default value for the capacitance is 1 pF (picofarads). This value may be too high for a typical inverter load in this technology. Refer to the "Commonly Used Prefixes for Units in Cadence". By editing the corresponding field in the Edit Object Properties window, we change the capacitor value to 25 fF (femtofarads).

Click on OK in the Edit Object Properties window. The capacitance will be updated to the new value which is 25 fF.

2. Add labels to the nodes you want to observe after the simulation. In Cadence, labeling a node corresponds to adding certain names to the wires. In our example, there are two important nodes (or wires) which we want to observe during our simulations. These

are the input and the output nodes of the inverter. You may think that you labeled these nets before while you were drawing the schematic for the inverter by adding the pins. But, those labels are only valid in that schematic which is now in the lower level of hierarchy. So, every time you create a symbol and use this symbol in a new schematic, you have give new labels to the nodes you want to specify. Select Wire Name in the Add command list, as shown below.

The Add Wire Name window appears. Now, you can type all the label names one after the other in the Names field. You will see that there isn't any information related to the direction of the nodes, because only the pins are defined with a direction.

In the example, we will label the two wires as "in" and "out".

After all the labels are typed, move the mouse cursor on the schematic. Now you will see the first label floating with the mouse cursor. Click on the corresponding net to name the net with this label. As soon as you put the first label, the second label will appear on the mouse cursor. This procedure is repeated until you are finished putting all label names you entered in the Add Label window.

The schematic with the wires ("in" and "out") labeled is shown in the image below.

Close the Add Label window either by clicking on OK in the window or pressing ESC on keyboard. Save your design by using Check and Save in the Design command list. Be sure that the CIW doesn't report any errors or any warnings.

Example : Simulation
Step 7 : Open the simulator window

Now, we are ready to simulate our design. We will use Analog Artist as the simulator. 1. Open the Analog Artist window. Click on Tools in the menu banner of the schematic entry window and choose Analog Artist.

The Analog Artist main window will appears, as shown below. As you can see, there are four main fields in this window.

Design Analyses Design Variables Outputs

Note that the library, the cell and the view names are listed in the Design field, so that you can check that you are simulating the desired cell using the correct view.

Example : Simulation
Step 8 : Edit the Simulation Parameters

1. Click on Analyses in the menu banner and select Choose.

The Choosing Analyses window appears where you can choose the simulation type.

2. Click on tran in the Analysis field. There are many available analysis options you can choose. Each of these options provides a specific sub-region within the Choosing Analysis window. Since we want to obtain the delay information for the inverter, we choose the transient simulation type, so that the output can be traced in time domain.

In the Transient Analysis region, type a value in the Stop Time field to determine how long the simulation will take place. The Stop Time is chosen 30ns (nanoseconds). Note : Do not leave any space between the numeric value and the unit. Do not type "s" after the unit where "s" stands for "seconds". Do not forget to type a unit after the numeric value, otherwise, the stop time for the simulation will be something in seconds which means your simulation will last forever !

3. Click on OK in the Choosing Analyses window to close it and to go back to the Analog Artist window.

Example : Simulation
Step 9 : Run the Simulation

Now, we have to select the nodes that we want to observe as simulation results. 1. Click on Outputs in the menu banner, select To Be Plotted and then Select on Schematic.

The schematic window becomes active, so that you can select the nodes to be observed in that window. 2. Click on the nets which you want to observe in the schematic window.

The selected nodes are the input of the inverter, "in", and the output of the inverter "out" which drives the capacitive load. Each time you select a node, the corresponding wire name appears in the Outputs list. 3. Press ESC to finish your selections.

4. Start the simulation by clicking Simulation and then selecting Run.

The waveform window appears after the simulation is completed. It includes the waveforms of the selected nodes plotted between t=0 and the determined Stop Time which is 30 ns in our example.

You will see the two waveforms together, plotted on the same time axis. To separate the waveforms, from the menu Axes select option To Strip. Once seperated you can select the waveforms by clicking on them and draging them on top of each other to group. To return to the initial composite waveforms, from the menu Axes select option To Composite. Notice that this option has replaced the former To Strip option.

Example : Simulation
Step 10 : Re-run the Simulation

If you are not satisfied with the simulation results, there are two different aspects that can be modified :

The simulation environment is not satisfactory.

This means that the setup to simulate your design should be modified. You can basically change two things, the properties of the input signal you feed to the circuit and the amount of output load which is capacitive. Also, make sure that the power supply voltages are connected properly. Refer to the step "Define the voltage sources" to setup your input sources. Refer to the step "Determine the output load" to change the capacitance value of the capacitor. Refer to the step "Define the voltage sources" to check the connections of your power supply voltages. These changes are made without descending to a lower level of hierarchy in the design.

You have to modify your circuit design.

Usually, you will need to change the W/L ratios (the ratio between the channel width and channel length) of the transistors to meet your design specifications. Therefore, you have to edit your design which consists only of a CMOS inverter in our example. The procedure describing how to re-run the simulation after editing the design is summarized below. 1. Go back to the schematic window and select the symbol of your design. The symbol for the inverter should be selected in this example.

2. Click on Design in the menu banner, select Hierarchy and then Descend Edit.

3. Click on OK in the Descend window which asks the designer which view of the design is to be edited.

The existing schematic window now displays the schematic view for the inverter, by going one level down through the design hierarchy. 4. Make the appropriate changes in the editable schematic of the design. To change the existing W/L ratio for a specific transistor, you have to edit its object properties. Refer to the "Edit Object Properties" step in the schematic example. 5. Check and save your new schematic.

6. Click on Design in the menu banner, select Hierarchy and then Return.

Never forget that you are editing the design at a lower level of the hierarchy - you always must return to the original level from which you have descended. 7. Go to the Analog Artist window and run the simulation again, as described in "Run the Simulation" step. As the simulation runs, you can switch to the waveform window, because the waveforms will be updated after the simulation is finished. You can iterate on your design as described in this section of the tutorial. When you want to end the simulation, quit the Analog Artist simulator. This will automatically close the Waveform window, too. Note: Quitting a tool does not mean closing the corresponding window. Please always use the "close" or "quit" commands located in the menu bar of the tool.

Mask Layout

Manual Layout Example Automatic Layout Example (Device Level Placer)

The creation of the mask layout is one of the most important steps in the full-custom (bottom-up) design flow, where the designer describes the detailed geometries and the relative positioning of each mask layer to be used in actual fabrication, using a Layout Editor. Physical layout design is very tightly linked to overall circuit performance (area, speed and power dissipation) since the physical structure determines the transconductances of the transistors, the parasitic capacitances and resistances, and obviously, the silicon area which is used to realize a certain function. On the other hand, the detailed mask layout of logic gates requires a very intensive and time-consuming design effort. The physical (mask layout) design of CMOS logic gates is an iterative process which starts with the circuit topology and the initial sizing of the transistors. It is extremely imporant that the layout design must not violate any of the Layout Design Rules, in order to ensure a high probability of defect-free fabrication of all features described in the mask layout.

Please follow this example link for a detailed description of the main procedures in "Mask Layout Design". Another alternative of generating the mask layout is to make use of automated tools. Please follow this example link for a detailed description of generating a layout from a schematic using the device level placer.

Example: CMOS Inverter Layout

In this tutorial, a simple CMOS inverter layout will be drawn step by step. We will start with a simple design idea and will complete the mask layout using different techniques.

Steps of Layout Design

Starting up o Design Idea o Create Layout Cellview o Virtuoso and LSW NMOS o Drawing the N-Diffusion (Active) o The Gate Poly o Making Active Contacts o Covering Contacts with Metal-1 o The N-Select Layer PMOS o Drawing the P-Diffusion (Active) o Transistor Features o The P-Select Layer o Drawing the N-Well Connecting both transistors o Placing the PMOS and NMOS o Connecting the Output

Connecting the Input Making a Metal-1 connection for the Input Power Rails P Substrate contact N Substrate contact Enclosing the Substrate Contact DRC and Finalizing o Design Rule Checking o Final Layout

o o o o o o

Example: CMOS Inverter Layout


Design Idea

To draw the mask layout of a circuit, two main items are necessary at the beginning:
1. A circuit schematic 2. A signal flow diagram

1. Circuit schematic
Any physical layout will actually correspond to a circuit schematic. It is important that the schematic of a functionally correct circuit is present and the layout is drawn according to the schematic (and not the other way around).

The schematic will the contain exact connection diagram and individual device properties. Two example inverter schematics can be seen below. While both schematics are identical, the one on the right is drawn in a way to resemble the final layout.

In this example the NMOS transistor and the PMOS transistor have identical dimensions W=1.2u and L=0.6u 2. Signal flow diagram
A layout can be drawn in a number of different ways. The most important factor determining the actual layout is the signal flow. The layout will almost in all cases be a part of a larger structure or the basic building element of an array of identical blocks.

In modern fabrication technologies, more than one physical layer can be used to transfer signals. For example with the fabrication technology used throughout this manual, a total of 4 layers (poly, Metal-1, Metal-2, Metal-3) can be used. The general flow of the signal connections as well as their layers need to be pre-determined. The following is an sample flow diagram used for the example layout:

In this flow diagram, it has been decided that all signals are on the same layer (blue, Metal-1) and that all signals will travel horizontally. Note that the signal flow diagram is just a concept that you can visualize for a particular circuit, or a simple scetch that you can scribble on the back of an envelope. The actual mask layout will roughly follow this concept.

Example: CMOS Inverter Layout


Create Layout Cellview

We will assume, that you have logged on and started Cadence Design Tools, and that you already have created a design library for yourself. Please refer to Starting Cadence Section if you have not done so. 1. From the Library Manager, choose File then New and then Cellview ( File --> New --> Cellview )

2. Enter cellname and choose layout cellview A dialog box will appear prompting you for the design library, cellname and cellview. Make sure that the library name corresponds to your design library, choose a name for your cell and choose Virtuoso as the design tool. The cellview will be selected as layout.

Example: CMOS Inverter Layout

Virtuoso and LSW Two design windows will pop-up after you have entered the design name.

LSW The Layer Selection Window (LSW), lets the user select different layers of the mask layout. Virtuoso will always use the layer selected in the LSW for editing. The LSW can also be used to determine which layers will be visible and which layers will be selectable. To select a layer, simply click on the desired layer within the LSW. Virtuoso Virtuoso is the main layout editor of Cadence design tools. There is a small button bar on the left side of the editor. Commonly used functions can be accessed by pressing these buttons. There is an information line at the top of the window. This information line, (from left to right) contains the X and Y coordinates of the cursor, number of selected objects, the travelled distance in X and Y, the total distance and the command currently in use. This information can be very handy while editing. At the bottom of the window, another line shows what function the mouse buttons have at any given moment. Note that these functions will change according tto the command you are currently executing. Most of the commands in Virtuoso will start a mode, the default mode is selection, as long as you do not choose a new mode you will remain in that mode. To quit from any mode and return to the default selection mode, the "ESC" key can be used.

Example: CMOS Inverter Layout


Drawing the N-Diffusion (Active)

Now we will start drawing our first transistor. which will be the NMOS transistor of the CMOS inverter. From the schematic, we know that this transistor has a channel width of 1.2u. The width of the transistor will correspond to the width of the active area. We will select the n-diffusion layer and draw a rectangular active area to define the transistor. 1. Select nactive layer from the LSW

2. From the Create menu in Virtuoso select Rectangle ( Create --> Rectangle )

3. Draw the box You are now in rectangle mode. Select the first corner of rectangle in the layout window (you may select any point within the window but try to select a point close to the origin), click once, and then move the mouse cursor to the opposite corner. Using the information bar, draw a box that is 3.6u horizontal and 1.2u vertical. All units are in micrometers by default. To simplify the drawing, a grid of half a lambda is used, that is the cursor moves in 0.15u increments only.

Example: CMOS Inverter Layout


The Gate Poly

The second step is to draw the gate. We will use a vertical polysilicon rectangle to create the channel. Note that the length of the transistor channel will be determined by the width of this poly rectangle. 1. Select poly layer from the LSW

2. From the menu Misc choose Ruler ( Misc --> Ruler )

The ruler is a very handy function. In our case we need to draw the poly rectangle in the middle of the diffusion region. Furthermore, design rules tell us that poly must extend at least by 0.6u (2 Lambda) from edge of the diffusion . To pinpoint the location of the poly gate we can use two rulers. One ruler will be used to determine the horizontal distance of the poly gate from the diffusion edge, while a second ruler will show the minimum amount of poly extension outside the diffusion according to the design rules 3. Draw poly rectangle

The starting point is pinpointed by two rulers. The rectangle function is used to draw a poly rectangle that is 0.6u horizontal and 2.4u vertical.

Example: CMOS Inverter Layout


Making Active Contacts

The next step is to make the active contacts. These contacts will provide access to the drain and source regions of the NMOS transistor. 1. Select the ca (Active Contact) layer from the LSW.

2. Use the ruler to pinpoint a location 0.30u from the edges of diffusion. 3. Create a square with a width and height of 0.6u within the active area.

4. From the Edit menu choose Copy ( Edit --> Copy )

You could choose to draw the second contact the same way as you have drawn the first one. However, copying existing features is also a viable alternative. The copy dialog box will pop-up as soon as you select the copying mode. For this operation the default values are appropriate. The Snap Mode is an interesting option. When this is in orthogonal setting the copied objects will move only along one axis. This is a good feature to help you avoid alignment problems.

5. Copy the contact After you enter the copy mode, an object must be selected. Click in the contact, you'll notice that the outline of contact will attach to your cursor. Now move the object, and click when you are satisfied with the location.

Design rules state that the minimum contact to poly spacing must be 0.6u (2 lambda). You can use a ruler to pinpoint the location. Please note that you can interrupt any mode for placing a ruler (and zooming in and out). After you are finished (by hitting "ESC" key) you'll return to the mode you were in.

Now you have placed an active contact each into the source and drain diffusion regions of the transistor.

Example: CMOS Inverter Layout


Covering Contacts with Metal-1

Active contacts in fact only define holes in the oxide (connection terminals). The actual connection to the corresponding diffusion region is made by the Metal layer. 1. Select layer Metal-1 from the LSW

2. Draw two rectangles 1.2u wide to cover the contacts

Note that Metal-1 has to extend over the contact in all directions by at least 0.3u (1 lambda).

Example: CMOS Inverter Layout


The N-Select Layer

Each diffusion area of each transistor must be selected as being of n-type or p-type. This is accomplished by a defining the "window: of n-type (or p-type) doping (implantation), through a special mask layer called n-select (p-select). 1. Select nselect layer from the LSW.

2. Draw a rectangle extending over the active area by 0.6u (2 lambda) in all directions.

This is it ! Our first transistor is finished, now let us make a few million more of the same :-)

Example: CMOS Inverter Layout

Drawing the P-Diffusion (Active)

Now that we have drawn the NMOS transistor, the next step is to draw the PMOS transistor. The basic steps invloved in drawing the PMOS are the same. 1. Select pactive layer from the LSW

2. Draw a rectangle 3.6u by 1.2u You can use the cursor keys and the zoom function to find yourself a place to build the transistor. Make sure you leave enough separation between the NMOS and the PMOS. Note that the PMOS transistor will also be sorrounded by the N-well region.

Example: CMOS Inverter Layout


Transistor Features

These three steps are identical to the ones done for the NMOS. 1. Draw the gate poly

2. Place the contacts

3. Cover contacts with Metal-1

Example: CMOS Inverter Layout


The P-Select Layer

As with the NMOS transistor, the p-type doping (implantation) window over the active area must be defined using the n-pelect layer. 1. Select pselect layer from the LSW

2. Draw a rectangle that extends over the active area by 0.6u (2 lambda) in all directions.

Example: CMOS Inverter Layout


Drawing the N-Well

In this process, the silicon substrate is originally doped with p-type impurities. NMOS transistors can be realized on this p-type substrate simply by creating n-type diffusion areas. For the PMOS transistors however a different approach must be taken: A larger n-type region (n-well) must be created, which acts like a substrate for the PMOS transistors. From the process point of view, the n-well is one of the first structures to be formed on the surface during fabrication. Here we chose to draw the n-well after almost everything else is finished. Note that the drawing sequence of different layers in a mask layout is completely arbitrary, it does not have to follow the actual fabrication sequence. 1. Select the nwell layer from the LSW

2. Draw a large n-well rectangle extending over the P-Diffusion

The n-well must extend over the PMOS active area by a large margin, at least 1.8u (6 lambda)

Example: CMOS Inverter Layout


Placing the PMOS and NMOS transistors

In this example, we did not pay much attention to the location of the transistors while building them. As long as the design rules are not violated, the transistors can be placed in any arbitrary arrangement. Yet based on our original signal flow diagram, it is more desirable to place the PMOS transistor directly on top of the NMOS transitor- for a more compact layout. 1. Select the PMOS transistor First make sure that you are in selection mode. If you are in any other mode (like rectangle drawing mode) exit the mode by pressing "ESC". Now using the mouse, click and drag a box that covers your PMOS. If you were successful, all the objects within the PMOS would be highlighted as in the figure below:

2. From the menu Edit select the option Move ( Edit --> Move )

A window will pop-up similar to the copy window. This time we will have to change the Snap Mode option to Anyangle so that we can move the transistor freely.

3. Pick the reference point We will be asked to find a reference point for the object to be moved. The cursor will practically grab the object from that reference point. Since we want an accurate placement, it is advisable to select a point for which alignment is simpler. The corner between the diffusion and the poly is a good place to grab the PMOS. After we have picked the reference point, the outline of the shape will appear attached to the cursor and we will be able to move the shape around. Since the minimum distance from diffusion to the n-well edge is 1.8u, the PMOS and NMOS have to be at least 3.6u apart. We can place a ruler to help us aligning the two shapes and to measure the distance.

4. Place the transistor You can drop the selected object (in this case consisting of the n-well, the p-active, poly and contacts) into its final location by clicking once on the left mouse button.

Example: CMOS Inverter Layout

Connecting the Output

1. Draw a Metal-1 rectangle between NMOS and PMOS drain region contacts Note that the minimum Metal-1 width is 0.9u (3 lambda), thus narrower than the Metal-1 covering the contacts. Also note that the transistors are completely symmetric, the source and drain regions are interchangeable.

Example: CMOS Inverter Layout


Connecting the Input

The next step will be to connect the gates of both transistors, which will form the input. To do this, we could use the rectangle command again, but this time we will use a different command, the path command. Throughout this tutorial, you will see that you typically have multiple options, commands or procedures available to create the same features in the layout. Please become familiar with as many of such options as possible.

1. Select poly layer from the LSW

2. From the Create menu select Path ( Create --> Path )

The path options box will pop up:

In the path mode you can draw lines (or paths) with the selected layer. The width of the drawn line can be adjusted, the default is the minimum width of the selected layer. 3. Start path To start the path, click on the middle of the PMOS poly extension. You'll see a ghost line appear. Move this ghost line to the NMOS poly extension.

4. Double click to finish path A single click will finish a line segment and let you continue drawing, a double click will finish the path.

Example: CMOS Inverter Layout

Making a Metal-1 connection for the Input

We have already decided in our signal flow graph that we want the input in Metal-1. Therefore we have to make a connection from the poly layer to the Metal-1 layer. This connection can be done manually by drawing a poly contact layer between Metal-1 and poly, but we will use the path command to automatically add the contacts. 1. Starting from the poly line connecting the gates, start drawing a horizontal poly path 2. On the Path Options dialog box, click on Change To Layer and switch to Metal1

This will automatically add a contact to the end of the current path, note that this will still be a ghost line. You can place the contact at a certain location by clicking once, thereafter the path will continue using the new layer.

3. Finish the path

You can finish the path by double clicking. Note that you will not be able to see the contact between the metal and poly layers, there will be a red square instead. This is called an instance. An instance is practically a finished layout that is included completely in your circuit. Since it is a complete layout, it is not possible to edit that layout from within your cell, it is said to be on a lower level of hierarchy.

By default, only the current layer of hierarchy is visible. Objects that you include as instances will be shown as boxes corresponding to their size. You can press SHIFT-F to see all levels of hierarchy. CTRL-F will return you to viewing only a single layer of hierarchy.

Example: CMOS Inverter Layout


Power Rails

Now that our transistors are placed and connected, we will have to add Power and Ground rails. Usually a layout consists of a large number of cells, all of which need power and ground connections. Therefore it is common to design cells such that they will have one continous, wide power and ground connection when placed side by side. Our Signal Flow Graph suggests horizontal power and ground lines in Metal-1. 1. Draw the Power Rail in Metal-1 above the PMOS

2. Draw the Ground Rail in Metal-1 below the NMOS

Make sure to connect the Power Rail and the Ground rail to the source contact of the PMOS and to that of NMOS, respectively.

Example: CMOS Inverter Layout

P-Substrate Contact

The substrate on which the transistors are built must be properly biased. The way to do this is to add substrate contacts. The NMOS transistors are build on a p-type substrate, we will have to create a p-type substrate contact. 1. Draw a P-select square next to the NMOS transistor. Since the contact will be made to p-substrate, the contact area will have to be p-type.

2. Draw a P-active square inside the P-select area. This will define the active area of the substrate contact. make sure that you are not violating any design rules associated with active area spacing.

3. Draw the active contact square inside the p-type active area.

4. Make a metal connection to ground, covering the entire substrate contact.

Note that the susbtrate contact can also be created and placed as an instance, instead of drawing every item seperately. this alternative approach will be demonstrated in the next step, for the nwell contact.

Example: CMOS Inverter Layout


N-Substrate Contact

The PMOS transistor was placed within the n-well, this well also has to be biased with the VDD potential. THis will be done with an n-type substrate contact. We can follow the same steps that we did for the p substrate contact, but we will try to introduce another method. Almost all of the interlayer connections are already available as instances in your design library. We used the metal-poly contact instance while connecting the input. Similar instances also exist for the substrate connections. 1. From the menu Create select option Instance ( Create --> Instance )

This will pop-up the instance options menu.

You'll have to provide a cell name and library here. It may be the case that you already know the cell name and cell view, but in this case it is better to Browse in your library to find the appropriate cell. This is essentially the same library browser that you access when you start Cadence Design Tools. It lets you choose the library, cell and cell view, your selection will be transferred to the Instance options menu.

The N-substrate contact is named NTAP, and only has a symbolic view. 2. Move the instance to the desired location. Once you have selected the instance, the cursor will show a ghost image representing the instance, and you'll be able to move the instance to the desired location:

3. Place the instance. Once satisfied, you can click to place the instance. You'll remain in the instance mode after you have placed the instance, press "ESC" to go back to selection mode again. Note that in this example, the n-well contact has been placed right on top of the n-well boundary, which will obviously generate a rul eviolation. the n-well is simply not wide enough to accomodate both the PMOS transistor and rge contact. This will have to be dealt with in the next step.

4. Make the power connection. The instance will not automatically connect itself to the power supply rail. This connection has to be made by either a Metal-1 rectangle or path.

Example: CMOS Inverter Layout


Enclosing the substrate contact

In the previous step we tried to place the n-type substrate contact in the n-well. Since we had drawn the n-well to cover the P-diffusion at minimum length, the well is not wide enough to accomodate the additional contact. We must enlarge the n-well, so that it also covers the substrate contact. One way to do this would be to simply draw an adjoining rectangle using the n-well layer. Instead, we will try to modify the existing rectangle, so that it covers the contact. 1. Press F4 on the keyboard to toggle selection mode. By default, the selection mode will only select whole objects. Pressing "F4" will change this default to partial selection. The information bar will start displaying "(P) Select" (P for partial) instead of "(F) Select" (F for Full). 2. Move cursor over the left edge of the n-well.

You'll notice that as soon as the cursor is close to the edge, only the edge line will be highlighted as a pale dashed line.

3. Click once to select the edge. 3. Move mouse over the selected edge (without pressing any mouse buttons). You'll notice that the cursor changes shape when you are close to the edge. 4. Press and hold left mouse button when cursor changes above the selected edge. You have grabbed the edge, and as long as you do not release the mouse button you can "stretch" the edge. Move the edge of the n-well so that all the of the substrate contact is covered by n-well.

Example: CMOS Inverter Layout


Design Rule Checking

The layout must be drawn according to strict design rules. After you have finished your design, an automatic program will check each and every feature in your design against these design rules and report violations. This process is called Design Rule Checking. Our design is finished, we must now perform a Design rule Check to see if we have any errors. 1. From the menu Verify select option DRC ( Check --> DRC )

This will pop-up the DRC options dialog box.

2. Start DRC The default options for the DRC are adequate for most situations. DRC results and progress will be displayed in the CIW.

You'll have to check the results from the CIW. In this example we have two poly-to-poly contact spacing errors. You can also see that the rule number for this is 5.5, and the spacing is supposed to be at least 1.5um The errors are also highlighted on the layout.

As it is mostly the case, one misplacement will cause multiple DRC errors. The error can be corrected by moving the contact further to the left.

After moving the contact to the left, we will have to perform another DRC.

This is a successful DRC.

Example: CMOS Inverter Layout


Final Layout

This is the completed layout of the CMOS inverter. Congratulations.

Example: Automatic Layout Generation Tools (Device Level Placer)

In this tutorial an alternative way of drawing layouts will be introduced. This tutorial assumes that the reader is familiar with the Virtuoso layout tool and has followed the layout manual.

Since the manual creation of the physical layout is labour intensive, significant amount of work has been put into the automation of the physical layout design process. The device level placer is one of the lower-level answers. The device level placer, will read in a schematic and place all the transistors and I/O pins in the layout window. This tool will use parametric instances that will generate appropriately sized transistors. Although the device level placer and similar contemporary tools provide some nice features, the quality of the layouts they produce are still far from hand optimized layouts. Steps of Automatic Layout Generation

Starting the Automatic Layout Tool Placing the Components Making Connections Finishing Touches

Example : Automatic Layout Generation (CMOS Inverter)


Step 1 : Starting the Automatic Layout Tool

To start the automatic layout generation, you must have finished your circuit schematic first. Please follow the Schematic Tutorial Example first if you have not done so. 1. Open the schematic view of your design.

In this example, the PMOS transistor has a channel width of W=4.5u and a channel length of L=0.6u, while the NMOS transistor has a channel width of W=3u and a channel length of L=0.6u. 2. From the menu select Tools --> Design Synthesis --> Device-Level Editor.

Selecting this option will first open up a small dialog box that will let the user select the cell name for the layout. It is a good idea to use the same cell name and specify layout as the cell view name.

Upon the selection of the view name, the user will be prompted another small dialog box. This box will ask for a pin layer, pins in the layout will be placed as connections in the given layer. Choose Metal-1 as the I/O Pin Layer, and all of the pins that you have specified in your schematic will be placed as connections in Metal-1.

In addition to the already open schematic window, a new layout window and the layer selection window will pop up. These three windows define the working environment for the automatic layout generation flow.

After the I/O pin layer is selected, two rectangles representing the transistors (the nmos and the pmos) and two Metal-1 squares will show up in the bottom half of the layout window. Notice the cyan colored square on the upper half of the layout window: This is the estimated size of the layout, this size is not mandatory, it is calculated roughly from the sizes of the active elements. With the next step, you'll start forming the layout within the box above.

Example : Automatic Layout Generation (CMOS Inverter)


Step 2 : Placing the Components

The default behavior of the layout editor is to show only the current hierarchy. You can press shift-f to display all the hierarchy levels, this way you'll be able to see actual transistors instead of the red instance rectangles. The first step is to place all the components within the design area. 1. Select the PMOS transistor by clicking once.

2. Move the selected transistor by dragging it with the mouse.

Note that in addition to the ghost image of the selected object, lines to other objects will show up. These lines represent the connections of the selected (and dragged) object to other objects of the design. In this example the poly of the PMOS transistor will be shown connected to the poly of the NMOS transistor and the input, and the drain region of the transistor will be shown connected to the output and the drain region of the NMOS. 3. Release the mouse button to place the selected transistor.

4. Move the remaining objects the same way

Note that the automatic layout tool looks almost identical to the Virtuoso layout editor. All of the commands that were available in the manual layout tool are available in this tool too. You can use rulers to pinpoint the exact location of the devices.

The I/O pins correspond to the pins drawn in the schematic. Although they just look like an ordinary Metal-1 patch they contain information about the name, type and direction of the connection.

As the last step, move and place the output pin too. 5. Final placement

Your final working environment should look more or less like this. Note that this placement is not obligatory, you can choose to place the transistors and the I/O pins any way you desire.

Example : Automatic Layout Generation (CMOS Inverter)


Step 3 : Making Connections

In the previous step we have placed the components, the next step is to make the connections between individual objects. We will be using the same methods that we used during manually drawing a layout here. The automatic layout tool has an additional menu which provides some useful options to faciliate signal connections. 1. From the menu DLE select option Probe.

The probe option will display a small dialog box:

Now you can go and select connections (nets) devices, and terminals in either layout or the schematic window and the corresponding object will be highlighted in the other window. This is called cross-probing.

As an example try clicking and selecting the wire connecting the drains of both transistors to the output pin, notice that two drain regions as well as the output I/O pin in the layout window will be highlighted. 2. Connect the drain regions with Metal-1 using the path command.

Notice that the new connection will also be highlighted as it is drawn.

Connect the gates of both transistors using a poly path and connect this path to the input.

Example : Automatic Layout Generation (CMOS Inverter)


Step 4 : Finishing Touches

At this point the design is almost finished. Unfortunately the automatic design creation process for this fabrication technology is unable to add substrate connections. So these will have to be added by the user. 1. Using the Create --> Instance command select a PTAP substrate contact.

Place the instance close to the bottom of the NMOS transistor, close to the source region (which has not been connected to a ground rail yet).

2. Using the Create --> Instance command select a NTAP substrate contact.

This contact will be used as the n-well contact.

As in the previous manuallayout example, the N-Substrate contact will not fit in a n-well that is drawn according to the minimum distance rules from the transistor. Since the transistor is an instance, it is not possible to stretch the n-well edge as it has been done in the layout example.

To address this problem, we can easily draw an extension to the already existing n-well using the rectangle command. The next step is to draw the ground rail and the power rail. 3. Using the Rectangle command draw the ground rail with Metal-1.

Make sure to connect the NMOS source and the substrate contact to the ground rail you have just drawn. 4. Draw the power rail with Metal-1. Notice that the power rail and the ground rail are symmetric. So instead of redrawing the power rail you can copy the ground rail.

To select multiple objects press "SHIFT" key while selecting objects. When you are done, use Edit --> Copy command to copy the selected image. You can flip the selected image upsidedown by clicking the "upsidedown" button on the copy dialog box.

5. Place the pins. The next step is to give connection information to the power rails and ground rails. To do this, first select the Metal-1 layer from the layer selection window and then use the Create --> Pin command.

This will pop-up a dialog box to allow you enter various parameters of the pin.

For the power rail enter the name: "vdd!" (without quotes, watch case and the exclamation mark). The exclamation mark is important, it defines a global signal, that is a signal name that is unique accross your entire design.

Define a rectangle with the Metal-1 layer on the power rail, as the pin location. The location of the pin and the size are not relevant (at least not in this context), as a good practice try to make it a minimum sized box (0.9u x 0.9u) and make sure it is on the power rail. Place a pin on the ground rail in a similar way. Use the name "gnd!" (without the quotes, watch for the case and exclamation mark) for the pin name.

Place the pin:

This is the final layout, created by the automatic device level editor.

Example : Automatic Layout Generation (CMOS Inverter)


Step 4 : Finishing Touches

At this point the design is almost finished. Unfortunately the automatic design creation process for this fabrication technology is unable to add substrate connections. So these will have to be added by the user. 1. Using the Create --> Instance command select a PTAP substrate contact.

Place the instance close to the bottom of the NMOS transistor, close to the source region (which has not been connected to a ground rail yet).

2. Using the Create --> Instance command select a NTAP substrate contact.

This contact will be used as the n-well contact.

As in the previous manuallayout example, the N-Substrate contact will not fit in a n-well that is drawn according to the minimum distance rules from the transistor. Since the transistor is an instance, it is not possible to stretch the n-well edge as it has been done in the layout example.

To address this problem, we can easily draw an extension to the already existing n-well using the rectangle command. The next step is to draw the ground rail and the power rail. 3. Using the Rectangle command draw the ground rail with Metal-1.

Make sure to connect the NMOS source and the substrate contact to the ground rail you have just drawn. 4. Draw the power rail with Metal-1. Notice that the power rail and the ground rail are symmetric. So instead of redrawing the power rail you can copy the ground rail.

To select multiple objects press "SHIFT" key while selecting objects. When you are done, use Edit --> Copy command to copy the selected image. You can flip the selected image upsidedown by clicking the "upsidedown" button on the copy dialog box.

5. Place the pins. The next step is to give connection information to the power rails and ground rails. To do this, first select the Metal-1 layer from the layer selection window and then use the Create --> Pin command.

This will pop-up a dialog box to allow you enter various parameters of the pin.

For the power rail enter the name: "vdd!" (without quotes, watch case and the exclamation mark). The exclamation mark is important, it defines a global signal, that is a signal name that is unique accross your entire design.

Define a rectangle with the Metal-1 layer on the power rail, as the pin location. The location of the pin and the size are not relevant (at least not in this context), as a good practice try to make it a minimum sized box (0.9u x 0.9u) and make sure it is on the power rail. Place a pin on the ground rail in a similar way. Use the name "gnd!" (without the quotes, watch for the case and exclamation mark) for the pin name.

Place the pin:

This is the final layout, created by the automatic device level editor.

Example : Automatic Layout Generation (CMOS Inverter)


Step 4 : Finishing Touches

At this point the design is almost finished. Unfortunately the automatic design creation process for this fabrication technology is unable to add substrate connections. So these will have to be added by the user. 1. Using the Create --> Instance command select a PTAP substrate contact.

Place the instance close to the bottom of the NMOS transistor, close to the source region (which has not been connected to a ground rail yet).

2. Using the Create --> Instance command select a NTAP substrate contact.

This contact will be used as the n-well contact.

As in the previous manuallayout example, the N-Substrate contact will not fit in a n-well that is drawn according to the minimum distance rules from the transistor. Since the transistor is an instance, it is not possible to stretch the n-well edge as it has been done in the layout example.

To address this problem, we can easily draw an extension to the already existing n-well using the rectangle command. The next step is to draw the ground rail and the power rail. 3. Using the Rectangle command draw the ground rail with Metal-1.

Make sure to connect the NMOS source and the substrate contact to the ground rail you have just drawn. 4. Draw the power rail with Metal-1. Notice that the power rail and the ground rail are symmetric. So instead of redrawing the power rail you can copy the ground rail.

To select multiple objects press "SHIFT" key while selecting objects. When you are done, use Edit --> Copy command to copy the selected image. You can flip the selected image upsidedown by clicking the "upsidedown" button on the copy dialog box.

5. Place the pins. The next step is to give connection information to the power rails and ground rails. To do this, first select the Metal-1 layer from the layer selection window and then use the Create --> Pin command.

This will pop-up a dialog box to allow you enter various parameters of the pin.

For the power rail enter the name: "vdd!" (without quotes, watch case and the exclamation mark). The exclamation mark is important, it defines a global signal, that is a signal name that is unique accross your entire design.

Define a rectangle with the Metal-1 layer on the power rail, as the pin location. The location of the pin and the size are not relevant (at least not in this context), as a good practice try to make it a minimum sized box (0.9u x 0.9u) and make sure it is on the power rail. Place a pin on the ground rail in a similar way. Use the name "gnd!" (without the quotes, watch for the case and exclamation mark) for the pin name.

Place the pin:

This is the final layout, created by the automatic device level editor.

Example : Automatic Layout Generation (CMOS Inverter)


Step 4 : Finishing Touches

At this point the design is almost finished. Unfortunately the automatic design creation process for this fabrication technology is unable to add substrate connections. So these will have to be added by the user. 1. Using the Create --> Instance command select a PTAP substrate contact.

Place the instance close to the bottom of the NMOS transistor, close to the source region (which has not been connected to a ground rail yet).

2. Using the Create --> Instance command select a NTAP substrate contact.

This contact will be used as the n-well contact.

As in the previous manuallayout example, the N-Substrate contact will not fit in a n-well that is drawn according to the minimum distance rules from the transistor. Since the transistor is an instance, it is not possible to stretch the n-well edge as it has been done in the layout example.

To address this problem, we can easily draw an extension to the already existing n-well using the rectangle command. The next step is to draw the ground rail and the power rail. 3. Using the Rectangle command draw the ground rail with Metal-1.

Make sure to connect the NMOS source and the substrate contact to the ground rail you have just drawn. 4. Draw the power rail with Metal-1. Notice that the power rail and the ground rail are symmetric. So instead of redrawing the power rail you can copy the ground rail.

To select multiple objects press "SHIFT" key while selecting objects. When you are done, use Edit --> Copy command to copy the selected image. You can flip the selected image upsidedown by clicking the "upsidedown" button on the copy dialog box.

5. Place the pins. The next step is to give connection information to the power rails and ground rails. To do this, first select the Metal-1 layer from the layer selection window and then use the Create --> Pin command.

This will pop-up a dialog box to allow you enter various parameters of the pin.

For the power rail enter the name: "vdd!" (without quotes, watch case and the exclamation mark). The exclamation mark is important, it defines a global signal, that is a signal name that is unique accross your entire design.

Define a rectangle with the Metal-1 layer on the power rail, as the pin location. The location of the pin and the size are not relevant (at least not in this context), as a good practice try to make it a minimum sized box (0.9u x 0.9u) and make sure it is on the power rail. Place a pin on the ground rail in a similar way. Use the name "gnd!" (without the quotes, watch for the case and exclamation mark) for the pin name.

Place the pin:

This is the final layout, created by the automatic device level editor.

Design Rule Check (DRC)

Please follow this example link for a description of how to run DRC on a layout.

The created mask layout must conform to a complex set of design rules, in order to ensure a lower probability of fabrication defects. A tool built into the Layout Editor, called Design Rule Checker, is used to detect any design rule violations during and after the mask layout design. The detected errors are displayed on the layout editor window as error markers, and the corresponding rule is also displayed in a separate window. The designer must perform DRC (in a

large design, DRC is usually performed frequently - before the entire design is completed), and make sure that all layout errors are eventually removed from the mask layout, before the final design is saved.

You might also like