ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Silvaco TCAD实战:肖特基二极管反向击穿仿真与参数优化

Silvaco TCAD实战:肖特基二极管反向击穿仿真与参数优化 1. 从一条反向击穿曲线说起为什么选肖特基二极管做TCAD仿真实战肖特基二极管在功率电路里出现的频率极高尤其是开关电源、续流回路和整流桥这些场景。它最大的特点是正向压降低、反向恢复时间短但另一面就是反向漏电偏大、击穿特性对结构参数极其敏感。很多做功率器件的朋友在选型时只看数据手册上的击穿电压标称值实际做出来的器件在高温下击穿点漂移严重甚至出现软击穿导致热失控。这类问题如果只靠流片试错一轮下来时间和成本都很难承受。Silvaco TCAD 的仿真例库里有不少经典案例肖特基二极管反向击穿特性这个案例是我个人认为最适合用来练手的切入点之一。原因很直接结构简单物理模型清晰收敛性相对友好但又能把电场分布、势垒降低、隧穿效应、碰撞电离这些核心机制串起来。你把这个案例吃透再去看 PIN 二极管、MOSFET 的击穿仿真很多设置逻辑是相通的。这篇文章面向的是已经装好 Silvaco 套件、能跑通基础 PN 结仿真的朋友也适合正在做功率器件课程设计或论文仿真章节的同学。我会从结构定义、物理模型选择、击穿电压提取方法、收敛调试这几个维度把整个案例拆开讲一遍重点放在那些官方文档里不会写、但实际跑仿真时一定会踩的坑上。2. 案例整体设计与仿真思路拆解2.1 为什么用 TCAD 而不是解析公式算击穿电压肖特基二极管的反向击穿电压用解析公式粗略估算并不难。理想情况下击穿电压和漂移区掺杂浓度、厚度之间存在近似关系比如突变结近似下击穿电压与掺杂浓度成反比。但实际器件里金属-半导体界面的势垒降低效应、边缘电场集中、钝化层电荷这些因素会让实际击穿点比理论值低不少有时偏差能到百分之二三十。TCAD 的价值就在于它能把这些二维甚至三维效应一起算进去。Silvaco 的 Atlas 模块可以求解泊松方程和连续性方程配合碰撞电离模型能直接给出击穿发生的位置和电压。我在实际项目里遇到过这样的情况一维解析算出来击穿电压 80VTCAD 仿真只有 62V流片实测 60V 左右。差距主要来自结边缘的电场集中这个用公式根本算不出来。所以这个案例的核心思路是用 Atlas 建立二维结构定义好金属电极和半导体区域的接触施加反向偏压扫描通过碰撞电离积分判断击穿点。整个流程可以拆成结构定义、模型配置、偏压扫描、结果提取四步。2.2 结构参数的选择逻辑肖特基二极管的结构看起来简单但参数选择有讲究。漂移区掺杂浓度和厚度是两个关键变量。掺杂浓度决定了耗尽层扩展的难易程度浓度越低同样电压下耗尽层越宽电场峰值越低击穿电压越高。但浓度太低会导致导通电阻增大正向压降升高这是一个典型的折中。我在这个案例里用的参数是漂移区掺杂 1e16 cm^-3厚度 5 微米金属功函数取 4.8 eV 左右对应常见金属如钨或铂的近似值。这个组合下击穿电压大概在 60 到 80V 区间适合做参数扫描练习。如果你想模拟更高击穿电压的器件可以把浓度降到 1e15 甚至更低但要注意耗尽层可能扩展到衬底这时候需要把衬底也纳入仿真域。提示漂移区厚度不能随意设。如果厚度小于最大耗尽层宽度器件会发生穿通击穿而不是雪崩击穿两者的温度特性和失效模式完全不同。仿真前先用一维近似估一下最大耗尽层宽度确保厚度留有余量。2.3 物理模型的选择与取舍Atlas 里可选的物理模型很多但不是越多越好。每加一个模型方程组的非线性程度就增加一分收敛难度也跟着上升。这个案例里我建议必选的有三个SRH 复合模型、场依赖迁移率模型、碰撞电离模型。SRH 复合模型负责描述载流子的产生和复合反向漏电主要靠它。场依赖迁移率模型在高电场区域很重要载流子速度饱和会影响电流分布。碰撞电离模型是击穿仿真的核心它决定了什么时候发生雪崩倍增。Silvaco 里常用的碰撞电离模型有 Selberherr 和 Okuto-Crowell 两种前者参数少、收敛好后者在高电场下更准。我一般先用 Selberherr 跑通再用 Okuto-Crowell 复核。另外肖特基结的势垒降低效应建议开启。这个效应在反向偏压较大时会显著增加漏电如果不加仿真出来的反向电流会偏小击穿点也可能偏高。3. 核心细节解析与实操要点3.1 网格划分击穿仿真的成败关键很多人跑击穿仿真不收敛八成是网格的问题。击穿发生在局部高电场区域通常是金属-半导体界面的边缘或者结的曲率处。如果这些地方网格太粗电场峰值算不准碰撞电离积分就会失真要么提前击穿要么根本不击穿。我的做法是分区域设置网格。漂移区主体用较粗的网格比如 0.1 微米量级金属接触边缘和结附近加密到 0.01 微米甚至更细。Silvaco 里可以用X.MESH和Y.MESH配合SPACING参数控制也可以用QSS或者自适应网格功能。但自适应网格在击穿附近容易震荡我一般还是手动加密更可控。具体操作上先定义整体网格然后在电极边缘用X.MESH LOC... SPACING...局部加密。加密区域要覆盖耗尽层可能扩展的范围不能只加密表面一层。我踩过的坑是只加密了表面结果击穿发生在体内网格不够细曲线出现台阶状跳变。注意网格加密会显著增加仿真时间。一个二维肖特基二极管网格从 2000 点加到 8000 点单次击穿扫描的时间可能从几分钟涨到半小时。建议先用粗网格跑通流程确认物理设置没问题再逐步加密做定量分析。3.2 电极定义与接触类型肖特基二极管有两个电极阳极是金属-半导体接触阴极是欧姆接触。在 Atlas 里阳极用ELECTRODE定义位置然后通过WORKFUNCTION指定金属功函数。阴极用ELECTRODE加NAME定义默认就是欧姆接触。这里有个容易忽略的点欧姆接触的掺杂浓度要足够高否则接触电阻会引入额外的电压降影响击穿电压的准确提取。我一般把阴极区域的掺杂设到 1e19 以上确保形成隧穿欧姆接触。金属功函数的选择直接影响势垒高度。功函数越高势垒越高反向漏电越小但正向压降也越大。这个案例里取 4.8 eV 是一个折中值。如果你想模拟不同金属的效果可以做个功函数扫描从 4.6 到 5.2 eV 每隔 0.1 eV 跑一次观察击穿电压和漏电的变化趋势。3.3 偏压扫描策略从软击穿到硬击穿反向击穿仿真的偏压扫描不是简单地从 0 扫到 100V。直接大步长扫描很容易在击穿点附近发散。我的策略是分段扫描0 到 40V 用 1V 步长40V 到预期击穿电压的 80% 用 0.5V 步长之后用 0.1V 甚至更小步长逼近击穿点。Silvaco 里可以用SOLVE语句配合VANODE参数逐步加压。更稳的做法是用QUASIB或者CURVETRACE做曲线追踪让求解器自动调整步长。但曲线追踪在击穿附近也容易失败我通常还是手动分段加自适应步长。判断击穿点的标准是反向电流突然增大几个数量级同时碰撞电离积分接近 1。Atlas 里可以输出IMPACT参数查看电离积分。当积分值从 0.1 跳到 0.9 以上时基本就是击穿点了。3.4 温度设置与自热效应默认仿真温度是 300K。但实际器件在击穿附近电流很大自热效应不可忽略。如果你的仿真目标是提取室温击穿电压可以不开自热。但如果想看击穿后的电流-电压特性尤其是负微分电阻区域必须开启热学方程。开启自热需要在MODELS里加HEAT参数并定义热沉边界条件。这会增加一个热传导方程收敛难度上升。我的经验是先不开热学跑通电学击穿记录击穿电压和电流水平再开热学复核。如果两者差距在 5% 以内说明自热影响不大可以简化。4. 实操过程与核心环节实现4.1 完整代码结构拆解下面是我在这个案例里用的 Atlas 输入文件的核心结构。为了便于理解我按功能分块说明你可以直接参考这个框架改成自己的参数。go atlas # 定义网格 mesh space.mult1.0 x.mesh loc0.0 spacing0.05 x.mesh loc2.0 spacing0.05 y.mesh loc0.0 spacing0.01 y.mesh loc0.5 spacing0.01 y.mesh loc5.0 spacing0.2 # 定义区域 region num1 materialSilicon # 定义电极 electrode nameanode x.min0.0 x.max2.0 y.min0.0 y.max0.0 electrode namecathode bottom # 掺杂定义 doping region1 uniform conc1e16 n.type doping region1 gaussian conc1e19 n.type peak5.0 char0.1 # 物理模型 models srh fldmob impact selb # 接触设置 contact nameanode workfunc4.8 contact namecathode resist1e-6 # 求解设置 method newton trap maxtrap10 solve init solve vanode0.0 log outfschottky_rev.log solve vanode-0.1 vstep-0.1 vfinal-40.0 solve vanode-40.0 vstep-0.5 vfinal-70.0 solve vanode-70.0 vstep-0.1 vfinal-90.0 log off # 输出结果 tonyplot schottky_rev.log这段代码里网格定义部分我特意在表面附近加密了。y.mesh loc0.0 spacing0.01到y.mesh loc0.5 spacing0.01这一段是表面 0.5 微米内网格步长 0.01 微米保证结附近的电场计算精度。掺杂部分用了均匀掺杂加高斯分布模拟阴极欧姆接触的高掺杂区。4.2 击穿电压的提取方法仿真跑完后日志文件里会有反向电流随电压的变化数据。提取击穿电压有两种常用方法一种是找电流达到某个阈值比如 1e-6 A 或者 1e-4 A对应的电压另一种是找电流对电压的导数最大值点。我一般用第二种因为阈值法受漏电水平影响大。具体操作是在 TonyPlot 里画出 log(I) 对 V 的曲线然后看曲线斜率突变的位置。更精确的做法是把数据导出来用 Python 或者 Excel 算 d(logI)/dV峰值对应的电压就是击穿电压。这个案例里如果参数设置合理击穿电压应该在 65V 到 75V 之间。如果算出来低于 60V检查一下网格是不是太粗或者碰撞电离模型参数是不是需要调整。如果高于 85V可能是势垒降低效应没开或者金属功函数设高了。4.3 电场分布与击穿位置分析击穿电压提取只是第一步更有价值的是看电场分布。在 TonyPlot 里可以画出电场强度云图击穿点通常对应电场峰值位置。肖特基二极管的击穿一般发生在金属接触边缘因为那里曲率大电场集中。我建议在击穿电压附近保存几个偏压点的结构文件比如 50V、60V、70V 各存一个。然后对比电场峰值的变化。如果峰值位置从边缘移到体内说明击穿机制从边缘击穿变成了雪崩击穿这是两种不同的失效模式对应的工艺改进方向也不同。提示Silvaco 里可以用save语句在特定偏压点保存结构文件。比如solve vanode-60.0之后加save outfschottky_60v.str方便后续分析。4.4 参数扫描的批量实现单次仿真只能得到一个参数组合的结果。实际工作中往往需要看掺杂浓度、漂移区厚度、金属功函数对击穿电压的影响。手动改参数跑几十次不现实可以用 Silvaco 的 DeckBuild 做批量扫描。DeckBuild 里可以用loop语句或者split功能。我一般用loop配合变量替换。比如把掺杂浓度设成变量{conc}然后循环从 5e15 到 5e16每次跑完提取击穿电压存到文件里。这样一轮下来能拿到完整的趋势曲线。批量扫描时要注意每次仿真前要重置网格和求解器状态否则上一次的结果会污染下一次。DeckBuild 里用go atlas重新开始就行但日志文件要每次换名字不然会覆盖。5. 常见问题与排查技巧实录5.1 收敛失败从报错信息定位问题击穿仿真最常见的报错就是 Newton iteration failed to converge。这个报错背后可能有好几种原因需要逐一排查。第一种可能是网格太粗。判断方法是看报错发生在哪个偏压点。如果是在击穿附近大概率是网格问题。解决办法是在击穿区域加密网格或者减小偏压步长。第二种可能是物理模型冲突。比如同时开了 SRH 和 Auger 复合参数没设好会互相打架。建议先只开 SRH跑通后再加其他模型。第三种可能是初始猜测太差。Atlas 默认从零偏压开始如果结构里有高电场区域初始解可能不收敛。可以先用solve init加solve vanode0.0做一次零偏压求解再逐步加压。下面这个表是我整理的反向击穿仿真常见报错和对应处理方式报错信息可能原因处理方式Newton iteration failed网格太粗或步长太大加密网格减小 vstepSingular matrix电极定义错误或掺杂异常检查 electrode 和 doping 语句Negative carrier density模型参数不合理关闭部分模型检查迁移率参数Impact ionization overflow碰撞电离参数过激换用 Selberherr 模型降低电离系数Time step too small自热效应导致刚性关闭 HEAT 或减小热容参数5.2 击穿电压偏高的排查思路如果仿真出来的击穿电压明显高于预期先检查三个地方。第一碰撞电离模型是否开启。models语句里如果没有impactAtlas 不会计算雪崩倍增自然也不会击穿。第二金属功函数是否设得过高。功函数高会降低反向漏电但也会推迟击穿。第三势垒降低效应是否开启。这个效应会增加漏电如果不加击穿点会偏高。我遇到过一次击穿电压算出来 120V排查了半天发现是impact拼写错了写成了imapct。Atlas 不会报错只是默默不开启这个模型。所以每次改完代码建议用models语句后加print输出确认模型列表。5.3 击穿电压偏低的排查思路偏低的情况更常见通常和网格或边缘效应有关。如果击穿电压比预期低 20% 以上先看电场分布。如果电场峰值出现在电极边缘而不是体内说明边缘电场集中太严重。解决办法是优化电极形状比如加场板或者做结终端扩展。但在仿真里可以先检查电极定义是不是太尖锐。另一个常见原因是掺杂浓度设高了。漂移区浓度每增加一倍击穿电压大概降低 20% 到 30%。检查doping语句里的conc值确认没有多打一个零。5.4 仿真时间过长的优化技巧击穿仿真动辄跑几十分钟甚至几个小时优化时间很有必要。我的经验是先用粗网格和较大步长跑一遍确认击穿电压大概位置然后再在击穿附近加密。不要一上来就全局加密那样大部分计算都浪费在低电场区域。另外method语句里的求解器参数也可以调。newton trap maxtrap10是默认设置如果收敛困难可以改成newton trap maxtrap20但每次迭代时间会增加。climit参数可以限制载流子浓度的变化幅度设成 0.1 或者 0.2 有助于稳定收敛。注意climit设得太小会导致收敛变慢设得太大又起不到稳定作用。我一般从 0.2 开始试如果还发散就降到 0.1。5.5 结果验证和实测数据对不上怎么办仿真结果和实测对不上是常态关键是要找到偏差来源。如果击穿电压偏差在 10% 以内通常可以接受因为工艺波动和测量误差本身就有这个量级。如果偏差超过 20%需要系统排查。先确认仿真结构是否和实际器件一致。漂移区厚度、掺杂浓度、金属功函数这些参数是否准确。然后检查物理模型是否齐全。实际器件里的缺陷、界面态、封装应力这些因素在仿真里很难完全复现但可以通过调整模型参数来近似。我个人的做法是先用标称参数跑一遍记录偏差。然后做灵敏度分析看哪个参数对击穿电压影响最大。如果掺杂浓度的影响最大就重点校准这个参数。通过几次迭代通常能把偏差压到 10% 以内。6. 从击穿仿真延伸出去的几个实用方向肖特基二极管反向击穿这个案例跑通之后可以往几个方向扩展。第一个方向是变温度仿真。把温度从 250K 扫到 450K观察击穿电压的温度系数。肖特基二极管的击穿电压通常随温度升高而增大这个正温度系数对并联使用很重要。第二个方向是结构优化。在电极边缘加场板或者做阶梯氧化层看击穿电压能提升多少。这个在功率器件设计里很实用仿真可以快速筛选方案减少流片次数。第三个方向是换成其他器件结构。把金属-半导体接触换成 PN 结就是 PIN 二极管的击穿仿真。把漂移区换成碳化硅或者氮化镓就是宽禁带器件的击穿分析。核心的网格设置、模型选择、偏压扫描策略都是相通的。我在实际项目里用这套流程做过碳化硅肖特基二极管的击穿仿真最大的区别是碳化硅的碰撞电离参数和硅完全不同需要重新校准。另外碳化硅的临界电场比硅高一个数量级网格要求也更细。但整体思路和这个案例是一致的。最后分享一个小技巧Silvaco 的例库文件通常在安装目录的examples文件夹下可以直接用 DeckBuild 打开参考。但例库里的参数是通用值实际使用时一定要根据你的器件结构重新调整。我习惯把例库文件复制一份改个名字再改参数这样不会污染原始文件。
返回列表