如果有一个工艺库,就要知道工艺库的这两个参数。一种方法直接看工艺库参数,但是现在的工艺库是基于BSIM,参数超级多,有考虑到很多二级效应。如果直接用工艺库的参数vth0,UnCox来计算的话,会发现计算的值和仿真的值相差比较大(我觉得可能是因为仿真用的公式不是我们学的平方率公式)。因此就需要找出我们用于手算的这两个参数的值。
对于MOS饱和情况:
其电流方程
N管
P管
两边开根号,可以得到Id和Vgs是线性的。因为s端接低电平(对于N管),接高电平(对于P管)。所以就得到Id和Vg是线性的。
即
N管
P管 (这里先认为Vthp为正)
搭电路(以下的方法是在艾伦的CMOS模拟集成电路设计上介绍的)
所用的库是st02 。 下载地址http://bbs.eetop.cn/thread-411185-1-1.html,这库也是模拟集成电路设计与仿真所用的库。
管子的宽长比都是10u/5u。
V1电压源为5V,提供电源。V0电压源提供给管子的栅极输入。
对V0进行DC电压扫描。得到N管和P管关于电压V0的曲线。利用计算器得到扫描数据。
DC设置和得到的输出曲线。这里曲线不重要,重要的是曲线的数据。
N管和P管的电流对于输入电压扫描的值。左是N管电流,右是P管电流。
得到数据后,就用matlab来处理。利用数据,得到拟合的线性曲线,得到斜率和截距,就可以得到参数的值了。
Matlab的代码如下:
+ 查看代码
%N管 从1.7V,以0.2步进递增到3.3V
%电流的值要开根号,所以后面要有.^0.5。
%n1和delta_n是用来检查线性度的,线性度差的数据要舍弃。
x = 1.7:0.2:3.3;
n = [69.7 99.2 133.4 172 215 262.5 313.3 368.4 427.2].^0.5;
n1= [ 0 69.7 99.2 133.4 172 215 262.5 313.3 368.4 ].^0.5;
delta_n = (n-n1)./0.2;
%P管 从3.3V,以0.2步进递减到1.5V
%电流的值要开根号,所以后面要有.^0.5。
%p1和delta_p是用来检查线性度的,线性度差的数据要舍弃。
y=1.7:0.2:3.3;
p = [139.9 119.8 100.8 83.19 66.92 52.12 38.87 27.3 17.52].^0.5;
p1 = [0 139.9 119.8 100.8 83.19 66.92 52.12 38.87 27.3].^0.5;
delta_p = (p-p1)./0.2;
%拟合函数ployfit()
po1 = polyfit(x,n,1);
po2 = polyfit(y,p,1);
运行,可得到:
p01 = [7.6975 -4.6436]
p02 = [-4.7702 20.0343]
前一个值是斜率,后一个值是斜率。
代入到
即可得到
UnCox = 59.3uA/v2 Vthn = 0.6v
UpCox = 22.8 uA/v2 Vthp = -0.8v
这样就得到了参数了。
下面进行去验证一下:
将宽长比改成 N管8.5u/5u P管 7.3u/5u
利用电流公式 得到
N管电流 181.96uA
P管电流 48.1uA
从图中仿真出来的电流比较,会发现,误差比较小。。
可图中还可以看出,N管的Vth为0.75v,P管的Vth为-0.98V。与我们计算出来的值不一样。相差0.1V左右。(我认为仿真的时候,考虑了对Vth影响的二阶效应,所以造成Vth有变化)。
以上的数据在长沟道的时候,计算比较有效。在短沟道情况下,计算误差就比较大了,因为在短沟道下,平方率公式已经不适用了,此时二阶效应的影响比较大了。不过模拟电路,沟道都不会太短,可以按照长沟道公式计算。
查过书,书上说,沟道小于0.8um,就算短沟道了,此时计算就不适用平方率公式计算了。有个gm/id的方法是在短沟道情况下用的,不过还没有研究。