Sentaurus混合模式仿真入门:从反相器跑通TCAD电路协同设计

发布时间:2026/9/9 9:38:52
Sentaurus混合模式仿真入门:从反相器跑通TCAD电路协同设计 Sentaurus这系列教程写到第十三篇前面十篇基本都在和单个器件较劲PN结怎么搭、MOSFET怎么建、FinFET怎么提网格结构画好了、物理模型选好了最后在svisual里看到IV曲线往目标值上靠心里那块石头才算落地。但说实话光做单器件仿真总有种“只看零件、没看整机”的感觉——你验证了一个晶体管开关特性很好可两个管子串成反相器能不能正常工作输入拉高时输出能否干净地拉到地这问题单器件仿真回答不了。从这篇开始我们进入混合模式Mixed-Mode仿真把TCAD器件放进电路里跑用反相器这个最小数字单元把全流程走通。混合模式仿真的核心价值在于关键器件用全物理模型求解漂移扩散方程、泊松方程、产生复合模型都保留外围电路用集总元件或者SPICE紧凑模型描述两边联立求解。这样既有TCAD的物理精度又能看到电路层面的行为。适合做器件-电路协同设计的工程师也适合研究单粒子翻转、ESD钳位、功率器件驱动这类“器件行为直接影响系统行为”的问题。这篇我按实际做项目的顺序来写为什么要用混合模式、物理模型和数值参数怎么准备、反相器静态和瞬态仿真的完整命令、最后是调参排坑的经验。1. 混合模式仿真的定位与设计思路1.1 为什么单器件仿真做完就该上手混合模式单纯做器件仿真你的交付物通常是一条IV曲线、一组电容电压曲线或者一个击穿电压数值。这些东西在自己专业领域里没问题但一旦到了电路设计人员手里他们问的往往是这个管子接上负载电阻之后输出能不能达到预期摆幅栅极电压变化10mV漏极电流变化多少对下一级电路有什么影响这里有个关键认知SPICE里的MOSFET模型是解析公式和拟合参数的组合它快但外推能力有限。工艺缩到几十纳米以下短沟道效应、量子修正、自热效应会让紧凑模型在某些偏置区间明显偏离实际。TCAD混合模式的价值在于把最关键的一两个器件用数值方法精确求解直接在器件物理层面还原这些效应然后通过电路方程把器件行为和外围电路耦合起来。不过别误会混合模式不是用来替代SPICE做大规模电路仿真的。每个TCAD器件都要解三维或二维偏微分方程一个反相器两个晶体管跑一次瞬态可能就要几分钟到几十分钟。所以选型逻辑很清晰只有那些“器件级物理行为会显著影响电路行为”的场景才值得上混合模式。比如看反相器的噪声容限普通SPICE用BSIM模型也能算但如果你研究的是超低功耗器件亚阈值区的泄漏电流和温度特性非常规紧凑模型拟合不好这时候TCAD混合模式就派上用场了。1.2 用反相器跑通全流程是最快的上手路径反相器是数字电路的最小单元也是混合模式仿真最经典的切入案例。结构简单一个NMOS拉低一个PMOS拉高输入接两个栅极输出接两个漏极。但这个简单结构里包含了混合模式仿真的全部核心要素多个器件实例同时求解且分布在同一个命令文件里器件之间有电学连接输入节点共享、输出节点共享有直流电源和信号源需要同时处理静态工作点DC扫描和动态行为瞬态扫描。用反相器跑通一遍后面做SRAM单元、环形振荡器、ESD保护链路就只是在这个框架上扩展。我在带新人时基本要求就是先独立把反相器的电压传输特性VTC和瞬态翻转跑出来VTC的转折点要落在Vdd/2附近输出波形的上升沿下降沿肉眼可见。这套流程通了混合模式仿真就算入门了。1.3 混合模式会动用到TCAD的哪些模块先梳理一下这涉及的工具链。结构方面NMOS和PMOS可以用SDE脚本生成也可以用工艺仿真SProcess把掺杂历史保留下来器件结构文件.tdr准备好之后核心工作在sdevice命令文件里结果可视化用svisual。混合模式仿真主要是在sdevice的Device块和System块之间做文章。和单纯器件仿真最大的区别在于普通仿真只有一个Device块电极上直接加压、扫描、看电流混合模式里每个器件有自己的Device块但器件电极不直接接电压源而是通过System块里的“电路”连接起来电压源、电流源、电阻电容这些集总元件也在System块里定义。求解序列也要放在System块的Solve里由它统一协调各个器件的偏置和电路方程。2. 核心细节解析物理模型与数值参数准备2.1 混合模式下的物理模型取舍原则物理模型的选择直接决定仿真的是“纸片器件”还是“真实器件”。但混合模式仿真里模型不能乱堆——每个额外启用的模型都是求解器的工作量而且模型之间可能相互干扰导致收敛困难。我的经验是先按工作电压范围分档再按关注的物理效应分档。对于常规低压CMOS反相器工作电压1V左右四个模型是底线迁移率随掺杂浓度变化DopingDependence、带隙变窄效应BandGapNarrowing、SRH复合以及载流子速度饱和。这四样决定了电流能力、阈值电压和泄漏电流的基本面貌。如果仿真是为了看高压器件或者ESD场景碰撞电离Avalanche必须打开而且要配合好网格密度——碰撞电离率在结附近呈指数级变化网格太粗会完全看不到雪崩现象而且极容易不收敛。如果是研究负偏压温度不稳定性NBTI或热载流子注入HCI的退化行为还要额外加对应的界面态模型这属于另外一个更深的话题先不展开。以下是低压CMOS反相器常用的物理模型设置示例Physics { Mobility ( DopingDependence HighFieldSaturation ) EffectiveIntrinsicDensity ( BandGapNarrowing ) Recombination ( SRH ( DopingDependence ) ) EffectiveIntrinsicDensity( BandGapNarrowing ) }2.2 数值求解参数收敛比速度重要混合模式仿真最常见的梦魇就是不收敛。多器件联立求解加上电路方程整个系统的非线性程度比单器件高出不少所以Math块里的求解参数非常关键。核心参数逐个说Iterations单步内最大迭代次数。默认值有时候偏小混合模式建议放宽到20~30。Extrapolate允许上一步解作为下一步初始猜测。这个必须开尤其在DC扫描时能显著减少迭代次数。RelErrControl和Digits控制收敛精度。Digits默认在4~5左右一般不需要调太高5已经够用。Method如果内存充足用Blocked/ILSU这类直接求解器更稳内存紧张时用迭代法但收敛性会差一些。我在实际项目中通常这样写Math { Extrapolate RelErrControl Iterations 25 Digits 5 Method Blocked NumberOfThreads 4 }注意NumberOfThreads要根据机器实际核数来。多核并行在混合模式下提升很明显因为多个器件方程彼此耦合求解矩阵规模大多线程能省不少时间。2.3 电极初始条件与求解起始点混合模式的坑很多出在初始条件上。每个Device块里的Electrode定义不能只写节点名还要给一个合理的初值。这个初值会影响求解器找起始工作点的难易。比如NMOS的栅极初值给0VPMOS的栅极初值也要给0V但PMOS的源漏端是接Vdd的所以它的源端电极初值要给Vdd这样第一个求解点才是一个合理工作状态不会一开始就触发收敛问题。Device块里的Electrode初值设定的合理顺序是先把电源电压都设好Vdd、地再设信号源初值确保电路在初始时刻处于一个物理上可存在的状态。如果一个电路初始就有“两个电压源直接对顶”的矛盾算法很难收敛即使收敛得到的也是没有物理意义的解。3. 实操过程与核心环节实现3.1 反相器混合模式仿真的完整命令框架现在进入实操。假设我们已经有了两个器件结构文件NMOS和PMOS的网格文件。这两个结构可以用SDE脚本生成也可以来自工艺仿真后的结构。关键点两个器件的沟道长度、栅氧厚度、掺杂浓度要和目标工艺匹配否则后面所有电路仿真结果都没有意义。以下是一个反相器混合模式仿真的sdevice命令文件骨架我按实际项目中的写法整理Device NMOS { File { Grid nmos_msh.tdr Current nmos.plt } Electrode { { Name gate Voltage 0 } { Name drain Voltage 0 } { Name source Voltage 0 } { Name bulk Voltage 0 } } Physics { Mobility ( DopingDependence HighFieldSaturation ) EffectiveIntrinsicDensity ( BandGapNarrowing ) Recombination ( SRH ( DopingDependence ) ) } Plot { eDensity hDensity eCurrent hCurrent ElectricField Potential } } Device PMOS { File { Grid pmos_msh.tdr Current pmos.plt } Electrode { { Name gate Voltage 0 } { Name drain Voltage 0 } { Name source Voltage 1.0 } { Name bulk Voltage 1.0 } } Physics { Mobility ( DopingDependence HighFieldSaturation ) EffectiveIntrinsicDensity ( BandGapNarrowing ) Recombination ( SRH ( DopingDependence ) ) } Plot { eDensity hDensity eCurrent hCurrent ElectricField Potential } } System { NMOS n1 ( dout gin s0 b0 ) PMOS p1 ( dout gin svdd bvdd ) Vsource vdd ( vdd 0 ) { dc 1.0 } Vsource vin ( in 0 ) { dc 0.0 } Solve { * 反相器电压传输特性扫描 Quasistationary ( Goal { Model vin Parameter dc Voltage 1.0 } DoStep { } ) { Coupled { n1 p1 } } } }这里有几个细节容易踩坑。第一PMOS的源端电极初值必须给1.0V因为它的源端接的是Vdd如果初值给0求解器要从一个完全错误的初始状态开始迭代很可能会发散。第二System块里设备引用名称n1和p1是实例名不必和Device块名一致但端子顺序必须严格对应d、g、s、b。第三Quasistationary扫描的是vin这个电压源的dc属性从0V到1V这正好覆盖输入从低到高的完整范围。3.2 静态仿真结果解读与参数提取跑完Quasistationary扫描svisual里打开nmos.plt和pmos.plt再加上System层面的输出可以看到完整的VTC曲线。看什么数据首先看输出电压随输入电压的变化。理想反相器应该是输入0V时输出接近1V输入1V时输出接近0V中间有一段很陡的过渡区。实际器件由于亚阈值导电和漏电流的存在过渡区不会无限陡。用svisual把输入和输出电压画在同一张图上找到两条线交叉的点——这个点对应的电压就是反相器的开关阈值VM。一个设计良好的反相器VM应该在Vdd/2附近偏离太多说明NMOS和PMOS的驱动能力不匹配。然后是噪声容限。VTC曲线上单位增益点增益等于-1有两个分别对应VIL和VIH由此可以算出噪声容限NML VIL - VOLNMH VOH - VIH。TCAD混合模式的优势在这里体现出来了如果你发现噪声容限不够可以直接在TCAD里检查是哪个器件的哪条曲线拖了后腿——是PMOS的驱动太弱还是NMOS的亚阈值摆幅过大从物理机制上定位问题而不是像SPICE那样盲调模型参数。3.3 瞬态仿真观察反相器翻转行为静态传输特性只能说明反相器“能不能翻转”但实际数字电路关注的传播延迟、上升下降时间是动态指标必须做瞬态仿真。在System块的Solve里加一个Transient段System { * 器件定义部分不变 Solve { * 先建立直流工作点 Quasistationary ( Goal { Model vin Parameter dc Voltage 0.0 } DoStep { } ) { Coupled { n1 p1 } } * 输入从0跳到1观察输出翻转 Transient ( InitialTime 0 FinalTime 10e-9 InitialStep 1e-13 MaxStep 0.1e-9 ) { * 让vin在1ps内从0变到1V Goal { Model vin Parameter dc Voltage 1.0 } Coupled { n1 p1 } } } }这里需要强调时间步长的设置逻辑。InitialStep给到1e-13秒0.1ps量级是为了让求解器能捕捉到输入跳变瞬间器件内部的快速响应MaxStep给到0.1ns则是为了不让求解器在输出稳定后盲目大步长跳进导致错过一些慢速的物理效应比如自热。实际项目中我一般会先跑一遍看输出波形如果上升沿附近有明显的数值振荡就把MaxStep再缩小一个数量级。瞬态结果出来之后可以从输出波形上量传播延迟tPLH和tPHL即在输出上升到50% Vdd或下降到50% Vdd处对应的时间。如果这个延迟和预期偏差大不要急着调模型先在TCAD里看器件内部的栅电容和耗尽区宽度变化——很多时候是栅氧厚度或者掺杂分布引起的寄生电容偏大这在TCAD里是直接可见的在SPICE里只能通过拟合参数去猜。3.4 电阻负载和电容负载怎么挂上去反相器直接驱动下一级电路时负载效应很明显。混合模式仿真里挂负载非常方便不需要额外建器件直接在System块里加集总元件就行。最常见的做法是加一个输出负载电容模拟下一级栅极的输入电容System { NMOS n1 ( dout gin s0 b0 ) PMOS p1 ( dout gin svdd bvdd ) Vsource vdd ( vdd 0 ) { dc 1.0 } Vsource vin ( in 0 ) { dc 0.0 } Capacitor cload ( out 0 ) { capacitance 10e-15 } Solve { ... } }10fF的负载电容在纳秒尺度瞬态仿真里已经能明显影响翻转时间。这个数字不是随便拍的一个典型的最小尺寸反相器栅电容大约在1~2fF量级挂10fF就相当于驱动4~5个相同的门是一个比较实用的负载估算。还可以挂电阻负载做驱动能力测试比如挂一个1kΩ电阻到地看输出低电平时是否还能保持足够低的电压。这类仿真的物理意义很直接器件在带载情况下的输出电压摆幅往往比空载时差很多这个差异在SPICE里可能被紧凑模型自动修正掉但TCAD会如实告诉你器件的真实驱动能力。4. 常见问题与排查技巧实录4.1 电路不收敛的第一个排查点初始条件混合模式仿真里遇到不收敛大概有七成是初始条件没设对。最常见的错误就是PMOS源端初值没给到Vdd或者System块里的电压源初始值和Device块里的电极初值互相矛盾。排查顺序很固定先把所有电压源设成直流0跑一步确认器件方程能解出来然后逐个把电压源恢复每恢复一个就跑一遍看到底是哪一步开始发散。一个很实用的技巧在Device块里Electrode初值不要直接给最终工作电压先给一个中间值让求解器逐步逼近。比如Vdd是3.3V的场景PMOS源端初值可以先给1.65V求解器找到工作点后再切到3.3V。这种做法看起来多了一步但能避开很多“初值-目标差距过大导致Newton迭代跳飞”的问题。4.2 VTC曲线出现明显锯齿或跳变DC扫描时输出电压曲线不光滑出现锯齿状跳变这通常不是物理问题而是数值问题。最可能的原因是扫描步长太大了。Quasistationary里的DoStep默认步长控制有时候不够细分尤其在过渡区输出电压变化剧烈大步长会跨过关键转折区域。解决办法有两个方向一是用手动扫描点列表把过渡区附近的步长设小二是在Math块里降低MaxStep的约束让求解器自动适配。个人更推荐第一种因为你能清晰控制关键区域的采样密度。扫描点列表大概是下面这样Quasistationary ( Goal { Model vin Parameter dc Voltage 1.0 } DoStep { List 0.0 0.2 0.4 0.45 0.48 0.5 0.52 0.55 0.6 0.8 1.0 } ) { Coupled { n1 p1 } }在0.4V到0.6V之间加密采样点VTC曲线的过渡区就能被完整刻画出来。注意这也会增加仿真时间但反相器扫描这个体量对TCAD来说完全不是负担。4.3 瞬态波形上的数值振荡怎么压瞬态仿真波形出现高频振荡而且振幅随着时间衰减这是典型的数值振荡不是电路本身的振铃。现象是输入跳变后输出波形叠加了一层高频小振幅波动通常持续几十皮秒。出现这个问题的直接原因是MaxStep太大求解器在快速变化区域没有足够密的时间采样点。经验法则MaxStep要小于系统最小时间常数的十分之一。反相器翻转时有效时间常数大概是负载电容乘以输出电阻的乘积在fF和kΩ量级下大约是几十皮秒所以MaxStep给到0.1ns100ps已经够安全。如果振荡还在就再缩小到10ps。还有一种情况器件内部载流子分布更新速度跟不上电路节点电压变化这时候需要在Math块里增加迭代次数而不是单纯缩小步长。4.4 混合模式跑得太慢怎么提速每个TCAD器件都要解偏微分方程混合模式仿真比纯器件仿真慢是必然的。但有些慢是可以避免的。首先不要在一个电路里放太多TCAD器件。反相器两个、SRAM单元四到六个这是合理用量你要是搭一个二十级环形振荡器每个反相器都用TCAD模型这仿真量基本没救。提速策略也很明确关键器件用TCAD外围器件用紧凑模型。Sentaurus的System块可以引用SPICE紧凑模型也就是说你要重点研究的那一个NMOS用TCAD其余外围管子全部用BSIM模型替代。这样仿真精度在关键路径上保留计算开销在非关键路径上大幅削减。实际项目中我就是用这个方式跑通了一个ESD保护链路的仿真——被保护的内部管子用TCAD外围的电阻、二极管用compact model整个仿真时间控制在可接受的范围内。网格方面的技巧混合模式仿真的器件网格不需要像单器件仿真那样追求极致精细。在保证电流通路和关键结区有足够网格的前提下尽量把远离导电沟道的区域网格放宽。因为多器件联立求解时求解矩阵中的未知数是所有器件的网格点总和网格数量每减少一部分矩阵规模呈平方级下降收益非常明显。4.5 常见问题速查表现象可能原因解决思路求解第一步就发散电极初值不合理 / 电压源对顶检查Device块Electrode初值从零逐步升高DC扫描中途发散扫描步长过大 / 物理模型突变加密扫描点检查是否打开了Avalanche等强非线性模型VTC曲线锯齿状过渡区采样不足在过渡区手动加密扫描点瞬态波形振荡MaxStep过大 / 迭代次数不足MaxStep缩小到系统时间常数1/10以下Iterations调到20以上仿真速度过慢TCAD器件数量过多 / 网格过密外围电路用compact model适当放宽非关键区网格输出电平达不到预期器件驱动能力不匹配 / 负载过大检查NMOS和PMOS尺寸比确认负载电容是否合理4.6 养成一个习惯先小范围验证再全范围扫描混合模式仿真一个很反直觉的点是直接跑全范围扫描往往比先跑小范围更慢、更容易发散。我个人的习惯是任何新的电路拓扑第一次跑都是小范围试探——电压源只扫0到0.2V确认器件工作点正常、电流在合理量级然后扩大到全范围。这样即使中间出错也能很快定位到具体是哪一步、哪个器件出了问题不会面对一整坨不收敛日志无从下手。做混合模式仿真这几年我最大的体会是它把“器件工程师”和“电路工程师”两套思维方式拉到同一张桌子前。单器件仿真时你只关心曲线形态混合模式逼着你去想器件在电路里到底扮演什么角色——驱动能力够不够、寄生电容会不会拖慢速度、温度变化时电路还能不能稳定工作。反相器只是起点跑通这一步后面去做环形振荡器、SRAM存储单元、功率电路栅极驱动工具链都回到这一篇讲的核心逻辑Device块定义物理本质System块决定工作环境。按这个思路去套混合模式仿真就不难了。