Departments

Choose one of the departments below:

Applied Physics

This is the Applied Physics page!

Biomedical Engineering

This is the Biomedical Engineering page.

Chemical Engineering

This is the Chemical Engineering page.

Electrical Engineering

This is the Electrical Engineering department page

EE425: Introduction to VLSI System Design



Professor: Richard Lethin (richard.lethin@yale.edu
TF: Dzmitry Maliuk (dzmitry.maliuk@yale.edu)

 

Projects

Our design projects will be fabricated using the AMI C5F/N Process. This is a 0.6um (lambda=0.3um) 2 poly, 3 metal process. We will use the SCMOS_SUBM rules. For details see The Mosis Website.
  • 2009 Projects
  • 2008 Projects

See the projects page at Projects 2008 for details on this year's projects.

  • Previous Projects
See the projects from earlier classes at Previous Projects.

  

Cadence

We will be using a tool suite from Cadence Design Systems called Front to Back Design Environment 5.1.41 and hereafter just referred to as "Cadence". The first thing to do is to get Cadence set-up on your account by following the Install Guide. Next you will want to learn the basics of Cadence by following the Cadence Tutorial.

 

Cadence Install Guide


Home | Cadence Install Guide |Cadence Tutorial

Welcome

Welcome to EE425a/ENAS875a. This year we will be designing, laying out, and simulating digital integrated circuits using a set of CAD/Verification tools from Cadence. These tools are often referred to collectively as "Cadence." Cadence has many versions of many tools available and we have several of these at Yale.

This semester we will use "Front to Back Design Environment 5.1.41," which contains tools for schematic editing and simulation, physical layout, verification, analog and digital simulation.

Getting Access

Undergrads should already have physical access to the workstations in Engineering Student Center. Grad Students need to put in a request to have their ID cards activated for the card readers on the ESC doors. Talk to Erica in the business office and she will give you the form you need.  If you have never signed up for a unix account at Yale before, you will need to do so, here:Request New Account

Installing Cadence 5.1.41

Cadence 5.1.41 is already installed on the Jove cluster so you just have to set up your account properly to begin using it.
First you will create a working directory in your home directory by typing:

mkdir ~/cdscad

Next you will set up your environment files.
  1. Download cdsenv.txt and save it to your home directory as .cdsenv (note the period before the filename! The downloaded file MUST be renamed)
  2. Download bash_profile.txt and save it to your home directory as .bash_profile (note the period before the filename! The downloaded file MUST be renamed)
Note that these files have the .txt extension only because of the limitations of the wiki.

Installing the NCSU CDK

At this point we will install the NCSU CDK. This is a design kitdeveloped by folks at North Carolina State University. It contains allthe necessary information about the various processes available throughthe MOSIS foundry service including techfiles, design rules, devicemodels, etc.

  1. Copy the design kit files from my home directory to yours by typing:
    cp /home/introvlsi/ncsu-cdk-1.5.1.tar ~/
  2. Untar the file with the following command:
    tar xvf ncsu-cdk-1.5.1.tar
  3. Copy the file ~/ncsu-cdk-1.5.1/cdssetup/cdsinit to the working directory ~/cdscad/ and rename it '.cdsinit'

  4. (Skip this step) Set an environment variable CDK_DIR that points to the location of the CDK by adding the following line to the .bash_profile file that you created in your home directory. It doesn't really matter where you put it, I put it near the beginning where the other setenv statements are:
    export CDK_DIR=(your home directory)/ncsu-cdk-1.5.1     #(to replace the command export CDK_DIR=/home/yj45/ncsu-cdk-1.5.1)
  5. Create a new cds.lib file or edit your existing cds.lib. Either copy the file:
    ~/ncsu-cdk-1.5.1/cdssetup/cds.lib

    into your working directory ~/cdscad/, or open it and paste the contents into your existing cds.lib.
    (New users: if you already have a cds.lib but you have never used Cadence before then you can just replace the old one.)

At this point you should be able to run ICFB and use the design kit. Please give it a try just to ensure that the setup went as planned.  At the command prompt, type:

cd cdscad
icfb&


You should get two windows, a big one that says "Library Manager" atthe top, and a smaller one that says "icfb" at the top. The last linein this smaller window should read "Done loading NCSU_CDKcustomizations." If not, you did something wrong. Please re-read the directions and try again.

Note that after installation, you will continue to use the three commands above to launch Cadence tools.

 

 

 

 

Cadence Tutorial


Home | Cadence Install Guide | Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

The following tutorial introduces the user to specific design flow using the Cadence ICFB software. It is by no means the only way to design an integrated circuit using Cadence, nor do we claim that it is the best way to do it. It is, however, a reasonably simple methodology for designing a chip that will be fabricated using the MOSIS foundry service.

 

We hope that after finishing this tutorial, each of you will have an idea of what Cadence can do and how you will use it this year. Depending on your project, you may also want to use other tools that aren't described here, but you will almost certainly use all the steps described here.

You will probably want to refer to this tutorial as a sort of manual throughout the year.

Part 1 - Starting Cadence


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

1. Running Cadence

Open a new terminal window. Switch to the c-shell, go to your working directory and run IC 5.1.41 by typing:

cd cdscad
icfb&


the "&" lets you keep using the terminal to perform other tasks while ifcb is still running.

2. Tour

Now that Cadence has finished loading you should see three windows. The smallest of these says

'Done loading NCSU_CDK customizations.'

indicating that the design kit is properly installed. This window is called the CIW. It is the main control window for Cadence. You can type commands in the command line or use the mouse to select commands from the toolbar.

The second window says

"what's new in 5.1.41"

Close this window.

The last window that is currently open is the Library Manager. The library manager allows you to navigate through the hierarchy of items that you will create as you use cadence. These items will include libraries, cells, and cellviews. Now is probably a good time to discuss hierarchical design.

Hierarchical design is what makes CAD so powerful. You can design small parts called cells and easily reuse those parts many times to create a larger object. Then you can reuse this larger object as a cell in an even larger object and so on. A properly designed hierarchy will save you tons of time, it will be easy to understand, and easy to modify if needed.

There are many ways to organize a hierarchy and you can decide what works for you, but the most logical to me is to make each physical object in the design a cell, thus a transistor is a cell. Multiple transistors will be used to make gate cells. Multiple gates will make circuit cells, like adders or multipliers. These will ultimately be combined to make a core cell (all the guts of your chip) and this will be plugged into the pad-frame cell to make your final layout.

Well designed cells will plug together nicely without a lot of modification. Basically if you ever have to draw the same thing twice, it should have been a cell.

3. Creating a New Library

Create a new library by selecting File->New->Library from the library manager window. Name your new library 'EE425'.

A pop up will ask you if about a technology file.

Select "Attach to an existing techfile" and click OK.  Select the proper techfile from the drop-down menu and click OK. In our case this is "NCSU_Techlib_AMI06".

This will set up the layers you draw to correspond with the various fabrication steps that the foundry uses to make your chip. It will also tell the program what models to use when simulating your circuits.

Part 2 - Schematic Capture


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will create a schematic for a CMOS inverter.

Creating a New Cellview

Each cell will have several views. These include schematic, symbol, layout, extracted, and potentially some others. Each view contains information about a different aspect of the object or its behavior.

In the Library Manager window, highlight your newly created library and select File->New->Cellview

A create file dialog box will appear. Enter "inv" in the Cell Name field. Make sure that the View Name reads "schematic" and the Tool drop-down reads "Composer-Schematic". Click OK

The Virtuoso Window will open. Virtuoso is the tool that is used for drawing schematics and layouts.

Selecting and Placing Components

In the virtuoso window, select Add->Instance. This will open the component browser. You can also just hit the 'i' key to call the instance command. Select "NCSU-Analog Parts" from the library drop-down. Browse through the available parts to find Pmos4. When you select it, the Add Instance window will open as shown below.


The top portion of the window should already be set to point to the Pmos4 cell, since you selected it with the component browser but if you change your mind, you can type in a new component name or browse for a different component.

The pmos4 is an example of a parameterized cell. P-cells have a variety of parameters that can be set when they are instanced and can also be changed later. Right now, the only parameter we will worry about are length and width. These are the phyiscal gate length and gate width of the transistor. These values are constrained by the design rules that the MOSIS sets for each process. By default, they are set to the minimum allowable value right now, so this is the smallest transistor you can fabricate on your chip. We'll leave it that way for now.

Select the virtuoso window and you will see the highlighted outline of a transistor. Click once to place one instance of the pmos4. Now return to the add Instance window, select nmos4 and add one instance of nmos4 as well. The location is not important since we can move them around later. You can move an instance by clicking it to select it and then using the move icon on the left toolbar, or hitting the 'm' key.

Wiring it Up

Position the transistors so that the pmos is above the nmos (remember, the pmos form the pull-up network, and the nmos form the pull-down network.) Now you will add wire to connect the components. Select the wire tool from the left toolbar. Wire the two transistors together to form an inverter. Don't forget to connect the body terminals to the supplies. Your circuit should look something like this:



Adding Pins

Now we need to add pins so we can get signals into and out of our circuit. In the virtuoso window select Add->Pin. The add pin dialog will pop up. Name the pin 'in' and select type inputOutput. Now place the pin on the schematic. Repeat this for the other pins 'out' 'vss' and 'vdd.' Once you have the pins in place, wire them up with the wire tool. You should get something like this:



Finishing

Select Design->Check and Save. Check the CIW window to see if you have any errors. If not, close virtuoso, you are done capturing your schematic.

Part 3 - Symbol Creation


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will create a symbol for your CMOS inverter.

Making the Symbol Cellview

Open the schematic for your inverter cell. In Virtuoso, select Design->Create Cellview->From Cellview. The following window will open.

Be sure the settings are exactly like the image. Click OK and a symbol options dialog will appear. Specify where you want the pins to appear in the symbol. Since we want to draw the typical inverter symbol we will put the in pin on the left, out on the right, vdd on top an vss at the bottom. Click OK and a symbol will be drawn for you.

Editing the Symbol

This is the generic symbol which you will want to change. Drag the pins and lines around with the drawing tools to get a symbol that you like. You can highlight and delete the parameter labels. We didn't give our cell any parameters so these aren't useful. You final symbol should look something like this.

Part 4 - Test Bench Creation


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will create a testbench circuit for your CMOS inverter.

Make the Testbench cell

Using the library manager, make a library called EE425_Test. This is where you will put the testbench schematics for all your cells. That way you can keep them separate from the cells you will actually use in your design. Its not that important, just a bit of housekeeping. Create a new schematic cellview called inv_test.

Placing the Components

Add an instance of your inv cell. You will see the symbol that you drew with the pins and pin names. Now you want to add some voltage sources. In the NCSU Analog Parts library you will find a cell called vdc. As the name suggests, this is a DC voltage source. Add two of these to the schematic. Also find a capacitor to serve as a load and add one of those. Finally, instance a gnd symbol from the same library. Wire it up like this:



Click on the voltage supply that connects the vdd and vss. Click the properties button on the toolbar and set the DC voltage to 5 volts. The other supply will provide the input for our simulation so leave it as is for now.

Check and Save your circuit.

Part 5 - Schematic Simulation


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will perform DC and Transient analyses of your inverter using the testbench circuit.

Starting the Analog Environment.

From the Virtuoso window, select Tools->Analog Environment. You will see this window appear.



This is the main simulation tool in Cadence. It allows you to perform a wide variety of simulations useing several different types of modeling tools. Right now we'll be using SpectreS which is a solver similar to Spice. Later on, we may use some other types of solvers which will be faster for very complex circuits.

Setting up the DC simulation


Select Setup->Design, and verify that the correct cell is selected.
Select Setup->Simulator/Host/Directory and make sure SpectreS is selected as the simulator.
Select Analyses->Choose

This will bring up a dialog with various analyses that you can perform. Select DC and make sure enable is selected. Under the sweep variable, select component parameter. Click select component and returning to the schematic window, click on the DC voltage source at the input of the inverter. A new window should open asking which parameter you want to sweep. Select DC Voltage. Back in the Analyses window, enter the start and stop values to be 0 and 5 volts, set the sweep type to linear and enter that you want 50 points.

Select Outputs->To Be Plotted->Select on Schematic.

Click on the nets that you would like to plot. Select the nets that include the input and output of the inverter.

Running the DC simulation

Click the green traffic light button to run the simulation. Click the plot button to plot the results.
You will see the DC response of circuit. The input voltage is plotted on the x-axis and the output voltage is plotted on the y-axis. You will notice that the response is not quite symmetric. This is due to the fact that the n and p devices have different characteristics. Recall that we made both devices the minimum size in our schematic. We could now go back and adjust these sizes to get better performance. Since the transistors are parametrized cells, we could even hold the voltage constant and sweep the size of one of the transistors to determine the optimal size.



You can save your plot by selecting File->Save as image.

Setting up a Transient Simulation


Now we will edit our testbench schematic to do a transient analysis of the inverter circuit. In this case we will use a pulse generator as the input. We can measure the output as we adjust the frequency or the load.

Return to your schematic and replace the 'vdc' DC source driving the input of the inverter with a 'vpulse' source. Set V1 and V2 to 0 and 5 volts respectively and set the pulsewidth and period to 1ns and 2ns respectively. Note that when entering values into cadence, you enter the prefix but not the units (type '1n', not '1ns') This will give us a 5 volt square wave at 500MHz. Check and Save your file.

Running the Transient Simulation


Open analog environment and select Analyses->Choose

Select tran and set the stop time to 10ns. We will observe the device over multiple periods to ensure that it behaves consistently.

Now select the outputs to plot as you did before. Run the simulation. You should see this:



Now, go back and adjust the load capacitor or the pulse frequency and see what happens to your waveform. What is the fastest you can drive this circuit?

Part 6 - Layout Creation


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

Now that we have designed a circuit and convinced ourselves that it should work, we actually want to implement this circuit in silicon. That requires us to create a physical layout for the circuit. This physical layout will be used to generate the mask set used to fabricate the circuit on a silicon wafer. There are a variety ways to go from a schematic to a physical layout. These range from full-custom hand layout where every single transistor and wire is drawn by hand to fully-synthesized layouts which are entirely computer generated. Most designers use something in between. In order to learn as much as possible we will do the entire design by hand. This isn't as bad as it sounds as long as you use good hierarchical design principles.

Getting Started

We will create a new Cell View for our layout. Open the library manager, select your EE425 library then select File->New->Cell View. Enter 'layout' for the cell view name and Virtuoso for the tool. Click ok.

The virtuoso window will appear and will look similar to the one you used for drawing schematics and symbols, however, there will be another new window, called the LSW (layer selection window.) This window lists all the available layers for the process you have selected. It also allows you to select the current layer for drawing as well as to choose which layers to display or to protect.

Drawing the PMOS


We will start laying out our circuit by drawing the PMOS. It is slightly more complicated than the NMOS so we'll do it together and then you can do the NMOS on your own.

Active (Diffusion)
The first step is to draw the p-type diffusion (or active) region. This will define the source and drain regions of the transistor and well as the width of the channel. Recall that our PMOS had a width of 1.6um. Select pactive from the LSW, and use the rectangle tool (near the botton of the lefthand toolbar) to draw a rectangle that is 3.6um wide and 1.5um high. The location is not important as we will move it around later.

Notice that you can only move the mouse by increments of 0.15um. This is not an accident. For the current process, AMI06, lambda is 0.3um. So 0.15 corresponds to 1/2 lambda. This increment is called the design grid or manufacturing grid and is the minimum address size of features on your masks. So even though the smallest feature you can draw is 0.6um or 2 lambda, you can position these features with a precision of 0.15 um.

Gate Poly
Now we will draw the gate of the transistor. Select Poly from the LSW. Draw a rectangle that is 0.6um wide and 2.7um high, centered at the same point as the active region. Wherever poly crosses active will form the channel of a transistor.

Here's what you should have now:



Hint: To zoom in press ctrl-z, to zoom out press shift-z. Use arrow keys to move the view around.

Active Contacts
Now we will contact the active region to form the source and drain of the PMOS. Select layer 'cc' from the LSW. Don't ask me why they named this layer 'cc' I don't know. 'cc' allows you to form a contact between active or poly and the first metal layer, 'metal1.' Draw two rectangles that are 0.6um by 0.6um (2 lambda x 2 lambda) to form source and drain contacts as shown:



Hint: You could have used the copy function to make the second rectangle. Highlight an object or multiple objects, press 'c' and then point to the destination and click. Also, try out the ruler function. It's the last button of the toolbar.

Metal
Let's draw the metal layer that will contact the diffusion layer through the contacts we just drew. Select 'metal1' from the LSW. Draw two rectangles that surround the contacts by at least 0.3um or 1 lambda. Typically they would be the same width as the active region but they don't have to be. Draw them as shown for now:



P Select
The active layer tells the foundry where to perform ion implantation, but not what type of dopant to use. That information is conferred through the layers 'pselect' and 'nselect' You might have thought that the name 'pactive' implied that this was the p-diffusion region and that 'nactive' implied n-diffusion, but actually both these layers share the same layer number and get converted to a single layer 'active'. In fact, you could have used active in place of pactive or nactive and the result would be the same. They are just there for convenience (they help you remember which flavor of MOS you are working with.

Select layer 'pselect' from the LSW. Draw a rectangle that surrounds the pactive by 2 lambda(0.6um) in all directions as shown:



N-Well
The PMOS transistors must sit in an n-type diffusion well to isolate them from the p-type substrate. Select 'nwell' from the LSW and draw a rectangle of width 7.8um and height 5.1um as shown.



You may wonder why the well is not centered with respect to the PMOS. This is where we are going to put the well tap. The well tap allows us to contact the n-well and ensure that the pn junction formed by the active region and the well remains reverse-biased, electrically isolating the transistor.

Well Tap
Now we are going to draw the well tap. This consists of an n-type diffusion region (nactive and nselect) and a contact.

First we need to use the stretch command to edit one of the rectangles we already drew. hit 's' and select the edge that you wish to stretch, then click on the destination. Move the left edge of the pselect rectangle 0.6 um to the right.

Now select 'nselect' from the LSW and draw a rectangle that abuts the 'pselect' with a width of 2.1um and a height of 2.7um.

Select 'nactive' and draw a 1.5um square abutting the 'pactive' region.

Finally, using 'cc' draw a 0.6um square contact in the 'nactive' region. It should be a distance of 2 lambda from the adjacent p diffusion region. Stretch the metal layer covering the left contact so that it also covers the well tap. This will tie the well to the drain of the pmos. You just finished drawing your first transistor.

Here is what the completed PMOS with the well tap should look like.



Drawing the NMOS

I expect that you can do most of this on your own now so I'll just give you a few hints. Most of the rectangles will be the same size for the nmos as for the pmos since the design rules don't specify which type of doping they refer to.

Active (Diffusion)
This time we will use 'nactive' to draw the n-type diffusion region, although, recall that you could also just use 'active.' Make the active region for the nmos the same size as the pmos you alread drew. Again we are going to draw a fet that is the minimum allowable size.

Gate Poly
Draw the gate poly as before.

Active Contacts
Place the contacts using 'cc'

Metal
Draw the metal1 layer surrounding the contacts.

N Select
Draw the n-select region to assign n-type doping to the active region.

Substrate Tap
In the case of the nmos we don't need to draw a well because the substrate is already p-type so the device is already isolated by a pn junction as long as this junction remains reverse-biased. We can ensure this by drawing a substrate tap to tie the substrate to ground. Draw the substrate tap just like the well tap, substituting 'pactive' for 'nactive' and 'pselect' for 'nselect.' Stretch the metal contact from the source to cover the substrate tap contact.

Here is what your nmos should look like.



Wiring up the Inverter

Now that we have drawn our transistors, we will want to connect them together to make the inverter.

First of all you will want to position your transistors properly. Select the entire nmos transistor and drag it below the pmos so that the gates are aligned horizontally and there is a gap of 1.2um between the nwell of the pmos and the pselect of the nmos. This is shown here:



Drawing Connections
First we will connect the outputs of the transistors to form the output net of the inverter circuit. Select 'metal1' from the LSW and draw a rectangle that connects the right contact of the pmos to the right contact of the nmos. Its alright if these rectangles overlap since they will be joined when the file gets converted to the mask set. If you want you can join them now by selecting them and using the 'merge' command or pressing shift-m. Sometimes this helps your layouts to look less cluttered. Only objects on the same layer will be merged.

While we have the metal1 layer selected lets draw the power rails. Draw a rectangle that is 3 lambda tall and the entire width of the both select regions (6.2um), spaced 3 lambda above the pmos active region. Repeat this below the nmos active region. These will be the supply rails for the circuit. Now connect these to the source/drain contacts of the transistors as shown here.



Note that we drew our supply rails the minimul allowable width (3 lambda.) This is not ususally advisable since these wires generally carry a lot of current. However, in this exercise we are trying to draw the smallest allowable inverter circuit, not necessarily one that will perform well for any given application. You will have to decide how wide you need to make your power rails when you draw the gates for your own project.

Now we will connect the gates and make a poly-metal1 contact to form the input of the circuit. Select 'poly' and connect the gates of the two transistors. Now we want to draw a square that is 4 lambda, abutting the connected gates. Place a 'cc' contact (2x2 lambda) in the center of this square. Finally draw a 'metal1' square covering the contact (4x4 lambda). Heres what you get:



Creating Pins
Now we need to add pins to get signals into and out of our circuit. Select 'metal1' from the LSW. Now select Create->Pin from the menu in Virtuoso. The create pin dialog box will open. We want to give out pins the same names we gave them in the other cell views (vdd, vss, in, out) so that they all match. First do vdd. Type in the pin name, keep the type as inputoutput. Click ok and draw a rectangle overlapping the high supply rail as shown below. Repeat for the other pins.



You are now finished with the layout for your inverter.

Design Rules Check

Before we proceed, we want to make sure we haven't made any errors in our layout. We will use the design rules checker (DRC) to ensure that we haven't violated any of the MOSIS design rules. This doesn't guarantee that the circuit will work properly; it only guarantees that the foundry can fabricate it as drawn.

Select Verify->DRC

The default options should work just fine. Click OK and the DRC will run. Check the CIW for the results. If there are no errors it will read

********* Summary of rule violations for cell "test layout" *********
Total errors found: 0

otherwise there will be a list of errors like this one:

4 (SCMOS Rule 6.5.b) active contact to active spacing: 1.50 um

The rule number will be listed along with a description, which is very helpful when troubleshooting. You can go to the Mosis rules website to get the details of the rule in question.

You are done with this section.

Part 7 - Layout Extraction


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will perform an extraction of your cell. This process will generate a detailed description of the circuit (netlist) that includes the parasitic resistances and capacitances associated with the individual transistors as well as the interconnections. This will allow a more realistic simulation than we we able to do using just the schematic, since it ignored everything except the behavior of the isolated transistors.

Extraction

Save your layout.

To begin extraction, select Verify->Extract

The extractor will pop-up. Click on 'Set Switches' and select Extract_parasitic_caps. If we didn't set this we would get the same result that we got using the schematic and this would be pointless. Since we don't have any instances of other cells we can leave the ectract method on 'flat.' Click OK and check the CIW for the results. This could take a few minutes.

You will see a list of the transistors and capacitors that the extractor identified. Check it out and see if it makes sense. Do you have the number of nmos and pmos that you expected?

Layout versus Schematic

Open the extracted cellview in Virtuoso. It will look similar to the layout except that only the pins will appear as solid rectangles. Also, you will see symbols representing the extracted nmos, pmos and capacitors.

Now we will compare the layout and the schematic to ensure that they are functionally equivalent circuits. Cadence has a tool that will compare the netlist generated by the extraction with a schematic.

Select Verify->LVS

The LVS window will open as well as an 'LVS Form Contents' window. Ensure that the box marked 'form contents' is checked in the second window. In the LVS window, ensure that both the schematic and extracted cells are listed correctly. The other defult options should be sufficient. Click Run. After a couple minutes you should get a messge that the job succeeded. This doesn't mean your netlists matched, only that the checker ran without error.
Click 'Output' to view the results.

The file should say that the netlists match. If not, you may need to change your layout to match your schematic, but first, you should check to ensure that the pin names match in both files as this is a common error.


Part 8 - Layout Simulation


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will simulate your inverter again, this time using the extracted layout. For the sake of time, we will just run a transient analysis. I'll trust that you know how to repeat the DC analysis that we did before. We're going to use a quick and dirty way of simulating our circuit without using a testbench circuit. This is not usually a good practice but is sometimes useful so I'll use this opportunity to show you how. The benefit of a testbench circuit is that you can set the load and see how your device would perform in a realistic situation. Also you are less likely to screw up your cells that way since you don't have to open them up, you just instance them in another schematic.

Running the Simulation

Open the analog environment directly from the extracted Cell View.

Select Setup->Environment. In the switch view list, add 'extracted' before 'schematic.' The simulator will search in this order and will stop when it encounters the Cell View 'extracted.'

Now select Setup->Stimulus->Edit Analog. Select 'graphical' and click OK. This window will appear:



The first source in the list is 'in.' Clikc the 'enabled' button, set the function to pulse. Set the Voltage 1 and Voltage 2 to 0 and 5 volts as before. Set the pulsewidth and period to 1ns and 2ns as before. You can also set a rise time, fall time and delay time if you wish. Click 'Change' to apply the changes. In the same way, set vdd to be a 5V dc source and vss to be a 0V dc source. Click OK.

Select transient analysis as before. Set the stop time to 10ns.

Select the outputs to be plotted as before.

Run the simulation. You should get this:

Part 9 (Appendix) - Verilog


Cadence Tutorial
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7 | Part 8 | Part 9

Overview

In this module you will extract a verilog netlist and use Verilog-XL to perform a digital simulation of your inverter. You may choose to use this type of simulation either before or after you do the layout of a cell. Beforehand, you may want to verify the correct operation of a newly designed schematic. If this circuit is large, the digital simulation may considerably faster than performing a full analog Spectre simulation of the circuit. Again, after layout, very large circuits may be very slow to simulate using Spectre. Once your circuit passes LVS, you can run the digital simulation on your schematic since it is equivalent to your layout.

Running Verilog XL.

Create a new Cell View called inv_vtest of type schematic. We are doing this because we will have to rename some of the pins to get verilog to work properly and we don't want to screw up our original schematic.

Create an instance of you inverter in the new cell. Create 4 inputOutput pins called in, out, vdd! and vss! and connect them to the four terminals of the inverter accordingly.



The '!' marks the pins as global nets and is necessary for Verilog, but not for Spectre. We purposely didn't want the supplies to be global nets in our schematic because I find that having to wire up the supplies in the schematic reminds me as I'm designing the circuit that I need to think about how these wires will be routed in the layout.

Check and save your design. Open Verilog XL by clicking Virtuoso->Tools->Simulation->Verilog XL

You will be prompted for a run directory. You can use the default or enter another directory if you wish. Click OK.

The Virtuoso Verilog Environment will open.

Creating the Netlist

Select Setup->Netlist

This will open the netlist option form. Ensure that the List "netlist these views" contains "functional" and "schematic." Click the 'more' button. Rename the Global Power Net and Global Ground Nets to match the names on your schematic (vdd!, vss!). Click OK.

Select Setup->Record Signals

Select "Design Selections" from drop-down menu. Then on your schematic highlight the wires or pins that you would like to record. Click OK.

Select Stimulus->Verilog

Tell the pop-up to create a new stimulus file for you. Select testfixture.verilog and click ok.

Now we are ready to generate a netlist for our schematic. Click the only button that isn't grayed out, or select simulation->start interactive. This will generate a Verilog netlist. The CIW window will tell you whether this was successful or not.

If it succeeded, click the continue button to run the simulation. This will not do anything particularly useful since you still have the default testfixture.verilog file.

Modifying the Stimulus File

We need to modify the stimulus to include our desired stimuli.

Use a text editor and open the file testfixture.verilog from the run directory. It will contain this:

 
// Verilog stimulus file.
// Please do not create a module in this file.


// Default verilog stimulus.

initial
begin

io_cdsNet1 = 1'bz;
io_cdsNet0 = 1'bz;
io_in = 1'bz;
io_out = 1'bz;

end


Modify it like this.

// Verilog stimulus file.
// Please do not create a module in this file.


// Default verilog stimulus.

initial
begin

io_cdsNet1 = 1'bz;
io_cdsNet0 = 1'bz;
io_in = 1'bz;
io_out = 1'bz;
#20 io_cdsNet1 = 1'b1;
io_cdsNet0 = 1'b0;

#10 io_in = 1'b1;
#10 io_in = 1'b0;
#10 io_in = 1'b1;
#10 io_in = 1'b0;
#30 io_in = 1'b1;

end



#10 means to wait 10 times the global timestep. 1'b0 means the signal is a single bit and we want to set it to 0.

For more info on Verilog stimulus files see this link.

Save the file and close it.


Running the Simulation

In the Verilog window, select simulation->Start Interactive again. It will ask you if you want to regenerate the netlist. Say no since you haven't changed the schematic. Now click continue and it will run using your new testfixture.verilog. Click view waveforms at the bottom of the toolbar to open the waveform viewer.

Once the Simvision window opens, and sometimes this takes a while (I think it has to do with the network and the licensing but I'm not sure), it should automatically display the outputs that you selected. Check it out.

Electronic Design Automation Tools at Yale

Yale has an academic license to various Electronic Design Automation (EDA) tools, used for academic and research purposes.

This page provides general information on the tools and a jumping off point to additional information.   The page is on a Wiki so that the content can be collaboratively maintained.  Please feel free to update and edit, or to put question or notes inline for later corrections.  Yale does not have anyone dedicated or responsible for the EDA tools, so various professors, teaching fellows, and graduate students will from time to time make changes to the installation, libraries, or configurations.

The Electrical Engineering Department has purchased licenses to these tools but it is OK for users in other parts of Yale to use them.  For example, a physicist could conceivably be interested in using these tools to design a new chip for some sort of detection, measurement, or computation.

The tools that are installed are from:

Cadence

The cadence license includes very advanced chip design tools, as well as the ORCAD suite of tools.

The advanced tools that we have installed are a subset of what Cadence makes available under the academic license.   The tools that we have installed are for layout and simulation mostly.

The software is installed on the Jove cluster.   So one way of using the software is to log in to one of the Jove machines, either directly (they are in the Mann Student Center) or remotely (via an ssh, tunneling the X-Windows).

The ORCAD software is designed to run on Windows PCs.   So the software should be obtained and installed on the PCs directly.  This software is used in some of the introductory electrical engineering course labs.

The EE department maintains a license server.   So when you start the tools, the software is configured to contact the license server to determine if the proper number of users are logged in.   The license we have from Cadence is very generous (10's of users) so we rarely if ever reach that limit.   Also, it is inexpensive to obtain more licenses.

Synopsys

We also have a license to Synopsys tools.  A subset of what is available is (I think) installed on the Jove cluster, or it can be installed on user machines.

Libraries

This is a placeholder for information on libraries that we have installed on Jove.

 

IEEE Chapter Page

Hello... This is the beginning of the IEEE page... Testing...

Environmental Engineering

This is the Environmental Engineering page.

Mechanical Engineering

This is the Mechanical Engineering page.