VLSI DESIGN PRINCIPLES (658)

 

Lab Assignment 1

 

DANAI CHASAKI 

ID: 22169216

 

 

Objective: Design a CMOS 2-input nand gate

 

 

POST: Truth Table

 

 

NAND  Gate

 

A

B

F

0

0

1

0

1

1

1

0

1

1

1

0

 

POST: Image of your schematic

 

In order to draw the schematic which implements the truth table we used the schematic editor of Cadence (icms&). We chose the nmos, pmos devices and supply nets from the library NCSU_Analog_Parts.

The NAND gate consists of 2 PMOS transistors in parallel and 2 NMOS transistors in series. The screen image of the schematic is shown below:

 

 

 

POST: Image of simulator output

 

The next step is to extract the netlist file of our schematic in Cadence. After this we are able to find a file called netlist in the nand directory that we have created. Now what we have to do is to convert the netlist file to one compatible with IRSIM. So we run the perl code schm2sim.pl located in our sim directory. The output is created in sch.sim and we are ready to run the IRSIM tool.

The output is shown below:

 

POST: Hand Calculations

 

 

 

First we identify the worst-case transitions. The worst case FALLING transition on OUT occurs when there is a RISING edge on B while A is held constant at logic 1.
(10 -> 11)

The worst case RISING transition on OUT occurs when there is a FALLING edge on B while A is held constant at logic 1.

(11 -> 10 , due to the intermediate capacitance that exists between the 2 NMOS transistors we have the worst case rising transition when A is on and B is off)

 

Now we determine the load capacitance Cload.

We are able to drive 32 minimum size inverters plus 100 fF of lumped wire capacitance.

Then:

Cinv = Cp + Cn

Cinv = Cox * L * (Wn + Wp)

Cinv = (6.03 fF/um^2) * (0.24 um) * (0.3 um + 0.9 um)

Cinv = 1.73664 fF

 

Cload = 32 * Cinv + 100 fF

Cload = 16 * (2.08 fF) + 100 fF

Cload = 155.57 fF

 

Next we determine the parasitic capacitance Cpara.

In the equations below the subscripts indicate the transistor and terminals. For example, in CgdnA, "gd" indicates the capacitor between the gate and drain terminals and "nA" indicates it's the NMOS transistor whose gate is connected to input A.

 

Looking at the schamtic above and taking into consideration all the parasitic capacitancies of the circuit we have :

 

C = CgdnA + CdbnA + CgsnA + CsbnA + CgdnB + CdbnB + CgdpA + CdbpA + CgdpB + CdbpB

 

We will assume that the drain and source of each transistor is geometrically identical, the two PMOS transistors are identical, and the two NMOS transistors are identical.

 

Cpara = 2*Cgdp + 2*Cdbp + 3*Cgdn + 3*Cdbn

 

Cpara = 2*(Cgdo*Wp) + 2*[Cj*Wp*Ls + Cjsw(2*Ls+Wp)]

        + 3*(Cgdo*Wn) + 3*[Cj*Wn*Ls + Cjsw(2*Ls+Wn)]

 

Cpara = 2*(0.56 fF/um)(Wp) + 2*[(1.88 fF/um^2)(Wp)(0.72 um) + (0.37 fF/um^2)(2*(0.72 um) + Wp)]

        + 3*(0.63 fF/um)(Wn) + 3*[(1.92 fF/um^2)(Wn)(0.72 um) + (0.44 fF/um)(2*(0.72 um) + Wn)]

 

Cpara = 4.5672*Wp + 7.3572*Wn + 2.9664

 

Now we compute Ctotal, the sum of Cload and Cpara.

 

Ctotal = Cpara + Cload

 

Ctotal = 4.57*Wp + 7.36*Wn + 2.97 + 155.57

Ctotal = 4.57*Wp + 7.36*Wn + 158.54 fF

Then we compute the total current required to switch all of this capacitance by 1/2 Vdd (= 1.25 V) in the 300 ps.

 

I = Ctotal * dV/dt

 

I = (4.57*Wp + 7.36*Wn + 158.54 fF) * (1.25 V) / (300 ps)

 

I = 1.904E-5*Wp + 3.07E-5*Wn +66.05E-5

 

