Sentaurus sdevice命令核心语句解析:从I-V到辐照损伤仿真 简介这是一份关于Sentaurus TCAD仿真应用的技术文档面向微电子、纳米电子与光电子器件设计人员重点讲解电流电压曲线、电容电压曲线、辐照损伤及重粒子入射、瞬态仿真等典型工况。文件总数仅1个格式为Worddocx压缩包大小16KB轻量易用方便按需查阅。目前已有2027人学习。文中结合具体命令脚本展示了电压扫描、二极管电容仿真、重离子撞击以及激光照射瞬态模拟的物理模型与参数配置方法涵盖网格与电极定义、输出控制、交流小信号分析、载流子迁移率、SRH复合、俄歇复合、雪崩击穿和带间隧穿等关键模型并涉及LET线性能量转移、高斯脉冲时间分布、求解器参数、瞬态时间步进与输出图设置等细节。无论是初学者搭建首个仿真框架还是工程师排查收敛问题这份文档都能提供直观的参考。1. 一句话说清 Sentaurus 语句它到底在管哪几类仿真做半导体器件仿真的同学大概率都翻过 Sentaurus 的 .cmd 文件没有缩进、没有分号全是块状语句堆在一起第一次看很容易直接放弃。这份资料集合了 I-V、C-V、重离子撞击、激光照射、辐照损伤五类仿真语句覆盖了二极管从静态特性到动态失效的完整评估路径。它不是概念讲解而是把能跑的命令骨架直接摆在你面前。核心价值在于搞清 File、Physics、Math、Solve 四个块的配合关系你就能把任意一个 sdevice 命令文件拆开重装。适合正在写毕业设计或者刚接触器件仿真、需要快速上手的工程师。2. I-V 仿真语句拆解File、Physics、Solve 三段式与关键参数2.1 File 与 Electrode先挂网格文件和输出“篮子”一份 sdevice 命令文件的执行顺序是读网格、设物理模型、定求解策略、输出结果。第一步就是 File 块。下面是典型的二极管 I-V 仿真头段File { Grid Diode_msh.tdr # 网格文件由结构编辑器 SDE 生成 Current Diode_IV.plt # 电流电压数据文本表格格式 Plot Diode_IV.tdr # 保存每个输出点的电场、载流子分布 Output Diode_IV.log # 运行日志报错和迭代信息都在这 } Electrode { { Name ElectrodeN Voltage 0.0 } }这里要理解四个文件的分工Grid 是输入Current 和 Plot 是输出Output 是日志。Current 后缀的 .plt 文件是纯文本每一行对应一个偏置点第一行是列名后面可以直接用脚本画图Plot 后缀的 .tdr 文件则是二进制结果文件需要用 SVisual 打开看二维分布。Electrode 块里只写了 N 极P 极一般在网格文件里就已经固化了。Voltage 0.0 是初始电压真正扫描电压在后面的 Solve 里控制。新手容易忽略的一点是电极名字必须和网格文件里的电极名字完全一致大小写都不能差否则会直接报“electrode not found”。2.2 Physics 物理模型二极管的迁移率、复合与雪崩物理模型是决定仿真结果可信度的关键。以下这段对应一个功率二极管在高温、大电流、高反偏场景下的典型配置Physics { AreaFactor 1 Temperature 300 Mobility ( DopingDependence HighFieldSaturation Enormal CarrierCarrierScattering ) Recombination ( SRH (DopingDependence) Auger (withGeneration) Avalanche (UniBo Eparallel) Band2Band (Hurkx) EffectiveIntrinsicDensity (OldSlotboom) ) }先看 AreaFactor这是二维仿真里的“深度因子”。二维网格默认代表单位厚度AreaFactor 就是厚度方向的实际尺寸单位是微米。如果你仿真的是一个 1 微米宽的条形器件AreaFactor 就设成 1如果网格只画了一个截面、实际器件宽度是 100 微米那就用 100否则电流数值会差两个数量级。Mobility 里四个模型的选择逻辑是这样DopingDependence 是掺杂浓度对迁移率的修正高掺杂区杂质散射增强、迁移率下降这是所有器件仿真都要开的HighFieldSaturation 是速度饱和效应当电场超过某个临界值后载流子漂移速度不再线性增加大电流下必须开Enormal 考虑垂直于载流子流动方向电场的影响在 MOS 结构里更明显二极管里开着基本没坏处CarrierCarrierScattering 是载流子间散射适合强注入场景。如果需要对电子和空穴分别指定可以写成 eHighFieldSaturation 和 hHighFieldSaturation不过对大多数二极管场景统一的 HighFieldSaturation 就够用了。Recombination 是重头戏。SRH (DopingDependence) 对应 Shockley-Read-Hall 复合掺杂依赖考虑了寿命随杂质浓度的变化这是反向漏电的基础模型Auger (withGeneration) 是俄歇复合大电流注入时载流子浓度极高俄歇复合会明显限制电流增益。Avalanche (UniBo Eparallel) 是碰撞电离模型UniBo 是博洛尼亚大学提出的碰撞电离模型对功率器件的雪崩击穿模拟很熟悉Eparallel 表示电离率由平行于电流方向的电场分量决定对纵向二极管的击穿电压计算更贴合物理实际。Band2Band (Hurkx) 是带间隧穿模型高掺杂 PN 结在反偏时隧穿电流不能忽略。EffectiveIntrinsicDensity (OldSlotboom) 是 OldSlotboom 能带变窄模型重掺杂区有效本征载流子浓度会上升间接改变扩散电势和电容特性。这些模型不是越多越好。每开一个模型雅可比矩阵的复杂度就上一个台阶收敛难度跟着涨。我的习惯是先只开 SRH 和 Auger 跑通基础电流确认网格和边界没问题再单独加 Avalanche 验证击穿电压。2.3 Solve 求解序列从泊松方程到千伏扫描物理模型定义完毕求解策略是最后一步。这部分直接影响能不能收敛、要跑多久Math { Number_of_threads 4 ExtrapolateDerivatives AvalDerivatives RelErrControl Iterations 15 Notdamped 60 BreakCriteria { Current (Contact ElectrodeN maxval 1e-8) } Plot { eDensity hDensity eCurrent/Vector hCurrent/Vector Current/Vector Potential ElectricField/Vector SpaceCharge eMobility hMobility eVelocity hVelocity DopingConcentration DonorConcentration AcceptorConcentration SRHRecombination AugerRecombination AvalancheGeneration eAvalanche hAvalanche TotalRecombination } } Solve { Coupled (Iterations 50) { Poisson } Coupled (Iterations 15) { Hole Poisson } Coupled (Iterations 15) { Electron Hole Poisson } QuasiStationary ( InitialStep 1e-6 MaxStep 0.01 MinStep 1e-9 Goal { Name ElectrodeN Voltage 1000 } Plot { Range (0 1) Intervals 2 } ) { Coupled { Hole Electron Poisson } Plot ( FilePrefix IV_ Time (0.01; 0.05; 0.1; 0.5) NoOverwrite ) } }Math 块控制的是求解器底层行为。Number_of_threads 4 是并行线程数如果服务器有许可限制这里设超过许可数量会报错。ExtrapolateDerivatives 是让求解器用前一步的导数外推做初值能明显加快收敛AvalDerivatives 是专门针对碰撞电离模型开的把雪崩产生项对雅可比矩阵的贡献算进去不加它的话高反偏下很容易不收敛。Iterations 是牛顿迭代的最大步数Notdamped 是允许的非阻尼迭代步数这两个值在击穿点附近要保持在 15 / 60 以上太小了会在强非线性区域丢失精度。BreakCriteria 是个保护开关当流过 ElectrodeN 的电流超过 1e-8 A 时强制中止扫描。这个设计很实用比如器件已经彻底击穿、电流失控继续迭代只会浪费时间直接跳出去看结果更高效。Solve 块的顺序有讲究。先单独解 Poisson 方程把电势分布建立起来然后加 Hole 方程让空穴浓度分布合理化最后把 Electron、Hole、Poisson 三个方程耦合在一起解。这个递进顺序不是玄学——一开始就把三个方程全耦合初始猜测离解太远牛顿迭代很容易发散。先单解 Poisson 相当于给后续耦合一个靠谱的初值。QuasiStationary 就是电压扫描。InitialStep 1e-6 是第一步电压增量MaxStep 0.01 是单步最大电压变化MinStep 1e-9 是最小步长。这个配置的意思是从 0V 出发每步最多加 0.01V最少加 1e-9V目标是加到 1000V。在击穿点附近电流迅速上升Newton 迭代失败时会自动减步长重试最小步长就是兜底的。Plot { Range(0 1) } 是输出范围从扫描起点到终点的整条 I-V 曲线Intervals2 控制曲线数据的加密程度后面那个 Time(0.01; 0.05; 0.1; 0.5) 是额外的二维分布输出点分别对应扫描到 0.01V、0.05V、0.1V、0.5V 时保存电场分布文件用于观察中间状态。3. C-V 仿真语句混合模式 AC 耦合的正确接法3.1 Device 与 System器件实体和电路节点的关系C-V 曲线没法在静态 I-V 仿真里直接得到必须通过小信号 AC 分析。Sentaurus 里做这事用的是混合模式。先看前半段device Diode { Electrode { ... } File { Grid Diode_msh.tdr Current Diode_CV_1kHz.plt Plot Diode_CV_1kHz.tdr } Physics { # 与 I-V 仿真共用同一套模型这里省略展开 } } #End device Diode System { Diode diodesystem (ElectrodeNfront ElectrodeP0) Vsource_pset vn (front 0) { dc0 } } File { Output Diode_CV_1kHz.log ACExtract Diode_CV_AC_1kHz.plt }混合模式的理解关键是 device 块和 System 块的划分。device 里定义的是器件本身的网格、物理模型、输出文件System 里把这个器件实例化成电路里的一个元件和外部电压源、电阻、电容等连成网表。Vsource_pset vn (front 0) { dc0 }这一行值得细读。Vsource_pset 是参数化电压源vn 是实例名front 是正端节点0 是负端dc0 表示直流偏置初始为 0V。Diode diodesystem (ElectrodeNfront ElectrodeP0)是把二极管器件的 ElectrodeN 这个电极映射到电路节点 frontElectrodeP 接到地。这个映射关系写反了电容曲线符号会整个颠倒。ACExtract 是电容仿真特定的输出文件后面所有偏压点的小信号复数电流都会存到这里电容曲线就是从它里面提取的。3.2 ACCoupled 的设置频率、Blocked 方法与数值细节C-V 仿真的求解段和 I-V 很相似但多了一个 ACCoupled 块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 ( StartFrequency 1e3 EndFrequency 1e3 NumberOfPoints 1 DecadeIterations 15 Node (front) ACMethod Blocked ACSubMethod(diodesystem) ParDiSo ) { Poisson Electron Hole Circuit Contact } } }和 I-V 求解相比Coupled 方程里多了 Contact原因很好理解——现在有外部电路节点了电压源的电压是电路变量必须参与耦合求解。QuasiStationary 的 Goal 写得和 I-V 不一样Parameter vn.dc而不是具体的电极名。这就是混合模式的核心差异扫描对象是外部电压源 vn 的直流电压从 0V 扫到 100V。Increment2 和 Decrement4 是步长的自动调整策略前者在收敛顺利时把步长乘 2后者在收敛失败时把步长除 4。这个配置适合曲线变化平缓的 C-V 扫描步长可以大胆缩放。ACCoupled 块是 C-V 仿真的核心。StartFrequency 和 EndFrequency 都设成 1e3NumberOfPoints1意思是只做单频点、不需要扫频。如果想看电容随频率的变化就把 EndFrequency 设大、NumberOfPoints 设多就能得到 C-f 曲线。Node(front) 指定了小信号激励加在哪个节点上必须是 System 里定义过的节点名。ACMethodBlocked 是求解策略选项。Blocked 表示直流偏置和小信号 AC 分开求解每个电压点先算直流工作点再在这个工作点线性化求解小信号响应。另一种方法叫 Global把交流和直流方程合在一起同时解精度更高但内存消耗和收敛难度都大不少。对于单个二极管的 C-VBlocked 足够。ACSubMethod(diodesystem)ParDiSo 是指定该系统在 AC 求解时用的线性代数求解器ParDiSo 是并行稀疏直接求解器稳健性比迭代法好。3.3 电容提取从复数导纳到 C-V 曲线ACCoupled 跑完ACExtract 文件里存的是各偏压点的小信号复数电流。电容不是直接给出的需要做一步换算。小信号激励下某个节点的导纳 Y 等于交流电流除以交流电压C Im(Y) / (2πf)其中 Im(Y) 是导纳的虚部f 是 AC 频率单位是 Hz。Sentaurus 的小信号电压幅度在 AC 分析中通常默认归一化所以可以直接从复数电流虚部推电容。这里有个单位坑很多人在脚本里直接用2*3.14*f算频率写成 1000 就以为是 1kHz其实 Sentaurus 里频率单位是 Hz1e3 才是 1kHz。如果 f 用了 kHz 单位电容会差 1000 倍。另外提取到的 Y 是端口导纳对二极管来说包含电导部分和电容部分只有虚部才是电容贡献。如果发现电容数值偏大多半是导纳实部被混进去了检查一下复数的实部和虚部有没有分离干净。4. 瞬态仿真语句重离子与激光在建模上的差异4.1 HeavyIon 模型位置、方向与 LET 参数单粒子效应仿真是器件抗辐照评估的常见手段。Sentaurus 里的 HeavyIon 模型在 Physics 块中声明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 ) }Direction (0,1) 表示离子沿 y 轴方向入射也就是垂直于器件表面。Location (200, 0) 是入射轨迹在仿真坐标里的打击位置单位跟网格文件一致。Time 1e-9 是撞击发生时刻——仿真从 0 开始前 1ns 是器件处于静态偏置到 1ns 时刻突然注入载流子。Length 和 Wt_hi 都留空表示用默认值前者是离子轨迹长度后者是径向电荷分布的高斯特征宽度。LET_f 是线性能量转移数组[0 8.7e-6 8.7e-6 0]的意思是轨迹上不同深度处的 LET 值两端是 0 表示离子在进入和离开器件时能量沉积变少中间均匀段是最大沉积区。GaussianPicoCoulomb 是指定电荷沉积分布形式为高斯型单位用皮库仑。这个模型的本质是在指定位置、指定时刻按 LET 值换算成电子空穴对密度注入到网格里。所以网格密度很关键如果撞击轨迹附近的网格尺寸大于电荷柱的径向特征宽度注入的载流子就会被“抹平”瞬态电流峰值会被严重低估。常见做法是撞击位置周围网格加密到 10nm 量级。4.2 激光照射Optics 块与时间波形设置激光照射模拟解决的是另一个问题光生载流子的空间分布不是沿一条细轨迹而是沿光路指数衰减。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 ) OpticalSolver ( OptBeam ( LayerStackExtraction ( WindowName L1 WindowPosition Center Mode ElementWise ComplexRefractiveIndex (WavelengthDep (real imag)) ) ) ) ) ) )WaveTime (1e-9 1e-9) 表示激光脉冲的中心时刻在 1ns 附近WaveTSigma 50e-12 是脉冲宽度也就是高斯时间分布的标准差。这两个值决定了载流子产生率随时间的变化曲线。Wavelength 0.8 * um 是激光波长。0.8μm 在硅里对应的吸收深度大约是 10μm 量级适合模拟体硅器件的深部光生载流子。如果想模拟表面效应用更短的波长比如 0.4μm吸收深度只有零点几微米。Intensity 是光功率密度单位是 W/cm2这个值直接决定光生载流子浓度。Window(L1) 定义的是入射光斑窗口。Origin 是窗口位置XDirection (1,0,0) 是光束横向扫描方向Line (Dx 10) 表示光在窗口内被离散成间距 10μm 的光线束Theta 0 是入射角相对 y 轴为 0 度也就是垂直入射。OpticalSolver 里用 OptBeam 做光束传播计算LayerStackExtraction 会根据器件各层材料的复折射率自动计算光学吸收分布。复折射率的实部决定折射虚部决定吸收波长相关就单独指定。和重离子模型相比重离子是“打一个点、放出大量载流子、瞬间耗尽”激光是“照一个区域、持续产生载流子、受脉冲宽度控制”。两者的时间尺度和空间尺度不同对应的瞬态求解策略也要跟着调。对比项重离子激光照射载流子产生机制高能粒子电离光吸收空间分布沿轨迹的窄柱状沿光路的体分布时间特性撞击瞬间近似 δ 脉冲高斯脉冲标准差 50ps关键参数LET_f、Location、TimeWavelength、Intensity、WaveTSigma网格要求轨迹附近需加密光路方向建议均匀网格4.3 Transient 解算时间步长跨 7 个数量级的控制瞬态响应的求解块写法如下Solve { NewCurrentPrefix trans_ Transient ( InitialTime 0 FinalTime 35e-9 MinStep 1e-17 MaxStep 1e-10 ) { Coupled { Poisson Electron Hole Circuit } Plot ( FilePrefixTransHI_ Time(0.5e-9; 1e-9; 2e-9; 5e-9; 10e-9) NoOverwrite ) } }这里的 MinStep 1e-17 秒是很多新手会看懵的地方。为什么需要这么小的步长因为撞击瞬间载流子浓度在几个纳米范围内急剧变化电荷梯度极大求解器必须迈出极小步才能稳住牛顿迭代。MaxStep 1e-10 秒是上限整个仿真时长 35ns意味着至少要跑 350 步。实际运行中求解器会自动在撞击瞬间把步长压到 1e-14 以下在载流子扩散稳定后再逐步放大这个自适应过程完全由 MinStep 和 MaxStep 两个边界控制。Plot 里的 Time 列表是用分号分隔的指定在 0.5ns、1ns、2ns、5ns、10ns 这些时刻额外保存二维分布文件用于观察载流子扩散过程。NoOverwrite 防止同名文件被覆盖每个时间点独立存盘。激光照射的瞬态求解和重离子几乎一样但 FinalTime 通常要放到 60ns 甚至更长因为激光产生的载流子持续到脉冲结束后若干纳秒复合过程比单粒子慢。MaxStep 可以适当放宽到 5e-10毕竟激光的空间分布比离子轨迹平滑得多。5. 辐照损伤陷阱模型与常见问题排查5.1 辐照损伤参数体陷阱与界面电荷的建模辐照损伤对器件的影响有两类体内产生位移损伤缺陷界面产生电荷积累。使用体和界面的参数来表征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) }Traps 块里定义了三种辐照感生缺陷能级。Acceptor 型陷阱用fromCondBand表示能级从导带底向下测量EnergyMid0.42 就是导带底下方 0.42eV 处的受主能级。Donor 型陷阱用fromValBand表示从价带顶向上测EnergyMid0.36 是价带顶上方 0.36eV 处的施主能级。这个方向关系经常搞反——受主能级靠近导带施主能级靠近价带是辐照缺陷的标准分布方式写反了陷阱根本不产生复合中心效果。Conc 是陷阱浓度单位是 cm⁻³。2.3E15 这个量级对应的损伤剂量大约是兆拉德级比典型掺杂浓度低一个数量级左右是通过位移损伤剂量经验关系换算出来的。注释里#ConcFluence*1.1613就是换算公式——粒子注量乘以经验系数得到各能级陷阱浓度。Randomize 是空间随机分布参数模拟辐照损伤的非均匀性。eXsection 和 hXsection 是电子、空穴俘获截面单位 cm²比值决定了该陷阱对哪种载流子更敏感。第二个 Physics 块作用在 Oxide/Silicon 界面Charge(Conc1.5e11) 是界面固定电荷面密度单位 cm⁻²。辐照在氧化层里产生正电荷积累会影响 MOS 结构的阈值电压和表面复合速度。做二极管辐照模拟时忽略了界面电荷反向漏电可能会偏低一到两个数量级。5.2 避坑记录收敛失败和结果异常的 4 个案例案例 1I-V 扫描在击穿点附近不收敛现象QuasiStationary 扫到某个电压点后报错日志最后一行写着Matrix is singular或者Newton iterations did not converge电压怎么都上不去。原因该偏置点的电场强度已接近临界击穿条件Avalanche 产生项让雅可比矩阵条件数急剧恶化而 MaxStep 还是 0.01V步长太大直接越过收敛域。解决把 MaxStep 降到 5e-3 或 1e-3同时确认 Math 块里开了 AvalDerivatives。如果降到 1e-4 还不行检查网格在结边缘的尺寸通常碰撞电离集中区需要至少 3 到 5 层加密网格。案例 2重离子撞击后电流瞬间飞掉现象瞬态仿真在撞击时刻附近电流跳到 1e30 A 量级随后求解中止。原因MinStep 设置过大撞击瞬间的载流子浓度梯度没被分辨出来或者撞击轨迹附近网格太粗电荷柱的初始分布被平均到过大体积。解决MinStep 从 1e-17 开始MaxStep 设置在 1e-10 以下。同时把撞击位置附近的网格加密到 10nm 量级。一个判断技巧撞击发生时刻前后各输出一个分布文件如果发现载流子浓度峰值比理论值低一个数量级就是网格不够细。案例 3C-V 曲线出现负电容或锯齿现象提取出的电容曲线在某个偏压区间变成负值或者来回震荡。原因AC 频率太高耗尽层的建立和消失跟不上小信号激励测出来的不是结电容而是几何电容或者是在混合模式求解里漏掉了 Contact 方程电路节点电压没有参与小信号耦合。解决把频率降到 1kHz 到 10kHz 区间验证低频下的电容值和耗尽层宽度公式C ≈ εA/W是否在一个量级。求解方程列表里确认有ContactACCoupled 的子块里要有Circuit。案例 4Traps 加了跟没加一样现象辐照损伤模拟后反向漏电和击穿电压几乎没有变化。原因陷阱能级方向写反了。受主型陷阱用了fromValBand实际变成了价带附近的受主对复合中心贡献很小另一种可能是陷阱浓度比背景掺杂低两个数量级以上根本看不出效果。解决受主型能级统一用fromCondBand施主型用fromValBand。浓度上先设一个高于经验的试探值跑通后观察漏电变化趋势再按照注量换算公式修正回物理值。5.3 参数调试顺序从最小物理模型开始逐层加辐照模拟是所有仿真类型里最依赖前序步骤的。我一般会按这个顺序来调试先把 Physics 体清空只保留最基本的漂移扩散方程和 SRH 复合跑通 0 到 100V 的反向扫描确认网格和边界没问题。然后加 Auger 和 Band2Band观察高场下漏电是否合理。再开 Avalanche 扫到击穿对照击穿电压的解析估算值验证电场分布。最后才加 Traps 和界面电荷对比加辐照前后的曲线差异。每加一个模型就把能跑的版本存一份。后面改参数改乱了回退到上一版重新来比从头排查快得多。6. 验证仿真结果的技巧plt 文件该看什么仿真跑通只是第一步结果合不合理才是真正考验。plt 文件是纯文本表格第一行是列名后续每行是数据。用脚本直接读最方便import matplotlib.pyplot as plt import numpy as np data [] with open(Diode_IV.plt) as f: for line in f: line line.strip() if line.startswith(#) or not line: continue parts line.split() if len(parts) 2: continue data.append([float(x) for x in parts]) data np.array(data) voltage data[:, 0] current data[:, 1] plt.semilogy(voltage, np.abs(current) 1e-14) plt.xlabel(Voltage (V)) plt.ylabel(|Current| (A)) plt.grid(True) plt.savefig(iv_curve.png)这个脚本有几个细节。跳过#开头的行是因为 plt 文件头部有注释np.abs(current) 1e-14是防止半对数坐标里出现零值反向漏电在零点附近会变化几个数量级不加保护会画不出线。更稳妥的做法是直接用列名索引因为不同版本的 Sentaurus 输出的列顺序可能有差异。验证 C-V 曲线时有一个很实用的技巧画1/C²对电压的曲线。对突变结来说1/C²和偏压是严格线性关系斜率跟掺杂浓度直接相关。如果画出来不是直线说明耗尽区里掺杂分布不均匀或者 AC 频率没选对。最后一个习惯是每次改动模型前先跑一遍基线仿真保存原始曲线。然后新模型和基线曲线叠在一起对比差异在哪个电压区间出现就能定位是哪个物理模型引起的。这个习惯帮我解决过不少“调参调半天结果更奇怪”的混乱局面。从那以后我每次拿到新的 .cmd 文件都先剥离到只剩 Poisson再把物理模型一个一个加回来每加一步都强制保存对照曲线这样调参心里才有底。希望这些实测中的经验能帮到你。本文还有配套的精品资源点击获取