首页 / 资讯中心 / 文章详情

MOSFET工作原理与SPICE参数设置:从模型层级到实测校准

MOSFET工作原理与SPICE参数设置:从模型层级到实测校准 ★ FEATURED ARTICLE
上周有位做电源的朋友拿着一个Buck变换器的仿真波形来找我说轻载下效率怎么调都对不上实测开关损耗差了接近一倍。我看了一眼他的网表问题根本不在电路拓扑而在他那颗功率MOSFET的SPICE模型卡上——阈值电压随手填了典型值结电容只留了默认沟道长度调制系数干脆没写。这件事挺典型MOSFET工作原理在SPICE中的参数设置这件事很多人以为是把数据手册上的数字抄进.model语句就行实际上每一个参数背后都对应着半导体物理里的一个具体机制填错一个仿真的工作点可能就整体偏移。这篇内容想解决的问题很明确让你搞清楚MOSFET从物理结构到SPICE参数之间的映射关系知道哪些参数必须自己算、哪些可以从手册反推、哪些填默认值也不会出大事。适合已经会用SPICE跑基本DC/AC扫描但一遇到仿真和实测对不上就不知道从哪下手的人也适合刚接触器件建模、对着一堆模型参数发懵的在校同学。下面这些内容大部分来自我自己做电路仿真和模型提取时踩过的坑少部分是同行交流时学到的经验原理部分我会尽量用生活化的类比讲清楚实操部分给出可以直接抄改的网表片段和计算过程。1. 模型层级选错参数调得再细也是白搭动手填参数之前有一件事必须先确定你用的是哪一级模型。SPICE里的MOSFET模型分很多层从最古老的Level 1Shichman-Hodges到后来的Level 3、BSIM3、BSIM4再到更新的BSIM-CMG这类多栅模型它们描述的是同一颗器件在不同精度下的近似。层级选错了后面所有参数调整都是在错误的框架里做微调越调越偏。1.1 从一次参数都对、波形全错的排查说起那位朋友的原始需求其实很简单估算一下同步整流管的导通损耗和开关损耗。他用的是一张从网上找来的Level 1模型卡参数看上去挺全VTO、KP、LAMBDA都有。问题出在Level 1的沟道电流方程只包含强反型区的平方律关系亚阈值区基本没有像样的描述而轻载时同步整流管恰恰有相当一部分时间工作在低电流、接近亚阈值的状态。Level 1会把这部分电流算得极小或者干脆截断导通损耗自然就对不上。我后来让他换成BSIM4的模型卡同样的电路、同样的激励轻载效率的偏差从百分之几十缩到了百分之几。这个例子说明一个道理模型的精度不是靠参数多而是靠方程形式能不能覆盖你的工作区间。开关电源关心的是大信号开关过程数字电路关心的是延迟和功耗射频电路关心的是小信号寄生模拟放大器关心的是输出电阻和匹配每一种场景对模型层级的要求完全不同。我自己的经验分界线大概是这样的如果只是教学演示、验证一个电路拓扑的基本行为Level 1足够它跑得快、收敛好、参数少出问题也容易定位如果是做运放、基准源、比较器这类精度敏感的模拟设计至少要上BSIM3或BSIM4因为你需要亚阈值斜率、DIBL、迁移率退化这些二阶效应如果是功率器件、高频开关场景还得额外关注结电容和封装寄生这时候光靠模型卡不够往往要在网表里手动补上封装电感和键合线电阻。1.2 Level 1、Level 3 与 BSIM4 的能力边界对照把常用层级的差异列成表遇到选型犹豫的时候直接对照着看比翻手册快得多。对比项Level 1Level 3BSIM4核心方程平方律强反型半经验引入迁移率退化和DIBL雏形统一电荷模型覆盖亚阈值到强反型亚阈值描述无或极粗糙部分完整可调亚阈值摆幅沟道长度调制单一LAMBDA可用LAMBDA精度一般多参数区分DIBL和CLM电容模型固定集中电容改进的Meyer/电荷模型分段的电荷守恒模型参数数量十几个三十个左右上百个典型用途教学、拓扑验证、快速估算中等精度模拟实际流片前的电路设计主要坑点亚阈值区失效、输出电阻偏差大参数间强耦合难单独调参数太多默认值可能不适合你的工艺看这张表要注意一点参数数量多不等于必须全部填。BSIM4有上百个参数但真正对某个电路性能起决定作用的可能只有十几个剩下的用默认值通常不会引入明显误差。新手最容易犯的错是把所有参数都当成必须精确填写的结果在无关紧要的参数上耗费大量时间还引入了错误的精确感。1.3 参数的三层结构工艺层、几何层、模型层我习惯把SPICE里的MOSFET参数分成三层来理解这个分类方式对排查问题特别有用。第一层是工艺层参数描述的是制造工艺本身比如氧化层厚度TOX、衬底掺杂NSUB、多晶硅栅类型TPG。这类参数在同一工艺下是共享的一颗芯片上所有同类型器件都一样通常由工艺厂提供的模型库给出个人用户很难也无需自己去测。第二层是几何层参数描述具体器件的尺寸比如沟道长度L、宽度W、源漏区面积AD/AS、周长PD/PS。这些由你在网表里直接指定或者通过.model卡里的默认值配合实例参数覆盖。这一层是最容易出错的地方因为很多教程里只写M1 d g s b NCH W10u L1u其余参数全走默认而默认的面积和周长是0导致结电容被完全忽略。第三层是模型层参数也就是那些描述电学特性的系数比如VTO、KP、GAMMA、LAMBDA、U0、VSAT。它们有的可以从物理量推出来有的只能靠测量数据拟合。这一层的设置质量直接决定了仿真结果的可信度。把这三层分清楚之后遇到仿真结果不对的时候就可以按顺序排查先确认几何参数有没有漏填再确认工艺参数是不是来自正确的模型库最后才去怀疑模型层参数。这个顺序能帮你省掉大量无谓的尝试。2. 阈值电压不是填一个数就完事VTO、GAMMA、PHI 的相互咬合阈值电压大概是所有人接触SPICE时第一个填的参数也是最容易被当成独立数字随便填的参数。实际上VTO、GAMMA、PHI这三个参数在物理上是绑定在一起的它们共同决定了器件的开启行为和体效应强度。只改其中一个而不动另外两个很容易得到一个能跑但物理上不可能存在的器件。2.1 阈值电压公式拆开看标准的阈值电压表达式长这样Vth VFB 2φF γ·√(2φF)其中VFB是平带电压φF是费米势γ是体效应系数。在SPICE的Level 1模型里PHI对应的是2φFGAMMA对应γVTO则是用户在零衬偏条件下直接给定的阈值电压。也就是说VTO实际上是上面那个式子的计算结果而不是一个独立变量。这里就出现了一个矛盾既然VTO是算出来的为什么模型卡里还要单独填原因是SPICE的Level 1实现里VTO被当作输入量GAMMA和PHI用来计算衬偏带来的增量即Vth(Vsb) VTO GAMMA·(√(PHI Vsb) − √PHI)换句话说VTO负责给出零衬偏时的基准值GAMMA和PHI负责描述衬偏调制。这三个数如果填得不自洽会出现什么后果举个例子假设你从手册上查到某器件的VTO是0.7VPHI随手填了0.6VGAMMA填了1.0 V^0.5。当Vsb升到2V时按公式算出来的阈值电压增量是1.0×(√2.6 − √0.6) ≈ 1.0×0.838 0.838V阈值电压变成1.54V。这个值可能远大于实际器件的表现导致体效应被严重高估源极跟随器的输出摆幅会被算小一大截。2.2 从TOX到KP迁移率与氧化层电容的手算KP有时写作KP或Kp是Level 1里的跨导参数单位是A/V²。它的定义是KP μ0 · Cox μ0 · εox / tox其中μ0是低场迁移率Cox是单位面积栅氧化层电容。这个式子很值得亲手算一遍因为算过之后你对量级就有了感觉再看到明显不合理的KP值能立刻反应过来。取εox 3.45×10⁻¹¹ F/m二氧化硅的介电常数tox 20nm 2×10⁻⁸ m则Cox 3.45×10⁻¹¹ / 2×10⁻⁸ 1.725×10⁻³ F/m²换算成常用单位1 F/m² 10⁻¹² F/μm²所以Cox ≈ 1.725 fF/μm²。再取μ0 600 cm²/(V·s) 0.06 m²/(V·s)得到KP 0.06 × 1.725×10⁻³ ≈ 1.04×10⁻⁴ A/V² 104 μA/V²这个量级对于20nm氧化层的工艺是合理的。如果你看到有人给一个0.18μm工艺的器件填KP 500 μA/V²那对应的氧化层厚度只有4nm左右除非是低压薄栅氧器件否则多半是抄错了行。养成手算一遍KP的习惯能帮你过滤掉一大半从网上抄来的错误模型卡。提示不同SPICE仿真器对KP的单位处理略有差异有的按A/V²有的按μA/V²乘以1e-6。填之前先看一眼模型卡里其他参数的量级别让单位错误伪装成模型不准。2.3 GAMMA与PHI体效应参数为什么必须成对调GAMMA和PHI的关系可以通过一个反推过程来理解。体效应系数由下式给出γ √(2q·εsi·NA) / Cox其中q是电子电荷εsi是硅的介电常数NA是衬底掺杂浓度。而PHI 2φF 2(kT/q)·ln(NA/ni)。可以看到两个式子都只依赖NA和Cox。给定Cox之后只要确定了NAGAMMA和PHI就同时确定了它们不是两个自由参数。我一般这样操作先根据工艺信息确定NA的量级算出PHI再回算GAMMA最后用VTO的表达式检查一下三个数是否自洽。举个例子取NA 1.8×10¹⁶ cm⁻³室温下ni ≈ 1.5×10¹⁰ cm⁻³φF 0.026 × ln(1.8×10¹⁶ / 1.5×10¹⁰) ≈ 0.026 × 13.99 ≈ 0.364 VPHI 2φF ≈ 0.728 V再算GAMMA代入εsi 1.04×10⁻¹⁰ F/mNA换算成1.8×10²² m⁻³γ √(2 × 1.6×10⁻¹⁹ × 1.04×10⁻¹⁰ × 1.8×10²²) / 1.725×10⁻³ √(5.99×10⁻⁷) / 1.725×10⁻³ ≈ 7.74×10⁻⁴ / 1.725×10⁻³ ≈ 0.449 V^0.5这就得到了一组自洽的PHI ≈ 0.73V、GAMMA ≈ 0.45 V^0.5。再回头看VTO如果平带电压VFB大约是−0.36V对应n多晶硅栅在p型衬底上的典型功函数差那么VTO −0.36 0.73 0.45×√0.73 ≈ −0.36 0.73 0.385 ≈ 0.755V。这个值和常见的0.7V左右阈值电压非常接近说明整组参数是合理的。下面这张Level 1模型卡就是按上面这套计算整理的可以直接拿去改* 手工自洽的 NMOS Level-1 模型卡示例值非真实工艺 .model NCH_L1 NMOS (LEVEL1 VTO0.72 GAMMA0.45 PHI0.70 KP110u LAMBDA0.02 TOX20n NSUB1.8e16 RD20 RS20 CGSO2.4e-10 CGDO2.4e-10 CGBO1.0e-10 CJ2.0e-4 MJ0.5 CJSW3.5e-10 MJSW0.33 PB0.85)填完之后建议做一次自检把VTO、GAMMA、PHI代入阈值电压公式看算出来的VFB是否落在一个物理上说得通的范围内对于n多晶硅栅/p型衬底通常在−0.3V到−0.5V之间。如果算出来VFB是正的或者大得离谱说明三个参数里至少有一个抄错了。3. 输出电阻与亚阈值区模拟电路最容易被忽略的两组参数如果说阈值电压决定器件开不开那么沟道长度调制和亚阈值参数决定的是器件开得好不好。这两组参数在数字电路里影响不大但在模拟电路里几乎是决定性的尤其是做电流镜、增益级、基准源的时候。3.1 LAMBDA的取值逻辑与输出电阻估算Level 1模型里饱和区的漏极电流写成Id (KP/2)·(W/L)·(Vgs − Vth)²·(1 λ·Vds)其中λ就是沟道长度调制系数单位是V⁻¹。它的物理含义是随着Vds增加漏端的耗尽区向沟道内扩展有效沟道长度变短电流随之上升。λ越大输出电阻越小。输出电阻可以近似写成ro ≈ 1 / (λ·Id)这个近似在λ·Vds远小于1的时候比较准。举个具体例子取λ 0.02 V⁻¹Id 335μA则ro ≈ 1/(0.02 × 3.35×10⁻⁴) ≈ 149 kΩ。如果这个器件用作电流镜的输出管那么它的有限输出电阻会在镜像电流上引入误差误差量级大致是ΔI/I ≈ Vds变化量 × λ。λ的取值和沟道长度强相关。短沟道器件λ大长沟道器件λ小。粗略的经验是L在1μm量级时λ约0.01~0.03 V⁻¹L降到0.18μm时λ可能到0.1 V⁻¹以上。这就是为什么模拟设计里经常用长沟道器件做电流源——不是为了匹配而是为了把λ压下去换来更高的输出电阻。注意LAMBDA在Level 1里是一个常数但真实器件的输出电阻随Vds变化并不是线性的。做高增益放大器时Level 1算出来的增益往往会偏乐观这时候要么换BSIM要么手动在网表里串一个小电阻来模拟有限的输出电阻。3.2 亚阈值区NSS、NSUB与亚阈值摆幅亚阈值区指的是Vgs略低于Vth的那一段此时沟道处于弱反型电流随Vgs指数变化。这一段的斜率用亚阈值摆幅S来描述单位是mV/decade含义是电流每上升十倍需要的栅压增量。室温下的理论极限是约60 mV/dec实际器件通常在70~90 mV/dec之间。S的表达式是S (kT/q)·ln10·(1 Cd/Cox)其中Cd是耗尽层电容。可以看到Cd/Cox越大摆幅越差。而Cd正比于√(NSUB)所以衬底掺杂越高亚阈值特性越差。这解释了为什么低功耗工艺要往低掺杂、全耗尽的方向走。在Level 1里亚阈值区基本没有像样的描述电流会被强行拉到接近零。如果非要用Level 1做低功耗电路的粗略估算可以在模型卡里加上NSS表面态密度和调整PHI但效果有限。更靠谱的做法是直接用BSIM3/BSIM4用VTH0、K1、K2、DSUB、ETA0这一组参数来描述短沟道和亚阈值行为。我做过一个对比同一个反相器链Level 1仿真出来的静态功耗比BSIM4低了一个数量级还多原因就是Level 1几乎不算亚阈值漏电。如果你的电路里有大量长时间处于关闭状态的晶体管用Level 1评估功耗会得出严重乐观的结论。3.3 BSIM4中的等效参数映射表从Level 1迁移到BSIM4时最让人头疼的是名字全变了。我把常用的对应关系整理成表方便对照迁移。Level 1 参数BSIM4 等效参数说明VTOVTH0零衬偏阈值电压含义基本一致KPU0BSIM4用迁移率U0配合TOXE自行计算不直接给KPGAMMAK1一阶体效应系数但BSIM4还引入K2描述非线性PHIPHIN表面势相关默认通常可用LAMBDA无直接对应由PCLM、PDIBLC1/2等一组参数共同描述TOXTOXE电学氧化层厚度注意区分物理厚度NSUB无直接对应通过K1、K2间接体现CGSO/CGDOCGSO/CGDO名称相同单位一致CJ/MJCJ/MJ名称相同迁移时有一个原则不要试图把Level 1的每个参数都找到BSIM4的对应项因为两者的方程形式不同强行对应反而会引入错误。正确的做法是从BSIM4模型库拿一张完整的模型卡只修改尺寸相关的实例参数工艺相关的部分交给模型库。4. 寄生电容与电荷模型动态损耗算不准的根子前面三节讲的都是直流特性而实际电路里大量的麻烦来自动态过程。开关损耗、延迟、振铃、串扰这些全都和寄生电容有关。我在开头提到的那个Buck电路案例根源就在这一块。4.1 CGSO与CGDO交叠电容的物理来源CGSO和CGDO分别是栅源、栅漏交叠电容单位是F/m注意是单位沟道宽度的电容不是总电容。SPICE在计算总电容时会自动乘以沟道宽度W。交叠电容的来源是源漏区的横向扩散。在制造过程中源漏掺杂会向栅极下方扩散一小段距离Ld这段区域形成栅与源漏之间的平板电容Cov Cox · Ld · W所以CGSO Cox · Ld单位正好是F/m。取Cox 1.725×10⁻³ F/m²Ld 0.14μm 1.4×10⁻⁷ m得到CGSO ≈ 2.4×10⁻¹⁰ F/m。这和我上面模型卡里给的值一致。对于W 10μm的器件栅源总交叠电容是2.4×10⁻¹⁰ × 10×10⁻⁶ 2.4×10⁻¹⁵ F 2.4 fF。这个量级听起来很小但在高频开关电路里栅极驱动的功耗正比于Cg·V²·f。假设Vgs驱动摆幅5V、开关频率500kHz仅这一个交叠电容带来的驱动损耗就是2.4fF × 25 × 5×10⁵ ≈ 30nW看起来微不足道。但功率MOSFET的W可能是几万微米这个数字会放大几千倍变成几十毫瓦就不可忽略了。提示很多新手写网表时只写W和L不写AD、AS、PD、PS。SPICE默认这些是0导致源漏结电容被完全忽略。正确的做法是至少按版图估算面积和周长哪怕估得粗糙也比完全不填强。4.2 结电容CJ、MJ、CJSW、MJSW、PB 五个参数怎么配合源漏结电容由两部分组成底面电容和侧壁电容。底面部分用CJ单位F/m²和MJ描述侧壁部分用CJSW单位F/m和MJSW描述PB是结的内建电势。结电容是偏压相关的表达式近似为Cj(V) CJ / (1 V/PB)^MJMJ的典型值在0.3~0.5之间对应突变结到线性缓变结的过渡。MJ越小电容随反偏电压下降得越快。如果MJ填成0电容就变成与偏压无关的常数这在电源电路的软开关分析里会带来明显误差。PB的取值一般按0.7~0.9V填它和衬底掺杂有关。有一个容易忽略的点PB必须大于电路里可能出现的最大正向偏置否则仿真器在做电容计算时会遇到除零或者负数开方直接报收敛错误。我遇到过有人在肖特基或者正向偏置的结上把PB填成0.6V结果一加正向电压就崩。下面这段网表展示了实例参数和模型参数是怎么配合的* 实例参数覆盖模型默认值 M1 d g s b NCH_L1 W10u L1u AD50p AS50p PD30u PS30u * 对应的模型卡片段 .model NCH_L1 NMOS (LEVEL1 ... CJ2.0e-4 MJ0.5 PB0.85 CJSW3.5e-10 MJSW0.33)按上面这组数算一下源极结电容AD 50μm²底面电容约2.0×10⁻⁴ F/m² × 50×10⁻¹² m² 1.0×10⁻¹⁴ F 10 fFPD 30μm侧壁电容约3.5×10⁻¹⁰ F/m × 30×10⁻⁶ m 1.05×10⁻¹⁴ F ≈ 10.5 fF。两部分加起来约20 fF。可以看到侧壁电容和底面电容在这么小的面积下已经处于同一量级只算底面会低估一半。4.3 开关损耗手算与仿真结果对照拿一个具体的开关过程练手能帮你建立起对电容参数敏感度的直觉。假设一个N沟道MOSFET做低边开关漏极通过一个电感接电源Vdd 12V栅极由5V驱动开关频率100kHz输出电流1A。开通损耗的粗略估算每次开通时漏极电压从12V降到接近0电流从0升到1A交叠时间设为tcross。如果栅极驱动电流Ig 100mA栅极总电荷Qg 10nC那么开通时间约100ns交叠时间取一半即50ns。单次开通损耗约0.5 × 12V × 1A × 50ns 300nJ乘上频率得到30mW。关断过程类似总开关损耗约60mW。这个估算里的Qg直接由CGSO、CGDO和沟道电荷决定。如果模型卡里把CGSO/CGDO填成0仿真器算出来的Qg会偏小开关损耗被低估效率曲线看起来漂亮得不像话。我第一次做这类仿真时就吃过这个亏仿真效率95%实测只有88%差了整整7个百分点排查了三天才发现是交叠电容没填。5. 温度、噪声、失配把仿真拉到真实世界室温下的仿真结果再漂亮也只是实验室里理想条件的一个切面。真实电路要在−40℃到125℃之间工作要面对器件失配要在噪声背景下保持信噪比。这一节讲的三组参数是把仿真从理想世界拉回真实世界的关键。5.1 温度参数TCV、BEX 与 TNOM 的配合SPICE里所有模型参数都有一个参考温度TNOM默认通常是27℃。当仿真温度TEMP和TNOM不一致时仿真器会按模型里的温度系数对参数进行修正。Level 1里常用的温度参数有TCV阈值电压温度系数单位V/K和BEX迁移率温度指数。阈值电压随温度升高而下降典型值约−2mV/K。迁移率随温度升高也下降关系是μ ∝ T^(-BEX)BEX典型值在1.5~2.0之间。这两者叠加的结果是温度升高时阈值电压下降会让电流增大但迁移率下降会让电流减小净效果取决于工作点。在强反型区迁移率的影响通常占主导所以Id随温度升高而下降在亚阈值区阈值电压的影响占主导漏电随温度升高而指数上升。如果模型卡里完全不填温度参数仿真器会按0处理也就是温度变化时参数纹丝不动。这在做宽温域设计时会带来灾难性后果。我见过一个基准源设计仿真在27℃和125℃下输出几乎一样流片后在高温下漂了5%原因就是模型卡里TCV和BEX全是默认值。BSIM4的温度参数更细有TCJ结电容温度系数、XTIS源漏电阻温度系数等。做功率电路仿真时这几个参数对导通损耗的温度特性影响很大建议至少把TNOM设成和实测条件一致再逐步补齐其他温度参数。5.2 噪声参数KF、AF、FC 与实际噪声水平的对应SPICE里的闪烁噪声用KF、AF、FC三个参数描述1/f噪声的功率谱密度近似为Sid KF · Id^AF / (f · Cox · L²)其中AF通常取1左右KF是拟合参数量级和工艺、器件尺寸强相关。另一个常用参数是FC表示闪烁噪声开始滚降的拐点频率占f的比例。这三个参数很难从物理量直接推一般靠实测噪声数据拟合。对于没有实测数据的场合我的做法是先用模型库里的默认值然后在仿真里加一个噪声分析.noise看看输出噪声的量级是否合理。如果算出来的输入参考噪声是几nV/√Hz量级正常如果算出几十μV/√Hz或者几pV/√Hz那基本可以确定参数填错了。热噪声部分不用手动填SPICE会根据RD、RS和沟道电阻自动计算。但要注意RD/RS本身对噪声有贡献如果为了收敛把这两个值填得很大噪声结果会被高估。5.3 失配与蒙特卡洛Pelgrom模型的落地失配是模拟电路设计里绕不开的话题。两个标称相同的器件实际参数会有微小差异这个差异服从统计分布。经典的Pelgrom模型给出σ(ΔVth) AVT / √(W·L)其中AVT是工艺相关的失配系数单位通常是mV·μm。取AVT 5 mV·μmW 10μmL 1μm则σ(ΔVth) 5/√10 ≈ 1.58mV。这个式子说明一个很实用的结论要改善匹配增加面积比增加精度更有效。W·L翻四倍σ才减半。这也是为什么精密匹配对管往往画得很大。在SPICE里做蒙特卡洛分析不同仿真器的语法差别较大。通用的思路是给关键参数加一个高斯扰动比如* 蒙特卡洛失配示例语法示意按所用仿真器调整 .param avt5m .param wl_area10u*1u .param dvth_1agauss(0, avt/sqrt(wl_area), 3) .model NCH_MC NMOS (LEVEL1 VTO0.72dvth_1 ...)跑100~200次蒙特卡洛统计输出量的分布就能得到良率相关的信息。这里要注意失配系数AVT一定要和工艺对应不能拿一个先进工艺的5mV·μm用到另一个工艺上否则算出来的良率完全没有参考价值。6. 从实测数据反推参数一套可复现的流程前面讲的都是按物理算参数但现实里更常见的情况是手上只有一颗器件的数据手册或者一批实测曲线需要反推出一个能用的SPICE模型。这个过程叫参数提取有专门的工具和方法但我这里给一套手工可做的简化流程适合中小规模电路和快速验证。6.1 提取顺序先直流后交流先强反型后亚阈值参数之间存在耦合所以提取必须讲顺序。我习惯按下面的顺序走第一步从转移特性曲线Id-Vgs固定Vds的线性区提取阈值电压。方法是在最大跨导点做切线切线与Vgs轴的交点近似为Vth。这个值直接填给VTO。第二步从同一曲线的强反型段提取KP。在Vds固定且足够大的条件下饱和区电流满足Id (KP/2)(W/L)(Vgs−Vth)²取两个点列方程就能解出KP。更简单的做法是对√Id和Vgs做线性拟合斜率的平方乘以2L/(W)就是KP。第三步从输出特性曲线Id-Vds固定Vgs的饱和段提取λ。取Vds1和Vds2两点λ ≈ (Id2−Id1)/(Id1·Vds2−Id2·Vds1)的近似形式实践中直接用曲线斜率除以Id即可。第四步从亚阈值段的斜率提取衬底掺杂相关的参数反推NSUB再算出GAMMA和PHI。第五步从电容-电压特性或者高频S参数提取寄生电容填CGSO、CGDO、CJ等。这个顺序的核心逻辑是先用最可靠的强反型数据把主要参数定下来再用次要数据修正。顺序颠倒的话亚阈值参数提取的误差会污染强反型区的拟合。6.2 一个完整算例从三条曲线到一张模型卡假设手上有一批实测数据这里用虚构数值演示流程。器件W/L 100μm/1μm氧化层厚度20nm室温测量。从转移特性得到Vth ≈ 0.68V最大跨导点处的斜率换算得到KP ≈ 115 μA/V²。从输出特性在Vgs 2V、Id 1mA附近的斜率算出输出电阻约50kΩ对应λ ≈ 1/(50k × 1m) 0.02 V⁻¹。从亚阈值斜率读出S ≈ 85 mV/dec反推Cd/Cox ≈ 85/60 − 1 ≈ 0.42再结合Cox算出NSUB约2×10¹⁶ cm⁻³。按第2节的方法由NSUB算得PHI ≈ 0.75VGAMMA ≈ 0.47 V^0.5。检查自洽性VFB VTO − PHI − GAMMA·√PHI 0.68 − 0.75 − 0.47×0.866 ≈ 0.68 − 0.75 − 0.41 −0.48V。这个值对应n多晶硅栅物理上说得通。整理成模型卡* 从实测数据反推的 NMOS 模型示例值 .model NCH_EXT NMOS (LEVEL1 VTO0.68 GAMMA0.47 PHI0.75 KP115u LAMBDA0.02 TOX20n NSUB2.0e16 RD15 RS15 CGSO2.4e-10 CGDO2.4e-10 CGBO1.2e-10 CJ2.1e-4 MJ0.48 CJSW3.6e-10 MJSW0.32 PB0.86)6.3 验证清单模型卡能用之前必须跑的几项检查模型卡填完之后别急着拿去跑正式仿真。先花十分钟做几项基本检查能挡住大部分低级错误。检查项操作方法合格标准阈值电压自洽用VTO、GAMMA、PHI反算VFBVFB在−0.3V到−0.6V之间跨导量级手算KP μ0·Cox并与填入值对比偏差在20%以内输出电阻跑单管输出特性读饱和区斜率ro与手算1/(λId)同量级亚阈值行为扫描Vgs从0到Vth看对数坐标下的斜率斜率在60~100 mV/dec电容总量跑AC分析提取Ciss、Coss与手册值偏差在30%以内温度特性分别在−40℃、27℃、125℃跑工作点趋势正确无反常跳变收敛性跑瞬态仿真观察是否有迭代失败无time step too small报错这张表里我最看重阈值电压自洽和亚阈值行为两项。前者能发现抄错行的问题后者能发现模型层级选错的问题。这两项过了剩下的通常都是微调。7. 常见问题与排查速查表仿真跑不通或者结果离谱的时候最忌讳的是漫无目的地改参数。下面按症状分类整理了一些我实际遇到过的问题和对应的排查路径。7.1 收敛类问题从time step too small说起瞬态仿真报time step too small是最常见的收敛错误原因通常是某个节点的电压或电流变化过于剧烈。在MOSFET参数层面常见的诱因有三个。第一个是RD和RS填了0。理想化的零电阻会让源漏节点和沟道节点直接短接形成代数环仿真器解不出来。哪怕填一个很小的值比如1mΩ也能显著改善收敛性。第二个是结电容参数不自洽尤其是PB填得过小导致正向偏置时电容表达式出现负数开方。检查方法是在仿真前先扫一遍所有PN结可能承受的最大正偏电压确保PB大于这个值。第三个是模型层级混用。比如一部分器件用Level 1另一部分用BSIM4两者在同一个电路里相互作用时工作点可能来回震荡。这种情况要么统一层级要么给不同层级之间加缓冲级。还有一个偏门但很有效的手段在.options里适当放宽RELTOL和ABSTOL或者给关键节点加初值.ic。这属于治标但能帮你快速判断问题是数值性的还是模型性的。7.2 结果类异常仿真太理想也是病比收敛失败更隐蔽的是结果异常。仿真能跑通波形也漂亮但和实测差很远。这类问题往往更费时间因为没有明确的报错信息。我总结了几种典型症状和对应的病因。效率仿真偏高多半是交叠电容或者结电容没填全增益仿真偏高多半是λ填小了或者根本没填功耗仿真偏低多半是亚阈值漏电没算进去延迟仿真偏小多半是寄生电容和电阻被忽略温度漂移仿真不出来多半是温度参数没填。还有一种情况值得单独说仿真结果对参数极其敏感。正常情况下KP变化10%应该带来电流10%左右的变化如果你发现KP改1%结果就翻倍那说明电路工作在某个临界点上比如刚好在阈值附近、或者刚好在饱和区和线性区的边界。这种工作点本身就是不稳健的设计与其调参数不如先改电路。7.3 参数问题速查表症状优先怀疑的参数排查动作器件不开启VTO偏高、PHI偏大反算VFB检查自洽性开启后电流偏小KP偏小、W/L填反手算KP检查实例参数电流随Vds上升太快LAMBDA偏大用输出曲线斜率反算电流随Vds几乎不变LAMBDA0或太小补填合理值短沟道取0.05以上体效应过强GAMMA偏大、PHI偏小按NSUB重算GAMMA和PHI亚阈值电流为零用了Level 1换Level 3或BSIM开关损耗偏小CGSO/CGDO为0按交叠长度计算填入结电容随电压不变MJ0填0.3~0.5高温下参数不变未填TCV/BEX补温度系数正向偏置时报错PB过小PB取0.8以上匹配仿真无分布未加蒙特卡洛扰动用agauss给VTO加扰动这张表可以贴在显示器旁边遇到问题先扫一眼比从头推理快得多。但要提醒一句表格给的是排查起点不是结论。同一个症状可能有多种原因最终还是要回到物理机理上去验证。最后分享一个我自己用了很多年的习惯。每次建一张新模型卡我会先搭一个只有单管的测试台跑四条曲线Id-Vgs线性坐标和半对数坐标各一条、Id-Vds、C-V、以及一个简单的开关瞬态。这四条曲线画出来和手册或者实测数据放在一起对比一眼就能看出哪里不对。比起在复杂电路里大海捞针这个十分钟的单管测试台能省下后面几个小时甚至几天的排查时间。参数设置这件事本质上是在用几个数字去逼近一个真实的物理器件逼近得好不好单管测试台最诚实。
阅读完成 · 觉得有帮助?
咨询建站