# Chapter : 8 - CMOS Realization Of Inverters¶

## Example 8.2 : Page No - 333¶

In [83]:
from sympy import symbols, solve, N
x= symbols('x')
#Given data
NMH= 1 # in V
VIH= 2 # in V
VTon= 0.5 # in V
VOL= 0.2 # in V
VDD= 3 # in V
KP= 30*10**-6 # in A/V**2
PD= 100*10**-6 # power dissipation in W
# Formula VIH= VTon +2*sqrt(2*VDD/(3*kn*RL))-1/(kn*RL) (i)
# Let x= 1/(kn*RL), putting the values in (i), we get
# x**2-5*x+2.25=0
expr = x**2-5*x+2.25
x , x1= solve(expr, x)
# Formula PD= VDD*(VDD-VOL)/(2*RL)
RL= VDD*(VDD-VOL)/(2*PD) # in Ω
print "The value of RL = %0.1e Ω" %RL
kn= 1/(x*RL) # in A/V**2
# Formula kn= KP*(W/L)
WbyL= kn/KP
print "The value of (W/L)n = %0.2f" %WbyL

The value of RL = 4.2e+04 Ω
The value of (W/L)n = 1.59


## Example 8.4 : Page No - 335¶

In [84]:
#Given data
unCox= 40 # in µA/V**2
upCox= 20 # in µA/V**2
Ln= 0.5 # in µm
Lp= 0.5 # in µm
Wn= 2.0 # in µm
Wp= unCox*Wn/upCox # in µm
print "The value of Wp = %0.f µm" %Wp

The value of Wp = 4 µm


## Example 8.5 : Page No - 337¶

In [85]:
from __future__ import division
from sympy import symbols, solve, N
VOUT= symbols('VOUT')
# Given data
VTO= 0.43 # in V
VDD= 2.5 # in V
g=0.4  # value of gamma
W1= 0.375
L1=0.25
W2= 0.75
L2=0.25
#VDD-VOUT-VT= VDD-VOUT-(VTO+g*(sqrt(0.6+VOUT)-sqrt(0.6)))=0
#VOUT**2+VOUT*(2*A-g**2)+(A-0.6*g**2)=0, where
A=VTO-VDD-g*sqrt(0.6) # assumed
B= (2*A-g**2) # assumed
C=(A**2-0.6*g**2) #assumed
#VOUT= [1 B C]
#VOUT= roots(VOUT) # in V
#VOUT= VOUT(2) # in V

expr = VOUT**2+VOUT*(2*A-g**2+4.556)+(A-0.6*g**2)
VOUT= solve(expr, VOUT)
VOH= round(VOUT[1],4) # in V
print "The value of VOH = %0.3f volts" %VOH
Vout=(W1+3*L2)-(VDD-VTO)*(W2*L1/(W1*L2)-1)+ (VDD)/(VDD-VTO)
VOL= Vout # in V
print "The value of VOL = %0.3f volts" %VOL
Vth= (VDD+VTO-L1)/(VDD*VTO)*(1-W1*L2/(W2*L1))+(L1*L2/VDD)
print "The value of Vth for circuit A = %0.3f volts" %Vth
W4= 0.365
L4=0.25
W3= 0.75
L3=0.15
Vth=(L3*L4/VDD)+(VDD/(W3*L4*VDD))-(VDD)/(1-W4*L3/(W3*L4))-2*W4
print "The value of Vth for circuit B = %0.3f volts" %Vth

The value of VOH = 1.766 volts
The value of VOL = 0.263 volts
The value of Vth for circuit A = 1.272 volts
The value of Vth for circuit B = 1.087 volts


## Example 8.6 : Page No - 338¶

In [86]:
from __future__ import division
from sympy import symbols, solve, N
Vx= symbols('Vx')

#Given data
VTO= 0.43 # in V
VDD= 2.5 # in V
g=0.5  # value of gamma
#VDD-Vx-VT= VDD-Vx-(VTO+g*(sqrt(0.6+Vx)-sqrt(0.6)))=0
#Vx**2+Vx*(2*A-g**2)+(A-0.6*g**2)=0, where
A=VTO-VDD-g*sqrt(0.6) # assumed
B= (2*A-g**2) # assumed
C=(A**2-0.6*g**2) #assumed
expr = Vx**2+Vx*(2*A-g**2+5)+(A-0.6*g**2)
err, Vx= solve(expr , Vx)
print "The value of Vx =",round(Vx,4),"volts"

The value of Vx = 1.6991 volts