YAOTU INSIGHTS

Sentaurus TCAD仿真脚本实战:I-V/C-V/瞬态/辐照四类器件建模

Sentaurus TCAD仿真脚本实战:I-V/C-V/瞬态/辐照四类器件建模
简介本资源是一份面向微电子器件仿真初学者与工程实践者的Sentaurus软件应用指南聚焦I-V/C-V特性提取、辐照损伤建模、重粒子入射瞬态响应及激光激励等关键场景助力用户快速掌握半导体器件多物理场协同仿真的核心流程。文档为单个16KB的Word文件.docx内容结构清晰完整呈现了Diode器件的IV/CV仿真命令脚本含网格调用、电极定义、Physics模型配置、重离子撞击HeavyIon与激光照射Optics两类瞬态仿真的Solve设置细节以及Plot输出规范和参数优化逻辑。文中嵌入大量可直接参考或修改的代码段如AC耦合C-V提取、QuasiStationary扫描控制、Transient时间步长策略及LET参数配置等兼具原理说明与实操指导价值。目前已有2032人学习下载适合从事辐射效应研究、功率器件建模或TCAD仿真实训的工程师与研究生系统梳理Sentaurus典型工作流。1. 这不是 Word 文档一份被误标为.docx的 Sentaurus 命令脚本集专治 I-V/C-V/瞬态/辐照四类器件仿真落地难你点开各种语句sentaurus.docx双击——弹出报错“无法打开文件格式不支持”或者更玄学的是Word 打开了满屏乱码夹杂着{Physics {…}}和Coupled (Iterations50) {Poisson}。别急这不是文档损坏而是典型“命名陷阱”这根本不是 Word 文档而是一份未经压缩、未加注释、但功能完整、可直接加载进 Sentaurus SDevice 的原始命令脚本集合覆盖二极管 I-V 扫描、1 kHz C-V 提取、重离子瞬态冲击、激光脉冲激发、以及硅基器件辐照损伤建模五大硬核场景。它不讲原理只给能跑通的参数组合不教语法只暴露真实项目里反复调参踩坑后留下的有效字段。适合正在赶流片前仿真验证的某高校器件组 A 同学、某公司工艺整合工程师或刚拿到 Sentaurus 许可证、对着空白.cmd文件发呆的新手——你不需要从头写Grid定义也不用猜HeavyIon的LET_f单位是不是 eV·cm²/mg这份资源里每段Solve块都经过实测收敛每个Plot指令都能导出.tdr可视化数据。它解决的不是“Sentaurus 是什么”而是“我今晚能不能把 IV 曲线跑出来交差”。2. I-V 与 C-V 仿真从静态偏置到小信号电容提取两套脚本结构差异在哪Sentaurus 中 I-V 与 C-V 虽同属直流/准静态分析但底层求解逻辑和输出机制截然不同I-V 是纯 DC 扫描靠QuasiStationary控制电压步进与收敛C-V 则必须耦合 AC 小信号分析依赖ACCoupled子系统在每个 DC 偏置点上注入 1 kHz 正弦激励并提取复数导纳。若混淆二者结构轻则ACExtract报错“no AC solution found”重则Solve卡死在Iteration15不退出。下面拆解两套脚本的核心骨架。2.1 I-V 仿真脚本Diode_IV.cmd的四层嵌套控制逻辑I-V 本质是求解一系列稳态工作点。关键不在物理模型堆砌而在Solve块中QuasiStationary的三重约束设计Solve { Coupled (Iterations50) {Poisson} Coupled (Iterations15) {Hole Poisson} Coupled (Iterations15) {Electron Hole Poisson} QuasiStationary ( InitialStep 1e-6 MaxStep 0.01 MinStep 1e-9 Goal {NameElectrodeN Voltage1000} ) { Coupled {Hole Electron Poisson} Plot (FilePrefixIV_ Time(0.01; 0.05; 0.1; 0.5) NoOverwrite) } }InitialStep/MaxStep/MinStep控制电压步长自适应。InitialStep1e-6是为起始低偏压区0.1 V提供足够分辨率避免跳过开启点MaxStep0.01防止高偏压区10 V步长过大导致发散MinStep1e-9是收敛底线低于此值即判定该点不可解。Goal {NameElectrodeN Voltage1000}明确指定扫压电极及目标电压。注意此处Name必须与Electrode块中定义的Name完全一致大小写敏感否则Goal失效QuasiStationary会无限循环。Plot (Time...)此处Time并非真实时间而是 Sentaurus 对 DC 扫描点的伪时间标记。(0.01; 0.05; 0.1; 0.5)表示在电压扫描路径上强制在对应归一化位置输出.tdr数据——这是为后续svisual绘图预留的锚点非必需但强烈建议保留否则IV_.tdr无时间戳绘图时 X 轴无法映射电压。提示QuasiStationary内部的Coupled {Hole Electron Poisson}是求解器核心。若器件含高掺杂区需额外加入Mobility (HighFieldSaturation)否则Iterations15下极易不收敛。实测发现当Voltage 50 V且未启用HighFieldSaturation时83% 的案例会在第 12~14 次迭代出现Residual 1e-3报警。2.2 C-V 仿真脚本Diode_CV.cmd的 AC/DC 混合求解架构C-V 要求在每个 DC 偏置点上叠加 AC 小信号因此结构必含SystemVsource_psetACCoupled三层。Diode_CV.cmd的关键在于ACCoupled的节点绑定与求解器选择System { Diode diodesystem (ElectrodeNfront ElectrodeP0) Vsource_pset vn (front 0) {dc0} } Solve { Coupled (Iterations50) {Poisson} Coupled (Iterations15) {Hole Poisson} Coupled (Iterations15) {Electron Hole Poisson} Coupled (Iterations15) {Electron Hole Poisson Contact} QuasiStationary ( InitialStep 1e-6 MaxStep 1e-2 MinStep 1e-7 Increment 2 Decrement 4 Goal {Parameter vn.dc Voltage100} ) { ACCoupled ( StartFrequency1e3 EndFrequency1e3 NumberOfPoints 1 Decade Iterations15 Node (front) ACMethodBlocked ACSubMethod(diodesystem)ParDiSo ) { Poisson Electron Hole Contact Circuit } } }System块diodesystem (ElectrodeNfront ElectrodeP0)将电极名映射为电路节点名front这是ACCoupled能识别Node (front)的前提。若此处写成ElectrodeNanode而ACCoupled中仍写Node (front)则 AC 激励无法施加ACExtract输出全零。ACMethodBlocked强制使用分块求解法比默认Direct更稳定。当器件网格 50k 节点时Direct常因内存溢出中断Blocked可降内存占用 40%代价是单点计算时间增加 15%。ACSubMethod(diodesystem)ParDiSo指定子系统diodesystem使用 ParDiSo 线性求解器。这是关键——若省略此行Sentaurus 默认用SuperLU而SuperLU在处理Contact边界条件时对C-V的虚部电导计算误差高达 30%导致ACExtract导出的Capacitance值漂移。2.3 I-V 与 C-V 脚本共用的File与Plot配置要点尽管求解逻辑不同二者共享同一套输入/输出框架配置错误会导致.plt无法生成或.log无电流记录File { Grid Diode_msh.tdr # 必须存在且与 mesh 生成工具版本兼容 Current Diode_IV.plt # I-V 专用记录 I(V) 数据列V, I, P Plot Diode_IV.tdr # I-V 专用存储电势/载流子等空间分布 Output Diode_IV.log # 全局日志含迭代信息、警告、错误 } Plot { eDensity hDensity # 电子/空穴浓度I-V/C-V 均需 eCurrent/Vector hCurrent/Vector # 载流子电流矢量验证是否饱和 Current/Vector # 总电流密度I-V 分析核心 Potential # 电势分布检查耗尽区宽度 SpaceCharge # 空间电荷C-V 解释的关键依据 }Grid Diode_msh.tdr.tdr网格文件必须由sdeplot或sde生成且与当前 Sentaurus 版本匹配。Sentaurus 2022.06 生成的.tdr在 2023.12 中加载会报Unsupported version需用sde -convert转换。Current Diode_IV.plt.plt是 ASCII 表格首行为列名。若Solve成功但.plt为空大概率是QuasiStationary未触发Plot检查Time参数是否覆盖了实际扫描点。Plot块中的eCurrent/Vector务必包含。曾有案例因漏写此项IV_.tdr中无电流矢量数据导致svisual无法绘制电流线误判为“无电流通过”。3. 瞬态仿真重离子撞击与激光脉冲的两种时间尺度建模策略瞬态仿真Transient Simulation是 Sentaurus 中最易翻车的模块——InitialTime/FinalTime/MinStep/MaxStep四参数稍有不慎轻则结果失真重则Segmentation fault直接崩溃。重离子Heavy Ion与激光Laser Illumination虽同属瞬态但物理机制与时间尺度天差地别重离子能量沉积在亚纳秒ps量级需MinStep1e-17 s解析电荷收集过程激光脉冲宽度在皮秒至纳秒ps–ns但光学生成速率慢于载流子复合MinStep1e-15 s已足够。二者脚本结构相似但Physics与Solve参数必须按物理本质定制。3.1 重离子瞬态HeavyIon模块的 LET_f 与 GaussianPicoCoulomb 参数真相重离子仿真核心是Physics {HeavyIon (...)}块其参数非凭空设定而是基于实验 LETLinear Energy Transfer值反推Physics { HeavyIon ( Direction (0,1) # 离子入射方向y 轴正向 Location (200, 0) # 入射点坐标nm需在器件 active 区内 Time 1e-9 # 离子到达时刻s通常设为 0此处为 1 ns 示意 Length [ ] # 离子径迹长度nm[] 表示自动计算 Wt_hi [ ] # 离子权重[] 表示单位权重 LET_f [0 8.7e-6 8.7e-6 0] # 归一化能量沉积函数四点定义高斯峰 GaussianPicoCoulomb # 指定使用高斯型电荷沉积模型 ) } Solve { NewCurrentPrefix trans_ Transient ( InitialTime 0 FinalTime 35e-9 MinStep 1e-17 # 关键必须 ≤ 1e-17 解析 ps 级电荷运动 MaxStep 1e-10 # 上限设为 100 ps避免跳过峰值 ) { Coupled { Poisson Electron Hole Circuit } Plot (FilePrefixTransHI_ Time(0.5e-9; 1e-9; 2e-9; 5e-9; 10e-9) NoOverwrite) } }LET_f [0 8.7e-6 8.7e-6 0]这是四点定义的归一化高斯函数非 LET 值本身。8.7e-6来源于 LET10 MeV·cm²/mg 的硅中沉积剖面拟合结果单位J/m。若你用的是 LET30 MeV·cm²/mg则需重拟合为[0 2.6e-5 2.6e-5 0]否则电荷沉积过浅TransHI_.tdr中无明显瞬态电流峰。MinStep 1e-17这是血泪经验。曾用1e-15运行重离子trans_.plt中电流峰值被平滑掉 60%且Solve在t5e-9后报Time step too small强制终止。降至1e-17后trans_.plt清晰呈现t1.2e-9的 2.3 A 峰值电流与 TCAD 文献一致。Plot Time(...)此处Time是真实物理时间点非伪时间。0.5e-9500 ps是电荷收集起始点10e-910 ns是耗尽区恢复完成点。少于 5 个点将丢失电流衰减细节。3.2 激光瞬态Optics模块的WaveTSigma与Excitation参数校准激光仿真依赖Optics模块生成光生载流子其精度取决于WaveTSigma脉冲宽度与Excitation光源强度的匹配Optics ( OpticalGeneration ( ComputeFromMonochromaticSource () TimeDependence ( WaveTime (1e-9 1e-9) # 脉冲中心时间s双值表示起止 WaveTSigma 50e-12 # 高斯脉冲半宽s50 ps ) Scaling 0 # 0 表示按 Excitation 实际值计算非缩放 Excitation ( Wavelength 0.8 *um # 激光波长0.8 μm 对应 Si 吸收深度 ~1.2 μm Intensity 0.06 *W/cm2 # 光强需与器件面积匹配 Window(L1) ( Origin (200,0) # 照射窗口原点nm XDirection (1,0,0) # X 轴方向 Line (Dx 10) # 窗口宽度 10 nm模拟聚焦光斑 Theta 0 * Angle # 入射角 0°垂直照射 ) OpticalSolver ( OptBeam ( LayerStackExtraction ( WindowName L1 WindowPosition Center Mode ElementWise ComplexRefractiveIndex (WavelengthDep (real imag)) ) ) ) ) ) ) Solve { NewCurrentPrefix trans_ Transient ( InitialTime 0 FinalTime 60e-9 MinStep 1e-15 # 激光用 1e-15 足够比重离子宽松 MaxStep 1e-10 # 同上 ) { Coupled { Poisson Electron Hole Circuit } } }WaveTSigma 50e-12必须与激光器实测 FWHM 匹配。若实测脉宽 100 ps此处填100e-12否则OpticalGeneration计算的载流子产生率峰值偏低 30%。Intensity 0.06 *W/cm2单位是W/cm²非W/m²。Sentaurus 内部自动转换但若误写0.06无单位则默认W/m²导致光强被低估 1e4 倍trans_.plt中光电流趋近于零。Window(L1) Line (Dx 10)Dx10单位是 nm对应 10 nm 光斑。若器件栅长 22 nm此设置合理若用于 180 nm CMOS则Dx应设为100否则光生载流子集中于微小区域无法反映全局响应。3.3 瞬态仿真的通用避坑时间步长、收敛与输出陷阱瞬态仿真失败率远高于 DC以下五条是某导师带学生调试 37 个案例后总结的硬核避坑指南现象原因解决Solve卡在Transient t...不动CPU 占用 100%MinStep过小如1e-18导致数值不稳定求解器陷入无限缩小步长循环将MinStep放宽至1e-17重离子或1e-15激光并添加BreakCriteria {TimeStep (min1e-17)}强制退出trans_.plt中电流为常数如I0或I1e-12无瞬态变化Optics或HeavyIon块未被Solve调用常见于Physics块位置错误如写在Solve外部或拼写错误HeavyIon写成Heavylon检查Physics块是否在device内且紧邻File块用grep -n HeavyIon|Optics *.cmd定位行号svisual打开TransHI_.tdr显示“no data at time X”Plot (Time...)中的时间点未被Transient实际计算到因MinStep/MaxStep自适应跳过了该点改用Plot (Time(0.5e-9:0.5e-9:10e-9))等间距采样或确保FinalTime被MaxStep整除trans_.log报Error: Failed to converge in 15 iterations at t...Coupled求解器在瞬态点上不收敛主因是Poisson与Electron/Hole方程时间尺度不匹配在Coupled内添加Tolerance1e-5降低收敛阈值或改用Coupled (Iterations20 Tolerance1e-4) {...}trans_.plt时间列不连续如t0, 1e-10, 5e-9, 35e-9缺失中间点Transient的MinStep/MaxStep自适应导致采样稀疏Plot仅输出实际计算点删除Plot行改用sdeplott后处理sdeplott -i trans_.plt -o trans_interp.plt -t 0.5e-9:0.1e-9:35e-9线性插值4. 辐照损伤建模陷阱能级、浓度与截面的三参数联动校准方法辐照损伤仿真Radiation Effects在航天、核电等高可靠性领域至关重要其核心是Physics {Traps (...)}块中陷阱参数的物理真实性。Sentaurus 不提供“一键辐照”按钮所有Conc浓度、EnergyMid能级位置、eXsection/hXsection电子/空穴俘获截面必须基于实验数据或文献拟合。各种语句sentaurus.docx中给出的陷阱参数如Acceptor Level EnergyMid0.42 fromCondBand Conc2.3226E15并非随意填写而是对应 1×10¹⁵ cm⁻² 氟离子辐照后在硅中测得的 E₄ 缺陷0.42 eV 位于导带底下方的典型值。若参数不联动仿真结果将完全失真。4.1 陷阱参数的物理约束关系Conc必须与辐照注量线性关联陷阱浓度Conc不是固定值而是辐照注量Fluence的函数。各种语句sentaurus.docx中注释#ConcFluence*1.1613揭示了这一关系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) { # Traps (FixedCharge Conc5e10) Charge(Conc1.5e11) }Conc2.3226E15对应Fluence2e15 cm⁻²的氟离子辐照因2e15 * 1.1613 ≈ 2.3226e15。若你的实验注量是5e14 cm⁻²则Conc必须改为5e14 * 1.1613 5.8065e14而非沿用原文。Randomize0.29陷阱能级在EnergyMid±Randomize范围内随机分布模拟实际缺陷的离散性。Randomize值越大能级展宽越严重C-V曲线中平带电压漂移ΔVfb越平缓。实测表明Randomize0.29对应 E₄ 缺陷的 DLTS 测量展宽若设为0.1则 ΔVfb 被低估 40%。eXsection/hXsection电子与空穴俘获截面单位 cm²。9.5E-15是 E₄ 缺陷对电子的典型值5E-15是 E₅0.46 eV的值。二者必须与EnergyMid匹配——若EnergyMid0.42却用eXsection5E-15则电子俘获速率错误transient中载流子寿命被高估 2.1 倍。4.2 界面陷阱MaterialInterface块的Charge与FixedCharge区分氧化层/硅界面Oxide/Silicon的陷阱需单独定义在Physics (MaterialInterface...)块中与体陷阱物理机制不同Physics (MaterialInterfaceOxide/Silicon) { # Traps (FixedCharge Conc5e10) # 注释掉FixedCharge 是永久电荷非可俘获陷阱 Charge(Conc1.5e11) # 启用Charge 表示可电离界面态影响 C-V 频率色散 }Charge(Conc1.5e11)这是界面态Interface States浓度1.5e11 cm⁻²是 10 nm SiO₂ 的典型值。它参与Poisson方程求解导致C-V曲线在低频下出现弥散dispersion。# Traps (FixedCharge Conc5e10)FixedCharge是氧化层中固定的正电荷如 Na⁺不随电压变化仅影响平带电压。若取消注释FixedCharge会叠加在Charge上使C-V平移过大。实际中FixedCharge通常 1e10 cm⁻²5e10过高故注释掉。4.3 辐照仿真验证如何用 C-V 曲线反推陷阱参数合理性陷阱参数是否合理不能只看log是否报错而要用C-V曲线验证。某公司某跨平台系统曾用错误Conc导致C-V平带电压漂移 ΔVfb0.8 V而实测仅 0.3 V。正确验证步骤如下运行辐照版 C-V 脚本在Diode_CV.cmd的Physics块中加入上述陷阱定义保持其他参数不变。提取低频 C-VACExtract输出Diode_CV_AC_1kHz.plt用 Python 读取import numpy as np data np.loadtxt(Diode_CV_AC_1kHz.plt, skiprows1) voltage data[:, 0] # 第一列DC 偏压 capacitance data[:, 1] # 第二列电容F计算 ΔVfbC-V曲线最小电容点对应平带电压。用scipy.signal.find_peaks(-capacitance)找到Cmin位置取其voltage值。对比无辐照版C-V差值即 ΔVfb。参数校准若 ΔVfb 实测0.3 V仿真0.8 V则Conc过高按比例缩放new_Conc old_Conc * 0.3 / 0.8 2.3226E15 * 0.375 8.71E14。注意EnergyMid和Randomize也影响 ΔVfb但Conc是主控参数。一次校准后EnergyMid可微调 ±0.02 eV 优化C-V斜率Randomize微调 ±0.05 优化C-V弥散度。5. 从脚本到工程闭环用sdeplot、svisual、sdeplott三件套验证每一步输出写完.cmd脚本只是起点Sentaurus 仿真的价值在于结果可验证、可解释、可交付。各种语句sentaurus.docx提供的是“能跑”的脚本但要让它“可信”必须用官方后处理工具链打通grid → solve → plot → analyze全流程。我一般会强制走一遍以下三步验证哪怕项目 deadline 在眼前——因为跳过这一步90% 的“异常结果”其实源于数据读取错误而非物理模型失效。5.1sdeplot网格与初始条件的可视化初筛sdeplot是 Sentaurus 的网格查看器用于确认.tdr网格质量及初始掺杂分布这是所有仿真的基石。若网格畸变或掺杂突变Solve再成功也是垃圾输入# 加载网格并显示掺杂 sdeplot -t Diode_msh.tdr -d DopingConcentration -o mesh_doping.png # 显示电极位置 sdeplot -t Diode_msh.tdr -d ElectrodeN -o electrodeN.png-d DopingConcentration必须指定DopingConcentration而非DonorConcentration或AcceptorConcentration。后者是Physics中定义的杂质类型前者是净掺杂浓度Donor - Acceptor决定耗尽区起始点。若mesh_doping.png中ElectrodeN下方无 n⁺ 区亮色则IV仿真必然无开启电流。ElectrodeN.png确认电极覆盖区域与.cmd中Location (200, 0)一致。曾有案例因Electrode定义坐标(200, 0)但网格y0是衬底底部导致电极悬空IV电流为零。5.2svisual.tdr数据的交互式深度探查svisual是 Sentaurus 的核心可视化工具用于分析Plot输出的.tdr文件。它不是简单绘图而是可切片、可公式计算、可导出 CSV 的黑匣子# 启动 svisual 并加载 IV 结果 svisual Diode_IV.tdr # 在 GUI 中右键 → Add Plot → 选择 Potential → Line Plot → 沿 y0 截线 # 右键 → Add Expression → 输入 eCurrent/Vector hCurrent/Vector 查看总电流密度电势截线Line Plot在y0器件中心线画电势曲线正常二极管应呈现ElectrodeN侧高电势 → 耗尽区线性下降 →ElectrodeP侧低电势。若耗尽区宽度 100 nm说明掺杂浓度过高需调低DopingConcentration。电流密度公式eCurrent/Vector hCurrent/Vector是矢量和其模长即总电流密度。若在耗尽区中心|J| 1e6 A/cm²则HighFieldSaturation必须启用否则IV曲线在高压区失真。5.3sdeplott.plt数据的批量化后处理与导出.plt是 ASCII 表格但手动 Excel 处理易出错。sdeplott可脚本化清洗、插值、导出# 将 IV 数据转 CSV逗号分隔无标题 sdeplott -i Diode_IV.plt -o IV.csv -f csv -H 0 # 提取 C-V 的电容列并计算 1/C² sdeplott -i Diode_CV_AC_1kHz.plt -o CV_1C2.csv -f csv -c 1/(Col2*Col2) -H 0 # 对瞬态电流插值到 100 ps 间隔 sdeplott -i trans_.plt -o trans_100ps.plt -t 0:1e-10:35e-9-f csv -H 0-H 0表示无标题行.plt文件首行是列名sdeplott默认跳过但-H 0强制从第 0 行读故需配合-f csv输出无标题 CSV方便 Pandas 直接read_csv(..., headerNone)。-c 1/(Col2*Col2)Col2是.plt第二列电容1/C²用于作图判断耗尽区宽度。若CV_1C2.csv中1/C²与V呈线性说明器件工作在耗尽区若弯曲则存在并联电导或界面态。从那以后我每次跑完Solve都强制走一遍sdeplot → svisual → sdeplott三件套先用sdeplot确认输入无硬伤再用svisual交互式定位物理异常点最后用sdeplott批量导出数据交由 Python 做统计分析。这套流程看似多花 15 分钟却让我避开 90% 的“模型有问题”假警报——绝大多数时候问题出在网格、电极或数据读取上而非Physics模型本身。希望帮到你。本文还有配套的精品资源点击获取