做电路不能做spice monkey,也就是在仿真前就应该能预测结果,也就是在仿真能手算出大致的曲线,但是PDK根本不提供手算的参数,因为现在代工厂提供的PDK大多采用的是BSIM3V3模型,其中的参数是很多且复杂的。因此,从PDK中估计出手算参数是迈出不做spice monkey的第一步。
本次以tsmc 0.18为例,估算出nmos2和pmos2的手算参数,首先要明白手算参数包括那些,MOSEFET的公式是
因此K, lamda, Vth就是需要的手算参数。
方法一:根据model文件中参数估算
K' = μCox,Cox= ε/tox,其中ε是SiO2的介电常数 ε=εox*ε0=3.9*8.854e-14F/cm=3.46e-11F/m。然后从tsmc 0.18/model/spectre/rf018.scs文件中分别找到nch和pch的u0,tox,vth0。
tox(nch)~=4e-9m tox(pch)~=4-9m,
un~=0.045m^2/v-s,up~=0.01m^2/v-s
Vthn=0.2699V,Vthp=0.43V
所以 K'n=un*Cox=0.5*0.045*3.46e-11/4e-9=389.2uA/V
K'p=0.01*3.46e-11/4e-9=86.5uA/V
方法二:根据仿真结果计算
简化的MOS在饱和区Id公式如下,忽略了沟道调制效应,即lambda,这个对结果影响不大。假设Vth是个常数,那么Id1和Id2如下:
所以,对二极管接法nMOS 或 pMOS的扫描其Id,那得到的Id-Vgs是一条近似直线,在直线上选择两点并代入到上面的公式就能计算出K (也就是UpcoxW/L),然后将K和VGS,Id回代到Id1公式中算出Vth。
(1)pMOS 参数提取
电路如下
理想电流源Idc从50μA 到250μA扫描,结果如下,取了两点用于计算(100u,832m)(200u,532m)
在matlab中输入下面的代码计算:
Id1 = 100*10^-6;
Id2 = 200*10^-6;
Vgs1 = 1.8-0.832;
Vgs2 = 1.8-0.586;
K =((sqrt(Id1)-sqrt(Id2))/(Vgs1-Vgs2))^2;
Upcox = 2*K*0.18/2
Vt_a =Vgs1-sqrt(Id1/K)
Vt_b =Vgs2-sqrt(Id2/K)
计算结果:
K'=51uA/V,Vth=0.37V
(2)nMOS 参数提取
用相同电路仿真得到Vn曲线,取两点(100u,708m)(200u,825m)
计算结果
K'=225uA/V,Vth=0.43V
两种方法得到的K'和Vth还是有些区别的,主要还是要看计算结果与仿真结果的吻合度。大致验证表明,用方法二得到的手算参数计算的结果和仿真结果更为接近。
关注微信号eetop-1,回复以下关键词,阅读相关文章
icsj01 : IC设计完整流程及工具简述
icsj02 : 说说芯片设计这点事
icsj03 : 关于IC设计的想法
icsj04 : 数字IC设计的完整流程(非常详细!)
mn01 : 模拟数字产品开发流程
mn06 : 模拟设计的100条圣经
mn07 : 模拟电路学习入门的建议
mn08 : 模拟IC流片经验分享
联系客服