Cadence Design System Tutorials from CMOSedu.com (Return)

 

Tutorial 3 – Design, layout, and simulation of a CMOS inverter

 

In this third tutorial we’ll draw the schematic, symbol, and layout of a CMOS inverter.

We’ll also simulate the DC behavior of the inverter.

 

Before we get going with this tutorial please make sure you know the answers to the following questions.

If you don’t, or the answers don’t come to you quickly, then go back through Tutorial_1 and Tutorial_2

 

1.     What does the Bindkey q do?

2.    Which two Cell Views are used when doing an LVS?

3.    What is the difference between the nmos and nmos4 schematic cells?

4.    How do you select the MOSFET models in the ADE window? What does ADE stand for?

5.    What is the difference between moving and stretching?

6.    How do you layout a rectangle on the metal1 layer?

7.    What does the ! indicate at the end of gnd! and vdd!

8.    What do the acronyms LSW and CIW stand for?

9.    How is the ruler used? Cleared?

 

Okay, hopefully these are easy.

Let’s start out, assuming Virtuoso has been started in the CMOSedu directory, by copying the Tutorial_2 library to a library named Tutorial_3.

Ensure the new library is placed in $HOME/CMOSedu

 

snap1.jpg

 

Next create a schematic Cell View called inverter.

 

snap2.jpg

 

With this new schematic view open also open the schematic view of NMOS_IV as seen below.

 

snap3.jpg

 

What we are going to do is copy the NMOS symbol from the NMOS_IV cell into the inverter cell.

To do this we need to have both windows open (no clipboard that we can copy items to).

Press the copy Bindkey c (or use the menu) then click on the nmos4 symbol and drag over into the inverter window (and click the left mouse button to instantiate).

 

snap4.jpg

 

Close the NMOS_IV window and open the PMOS_IV window.

Repeat for the pmos4 cell to get the following.

 

snap5.jpg

 

Instantiate vdd and gnd supply nets.

 

snap6.jpg

 

Finally, wire up the inverter and add pins as seen below.

The A pin should have an input direction and pin Ai should have an output direction.

 

snap7.jpg

 

Next use the menu items to Create -> Cell View -> From Cell View to create the symbol for the inverter.

 

snap8.jpg

 

Select OK (twice).

Check and Save the schematic view of the inverter (and then close this window).

Delete everything in the inverter’s symbol view except for the pins.

Draw the inverter symbol seen below (Create -> Shape -> Line/Circle)

Since we aren’t showing the pin names select the pin and verify that it’s in the right location (A is an input Ai is the inverter’s output)

 

snap10.jpg

 

Check and Save the inverter symbol.

Next Create the layout view for the inverter.

 

snap11.jpg

 

Add the following cells (nmos, pmos, ntap, ptap, and m1_poly) to this layout view as seen below (you can copy as before but here we will instantiate cells).

Ensure the nmos is 6u/0.6u and pmos is 12u/0.6u and the ntap and ptap use two columns.

 

snap12.jpg

 

Next align the cells until you get something similar to what is seen below.

DRC your layout to ensure no errors (fix as needed).

Save the layout.

 

snap13.jpg

 

Add rectangles on poly and metal1 as seen below.

DRC and save your design.

 

snap14.jpg

 

snap15.jpg

 

Next add pins on metal1 for gnd!, vdd! (both have a direction of inputOutput), A (input), and Ai (output).

DRC and save the design.

 

snap16.jpg

 

snap17.jpg

 

Next run extraction on the layout.

 

snap18.jpg

 

Finally, run the LVS on the inverter.

 

snap19.jpg

 

snap20.jpg

 

Okay, we are ready to simulate the operation of the inverter.

 

Create a cell called sim_inverter_dc (File -> New -> Cell View)

Draft the following schematic.

The symbol on the right is the no-connection symbol (in the basic library, Misc -> noConn) We add this symbol to be different and to avoid getting the warnings

related to floating pins/nets that we ignore via the menu items Check -> Find Marker -> ignore, ignore

 

snap21.jpg

 

Start the ADE and select the model files (Setup -> Model Libraries located in /$HOME/ncsu-cdk-1.6.0.beta/models/spectre/standalone)

 

snap22.jpg

 

Next select Analyses -> Choose

Note that the input vdc is named V0.

 

snap24.jpg

 

Next go to Outputs -> To Be Plotted -> Select On Schematic (select in and out)

 

snap25.jpg

 

Save the state in the cellview.

 

Netlist and Run the simulation (hit the green button).

We get the results seen below.

The “Strip Chart Mode” was used to display the results (circled menu item).

Note how the output is zero!

Well, we didn’t specify a vdd! anywhere so it should be zero. Let’s fix this.

 

snap26.jpg

 

Let’s add vdd as seen below.

 

snap27.jpg

 

Check and Save the schematic. Note that if the inverter and vdd symbols overlap there will be errors when you Check and Save (so don’t put vdd too

close to the inverter symbol).

 

Next, in the ADE, select Setup -> Stimuli and the parameters seen below (after hitting the Apply button).

If you directly add a voltage source to your schematic like the following, vdd.jpg, you should NOT also use a Stimuli (Global source) since the result is two voltage sources connected to the same node (which will result in error and the simulation not running!)     

 

snap29.jpg

 

Save the state (Cellview) so we don’t have to do this again next time we run the simulation.

Hit OK and run the simulation.

The results are what we expect the inverter voltage transfer curves to look like.

 

snap30.jpg

 

Let’s go ahead and simulate the extracted layout at this point (Setup -> Environment and add extracted in front of schematic as discussed in the last tutorial).

 

snap32.jpg

 

Which gives the same results as the schematic.

To verify we are simulating the extracted view and not the schematic view go to Simulations -> Netlist -> Display

 

snap34.jpg

 

Save and close everything. This concludes Tutorial 3.

 

For your reference the Tutorial_3 directory is available in Tutorial_3.zip.

 

Return