Silvaco EDA Tutorials from CMOSedu.com

 

Tutorial 1 – Getting started, drawing an inverter and simulating


Background information

 

These tutorials will introduce you to Silvaco’s set of IC CAD tools for chip design. To demonstrate the operation of the tools we’ll

set them up for use with ON’s C5 process (formerly AMI’s C5 process) and fabrication through MOSIS using the scalable CMOS

(SCMOS) submicron design rules.

 

The scale (lambda) for the C5 process using the SCMOS rules is 300 nm and the technology code is SCN3ME_SUBM (info).

 

This tutorial assumes that the Silvaco IC CAD tools are installed on your computer and that the SCMOS Design Kit has been installed,

see the download link at the bottom of the page seen here.

 

The tools used in the SCMOS Design Kit include:

 

Gateway for schematic entry

SmartSpice for circuit simulation

SmartView for viewing simulation results

Expert for layout

Guardian DRC for design rule checking (DRC)

Guardian LPE for layout parameter extraction (LPE)

Guardian LVS for layout versus schematic (LVS) checking

Parasitic Extraction with HIPEX-C/R/RC

 

Other tools that may be used in a specific process design kit (PDK) are seen in the Silvaco EDA (electronic design automation) Tools

(sedatools) shortcuts folder seen below.

 

Note the *.ssu file at the bottom which is the setup file for the MOSIS SCMOS PDK (installed per directions using the Management

Console also seen below, link).

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap5.jpg

 


Let's begin the first tutorial.

 

Assuming that the Silvaco EDA Tools and MOSIS PDK are installed on your computer begin by creating a folder on your desktop called Silvaco_tutorials.

We’ll place all of the work from these tutorials in this folder.

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap3.jpg

 

Let’s draw a schematic of an inverter. To start, double click on the Gateway icon seen above in the sedatools Shortcuts folder.

The following information will appear.

Select “Do not show this message again.” (unless you want to see the message next time you start Gateway) and then OK.

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap6.jpg

 

The Gateway window is then seen below (after re-sizing to make smaller for this tutorial).

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap7.jpg

 

To begin we need to tell Gateway the libraries we’ll use in this design.

We do this by creating a new Workspace, see below.

If we are opening an existing design we can use Open -> Workspace.

To view the libraries specified in an open Workspace use the Workspace Settings seen circled below.

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap12.jpg

 

Create the new workspace in the Silvaco_tutorials folder you created on your desktop.

Call this workspace “silvaco_tutorials” as seen below.

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap13.jpg

 

After hitting Save the following will appear.

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap14.jpg

 

Click on the Add, and then Browse, buttons to select the paths seen below.

Double click on “newlibrary” and change to the names (scmos and spicelib) seen below.

When finished click on OK then, in Gateway, use File -> SaveWorkspace to save the workspace.

Now there is one file in the Silvaco_tutorials folder on the desktop, that is, silvaco_tutorials.workspace (verify this before going further).

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap15.jpg

 

If you download the Silvaco IC CAD simulation examples from CMOSedu.com then, after starting Gateway,

the first thing you do (to view the examples) is open the specific chapter's workspace file.

 

The Gateway window will show the two libraries on the left side as seen below.

Go ahead and change how the symbols are displayed, e.g., large icons, list, etc. to a view you like (I like the "List" view).

 

http://cmosedu.com/videos/silvaco/tutorial1/Snap16.jpg

 

Next use File -> New -> Schematic or Ctrl+N to create a new schematic.

Enter the name seen below, an inverter using a PMOS with a width of 20 and an NMOS with a width of 10.

 

 

Select the scmos library and the cmosn symbol.

Place, by clicking in the drawing area, the symbol as seen below.

Use the menu View -> Zoom Full (or, preferably, press the key F) and View -> Zoom Out (press -) to zoom out.

Next press the ESC key to stop placing the cmosn symbol.

 

 

Next, we need to set the MOSFET's width, length, and SPICE model name.

First, save C5_models.txt (RIGHT click to save) to the Silvaco_tutorials folder on your desktop.

Note, in this text file, that the BSIM model names are NMOS and PMOS (easy to remember!)

Click on the symbol to select it (the symbol turns from a red color to a green color).

Then use Edit -> Properties (or, preferably, just press q, even though, below, an uppercase Q is shown lowercase q works too) to change the MOSFET's parameters.

Also, double-clicking the LEFT mouse button the symbol edits the symbol's properties.

 

 

Change the SPICE model name (MNAME) to NMOS and the width to 10 as seen below.

Again, as mentioned near the top of the page, the scale (lambda) for the C5 process is 300 nm and the technology code is SCN3ME_SUBM (info).

 

