news 2026/10/15 14:49:51

Sentaurus sdevice命令核心语句解析:从I-V到辐照损伤仿真

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Sentaurus sdevice命令核心语句解析:从I-V到辐照损伤仿真

简介:这是一份关于Sentaurus TCAD仿真应用的技术文档,面向微电子、纳米电子与光电子器件设计人员,重点讲解电流电压曲线、电容电压曲线、辐照损伤及重粒子入射、瞬态仿真等典型工况。文件总数仅1个,格式为Word(docx),压缩包大小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 曲线,Intervals=2 控制曲线数据的加密程度;后面那个 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 ("ElectrodeN"=front "ElectrodeP"=0) Vsource_pset vn (front 0) { dc=0 } } File { Output = "Diode_CV_1kHz.log" ACExtract = "Diode_CV_AC_1kHz.plt" }

混合模式的理解关键是 device 块和 System 块的划分。device 里定义的是器件本身的网格、物理模型、输出文件;System 里把这个器件实例化成电路里的一个元件,和外部电压源、电阻、电容等连成网表。

Vsource_pset vn (front 0) { dc=0 }这一行值得细读。Vsource_pset 是参数化电压源,vn 是实例名,front 是正端节点,0 是负端,dc=0 表示直流偏置初始为 0V。Diode diodesystem ("ElectrodeN"=front "ElectrodeP"=0)是把二极管器件的 ElectrodeN 这个电极映射到电路节点 front,ElectrodeP 接到地。这个映射关系写反了,电容曲线符号会整个颠倒。

ACExtract 是电容仿真特定的输出文件,后面所有偏压点的小信号复数电流都会存到这里,电容曲线就是从它里面提取的。

3.2 ACCoupled 的设置:频率、Blocked 方法与数值细节

C-V 仿真的求解段和 I-V 很相似,但多了一个 ACCoupled 块:

