|
Click "OK"In the Library Manager, create new library called ee141_lab2 (select File/New/Library). This will open new dialog window, in which you need to enter the name of your library, library path, and "Attach to existing tech library" (TSMC 0.24u should be selected). After you fill this all out, the window should look something like this:

Select "Virtuoso" tool, View Name is automatically set to "layout"

After you hit "OK", Virtuoso screen will appear as shown below (in addition, LSW window with various mask layers will automatically pop up):

In this window, you will place transistors, draw mask layers etc.
On the very top of the window the title bar should say " Virtuoso Layout Editing: ee141_lab2 nand2 layout ".
Next, across the top you should see the menu bar which contains the following menu items: Tools , Design, Window, Create, Edit, Verify, Connectivity, Options, Route and Skill . These are pull-down menus much like any PC or Mac application.
Description of various mask layers can be found at: <file:/usr/eesww/cadence/local/doc/layerInfo.html> <Note to instructor: add link to this page>
There are several levels of help available "on-line" to Virtuoso users. You already know about the quick Help listed in the Vistuoso Message Area . In addition, you can access the complete on-line manual, the complete list of active hot-keys, and complete documentation on text commands at any time. <Note to instructor: add links to help pages>
Before proceeding you should bring up the Virtuoso Manual and see what's there. The manual is the reference to Virtuoso and it contains lots of information that you will not find in this simple tutorial. <Note to instructor: add links to help pages>

Next, select "nmos" from the NCSU_TechLib, the selection should look like this:

Click Close and then go back to the previous window and click Hide, position your cursor in Virtuoso window where you want your nmos placed. Now, you will notice that Virtusoso works with grid, which is by default very crude. Also, you don't immediately see what is inside nmos symbol. Let's fix this: from the Virtuoso Options menu, choose Display and set Display Levels from 0 to 10, and also X and Y Snap Spacing to 0.06 (this 0.06 is half-lambda, lambda is 0.12 in this 0.24um technology). Your display settings should be as follows:

Click Save To and then OK. Now you can see mask layers in the nmos, you will later realize that you will be able to place your components on a grid with much finer precision, the precision of half-lambda (0.06).
Your nmos transistor probably looks very small on the screen, hit z (zoom in), then hold left mouse button to select the area you want to zoom in. The zoomed-in nmos should look like this:

Note that only "active" layer is used and this is OK. (There is no p-well since this is p-substrate process.) Read more about layout macros such as nmos at file:/usr/eesww/cadence/local/doc/cdsuser/virtuoso.html#tagpcell <Note to instructor: link this page>
Now, edit instance properties, click on the nmos, when the transistor is highlited, hit q. Click on Parameters and change the width to 1.98u (2.0u will be automatically changed to 1.98u due to the geometric spacing rules). Since we eventually want to use this device to make a 2 input NAND gate, change fingers to 2.

Now Click OK.
Your screen should now look like:
TIP! You can undo whatever you have just done in Virtuoso. Use the u hot key or select Undo from the Edit menu. You can also Redo what you have just undone using the Shift-u hotkey.
Virtuoso supports Cut, Copy, and Paste in the same format you would see on any good Mac- or PC-based drawing or painting program.
TIP! All of the zoom, move, cut and paste, rotate, etc. features that we just executed using hot keys also have menu equivalents which can be found in the Edit menu.
To perform a Design Rule Check (DRC), choose Verify/DRC.The DRC form appears:
Click OK to run DRC.
Now, add a pmos transistor with a width of 4 microns and Multiplier equal to 2. Place it close to the nmos as shown below:
Choose Verify - DRC and hit OK. You will likely see some DRC errors.
Viewing DRC Errors
Use the Verify - Marker - Explain to see more details about flagged errors.
Errors are described in the marker text window like this one.
In this particular case, Source/Drain active was too close to the n-well edge. Minimum required spacing of 0.7um is required. Fix this error by moving up the pmos.
Esc cancels the explain command, the marker text window will disappear. To remove error flags, choose Verify - Marker - Delete all
Hit OK to delete all error flags.
Using r and p hotkeys to draw rectangles and paths, wire up the two left contact regions and add the connection to the right pfet contacts. If you have trouble with the p command see the next section for some hints. Consult CDK manuals if needed. Your layout should look like this (practical advice: run DRC check periodically to make sure you're making progress in good direction):
Let's say we were laying out this NAND gate for a standard cell library. Furthermore, assume that the power and ground rails are run in metal 1 (M1) and that they are 2.04um wide (2.0um won't work because of the grid granularity, which is 0.06um...).
1) Set metal1 as an active layer in the LSW window.
2) Type p to bring up the "Create Path" menu.
3) Set "Width" to 2.04.
4) Draw the path where you wish to place Vdd.
TIP! You can change the size of a path or a rectangle by stretching an edge using the Stretch command found in the Edit menu. Simply type s. The cursor changes to let you know you are in Edit Edge mode. Now move the finger over the edge you wish to stretch. A line will show you which edge you are over. Once you have the edge you want click the left mouse button (Button-1) and move the mouse in the direction you wish to stretch the edge. (Note that in a path you can change only the length this way - for the width use q and the properties menu).
Notice that the inputs and outputs are all found within the power straps. What if they need to be brought out so a router can get to them?
Using the p command, extend both poly lines over the Vdd strap and end them with M1. Your layout should now look like this (run DRC to make sure it is DRC-clean!):

We are getting ready to finish this cell and your boss has just informed you that the power rails have been changed from M1 to M2.
Your layout should now look similar to this:
Click the button next to "shape pin" to open the Create Shape Pin form:
In the Create Shape Pin form, type the following in the Terminal Names field:
vdd! gnd! Out In1 In2
Click Display Pin Name to associate the name with the pin.
1) Create the rectangle for the vdd! pin coincident with the power line at the top of the NAND. (start the vdd! pin at the lower- left corner and finish the vdd! pin at the upper-right corner).
2) The name vdd! appears near the cursor after you click the second corner (the upper-right corner).
3) Move the cursor to place the vdd! text at the desired place, then click to place the pin name there.
4) If the text looks too big you can select it, type q to bring up the property box and edit its height.
Continue with steps 1-3 above to create other pins in specified sequence (vdd! gnd! Out In1 In2). After you are done, your layout should look like this:
Our little NAND gate example should now be done.
Now let's use our NAND gate and an inverter (which you need to create. Hint: simply modify the NAND...) cell to build something a little bigger.
You should now be editing layout view of "row" cell.Instantiate NAND four times and inverter once to form an array of cascaded cells.
Your layout will look something like the figure above unless you selected to view all the internal layers.
Show/Hide Internals


OK, now that we are here, let's say our boss comes over again and says "sorry but you need to bring the outputs to the bottom of the cells".