Comment - M indicates the number of MOSFETs in parallel (most of the time this is 1) which results in an increase in the MOSFET's width to W*LAMBDA*M.

 

 

Select the scmos library and the cmosp symbol (below).

Place the symbol into the schematic as seen below and press ESC to stop placing the symbol.

Hit F to fit to the window (or press the fit icon on the menu).

 

 

Next we need to change the width of the PMOS to 20 and the SPICE model to PMOS.

Select the cmosp symbol and press Q (or just double-click on the symbol to edit the symbol's properties).

After changing the width to 20, as seen below, we try to change the spice model name to PMOS (however, we can't change CMOSP to PMOS).

The value of MNAME is fixed and we can't edit it (note that CMOSP is blue indicating it can't be changed).

 

 

To make MNAME editable let's double click on the cmosp symbol name on the LEFT as shown below (or use the icon or use File -> Open -> Symbol or just press N)

 

 

Next, with nothing selected (click the mouse in an empty area), use Edit -> Preferences or simply press Q.

Then unckeck the box that indicates that MNAME's value is fixed.

 

Comments - At this point we could also change the Value of MNAME to PMOS so we don't have to do that as we draw schematics.

We could also re-draw the symbol to replace the bipolar-derived symbols, see Fig. 4.14, with CMOS symbols (no arrow since source and drain are interchangeable and add a bubble to the gate of the PMOS).

We could also use the File -> Save As to make a 3-terminal MOSFET symbol version (see examples in the downloads at CMOSedu.com here).

 

 

Hit OK, then save the symbol (File -> Save or CTRL+S) then close the symbol (File -> Close or simply press C).

Change the PMOS's model name to be PMOS as seen below and make sure the width is 20.

Save the schematic.

 

 

Let's take a quick look at the contents of our desktop tutorial folder.

In addition to the inverter schematic, we have the SPICE models and the workspace we created.

 

 

To simulate the inverter we need to finish drawing it.

Select the spicelib and add a couple of gnd symbols as seen below.

Use the - (minus keyboard stroke) to zoom out.

 

 

Next add the vdd symbol (press ESC to leave the add mode).

 

 

And finally add the vdc symbol and rename it (double-click on the symbol or select it and press Q) VDD and set the DC value to 5.

Press OK.

 

 

Let's give ourselves a little more drawing space.

Close the Design Browser window on the RIGHT and expand the Capture/Simulation window on the LEFT so that the Simulation tab on the bottom of the Capture/Simulation window is visible.

Move (click symbol with the LEFT mouse button, hold, and drag) the gnd and vdc symbols to the positions seen below.

Hit F to fit the contents to the window and then save the schematic.

 

 

Next, let's draw wires to connect the symbols together.

Press W or use the draw wire icon.

Re-arrange (move) the MOSFET labels as seen below.

Don't forget to connect the bodies of the MOSFETs to VDD and GND.

 

 

Next, add another DC voltage source to the schematic.

 

 

Press ESC to exit adding vdc then double click on the symbol.

Change the instance name to Vin and set the value to 0.

 

 

Next add a gnd and the wires seen below.

Double click on the wire names NET1 and then NET2 and then change them to Vin and Vout.

Move the wire names as seen below.

Finally, check the schematic for warnings and errors by pressing the circled icon seen below.

 

 

Checking the schematic results in one warning, seen below.

 

 

We can ignore this warning, a dangling wire, which is fine or we can fix it by connecting the dangling wire to an output schematic pin symbol (outschpin) as seen below.

 

 

After moving the Vout labels we get the following.

 

We are about ready to simulate the inverter.

The next thing we need to do is create a control file for simulating with SmartSpice.

We do this by clicking on the icon seen below (do this now).

 

 

Type the following into the control file.

The first line specifies the SPICE models that we saved in the Silvaco_tutorial folder on the desktop earlier in the tutorial.

The .dc line specifies that we are going to sweep the Vin source from 0 to 5 V in 1 mV steps.

The last line specifies that we save all voltages and currents in the circuit (this line is commented out here by adding the * to the beginning of the line)

Saving all of the voltages and currents is fine for small simulations but isn't a good idea in general (the simulation results will take a lot of space and time to manipulate).

Let's specify the signals we want to save. Before doing this save, and close, the control file.

 

 

In the Capture/Simulation window click on the Simulation tab as seen below.

Next click on the Vin and Vout wires (the blue boxes will appear). These are the signals we will plot.

Save this information by hitting the save icon circled below.

 

 

Click on the Capture tab and then start the simulation by clicking on the icon seen below.

 

 

The simulation has errors, see below.

Select the "View Output File" icon.

 

 

The following window appears.

Use CTRL+F and enter "error" to search for errors in the output file.

 

What we see, below, is that SmartSpice isn't finding the models.

Verify that the C5_models.txt file is located in the Silvaco_tutorials folder on your desktop.

Also verify that nothing is misspelled.

 

 

Everything looks okay so let's open the C5_models.txt file in the Silvaco_tutorials folder on the desktop.

Note the comment that for HSPICE (and SmartSpice) we should change the level from 8 to 49 (do this and save the file).

 

(I've now modified the C5_models.txt files at CMOSedu.com to indicate that both level=49 should be used for both HSPICE and SmartSPICE).

 

 

Running the simulation again results in SmartView starting and the waveforms we selected being plotted, below.

Close this SmartView window and return to Gateway.

 

 

Let's pause for a moment and take a look at the contents of the Silvaco_tutorials folder.

 

 

Extensions indicate *.schlr (schematic), *.schlr.lck (a locked schematic, we are editing now), *.raw (SmartSpice raw simulation results used by SmartView), *.net (netlist),

*.err (reports simulation errors), *.ctr (the control file), *.crb (information on cross probing), *.in (the SmartSpice input file, merged *.ctr and *.net files, for SmartSpice).

 

Knowing what the files do can be useful if, for example, you don't want to re-type the contents of a control file.

 

Let's make a symbol for the inverter.

Start by deleting the two vdc sources and adding an inschpin as seen below.

After moving the wires and the wire names check the schematic for errors.

 

 

Then use Tools -> Generate Symbol...  to see the following window.

Notice the shape is set to "Not."

 

 

After hitting OK we get the following Window (now there are two open windows, the schematic and the symbol of the inv_20_10).

To switch between the two views (schematic and symbol) use the Window menu selection.

 

 

Delete all of the blue lines, move the cell label, and pins to get the following.

 

 

Next use the Draw -> Line (or better just press L) to get the following.

To end drawing a line press ESC.

To ensure that the lines are precisely where you want them use Z (zoom area with mouse) and F (fit).

 

 

Next add a circle (Draw -> Circle), move the ? to inside the symbol (this is the symbol's label, e.g., X1, when it's placed in a schematic).

Also, move, and reduce the size of (right-click on the text and then select decrease, or simply press O) the symbol's name.

 

 

We don't need to display the names so double click on the Vout and Vin pins and de-select "Name visible" as seen below.

 

 

 

Next, we want to be able to use this symbol in our schematics so use the menu commands File -> Workspace Settings to open the following window.

 

 

Press the Add button and then browse to the Silvaco_tutorials on the desktop.

Since this is the same directory as the workspace the path is simply a period.

Change the newlibrary Name to Silvaco_tutorials as seen below.

Press OK.

 

 

We should now see the symbols in this Silvaco_tutorials (on the desktop) folder appear with the list of libraries as seen below.

Before going any further use File -> Save Workspace to save the workspace.

 

 

Let's do a couple more simulation examples before quitting.

 

Use CTRL+N to create a schematic called sim_inv_dc.

Place the inverter symbol in the schematic as seen below.

Press ESC to stop adding the inverter symbol.

 

 

Before we go any further select the inverter and press D (for descend) to see what's inside the symbol, below.

Now there are two Windows open, the symbol and the schematic.

 

 

Next, with nothing selected in the inverter symbol, press A (for ascend) to go back to the symbol view.

Note that both symbol and schematic windows are still open (use the Windows menu item to select a specific window and C to close).

 

Add the following to the sim_inv_dc schematic.

Check the schematic and notice the warning about the dangling wire (let's ignore it this time).

 

 

Next select the Simulation tab and then select the wires Vin and Vout to be plotted.

Hit Save to save these plot settings.

 

 

Click on the Capture tab and then Edit the Control File and add the following.

When done save and close the control file and then run the simulation.

 

 

We get the following simulation output, nothing!

 

 

What's wrong? Well, we can probably figure out the problem looking at the schematic. However, let's take a look at the input file.

 

 

We see that the voltage source we are using for the inverter's input has no DC value.

Let's rename this source and change the DC value to 0.

 

 

Now running the simulation results in the following.

 

 

One last simulation, use File - Save As to save sim_inv_dc as sim_inv_tran (for a transient simulation).

Change the input source to a pulse and change the parameters to what is seen below.

 

 

Then change the control file to the following.

Save and close the control file.

Click on the Simulation tab to ensure V(Vin) and V(Vout) are still selected for plotting then click on the Capture tab.

 

 

Running the simulation results in the following.

 

 

Save and close the sim_inv_tran schematic (and any other open schematics or symbols).

Exit Gateway.

 

This ends our first tutorial.

 

For your reference the final contents of the Silvaco_tutorials folder used in this tutorial is located in Silvaco_Tutorial_1.zip.

 

Return