ECE4263 Intro to VLSI - Ece
Personal tools

ECE4263 Intro to VLSI

From Ece

Jump to: navigation, search

ECE4263 Introduction to VLSI (course home page) is a single-semester course in the Department of Electrical Engineering at Mississippi State University. In spring 2007, the course is taught by Robert B. Reese.

This is the official wiki page for Intro to VLSI. All students are welcome to add to this page any wisdom that may be helpful to other and future students in the class. Dr. Reese has provided some possible topics that students may want to use for contributions; other headings may be added. Obviously, any objectionable content will be removed as soon as it is discovered, and the author will be ... contacted.


Lecture material

  • Buy (erasable) colored pencils or (erasable) crayons or (erasable) markers for class. Colors are needed when drawing stick diagrams to identify different metals and conductors.

Java Electric

  • You need to have the Java Runtime Environment or SDK installed before trying to run electric. Go to and press the 'free Java download' button to download the latest version of the Java Runtime Environment.
  • When right clicking in a Web browser and saving the Java Electric JAR archive, ensure that the file extension is saved as .jar. Some browsers will save it by default with a different extension, such as .zip, and executing this incorrectly labeled file will not produce the expected result.
  • Before right-clicking and downloading, ensure you are logged into the ECE domain. Otherwise your browser will download a 1KB junk file (this is a problem on the Linux machines primarily!) If you're still having trouble downloading the file in linux, try running the following command:
>: curl -u ECEUSERNAME > electricGNUIRSIM.jar

If the URL location of electric changes, simply update the URL above with the new URL. Lastly, you can check to verify the jar file was downloaded correctly by using the following command:

>: file electricGNUIRSIM.jar 
The result should read:
electricGNUIRSIM.jar: Zip archive data, at least v1.0 to extract 
  • If you are having problems running Java Electric on Windows, try running it from a command prompt with the command:
>: java -jar electricGNUIRSIM.jar

Launching Java Electric from a Windows GUI

  • This changes the max allocated memory for all JVM instances (Electric does not always need that much).
  • These directions assume you have admin access and the JRE already installed (confirmed on jre1.5.0_10).
  • Start the Windows Registry Editor and find the following key:
  • The Default string value should contain a path to your installed version of Java. Edit the string so that
-jar "%1"


-jar -mx1000M "%1"

The default maximum allocation is now 1000 MB instead of ~66MB. You should now be able to start Electric by double-clicking.

If you'd rather not edit the registry and want to change the memory only for Electric, then instead simply create a shortcut on your desktop (Right-click→New→Shortcut). Enter the following, editing for your JRE path and .jar file path:

"C:\Program Files\Java\jre6\bin\javaw.exe" -jar -mx1000M "C:\electric-8.05e_java6.jar"

Launching Java Electric from a Linux GUI

  • Use a text editor and create new file called '', place this in the same directory as the electricGNUIRSIM.jar achive.
  • Edit the file to contain the following commands
# Java heap size, in megabytes
if [ "$JAVA_HOME" = "" ]; then
exec "$JAVA_HOME/bin/java" -mx${JAVA_HEAP_SIZE}m ${GNUELEC} -jar "./electricGNUIRSIM.jar" $@
  • You may have to change the pathname for DEFAULT_JAVA_HOME to the location of Java on your system.
  • Open a shell window, change to the directory containing '' and javaElectric.jar
  • Give the '' file execute permission by doing
chmod +x
  • Execute the shell script by the command:

Editing Tips

  • When you open the library for Lab 1 for the first time, it will ask you whether or not to use the new settings (the one with the library) or keep the old settings (save as a .elib file). You want to use the NEW settings. If you don't do this, you can recover from this later by saving your modified library with a different name. Then open the original library, and this time choose 'New settings' (this modifies some internal Electric properties). Now open your modified library, and when it asks if you want to use the new library settings or the currrent settings, use the 'current' settings.
  • When saving libraries, you can save as either a .jelib file format or a .elib format - either one works, but the lab submission scripts expect a .elib file. Please do NOT save a library in .jelib format, and then edit the file extension to be .elib (or vice versa) - this will cause Electric to think that the library is corrupted.
  • There is only one time you should be using a PURE layer, and that is for filling in NWELL gaps using an NWELL node. You will need to toggle the special select arrow in order to select this, and then use the Cell Properties menu to edit the X, Y size.
  • UNDO is your friend!
  • To run wires, such as a metal 1 wire, or poly wire, use the MISC PIN element to put down a wire pin, then left click to select the pin, and right click on a destination node to run the wire. NOT use pure layers for connection! This does not really create a connection, it just looks like the elements are connected.
  • Connections are NOT created when two layers are simply abutted to each other. So, if you take two cells, and abut them, the VDD and GND rails are not connect in the neighboring cells. You have to create wires between them in order to connect them.
  • The arrow keys are your friend after selecting an object and then you want to move it!
  • To discover the grid resolution (measured in lambda), see Preferences.Display.Grid
  • If you have to copy cells between libraries (Cross Library copy) the safest way to copy a hierarchical design is to copy the top cell in the hierarchy, and ensure that 'Copy Subcells' and 'Copy all related views' are checked. Any other method seems to result in copied views that are missing connections.
  • If the text on cells are too big, use 'ctrl -' (control minus) to shrink all text on screen.
  • To force all objects to snap to grid points, in File:Preferences:Display:Grid choose 'Full' for 'Alignment of Cursor to Grid'.

Debugging NCC errors

  • Start with wires tied to input nodes. Look at the difference between the list of transistors that it says are connected in the schematic, and the ones in the layout. When it says 'NMOS 2stack', the 'stack' means that two transistors are tied in series. If it says 'NMOS gate', it means an NMOS transitor in parallel with other transistors.
  • If you get a 'hash' error in NCC, it means the ordering of the transistors in a stack are different between schematic and layout. For example, you may have two transistors in series in the schematic, with the transistor whose gate is tied to input 'A' coming first in the stack, and the transistor whose gate is tied to input 'B' coming second in the stack. If this ordering is reversed in the layout, you will get a 'hash' error.

External links