
简介面向微电子与半导体器件仿真学习者的一份Sentaurus语句命令参考文档聚焦I-V、C-V曲线计算、辐照损伤与重粒子入射、瞬态过程等典型仿真场景适合需要查阅SDevice语法结构、物理模型与求解设置的研究生、工程师及课程实验者。压缩包共1个docx文件约16KB体量轻便便于随查随用。文档以可复用语句块形式组织涵盖电流电压File与Plot参数、Diode混合模式AC耦合的C-V提取、HeavyIon重离子撞击与激光光照瞬态模型以及Mobility、Recombination、Avalanche等物理模型和Math、Solve收敛控制设置读者可据此对照搭建自己的仿真输入卡并理解各模块作用。已有2036人学习下载说明其在Sentaurus入门与实验排错中具有一定参考价值。1. 一句话说清 Sentaurus它是器件的「虚拟试验台」不是一份教程盖楼之前结构工程师不会先把楼盖起来看它塌不塌而是先在软件里把梁、柱、荷载算一遍。Sentaurus 干的是同一件事只是对象换成了半导体器件一块硅片、几个电极、一堆掺杂浓度它替你算出电压加上去以后电流有多大、电荷怎么动、电场在哪扎堆。很多人第一次看到它的时候会被Physics、Math、Solve这类段落吓住以为这是一门新语言。其实它更像个填表流程你告诉它「结构长什么样、按什么物理规律算、从哪个电压扫到哪个电压」它把结果写进文件和图表。搞懂它在干什么你就不会再把 I-V、C-V、辐照、瞬态当成四门互不相干的学问它们只是同一套流程的四种用法。2. 为什么要在电脑里先算一遍器件仿真的存在理由2.1 从「做一片出来试试」到「先算后做」真实的半导体实验很贵也很慢。改动一次掺杂浓度、换一种钝化层厚度往往要从头走一遍加工流程周期以周甚至月计中间任何一个环节出错前面投入就全部沉没。器件仿真的价值就在这里把「做一片试试」换成「先算一遍看看」在电脑里把几十种结构参数各跑一遍筛掉明显不行的方向只留少数几个去实际验证。但要把话说清楚仿真不是用来替代实验的。它更像一张高分辨率的地图地图不能代替你走路但能让你少走冤枉路。仿真结果准不准取决于你给的物理模型、材料参数、网格划分是不是贴近真实参数错了算出来的曲线照样漂亮只是漂亮得毫无意义。这也是为什么老手看一份仿真结果第一反应往往不是看曲线而是回头翻你的Physics段写了什么。Sentaurus 属于器件与工艺仿真这一类工具覆盖微电子、纳米电子、光电子器件的设计与优化。它的分量不在于「能画图」而在于内置了大量物理模型和数值方法迁移率怎么随掺杂退化、高场下速度怎么饱和、载流子怎么复合、雪崩怎么击穿、光怎么被吸收生成载流子。这些东西手算基本不可能写成方程又解不动只能交给数值求解器。2.2 它到底在解什么方程三个吓人的名字三个生活化的解释打开任何一份可用的语句文件你看到的都是参数求解器在背后忙活的主要是三组方程。理解这三组方程在描述什么比记住参数名有用得多。第一组是泊松方程。它管的是「电荷分布决定电势分布」可以类比成一池水哪里水多哪里水位就高。器件里电子、空穴、电离杂质都是电荷它们堆在哪里电势就在哪里弯曲。你看到的Potential、SpaceCharge、ElectricField/Vector这些输出量全是这一步的产物。第二组是载流子连续性方程。它管的是「人流的进出要守恒」某个小区域里电子变多了要么是从旁边流进来的要么是在这里被生成出来的不可能凭空出现。复合、产生、电流散度说的都是这本账。第三组是输运方程。它管的是「载流子怎么走」电场推一把漂移、浓度差推一把扩散走得快了还会撞上晶格被限速高场饱和。Mobility段里那一长串模型改的全是「走得多快」这件事。三组方程互相咬着电势影响载流子怎么分布载流子分布又反过来改电势。所以求解器不能一次算完只能反复迭代直到前后两次的结果差得足够小。所谓「不收敛」绝大多数时候不是物理错了而是这个互相咬合的循环没找到平衡点。2.3 一份语句文件的三个输入网格、物理、求解把所有参数归归类其实只有三类输入。看懂了分类再长的文件也只是填空题。输入类别对应段落通俗解释改动后的典型后果结构信息File里的Grid、Electrode器件长什么样、电极在哪、加多少电压网格或电极定义错后面全白算物理规则Physics用什么模型描述迁移率、复合、隧穿、辐照模型选少了结果偏乐观选多了算不动数值策略Math、Solve怎么迭代、步长多大、什么时候停策略保守算得慢激进则容易发散Grid Diode_msh.tdr指向的是结构网格文件里面存着几何形状和掺杂分布Electrode段给电极起名字并指定初始电压后面所有「从 0 扫到 1000V」的目标都挂在这个名字上Plot段决定算完之后留下哪些空间分布比如eDensity、hDensity、AvalancheGeneration你要是不写事后想回看某个量就只能重跑。Physics段是最见功力的地方。举个具体例子迁移率那一行写成Mobility(DopingDependence eHighFieldSaturation hHighFieldSaturation Enormal CarrierCarrierScattering)四个关键词分别对应「掺杂越多越难走」「电子高速时速度封顶」「空穴同理」「界面法向电场的影响」「载流子之间互相碰撞」。少写一个普通正向特性可能看不出差别一旦做到高场或者界面附近曲线就开始对不上。3. 一份 Sentaurus 语句文件长什么样I-V 与 C-V 的骨架3.1 五段式骨架File、Electrode、Physics、Math、Solve把任何一份能跑通的语句文件剥掉细节剩下的就是这五段。下面这份骨架取自二极管电流电压仿真的写法注释是我加的说明参数本身保持原样。File { Grid Diode_msh.tdr # 网格几何形状 掺杂分布一切的起点 Current Diode_IV.plt # 端电流随电压变化的数据画 I-V 曲线就靠它 Plot Diode_IV.tdr # 各物理量的空间分布事后回看用 Output Diode_IV.log # 求解日志发散时唯一的黑匣子 } Electrode { { NameElectrodeN Voltage 0.0 } # 电极名 初始电压后面的扫描目标挂这个名字 } Physics { AreaFactor 1 # 二维仿真的等效厚度倍数把结果折成三维电流 Temperature 300 # 晶格温度单位 K Mobility( DopingDependence eHighFieldSaturation hHighFieldSaturation Enormal CarrierCarrierScattering ) Recombination( SRH(DopingDependence) Auger(withGeneration) Avalanche(UniBo Eparallel) Band2Band(Hurkx) ) EffectiveIntrinsicDensity(OldSlotboom) # 重掺杂下的带隙收窄 } Math { Method Pardiso # 线性方程组求解器 Number_of_threads 4 # 线程数按机器核数调 Stacksize ExtrapolateDerivatives AvalDerivatives RelErrControl Iterations 15 # 每个耦合步内的最大迭代次数 Notdamped 60 # 前 60 次迭代不做阻尼先抢速度 BreakCriteria { Current(ContactElectrodeN maxval1e-8) } } Solve { Coupled(Iterations50) { Poisson } # 先单独解电势给个好初值 Coupled(Iterations15) { Hole Poisson } # 再引入空穴 Coupled(Iterations15) { Electron Hole Poisson } # 最后三个量一起解 QuasiStationary( InitialStep1e-6 MaxStep0.01 MinStep1e-9 Goal { NameElectrodeN Voltage1000 } Plot { Range(0 1) Intervals2 } ) { Coupled { Hole Electron Poisson } } }这段代码有三处值得单独拎出来说。BreakCriteria是一道保险当ElectrodeN上的电流超过 1e-8 就中止扫描防止在击穿点附近无休止地往下跑现实中很多「跑了三天没出结果」都是缺了这道保险。Notdamped 60的意思是前 60 次迭代不施加阻尼让它先大步逼近之后再慢慢收如果一开始就保守简单的问题也会被拖得很久。至于Solve里那三段Coupled顺序不是随便排的先解泊松拿到电势分布再引入空穴最后电子空穴一起解每一步都在给下一步喂一个更靠谱的初值。直接上来三个量全耦合简单结构能过复杂结构十有八九翻车。QuasiStationary这个名字容易被误读。它扫的是电压不是时间InitialStep、MaxStep、MinStep描述的是每一步电压加多少Goal是终点。名字里带「准静态」是因为它假设每个电压点上器件都已经稳定下来不考虑中间的时间过程。3.2 I-V 曲线扫电压这件事难点在步长I-V 仿真表面上最简单给电极加电压读电流画图。真正让人头疼的是步长策略。步长给大了曲线拐弯的地方比如开启点、击穿点会被直接跨过去画出来是一条失真的折线步长给小了一次扫描跑上几个小时。InitialStep 1e-6、MaxStep 0.01、MinStep 1e-9这三个数构成了一个自适应区间求解器会自己判断该走多大但只要不超过 0.01V 一步也不小于 1e-9V 一步。这套机制在正向特性上很省心到了反向击穿附近就不够用了因为电流在极窄的电压区间里能涨好几个数量级。这时候要么调小MaxStep要么靠BreakCriteria果断收尾。Plot { Range(0 1) Intervals2 }里的区间是归一化的0 到 1 代表整段扫描过程Intervals2表示在途中留两个快照。想留住击穿那一瞬间的电场分布就把区间往末端挤比如只取 0.9 到 1 这一段。Current文件里存的是端电流随电压的变化本质上就是那条曲线的原始数据Plot文件里存的是空间分布是三维的场。两者别搞混想知道「电流多大」看前者想知道「电场堆在哪」看后者。3.3 C-V 曲线为什么要绕道 Mixed Mode 和小信号电容的定义很朴素电压动一点点电荷动多少。难点在于「动一点点」这件事在语句里怎么表达。直流扫描只能给出电荷总量给不出导数所以电容仿真要换一套写法。做法是把器件接进一个虚拟电路里用System段声明一个器件实例和电压源再用ACCoupled做小信号分析System { Diode diodesystem (ElectrodeNfront ElectrodeP0) # 器件实例绑定两个电极 Vsource_pset vn (front 0) { dc0 } # 电压源dc 初值为 0 } File { Output Diode_CV_1kHz.log ACExtract Diode_CV_AC_1kHz.plt # 小信号结果单独落盘 } Solve { QuasiStationary( InitialStep1e-6 MaxStep1e-2 MinStep1e-7 Increment2 Decrement4 Goal { Parametervn.dc Voltage100 } # 扫的是电压源的直流偏置 ) { ACCoupled( StartFrequency1e3 EndFrequency1e3 NumberOfPoints1 Decade Iterations15 Node(front) ACMethodBlocked ACSubMethod(diodesystem)ParDiSo ) { Poisson Electron Hole Contact Circuit } } }几个参数值得解释。Increment2和Decrement4是步长的放大与缩小倍率上一次顺利就步子放大两倍遇到困难就缩到四分之一这是一套很典型的自适应思路。StartFrequency和EndFrequency都是 1e3NumberOfPoints1意思是只在 1kHz 这一个频点上算一次——很多文献里的 C-V 曲线就是这么来的固定频率扫偏压。ACMethodBlocked配合ACSubMethod(diodesystem)ParDiSo是告诉求解器用分块的方式处理电路和器件之间的耦合。这一块不理解也没关系记住 C-V 的语句结构比 I-V 多一层「电路壳子」扫的是电压源的直流偏置测的是小信号响应。3.4 求解顺序为什么不能一上来就全家桶Coupled { Hole Electron Poisson }这一行看起来只是把三个方程放在一起实际含义是「同时满足三组方程的平衡」。方程之间耦合越强同时求解越难收敛所以实践中普遍采用渐进策略先解一个简单的把它当作初值再逐步加料。这份骨架里Coupled(Iterations50) { Poisson }单独把泊松方程的迭代上限放到 50比后面几段的 15 高不少就是在强调「第一步必须解扎实」。初值错得离谱后面再多的迭代次数也救不回来。这个思路和很多数值问题相通难的不是最后一步是让第一步站在正确的山坡上。4. 把物理现象翻译成参数辐照、重离子与激光注入4.1 HeavyIon一次粒子入射怎么写成一串数字单粒子效应这类问题物理图像很直观一颗高能粒子斜穿进器件沿途电离出一串电子空穴对局部电荷密度瞬间飙升可能把存储单元的状态翻掉。写进语句里就变成Physics段里的一个HeavyIon块Physics { HeavyIon ( Direction (0,1) # 入射方向沿 y 轴 Location (200, 0) # 入射点坐标 Time 1e-9 # 什么时候打进来 Length [ ] # 入射深度留空用默认 Wt_hi [ ] # 时间宽度留空用默认 LET_f [0 8.7e-6 8.7e-6 0] # 电荷沉积随时间的波形 Gaussian PicoCoulomb # 横向高斯分布 皮库仑量纲 ) }LET_f那个四元数组是整段的核心。它描述的是一条随时间变化的沉积曲线起始为零迅速上升维持一段平台再回落到零。四个采样点画出一条梯形波物理上对应「粒子穿过敏感区的那一小段时间」。Gaussian管的是横向分布形状PicoCoulomb说明这组数的量纲习惯。Length和Wt_hi留空不是遗漏是交给默认值处理。什么时候该填当你明确知道粒子的射程、或者要研究不同入射深度带来的差异时。留空的写法适合快速探路先看这个位置打进去会不会出事再细化。4.2 光学注入波长、光强和一个高斯形状的时间包激光或者瞬态光注入写法和重离子完全两套。它属于Optics段核心是把「光」翻译成「哪里、什么时候、生成多少载流子」Optics ( OpticalGeneration ( ComputeFromMonochromaticSource () # 单色光源 TimeDependence ( WaveTime (1e-9 1e-9) # 光脉冲的起止时刻 WaveTSigma 50e-12 # 时间包的高斯宽度 ) Scaling 0 Excitation ( Wavelength 0.8 * um # 波长决定穿透深度 Intensity 0.06 * W/cm2 # 光强决定生成率量级 Window L1 ( Origin (200,0) XDirection (1,0,0) Line (Dx 10) Theta 0 * Angle from positive y-axis ) OpticalSolver ( OptBeam ( LayerStackExtraction ( WindowName L1 WindowPosition Center Mode ElementWise ComplexRefractiveIndex ( WavelengthDep (real imag) ) ) ) ) ) ) )需要看懂的是三个层次。第一层是光源本身波长 0.8 微米落在近红外光强 0.06 W/cm²决定生成率的数量级。第二层是时间形状WaveTime给出脉冲的起止WaveTSigma给出高斯展宽——50 皮秒的宽度意味着这是一个相当快的脉冲对应的瞬态求解步长必须足够小。第三层是空间窗口Window L1配合Line(Dx10)定义了一条照射线Theta是相对正 y 轴的夹角。ComplexRefractiveIndex(WavelengthDep(real imag))这一句容易被跳过但它决定了光在材料里怎么衰减。折射率的虚部对应吸收实部对应传播两者都随波长变化。不写这一句光就变成了一束不会衰减的理想光算出来的载流子生成量会明显偏大。4.3 陷阱与界面电荷辐照损伤怎么落在参数上辐照之后器件性能退化宏观上是漏电流变大、阈值漂移微观上往往是晶格损伤引入了能级。写进语句里就是Traps块每一条陷阱要交代四件事类型、能级位置、浓度、俘获截面。Physics (materialSilicon) { Traps ( ( Acceptor Level EnergyMid0.42 fromCondBand Conc2.3226E15 Randomize0.29 eXsection9.5E-15 hXsection9.5E-14 ) #Conc Fluence * 1.1613 # 注释掉的这行说明浓度可由注量换算 ( Acceptor Level EnergyMid0.46 fromCondBand Conc1.8E15 Randomize0.23 eXsection5E-15 hXsection5E-14 ) ( Donor Level EnergyMid0.36 fromValBand Conc1.8E15 Randomize0.31 eXsection3.23E-13 hXsection3.23E-14 ) ) } Physics (MaterialInterfaceOxide/Silicon) { Charge (Conc1.5e11) # 界面固定电荷和陷阱是两回事 }读法很简单Acceptor是受主型陷阱fromCondBand表示能级从导带底往下量 0.42 eVDonor是施主型fromValBand表示从价带顶往上量。eXsection和hXsection是电子、空穴的俘获截面数量级差一位对复合率的影响就差很多。Randomize给的是能级的随机展宽用来模拟损伤分布不均匀。那行被#注释掉的Conc Fluence * 1.1613是整段里信息量最大的一行。它说明了浓度不是随手填的而是由辐照注量乘一个系数换算出来。注释保留着就是留一个可追溯的痕迹以后想知道这个数怎么来的看这行。界面那一行Charge(Conc1.5e11)要单独理解。它是氧化层和硅交界处的固定电荷不带能级、不参与俘获只贡献一个静电场偏移。把它和体陷阱混为一谈是初学者最常犯的错之一。4.4 瞬态为什么难收敛1e-17 不是炫技瞬态仿真的写法看着和准静态很像难点全在数量级上Solve { NewCurrentPrefix trans_ # 输出文件加前缀避免覆盖 Transient ( InitialTime 0 FinalTime 35e-9 # 总共算 35 纳秒 MinStep 1e-17 # 最小步长小到 10 阿秒 MaxStep 1e-10 # 最大步长 0.1 纳秒 ) { Coupled { Poisson Electron Hole Circuit } Plot ( FilePrefixTransHI_ Time(0.5e-9; 1e-9; 2e-9; 5e-9; 10e-9) NoOverwrite ) } }FinalTime 35e-9对应粒子入射之后那段快速演化MaxStep 1e-10保证每步不超过 0.1 纳秒否则脉冲的陡边会被抹平MinStep 1e-17看着夸张但它是自适应策略的下限——当求解器发现某一步怎么都过不去时会一路缩步长缩到 1e-17 还过不去才真正报错。这个下限设得太松你会得到一个「假装收敛」的结果。Plot里的时间列表是快照时刻只在 0.5、1、2、5、10 纳秒各存一帧。全时段存盘会让输出文件膨胀到难以处理挑关键时刻才是正解。NoOverwrite防止重跑时覆盖上一次的结果NewCurrentPrefix给输出文件统一加前缀两个小动作都是为了不把自己坑在文件管理上。5. 几个最容易搞混的概念区别与误区5.1 准静态的「扫描」和瞬态的「时间」不是一回事易混点两者都用Solve段都有起点终点都写着步长。为什么混QuasiStationary里的InitialStep、MaxStep和Transient里的MinStep、MaxStep长得几乎一样参数名撞车直觉上会以为是同一套东西。怎么区分看它在扫什么。QuasiStationary的Goal写的是电压或电流比如Voltage1000它假设每个电压点上器件已经稳定中间过程不关心Transient的InitialTime、FinalTime写的是真实时间单位是秒每一步都对应物理时间的推进。一句话前者扫的是「条件」后者扫的是「时间」。5.2 C-V 里的电容不是几何电容易混点看到「电容」就想到平行板公式觉得面积除以间距就完事。为什么混中学物理里电容就是几何量跟材料、偏压都没关系这个印象太深。怎么区分器件里的电容是微分电容随偏压变化。耗尽区变宽等效间距变大电容下降进入积累区电容又回升。所以 C-V 曲线的形状本身就是信息。用ACCoupled算出来的是这个随偏压变化的动态值不是某个固定数。5.3 LET 和注量不是同一个维度上的东西易混点LET_f和Fluence都是「辐照强度」的某种度量经常被当成可以互换的两种写法。为什么混两者都跟入射粒子有关单位看着都像「多少」。怎么区分注量描述的是「总共打进来多少颗」是一个累积量LET 描述的是「单颗粒子沿途沉积多少能量」是一条随位置或时间变化的曲线。前面辐照那段里注释掉的Conc Fluence * 1.1613是把累积注量折算成陷阱浓度而LET_f [0 8.7e-6 8.7e-6 0]描述的是单次入射的沉积波形。一个管总量一个管过程。5.4 网格不是越密越好易混点觉得精度不够就加密网格把所有地方都划得细细的。为什么混数值计算的经验里网格越密误差越小这个规律在小规模问题里确实成立。怎么区分器件仿真的网格密度要和物理量的变化剧烈程度匹配。结区附近、界面附近、高场区需要密衬底深处和电极内部用粗网格完全够。全局加密的结果是方程数暴涨、内存吃紧、求解时间成倍增加而精度提升集中在那些本来就不需要的地方。Math段里的Stacksize和线程数很多时候就是被不必要的网格密度逼出来的。5.5 不收敛不等于物理写错了易混点一报错就怀疑模型选错开始疯狂删Physics里的关键字。为什么混模型越少越容易收敛这确实是事实删掉几个往往就通了于是形成「收敛靠删模型」的错误经验。怎么区分先看日志。Output指定的那个.log文件会告诉你卡在哪一步、残差多大、哪个量在震荡。常见原因是初值太差该分步耦合却一把梭、步长太激进MaxStep给大了、或者某条曲线本来就该有拐点击穿附近电流暴涨本来就难算。真要排查物理应该去看Plot出来的空间分布是否合理而不是靠能不能跑通来判断。收敛是数值问题正确性是物理问题两者得分开审。6. 什么时候该用它、什么时候别用三个判断和一个具体例子判断一问题是不是「器件级」的。如果你关心的是某个结构的电场分布、某条曲线的拐点在哪、某种辐照条件下电荷怎么沉积那它合适。如果你关心的是整块芯片的时序、功耗、信号完整性那该交给电路级仿真器器件仿真在这里属于用显微镜看地图费劲且没必要。判断二材料参数有没有底气。仿真对参数的敏感度远超想象少一个复合寿命、错一个陷阱能级曲线就能从「符合预期」变成「完全对不上」。参数来源不清楚的时候跑出来的结果只能当趋势参考不能当结论。场景适合说明二极管正向 I-V、反向击穿趋势适合物理模型成熟参数少收敛稳固定频率下的 C-V 曲线适合小信号分析关注耗尽区随偏压的变化单粒子入射后的瞬态响应适合需要细时间步和局部网格加密工艺波动的统计分布不适合单次确定性求解跑统计要靠外部抽样整芯片功能验证不适合尺度不匹配应交给电路级工具举个具体例子。想用 I-V 仿真看一个二极管的反向击穿Physics里必须带Avalanche(UniBo Eparallel)因为击穿本质是碰撞电离不写这个模型反向电流会一直很小你怎么扫都扫不出拐点。同时BreakCriteria要给一个合理的电流上限否则电流一旦指数上升求解器会在极小步长里反复挣扎。这两件事缺一件要么结果错要么跑不完。反过来如果只是想看正向开启电压大概在哪就别开雪崩、别开带间隧穿Physics精简到迁移率和 SRH 复合就够跑得快、结果也稳。工具的能力全开不是本事知道什么时候该关掉才是。血泪经验是这么攒出来的早些年跑一份瞬态看着日志一路绿灯结果出图发现电流平得像一条直线查了半天才发现MaxStep给得太大脉冲整个被跨过去了。从那以后我每次跑瞬态都强制先把MaxStep压到脉冲宽度的十分之一以下再开跑宁可慢一点也不要一份「收敛得很漂亮但什么也没算到」的结果。这份把 I-V、C-V、重离子、光注入、辐照陷阱分门别类整理好的语句合集价值不在于让你照抄而在于每一段都留了可以改的锚点想换电压范围就改Goal想换入射位置就改Location想换陷阱能级就改EnergyMid。拿去对着自己的结构改参数比从零拼一份要省太多时间。希望帮到你。本文还有配套的精品资源点击获取