VLSI ( Very Large Scale Integration )  is a method used to implement nanoscale IC and ASIC designs. In this text I am going to give you some information and tips about CMOS VLSI Design.

First of all a VLSI designer needs a design tool to realize unique designs. There is a free and easy to use program named Magic. Magic is a venerable VLSI layout tool, written in the 1980's at Berkeley by John Ousterhout. 

You can download magic from the link below,


After all setup and compilation processes we are ready to implement our design. Our first example of CMOS VLSI Design is a very common and popular one, CMOS Inverter Design.

There are lots of video tutorials in youtube such as this one below and we are not going to mention how to draw magic layouts.


The design of an inverter should be similar to this;

 After the completion of the drawing in Magic we basically need to extract the code of this drawings. This code includes the values of parasitic capacitors appear in the metal connections of the transistors, width to length ratios of the transistors and so on.

This extraction can be done easily by " extract all " command. Then a file which has an extension of .ext will be saved to the common direction. However this .ext file is not usable for us, therefore we need to use " ext2sim " command to obtain the code of the magic layout design. The needed file has a .spice extension and it can be viewed by using NotePad in Windows. The result should be similar to the code below;

 * SPICE3 file created from myinverter.ext - technology: scmos 
 .option scale=0.01u 
 M1000 out in vdd w_n7_n10# pfet w=800 l=200
 + ad=400000 pd=2600 as=400000 ps=2600 
 M1001 out in gnd Gnd nfet w=400 l=200
 + ad=200000 pd=1800 as=200000 ps=1800 
 C0 out gnd! 2.8fF
 C1 in gnd! 5.4fF

This is the netlist file and M1000 and M1001 are two transistors of the basic inverter structure. 
After obtaining the netlist we just need to perform a simulation and see if the inverter inverts or not. To do this among all simulation programs, I prefer LTSpice IV and you can download it for free from the link below,


Okay you downloaded LTSpice and after the setup process, you double clicked on its shortcut. Now lets forget about the magic design and extraction operations and just basicly design a circuit in a spice program. 

To give you a lead I am uploading the design and you can download from here: 

Download from here.

If you press Run Simulation you will see a black screen. By right clicking and pressing Add Trace you can add V(out) and observe the output on a plot. 

But in this design, transistors are ideal and there isn't any non-ideal effects on the output. We'd like to observe all effects on the output according to our magic design. Therefore we need to obtain the netlist of this LTSpice design and modify it according to our Magic design netlist.

I know you are a little bit confused; but the following part is going to make everything clear on your mind.

Now let's obtain the netlist from the LTSpice by View - Spice Netlist from the menu. This is the obtained netlist;

 * H:\Personal\Lessons\CMOS\inverter\inverter.asc
 M1 out N002 0 0 NMOS
 M2 out N002 N001 N001 PMOS
 C1 N002 0 5.4fF
 C0 out 0 2.8fF
 V1 N002 0 PULSE(0 5 0 0.01 0.01 1 2 100)
 V2 N001 0 5 Rser=0
 .model NMOS NMOS
 .model PMOS PMOS
 .lib C:\Program Files (x86)\LTC\LTspiceIV\lib\cmp\standard.mos
 .tran 50

 This netlist will be modified and the result will be the following netlist,

 * SPICE3 file created from myinverter.ext - technology: scmos

 .model NMOS NMOS
 .model PMOS PMOS

 M1000 out in Vdd Vdd PMOS w=800 l=200
 + ad=400000 pd=2600 as=400000 ps=2600
 M1001 out in 0 0 NMOS w=400 l=200
 + ad=200000 pd=1800 as=200000 ps=1800

 C0 out 0 2.8fF
 C1 in 0 5.4fF


 V1 in 0 PULSE(0 5 0 0 0 0.0000000005 0.000000001 100)
 V2 Vdd 0 5 Rser=0

 .tran 0.00000001

Let me explain the changes made in the netlist,

  • M1 and M0 were ideal so I replaced them with the transistors obtained from magic design.
  • Some Net names were changed to easily read and modify the netlist.
  • V1 was adjusted to obtain 1 GHz. Pulse frequency can be any value smaller than 20 GHz because transistors won't work above that freq.
After obtaining this unique netlist just copy and paste it to a NotePad file and save as " .cir " file. ( Just rename it as inverter.cir )

We are now ready to double click the inverter.cir file to simulate and see the results;

We simulated the inverter structure which was drawn in Magic successfully using LTSpice IV. 

Continue Reading Magic VLSI - Lesson 2 - NMOS Common-Source Amplifier with Enhancement Diode Load

keywords: tutorial, magic VLSI design


Software Developer, Codemio Admin

Disqus Comments Loading..