Sentaurus TCAD仿真语句实战:I-V/C-V、重离子与激光瞬态及辐照损伤建模
发布时间:2026/10/19 21:50:15 锦皓数字建站

简介这份文档面向微电子、纳米电子与光电子器件方向的仿真学习者与工程人员围绕Sentaurus TCAD工具的实际用法整理了I-V曲线、C-V曲线、辐照损伤与重粒子入射、瞬态仿真等典型场景的语句与模型配置帮助读者理解器件电学特性与辐照效应的仿真流程。资源包共1个docx文件约16KB内容以仿真语句、物理模型与求解设置为主便于对照软件界面直接查阅与复用。文档中涉及电流电压File定义、Diode电容特性、HeavyIon重离子撞击、激光瞬态模型等具体模块可帮助读者掌握网格、电极、物理模型、Math与Solve参数的搭配方式并理解准静态、AC耦合与瞬态求解的差异。目前已有2030人学习适合需要快速上手Sentaurus语句编写、排查仿真设置问题的中高级用户参考。1. 从一份“各种语句sentaurus.docx”说起TCAD 仿真到底能帮你省下多少流片费如果你正在做功率器件、二极管或者探测器方向的课题大概率绕不开 Sentaurus TCAD 这套工具。它不像 SPICE 那样给个网表就能跑也不像某些开源仿真器那样装完就能点按钮。它更像一个需要你亲手写“配方”的厨房——网格、物理模型、求解策略、电极配置每一步都得自己调。这份“各种语句sentaurus.docx”本质上就是一份命令语句合集覆盖了 I-V 曲线、C-V 曲线、重离子撞击、激光瞬态和辐照损伤五类典型仿真场景。它不是教程更像一个“语句字典”当你需要写 sdevice 命令文件时可以直接从里面找到对应模块的语法结构改改参数就能用。适合已经装好 Sentaurus 环境、能跑通基础二极管仿真、但一遇到瞬态或辐照就不知道从哪下手的从业者。我见过太多人卡在“物理模型选错导致不收敛”或者“瞬态步长设太大结果全是震荡”这类问题上这份文档至少能让你少走两三个月的弯路。2. I-V 与 C-V 曲线仿真从命令文件到收敛判据的完整拆解2.1 直流 I-V 扫描的 File 与 Physics 配置逻辑先看最基础的电流电压扫描。这份文档里给出的 File 段定义了四个关键输出Grid 指向网格文件Current 指向 .plt 曲线数据Plot 指向 .tdr 场分布Output 指向 .log 日志。很多人跑完仿真只看 .plt 里的曲线结果发现电流值不对回头查日志才发现是某个物理模型没激活。我一般会先把 Output 日志打开确认没有 “Warning: Model not activated” 这类提示再去分析曲线。Physics 段是决定仿真精度的核心。文档里列出的迁移率模型组合——DopingDependence、HighFieldSaturation、EnormalCarrier、CarrierScattering——基本覆盖了从低场到高场、从体材料到反型层的迁移率退化。复合模型里 SRH 带 DopingDependence、Auger 带 Generation、Band2Band 用 Hurkx这套组合在功率二极管反向漏电分析里很常见。EffectiveIntrinsicDensity 选 OldSlotboom 而不是默认的 OldSlotboom 或 Schenk说明作者在窄带隙材料或者重掺杂区域遇到过带隙变窄导致的载流子浓度异常。Math 段里的参数值得逐条看。Number_of_threads 4 是并行求解的线程数如果你机器核多可以往上调但别超过物理核数。ExtrapolateDerivatives 和 AvalDerivatives 在击穿仿真里几乎是必开的否则电压步进稍微大一点就发散。RelErrControl 控制相对误差Iterations15 和 Notdamped60 是一对平衡参数迭代次数给够但阻尼步数不能太少否则牛顿法在强非线性区容易震荡。BreakCriteria 里 Current maxval 1e-8 表示当电极电流超过 10nA 时停止仿真——这个值在击穿分析里要小心设太小会在预击穿区就中断设太大又可能错过击穿拐点。Solve 段的策略是典型的“先耦合泊松再逐步加入载流子”。Coupled { Poisson } 先解电势然后 Hole Poisson、Electron Hole Poisson 逐步加方程。QuasiStationary 里的 InitialStep 1e-6、MaxStep 0.01、MinStep 1e-9 是一组比较保守的步长设置。Goal 里 Voltage1000 表示扫描到 1000V但实际器件击穿电压可能远低于此所以 BreakCriteria 才是真正的终止条件。Plot 里的 Range (0 1) Intervals2 控制输出场分布的数量跑大结构时别设太多否则 .tdr 文件几个 G 就出去了。# 典型 sdevice 命令文件结构基于文档整理 File { Grid Diode_msh.tdr Current Diode_IV.plt Plot Diode_IV.tdr Output Diode_IV.log } Electrode { { NameElectrodeN Voltage0.0 } } Physics { AreaFactor 1 Temperature 300 Mobility (DopingDependence HighFieldSaturation EnormalCarrier CarrierScattering) Recombination (SRH(DopingDependence) Auger(withGeneration) Avalanche(UniBo Eparallel) Band2Band(Hurkx)) EffectiveIntrinsicDensity(OldSlotboom) } Math { Number_of_threads 4 ExtrapolateDerivatives AvalDerivatives RelErrControl Iterations15 Notdamped60 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 里的 maxval 单位是 A/um 还是 A 取决于 AreaFactor 设置。AreaFactor1 时就是总电流如果器件是功率管实际面积可能是 1e-4 cm² 量级这里要换算。2.2 混合模式 C-V 仿真AC 耦合与频率扫描的坑C-V 曲线在二极管和 MOS 电容的表征里很关键。文档里给出的 Mixed Mode 方案是把器件定义成一个子电路外面套一个电压源然后用 ACCoupled 做小信号分析。Device 段里 File 的 Current 指向 Diode_CV_1kHz.plt说明这是单频点 1kHz 的 C-V。System 段里 Diode diodesystem 把 ElectrodeN 映射到 front 节点ElectrodeP 映射到 0 节点Vsource_pset vn 给 front 节点加直流偏压。Solve 段先做直流工作点再做 QuasiStationary 扫描 vn.dc 到 100V。注意这里的 Increment2 和 Decrement4 是步长自适应参数如果一步收敛太慢就减半步长收敛太快就加倍。Goal 里 Voltage100 是扫描终点但实际电容在反偏下变化很小所以 ACCoupled 里只取 StartFrequency1e3、EndFrequency1e3、NumberOfPoints1也就是单频点。ACMethodBlocked 和 ACSubMethod(diodesystem)ParDiSo 是求解器选择Blocked 适合小规模电路ParDiSo 是并行直接求解。这里最容易翻车的地方是 AC 耦合的节点映射。如果 System 段里节点名和 Device 段里电极名对不上仿真会直接报 “Node not found”。另外ACExtract 输出的 .plt 文件里电容值是复数实部是电容虚部是电导别只看实部就下结论。# 混合模式 C-V 仿真核心片段 System { Diode diodesystem (ElectrodeNfront ElectrodeP0) Vsource_pset vn (front 0) { dc0 } } File { Output Diode_CV_1kHz.log ACExtract Diode_CV_AC_1kHz.plt } Solve { # 先建立直流工作点 Coupled(Iterations50) { Poisson } Coupled(Iterations15) { Hole Poisson } Coupled(Iterations15) { Electron Hole Poisson } Coupled(Iterations15) { Electron Hole Poisson Contact } 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 } } }注意ACExtract 文件里的频率单位是 Hz但有些版本输出的是角频率。跑完先看一眼表头别把 2πf 当成 f 用。3. 瞬态仿真两大场景重离子撞击与激光辐照的语句实现3.1 HeavyIon 模型LET 波形与时间步长的匹配重离子撞击仿真在空间辐射效应分析里是刚需。文档里给出的 HeavyIon 语句包含几个关键参数Direction 是入射方向Location 是入射位置Time 是入射时刻Length 是轨迹长度Wt_hi 是时间权重LET_f 是线性能量转移随时间的变化。GaussianPicoCoulomb 表示用高斯波形描述电荷沉积的时间分布。LET_f [0 8.7e-6 8.7e-6 0] 这个数组定义了一个梯形脉冲从 0 上升到 8.7e-6保持再降回 0。单位是 pC/um 还是 fC/um 取决于版本但数量级上 8.7e-6 对应的是典型重离子的 LET 值。Time 1e-9 表示离子在 1ns 时刻入射。Length 留空表示默认值通常是整个器件深度。Solve 段里 Transient 的 InitialTime0、FinalTime35e-9、MinStep1e-17、MaxStep1e-10 是一组非常激进的步长。MinStep 到 1e-17 秒意味着要捕捉皮秒级的电荷沉积过程MaxStep 到 1e-10 秒是为了在电荷收集阶段不丢细节。NewCurrentPrefix trans_ 给输出文件加前缀避免覆盖直流结果。Plot 里的 Time 列表指定了输出场分布的时刻0.5e-9、1e-9、2e-9、5e-9、10e-9 覆盖了从入射到收集的完整过程。这里最大的坑是 HeavyIon 的 Location 和网格对齐。如果入射点落在网格单元边界上电荷沉积会异常。我一般会先在网格文件里确认入射点坐标附近的网格密度必要时在 Location 附近做局部加密。另外LET_f 的数组长度必须和 Wt_hi 匹配否则会报 “Dimension mismatch”。# 重离子瞬态仿真核心语句 Physics { HeavyIon ( Direction (0,1) Location (200, 0) Time 1e-9 Length [ ] Wt_hi [ ] LET_f [0 8.7e-6 8.7e-6 0] GaussianPicoCoulomb ) } Solve { NewCurrentPrefix trans_ Transient (InitialTime0 FinalTime35e-9 MinStep1e-17 MaxStep1e-10 ) { Coupled { Poisson Electron Hole Circuit } Plot(FilePrefixTransHI_ Time(0.5e-9; 1e-9; 2e-9; 5e-9; 10e-9) NoOverwrite ) } }3.2 激光辐照OpticalGeneration 与 WaveTime 的配合激光瞬态仿真和重离子类似但激励源换成了光。文档里 Optics 段用 OpticalGeneration 配合 ComputeFromMonochromaticSourceTimeDependence 里 WaveTime (1e-9 1e-9) 和 WaveTSigma 50e-12 定义了一个高斯光脉冲峰值在 1ns宽度 50ps。Scaling 0 表示不做额外缩放。Excitation 里 Wavelength 0.8 um、Intensity 0.06 W/cm² 是典型的光源参数。Window(L1) 定义了光照窗口Origin (200,0) 是窗口起点XDirection (1,0,0) 是光传播方向Line(Dx10) 表示沿 x 方向每 10um 一个采样点。Theta 0 表示入射角为零。OpticalSolver 里 OptBeam 配合 LayerStackExtraction 做光束传播计算ComplexRefractiveIndex 的 WavelengthDep(real imag) 表示折射率随波长变化实部和虚部分别对应折射和吸收。Solve 段和重离子类似但 FinalTime 延长到 60e-9因为光生载流子的收集时间通常比重离子长。这里容易忽略的是 Optics 段和 Physics 段的耦合如果 Physics 里没有定义 OpticalGeneration 相关的复合模型光生载流子会直接复合掉结果看起来像没光照一样。我一般会在 Physics 里显式加上 SRH 和 Auger并确认 OpticalGeneration 的 Scaling 不为零。# 激光瞬态仿真核心语句 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(Dx10) Theta 0 ) ) OpticalSolver ( OptBeam ( LayerStackExtraction ( WindowName L1 WindowPosition Center Mode ElementWise ComplexRefractiveIndex(WavelengthDep(real imag)) ) ) ) ) ) Solve { NewCurrentPrefix trans_ Transient (InitialTime0 FinalTime60e-9 MinStep1e-17 MaxStep1e-10 ) { Coupled { Poisson Electron Hole Circuit } } }提示WaveTSigma 是高斯脉冲的标准差不是半高宽。如果实验数据给的是 FWHM要除以 2.355 再填进去。4. 辐照损伤建模陷阱语句与界面电荷的写法4.1 体陷阱与界面陷阱的语法差异辐照损伤的核心是陷阱。文档里给出了体陷阱和界面陷阱两种写法。体陷阱在 Physics(materialSilicon) 里定义用 Traps 关键字每个陷阱包含类型Acceptor/Donor、能级位置EnergyMid fromCondBand 或 fromValBand、浓度Conc、随机化因子Randomize、电子和空穴俘获截面eXsection、hXsection。Acceptor 陷阱在能级上半部Donor 在下半部。EnergyMid0.42 fromCondBand 表示距导带底 0.42eV这是典型的辐照诱导深能级。Conc2.3226E15 对应 1MeV 中子注量 1e14 cm⁻² 左右的缺陷浓度。Randomize0.29 表示能级在 0.42eV 附近有 0.29eV 的随机分布模拟缺陷能级的弥散。eXsection9.5E-15、hXsection9.5E-14 是俘获截面单位 cm²空穴截面比电子截面大一个量级说明这个陷阱对空穴更敏感。界面陷阱在 Physics(MaterialInterfaceOxide/Silicon) 里定义用 Charge(Conc1.5e11) 表示固定电荷或者用 Traps 定义界面态。文档里注释掉的 FixedCharge Conc5e10 和 Charge Conc1.5e11 是两种不同写法FixedCharge 是固定电荷不参与载流子交换Charge 是界面态电荷会随偏压变化。辐照后界面态密度通常上升所以用 Charge 更合适。# 辐照损伤陷阱定义 Physics (materialSilicon) { Traps ( (Acceptor Level EnergyMid0.42 fromCondBand Conc2.3226E15 Randomize0.29 eXsection9.5E-15 hXsection9.5E-14) (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) }注意Conc 的单位是 cm⁻³但有些版本要求填 cm⁻³ 还是 um⁻³ 取决于网格维度。二维仿真里通常用 cm⁻³三维里要确认一下。4.2 陷阱参数对 I-V 曲线的影响与验证方法陷阱参数不是拍脑袋填的。Conc 通常由辐照注量和损伤因子算出来文档注释里写了 #ConcFluence1.1613 和 #ConcFluence0.9说明作者是根据注量乘以一个系数来估算缺陷浓度的。这个系数来自 SRIM 或类似工具的模拟结果不同离子和能量下不一样。验证陷阱参数是否合理最直接的方法是跑一组不同注量下的 I-V 曲线看漏电流是否随注量单调上升。如果漏电流不升反降可能是陷阱类型搞反了Acceptor 陷阱在 n 型材料里会补偿施主导致载流子浓度下降漏电流应该降低才对。如果目标是模拟辐照后漏电增加应该用 Donor 陷阱在 p 型材料里或者 Acceptor 在 n 型里但浓度不能太高。另一个验证点是陷阱能级位置。EnergyMid 越靠近禁带中央产生-复合电流越大。0.42eV 和 0.46eV 都在禁带中央附近所以这两个 Acceptor 陷阱对漏电流贡献最大。Donor 陷阱在 0.36eV fromValBand离价带较近主要影响空穴俘获。跑完仿真后可以在 .plt 文件里看 SRH 复合率的空间分布确认陷阱活跃区域和预期一致。5. 避坑与排查Sentaurus 语句调试的五个血泪经验5.1 不收敛从日志里找第一现场现象仿真跑了几步就报 “Convergence failed”或者电压卡在某个值不动。原因最常见的是物理模型组合过强比如同时开了 Avalanche 和 Band2Band 但步长太大。解决先看 .log 文件里最后一步的残差如果 Poisson 方程残差在 1e-3 量级就发散说明电势初值太差。把 InitialStep 降到 1e-8或者先用只有 Poisson 的 Coupled 跑一遍再逐步加载流子方程。另一个技巧是打开 Notdamped 并适当增大让牛顿法在早期多走几步阻尼。5.2 电流异常电极配置与 AreaFactor 的隐形陷阱现象I-V 曲线电流值比预期大几个量级或者正反向电流对称。原因AreaFactor 没设对。二维仿真里 AreaFactor 默认是 1um如果实际器件宽度是 100um电流要乘以 100。另外电极的 Voltage 和 Current 边界条件搞反了也会导致异常。解决先确认 Electrode 段里哪个电极是接地、哪个是偏压。跑一个零偏压的仿真看电流是否接近零。如果不为零检查电极接触是欧姆还是肖特基。5.3 瞬态结果震荡步长与电荷沉积时间的匹配现象重离子或激光瞬态仿真里电流波形出现高频震荡。原因MaxStep 太大错过了电荷沉积的快速变化。重离子的电荷沉积时间在皮秒量级如果 MaxStep 设到 1e-9一个步长就跨过了整个沉积过程。解决把 MaxStep 降到 1e-12 以下MinStep 降到 1e-17。同时检查 HeavyIon 的 Time 和 Transient 的 InitialTime 是否对齐如果离子在 1ns 入射但 InitialTime0前 1ns 的步长可以放宽入射后再收紧。5.4 陷阱不生效材料名与区域匹配现象定义了陷阱但 I-V 曲线和没定义一样。原因Physics(materialSilicon) 里的材料名必须和网格文件里的区域名完全一致。如果网格里写的是 “Si” 而不是 “Silicon”陷阱不会生效。解决用 tecplot 或 svisual 打开 .tdr 文件查看区域名称。另外界面陷阱的 MaterialInterface 写法要确认是 “Oxide/Silicon” 还是 “SiO2/Si”不同版本默认名不一样。5.5 输出文件过大Plot 频率与场变量裁剪现象跑一个瞬态仿真.tdr 文件几十个 G硬盘直接爆了。原因Plot 里默认输出所有场变量而且每个时间点都存。解决在 Plot 段里显式指定需要的变量比如只留 eDensity、hDensity、Potential 和 Current/Vector。Time 列表只保留关键时间点不要用 Range 输出连续场。另外NoOverwrite 可以防止覆盖同名文件但不会减小文件体积。6. 进阶技巧用语句模板批量跑参数扫描与结果验证当你把单点仿真跑通之后下一步通常是做参数扫描——比如改变陷阱浓度看漏电流变化或者改变 LET 值看重离子瞬态响应。手动改命令文件再一个个跑太慢我一般会用 shell 脚本生成多个 sdevice 命令文件然后并行提交。#!/bin/bash # 批量生成不同陷阱浓度的命令文件并提交 for conc in 1e15 2e15 5e15 1e16; do sed s/Conc2.3226E15/Conc${conc}/g Diode_IV_base.cmd Diode_IV_${conc}.cmd sdevice Diode_IV_${conc}.cmd Diode_IV_${conc}.log 21 done wait echo All simulations finished.这段脚本的核心是 sed 替换。先把基础命令文件里的陷阱浓度替换成变量生成新文件然后后台提交。wait 确保所有进程结束后再输出提示。注意并行数不要超过机器核数否则内存不够会直接 kill。结果验证我一般分三步。第一步看 .log 里有没有 Warning 或 Error特别是 “Model not activated” 和 “Convergence failed”。第二步用 svisual 或 tecplot 打开 .tdr看电场和载流子浓度的空间分布是否合理——比如击穿时电场应该集中在结区如果电场跑到电极下面说明网格有问题。第三步把 .plt 里的曲线和实验数据对比如果趋势一致但绝对值差一个常数因子优先检查 AreaFactor 和接触电阻。从那以后我每次跑新结构都强制先跑一个零偏压的平衡态仿真确认电势和载流子浓度分布正常再逐步加偏压和物理模型。这个习惯帮我省下了至少几十次“跑了一夜结果全错”的后悔药。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。