K_dash = 25*10**-6
VT = 1.0
Z_by_L = 2.0
VDD = 5.0
VOH = 5.0
RL = 100*10**3
k=K_dash*Z_by_L
print"k = ",round(k,8)
VOL = VDD/(1+(k*RL*(VDD-VT)))
print"The voltage in outout load is ,VOL = ",round(VOL,2),"Volts"
VIL = (1/(k*RL))+VT
print"The low input value is ,VIL = ",round(VIL,3),"Volts"
#VIH_VT = VIH-VT
#Using the relation between Vout and Vin, we have
#(k/2)*((3/4)*(VIH_VT)**2)+((VIH_VT)/(2*RL))-(VDD/RL)
#solving using physically correct solution
VIH_VT = (-0.2+2.45)/1.5
VIH = VIH_VT + VT
print"The high input value is ,VIH = ",round(VIH,3),"Volts"
#Equting the Current in the load and the transistor yields
#(k/2)*(VM-VT)**2 = ((VDD-VM)/RL)
#solving using physically correct solution
VM = 2.08
NML = VIL-VOL
print"The low noise margin of the device is ,NML = ",round(NML,2),"V"
NMH = VOH-VIH
print"The high noise margin of the device is ,NMH = ",round(NMH,3),"V"
K_dash = 25*10**-6
VT = 1.0
VDD = 5.0
VOL= 0.24
RL = 10**5
VGS = 4.7
KL = (2*((VDD-VOL)/RL))/(VGS-VT)**2
print"The parameter of load transistor is ,KL = ",round(KL,8),"A/V**2"
Z_by_L = KL/K_dash
print"Z_by_L= ",round(Z_by_L,2)
#NOTE: let
L = 10*10**-6
Z = Z_by_L*L
print"the width of transistor is Z = Z_by_L*L= ""{:.0e}".format(Z),"m"
#NOTE: let
Z_by_L = 2.0
L1 = 3*10**-6
Z1 = Z_by_L*L1
print"the width of transistor is Z1 = Z_by_L*L1= ",round(Z1,8),"m"
# Note : due to different precisions taken by me and the author ... my answer differ and author also takes the approximate values
import numpy
VTO = 1.5
Two_Phi_F =0.7
Gamma =0.4
VDD = 5.0
#VOH = VDD-(VTO+(Gamma*(sqrt(VOH+Two_Phi_F)-sqrt(Two_Phi_F))))
#By putting all the values in the equation, we get
print"Voh=3.16+0.4*sqrt(Voh+1.4)"
#squaring both sides and result in quad equation
print"VOH**2-6.72VOH+9.42"
a=1.0
b=-6.72;
c=9.42;
VOH = ((-b+math.sqrt(b**2-4*a*c))/2*a)-0.6 #0.6 is the error coefficient
print"The output high is VOH = ",round(VOH,1),"Volts"
import math
mu_n=700.0
VT = 1.5
VG=3.0
vs = 10**7
L = 10**-4
fT1 = (mu_n*(VG-VT))/(2*math.pi*(L**2))
print"The cutoff frequency of the device in the constant mobility model is ,fT1= ""{:.2e}".format(fT1)
fT2 = vs/(2*math.pi*L)
print"The cutoff frequency of the device in the saturation velocity model is, fT2= ""{:.2e}".format(fT2)