Solve { Coupled (Iterations=50) { Poisson } Coupled (Iterations=15) { Hole Poisson } Coupled (Iterations=15) { Electron Hole Poisson } Coupled (Iterations=15) { Electron Hole Poisson Contact } QuasiStationary ( InitialStep = 1e-6 MaxStep = 1e-2 MinStep = 1e-7 Increment = 2 Decrement = 4 Goal { Parameter = vn.dc Voltage=100 } ) { 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。Increment=2 和 Decrement=4 是步长的自动调整策略,前者在收敛顺利时把步长乘 2,后者在收敛失败时把步长除 4。这个配置适合曲线变化平缓的 C-V 扫描,步长可以大胆缩放。

ACCoupled 块是 C-V 仿真的核心。StartFrequency 和 EndFrequency 都设成 1e3,NumberOfPoints=1,意思是只做单频点、不需要扫频。如果想看电容随频率的变化,就把 EndFrequency 设大、NumberOfPoints 设多,就能得到 C-f 曲线。Node(front) 指定了小信号激励加在哪个节点上,必须是 System 里定义过的节点名。

ACMethod=Blocked 是求解策略选项。Blocked 表示直流偏置和小信号 AC 分开求解:每个电压点先算直流工作点,再在这个工作点线性化求解小信号响应。另一种方法叫 Global,把交流和直流方程合在一起同时解,精度更高但内存消耗和收敛难度都大不少。对于单个二极管的 C-V,Blocked 足够。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 里频率单位是 Hz,1e3 才是 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 ( FilePrefix="TransHI_" 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 (material="Silicon") { Traps ( (Acceptor Level EnergyMid=0.42 fromCondBand Conc=2.3226E15 Randomize=0.29 eXsection=9.5E-15 hXsection=9.5E-14) (Acceptor Level EnergyMid=0.46 fromCondBand Conc=1.8E15 Randomize=0.23 eXsection=5E-15 hXsection=5E-14) (Donor Level EnergyMid=0.36 fromValBand Conc=1.8E15 Randomize=0.31 eXsection=3.23E-13 hXsection=3.23E-14) ) } Physics (MaterialInterface="Oxide/Silicon") { Charge(Conc=1.5e11) }

Traps 块里定义了三种辐照感生缺陷能级。Acceptor 型陷阱用fromCondBand表示能级从导带底向下测量,EnergyMid=0.42 就是导带底下方 0.42eV 处的受主能级。Donor 型陷阱用fromValBand表示从价带顶向上测,EnergyMid=0.36 是价带顶上方 0.36eV 处的施主能级。这个方向关系经常搞反——受主能级靠近导带,施主能级靠近价带,是辐照缺陷的标准分布方式,写反了陷阱根本不产生复合中心效果。

Conc 是陷阱浓度,单位是 cm⁻³。2.3E15 这个量级对应的损伤剂量大约是兆拉德级,比典型掺杂浓度低一个数量级左右,是通过位移损伤剂量经验关系换算出来的。注释里#Conc=Fluence*1.1613就是换算公式——粒子注量乘以经验系数得到各能级陷阱浓度。Randomize 是空间随机分布参数,模拟辐照损伤的非均匀性。eXsection 和 hXsection 是电子、空穴俘获截面,单位 cm²,比值决定了该陷阱对哪种载流子更敏感。

第二个 Physics 块作用在 Oxide/Silicon 界面,Charge(Conc=1.5e11) 是界面固定电荷面密度,单位 cm⁻²。辐照在氧化层里产生正电荷积累,会影响 MOS 结构的阈值电压和表面复合速度。做二极管辐照模拟时,忽略了界面电荷,反向漏电可能会偏低一到两个数量级。

5.2 避坑记录:收敛失败和结果异常的 4 个案例

案例 1:I-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 量级。一个判断技巧:撞击发生时刻前后各输出一个分布文件,如果发现载流子浓度峰值比理论值低一个数量级,就是网格不够细。

案例 3:C-V 曲线出现负电容或锯齿

现象:提取出的电容曲线在某个偏压区间变成负值,或者来回震荡。

原因:AC 频率太高,耗尽层的建立和消失跟不上小信号激励,测出来的不是结电容而是几何电容;或者是在混合模式求解里漏掉了 Contact 方程,电路节点电压没有参与小信号耦合。

解决:把频率降到 1kHz 到 10kHz 区间,验证低频下的电容值和耗尽层宽度公式C ≈ εA/W是否在一个量级。求解方程列表里确认有Contact,ACCoupled 的子块里要有Circuit。

案例 4:Traps 加了跟没加一样

现象:辐照损伤模拟后,反向漏电和击穿电压几乎没有变化。

原因:陷阱能级方向写反了。受主型陷阱用了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,再把物理模型一个一个加回来,每加一步都强制保存对照曲线,这样调参心里才有底。希望这些实测中的经验能帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 14:48:24

二维Stokes有限元MATLAB实现:P2P1混合元与鞍点系统详解

简介&#xff1a;一套基于Matlab的二维Stokes问题有限元求解程序&#xff0c;面向学习偏微分方程数值解及流体力学仿真的初学者和科研人员&#xff0c;也适合数值计算课程备课参考。压缩包共135个文件&#xff0c;以133个m脚本和2个txt说明文件为主&#xff0c;整体仅93KB&…

作者头像 李华
网站建设 2026/10/15 14:47:42

Windows 上自动签证书的 ACME 客户端:win-acme 详解与实战

简介&#xff1a;win-acme.v2.2.9.1701.x64.pluggable.zip 是一套运行于 Windows 的免费 SSL 证书自动化获取与部署工具&#xff0c;适合 IIS、nginx 等 Web 服务器场景&#xff0c;主要面向网站管理员、运维人员以及希望零成本完成证书管理的用户&#xff0c;同时避免了官方下…

作者头像 李华
网站建设 2026/10/15 14:47:30

HoRain云--Java CompletableFuture 实战:把异步流程写清楚、测明白、收得住

在接口聚合、批量查询和后台任务中&#xff0c;异步代码可以减少线程等待带来的浪费。但异步并不等于更快&#xff0c;也不等于把每一步都包进 supplyAsync。真正可靠的异步程序&#xff0c;需要先区分串行依赖与并行依赖&#xff0c;再明确线程池、超时、异常和结果收集策略。…

作者头像 李华
网站建设 2026/10/15 14:47:27

STM32移植FreeMODBUS从机:HAL库下RTU通信栈深度集成指南

简介&#xff1a;本资源是一份面向嵌入式初学者与中级开发者的STM32 FreeModbus从机移植实战工程&#xff0c;聚焦工业通信协议落地&#xff0c;解决MODBUS RTU从机在STM32F103ZET6平台上的完整实现难题。资源包共1013个文件&#xff0c;以601个C源码和288个头文件为核心&#…

作者头像 李华
网站建设 2026/10/15 14:46:50

Java设计模式分析指南:用PMAT把源码变成模式地图

简介&#xff1a;针对Java Garbage Collector&#xff08;GC&#xff09;性能诊断的IBM Pattern Modeling and Analysis Tool for Java&#xff08;简称GA&#xff09;专业工具包&#xff0c;由IBM开发&#xff0c;面向需要深入理解JVM内存管理机制的Java开发者、性能调优工程师…

作者头像 李华
网站建设 2026/10/15 14:46:00

Django开发企业人事管理系统实战与优化

1. 项目背景与核心价值最近在帮朋友公司重构他们用了快十年的老式人事管理系统&#xff0c;从原先的ExcelAccess组合升级为基于Django的Web应用。这个过程中发现&#xff0c;很多中小企业在人事管理信息化方面都存在类似的痛点&#xff1a;员工数据分散、考勤统计耗时、审批流程…

作者头像 李华