Assuming operation in the saturation region we compute the current in the NMOS transistors (We double the channel length because we're modeling them as two resistors in series).Then we set this current equal to the capacitor current.

 

I = 0.5 * kn' * (Wn /2 L) * (Vgs - Vt)^2

I = 0.5 * (275E-6) * (Wn / 0.48 um) * (2.5 - 0.43)^2

I = 1.227E-3*Wn

 

1.904E-5*Wp + 3.07E-5*Wn +66.05E-5 = 1.227E-3*Wn

 

1.12E-3*Wn - 1.9E-5*Wp =66.05E-5

 

Then we compute the current in the PMOS transistors and we set this current equal to the capacitor current.

I = 0.5 * kp' * (Wp / L) * (Vgs - Vt)^2

I = 0.5 * (96E-6) * (Wp / 0.24 um) * (2.5 - 0.62)^2

I = 7.068E-4*Wp

 

1.904E-5*Wp + 3.07E-5*Wn +66.05E-5 = 7.068E-4*Wp

 

-1.9E-5*Wp + 1.12E-3*Wn = 66.05E-5

 

Now we solve the two equations for Wn and Wp.

 

Wp = (66.05*E-5 + 3.07E-5*Wn) / 6.877*E-4

Wp = 0.9604 + 0.044*Wn

 

-1.9E-5(= 0.9604 + 0.044*Wn ) + 1.12*E-3*Wn = 66.05*E-5

 

Wn = 67.87/1.12E-3 = 0.605 um

 

Wp = 0.9604 + 0.044* 0.605 = 0.987 um

 

 

Having the values of Wn and Wp we can compute the propagation delay as follows:

 

Tplh = 0.69*Rp*Cload

 

Where Rp is approximately 31Kwhen W/L = 1

 

Thus Tplh = 0.69 * 31K*156fF/(987/240)

 

Tplh = 811.38 ps

 

Tphl = 0.69*2*Rn*Cload

 

Where Rn is approximately 13 Kᾨ when W/L=1

 

Thus Tphl = 0.69*2*13k*156 fF/ (605/240)

 

Tphl = 1110.20ps

 

Tp = (Tplh + Tphl) /2 = 960.79 ps

 

In order to determine the power dissipation we have to compute both static and dynamic power.

  

Static power dissipation: Pstatic = Istat * Vdd = Istat * 2.5

 

Istat is equal to drain area * 100 pA/um^2. (The leakage current per unit drain area is usually approximately 100 pA/um^2)  

 

We can compute the drain area of nmos and pmos as follows:

 

Drain area (nmos)= Wn*Ls = 1.92*0.72 = 1.38 um^2

Drain area (pmos)= Wp*Ls = 2.88*0.72 = 2.07 um^2

 

Pstatic (nmos) = 2.5*(100*10e-12*1.38) = 50.4 pW

Pstatic (pmos) = 2.5*(100*10e-12*2.07) = 34.5 pW

 

Dynamic power dissipation: Pdyn = Cload*Vdd^2 /(Propagation delay)

            = 155.57fF * 2.5*2.5 / 300ps

            = 3.24mW

 

POST: Simulation waveforms with performance metrics annotated

POST: A table comparing tPHL, tPLH, tP, PSTAT and PDYN for the analytical model and the simulation

 

In this step we simulate the design using HSPICE in order to verify its performance. We use first the perl script schm2spice.pl to convert our netlist into true spice format. Then we create a nand.spice file and we run it.

Using the tool awaves we get the following results:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

We now zoom in the Low to high transition

 

 

 

 

 

Zooming in the high to low transition we have :

 

 

 

The performance metrics of our design appear in the file nand.mt0

 

$DATA1 SOURCE='HSPICE' VERSION='W-2005.03-SP1   '

.TITLE '************************** nand gate *****************************'

pavghl             pavglh               tphl                tplh

temper             alter#

 

2.810e-06        3.252e-05        2.152e-09        1.440e-10

25.0000           1.0000

 

We can see that both tphl, tplh < 300 ps . So we don’t need to modify the transistor sizes to slow down the gate.

 

The results from the analytical model are shown here:

 

 

tphl

tplh

tp

Pstatic

Pdyn

analytical

1110.20 ps

811.38 ps

960.79 ps

84.9 mW

3.24 mW

 

 

 

 

POST: An image of your layout, with the total height and width annotated

 

 

 

The height and width computed using the ruler in the layout are:

 

Height: 15.16

Width: 6.78

 

Thus we have approximately:

 

Total Height= 15.16 /0.12 = 126 lambda

Total Width = 6.78/ 0.12= 56 lambda

 

 

 

 

 

 

 

 

 

 

POST: Image of simulator output

 

In the same way as before we extract the schematic netlist from our design, then convert it to a file compatible with IRSIM and run the simulation. The output shows that the gate has the right functionality.