In this chapter, you learn how to draw a CMOS inverter, check its connections, and create a symbol that you can use in a simulation. First read the general CAD information and complete the environment setup.
You will work through four stages: creating a library and schematic, placing the transistors, connecting and checking the circuit, and generating the symbol.
1. Create a library and an inverter schematic
After connecting to a lab workstation, launch Cadence Virtuoso from your working directory:
cd ~/Cadence
./run_virtuoso.sh
You will see a window that looks like this:

This window is called the Command Interpreter Window (CIW). Choose Tools → Library Manager. In the Library Manager, choose File → New → Library and name the library with your UNI. Wherever these instructions use yourUNI, substitute your own UNI.

In the technology dialog, choose Attach to an existing technology library, then select tsmcN65.

tsmcN65 technology library.Your new library should appear in the Library Manager. Select your new library (make sure it's highlighted in gray) and choose File → New → Cellview. Enter these values:
| Field | Value |
|---|---|
| Library | yourUNI |
| Cell | inverter |
| View | schematic |
| Type | schematic |

schematic view of the inverter cell in your own library.Click OK. The Schematic Editor opens. Check that the window title correctly identifies your library, the inverter cell, and the schematic view.

2. Place the PMOS and NMOS transistors
You are now ready to draw a circuit schematic in this window. You will use Figure 1 as your circuit reference. Look around for a few seconds and make yourself comfortable with the GUI.

Choose Create → Instance, then click Browse. Select the library, cell, and view for the PMOS from the table below. Check the channel length in the l (M) field and set the width in the w (M) field.
| Setting | PMOS | NMOS |
|---|---|---|
| Library | tsmcN65 | tsmcN65 |
| Cell | pch | nch |
| View | symbol | symbol |
| l (M) | 60n | 60n |
| w (M) | 400n | 200n |
When entering a numerical value, type the number immediately followed by the scale suffix: for example, enter 400n for 400 nanometers. Do not enter 400 n or 400nm. The M unit indicator next to the field is populated automatically (you don't need to type it).

pch and the dimensions are correct according to the table above. You can leave other settings as they are.Move the pointer into the schematic and click the left mouse button to place the PMOS. Press Esc to end the command. Notice that each transistor has four terminals: gate, drain, source, and bulk (body).
Choose Create → Instance again, or press i. Select nch and enter the NMOS dimensions from the table. Place the NMOS vertically beneath the PMOS, then press Esc.
End each command by pressing Esc. Placement and editing commands may remain active after an action is completed, so hit Esc when you are finished with a command.
To edit device properties after it has been placed, select the device and press q. When you are done working with the selected device or devices, hit Ctrl+D to deselect everything.
3. Connect the circuit and check the schematic
Join the gates and drains with wires
Choose Create → Wire (narrow). Alternatively, hit w. Click the PMOS drain, then click the NMOS drain to connect the drains. Press Esc. Repeat the wiring command to join the gates and complete the connections shown in Figure 1.
Add input, output, and supply pins
Choose Create → Pin. Alternatively, press p. Add each pin separately, keeping the other form options unchanged:
| Pin name | Direction |
|---|---|
vin | input |
vout | output |
vdd | inputOutput |
gnd | inputOutput |
Naming rule: use lowercase letters and numbers for the pins and nets you name throughout this course. Do not add special characters such as # ! @ *.
Check and save before creating a symbol
Choose File → Check and Save, or click the box-and-check-mark icon. If there's any warnings about floating wires or pins, correct the connections, and run Check and Save again.
4. Create a reusable inverter symbol
In the Schematic Editor, choose Create → Cellview → From Cellview. Check that the library and cell match your inverter, and that you are generating a symbol from the schematic. Keep the other defaults and click OK.

In Symbol Generation Options, accept the default pin positions and click OK. The Symbol Editor will open with an auto generated symbol. You should redraw the symbol with a conventional inverter shape so that others (your colleagues, teammates, or future self) can easily recognize its function when reviewing your design.

The shape of the symbol itself does not affect simulation because it is only a graphical representation. However, it is good practice to draw symbols in a way that clearly reflects their intended function, making your schematic easier to understand and communicate.
Check and Save the symbol, then close the schematic and symbol windows.
Keep these schematic editor shortcuts handy
Here are some common shortcuts you should get familiar with.
Again, you may also find the Cadence Hotkeys Guide by Prof. Aditya Muppala (UC Berkeley EECS) useful.
| Action | Key or mouse control |
|---|---|
| Add an instance | i |
| Draw a wire | w |
| Add a pin | p |
| Copy an instance | c |
| Move an instance | m |
| Edit instance properties | q |
| Fit the schematic in the window | f |
| Delete an object | Delete |
| Move vertically | Ctrl + scroll |
| Move horizontally | Shift + scroll |
| Zoom in and out | Scroll the mouse wheel |
| Zoom to an area | Right-click and drag |
| End the current command | Esc |
For commands such as copy, start the command before choosing the object: press c, click the instance, and click the destination. Press Esc when finished.
You have an inverter ready for simulation
You have generated a library, created a CMOS inverter, and saved a reusable symbol in Cadence Virtuoso. You can now place the inverter in a test circuit and simulate it.
Continue to simulate the inverter with Spectre.