ARTICLE DETAIL

资讯详情

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

Silvaco PN结击穿仿真实战:从网格优化到碰撞电离模型

Silvaco PN结击穿仿真实战:从网格优化到碰撞电离模型 我第一次用Silvaco跑PN结反向击穿TonyPlot里弹出的曲线把我吓了一跳反向电流在-500V左右才拐上去。手里的结构明明是1e16的均匀掺杂按理论算击穿电压也就50多伏仿真却给了一个10倍的差距。后来才明白问题既不在物理模型也不在求解器而是出在网格上——我在结附近用了0.5μm的均匀网格电场峰值被平滑得面目全非雪崩击穿条件迟迟无法满足。这篇就把我从毕设小白到把第一个PN结击穿仿真跑通的完整过程写下来。内容包括Silvaco TCAD里的最小仿真文件怎么写、网格优化的核心逻辑、碰撞电离模型怎么开、以及我踩过的几个典型坑的排查链路。适合刚接触器件仿真、或者正在做PN结相关毕设的同学参考至少能帮你少走我十天的弯路。1. 毕设让我做的PN结击穿仿真到底在仿什么1.1 一个最简单的结构藏着一堆物理PN结在半导体器件里算是最基础的结构了但把击穿仿真做准并不简单。P区是受主掺杂N区是施主掺杂交界处会形成耗尽层。加反向偏压时耗尽层变宽冶金结附近的电场最强。当局部电场高到一定程度载流子在强电场中加速获得足够能量与晶格原子碰撞电离出新的电子-空穴对新产生的载流子再继续碰撞电离形成倍增效应反向电流急剧上升——这就是雪崩击穿。Silvaco的Atlas求解器做的事情本质上是在二维网格上数值求解泊松方程和载流子连续性方程。它把半导体器件划分成一个个网格单元在每个节点上解方程最终得到电场、载流子浓度、电流密度等分布。所以网格分得合不合理直接决定了结果靠不靠谱。1.2 击穿电压的“标尺”先算理论值再谈仿真写仿真之前我建议先把理论值算出来。没有理论标尺仿真跑出一个数字也判断不了对不对。对单边突变结硅的雪崩击穿电压和低掺杂侧浓度有一个很经典的经验关系V_BR ≈ 5.34 × 10^13 × N_B^(-3/4)其中N_B是低掺杂侧的掺杂浓度单位cm^-3算出来的击穿电压单位是V。我仿真用的结构是P区、N区都是1e16 cm^-3的均匀掺杂。代进去算V_BR 5.34 × 10^13 × (10^16)^(-3/4) 5.34 × 10^13 × 10^(-12) 53.4 V对应的最大电场大约4×10^5 V/cm耗尽层宽度大约2.8μm。这三个数字就是后面验证仿真结果的第一道标尺。后面不管网格怎么调、模型怎么开击穿电压最终都应该收敛在53V附近如果偏离太多一定是哪里出了问题。2. DeckBuild里搭出第一个PN结模型文件结构拆给你看2.1 从go atlas开始一个可运行的最小deckSilvaco的操作基本都在DeckBuild界面里完成。新建一个输入文件一行行敲命令本质就是一个文本描述的仿真流程。下面是一个可以完整跑通的最小deck结构是10μm宽、9μm厚的硅片P区在顶部N区在底部冶金结在y4.5μm处go atlas mesh space.mult1.0 x.mesh loc0.0 spac1.0 x.mesh loc10.0 spac1.0 y.mesh loc0.0 spac0.1 y.mesh loc4.0 spac0.01 y.mesh loc5.0 spac0.01 y.mesh loc9.0 spac0.1 region num1 silicon x.min0.0 x.max10.0 y.min0.0 y.max9.0 electrode nameanode top electrode namecathode bottom doping uniform conc1e16 p.type y.max4.5 doping uniform conc1e16 n.type y.min4.5 contact nameanode contact namecathode models srh auger bgn impact selb impact selb method newton itlimit25 maxtrap10 solve init solve vcathode1 solve vcathode5 solve vcathode10 solve vcathode20 solve vcathode30 solve vcathode40 solve vcathode45 solve vcathode50 solve vcathode52 solve vcathode54 solve vcathode56 log off这里有几个关键点要说明一下。go atlas是进入Atlas仿真模块的入口必须在所有网格、结构定义之前写否则后续命令根本没有执行环境。mesh space.mult1.0是全局网格缩放因子保持默认1.0即可。如果算复杂结构想快速验证可以临时改成2.0或4.0相当于把所有网格间距放大但精度会明显下降。x.mesh和y.mesh定义了二维网格的分割方式。每一条x.mesh或y.mesh都会在相应位置生成一个坐标轴上的分割点相邻两个分割点之间的间距由spac决定。后面第3部分会详细讲网格怎么影响击穿仿真结果。region定义了一个矩形硅区域坐标范围对应网格的范围。electrode nameanode top的含义是在结构顶部形成一个电极名字叫anode。因为顶部是P区所以anode是阳极。electrode namecathode bottom同理底部的N区电极是阴极。2.2 掺杂、电极与接触最容易搞反的三个地方第一个容易搞反的是掺杂方向。我之前想当然地用y.min4.5定义P区、y.max4.5定义N区结果整个结构都变成了N型。正确的做法是P型在顶部的时候用y.max4.5它是从0到4.5这个区间N型在底部的时候用y.min4.5是从4.5到9.0这个区间。写反了的话PN结界面的位置就变了击穿特性完全不是那么回事。第二个容易搞错的是电极和偏置的关系。阳极在顶部P区阴极在底部N区。要仿真反向击穿最稳妥的写法是保持阳极接地0V在阴极上扫描正电压因为对PN结来说N端接正、P端接负就是反偏。也可以给阳极扫描负电压但阴极用正电压扫更符合一般习惯而且后续数据处理也更直观。第三个是contact语句。初学者常常漏掉其实Silvaco默认会为每个电极假设理想欧姆接触大多数PN结仿真的精度要求下不需要特别设置。但如果你以后做肖特基二极管、或者考虑接触电阻就要回来仔细配置contact参数了。对PN结入门来说保持默认即可。2.3 第一次跑通结果离谱是常态上面的deck里solve vcathode1这样的语句是逐点扫描电压跑一次就得到一个工作点。扫描到50V以上还没看到击穿拐点的时候我的第一反应是模型没开对到处检查碰撞电离、检查掺杂浓度。但真实原因非常反直觉网格太粗。我用均匀网格的时候y方向间距全是0.5μm整个9μm厚度只有18个节点。这个网格密度解析一个简单二极管的导通还可以但一到击穿仿真就彻底露馅了。后面会看到击穿电压对结附近的网格密度极其敏感0.5μm和0.005μm的网格间距算出来的击穿电压能差十几倍。3. 网格优化才是新手真正的第一课3.1 默认网格为什么让击穿电压飘到500V直接说结论击穿电压虚高的首要原因是结附近网格太粗电场峰值被严重低估。反向偏置时PN结的电场分布像一个三角形峰值出现在冶金结处向耗尽层两侧逐渐下降。击穿发生的条件是碰撞电离积分的临界条件而这个积分对电场峰值的依赖是指数级的。电场只要被低估一点雪崩发生所需的电压就要往上推很多。网格太粗的时候数值方法在峰值附近找不到足够密的采样点相当于把尖峰“削平”了。0.5μm间距下峰值电场从一个尖锐的三角峰会变成一个钝化的梯形碰撞电离率被低估了好几个数量级。最终仿真出来的击穿电压自然会远远高于理论值。还有一个隐藏问题粗网格在耗尽层边界处会引入较大的电荷数值误差让耗尽层宽度的计算也不准进一步恶化击穿预测。3.2 结附近网格加密的具体做法知道了问题解决方案就很明确在电场变化剧烈的地方加密在电场平缓的地方保持粗网格。回到那个9μm厚的结构y方向我用四段网格完成渐变y.mesh loc0.0 spac0.1 y.mesh loc4.0 spac0.01 y.mesh loc5.0 spac0.01 y.mesh loc9.0 spac0.1从顶部0.1μm间距过渡到结附近0.01μm甚至0.005μm再过渡到底部0.1μm。注意中间不需要一个单独的大变化台阶Silvaco会在这个多段网格的基础上做平滑过渡。如果你想要更细可以把结附近的spac改成0.005或者0.002但不要一上来就全用细网格节点的计算量和内存开销会快速上涨。判断网格是否足够的关键位置不只是冶金结。耗尽层边界也要保证一定的网格密度。对于1e16掺杂、约53V击穿电压的PN结耗尽层宽度大约2.8μm结两侧各1.4μm左右。这段区域里建议至少布置几十个节点才能在电场梯度最大的地方有足够解析度。查看网格分布的操作用TonyPlot打开结构文件tonyplot diode.str打开后在Display菜单里选择显示网格就能直观看到mesh的疏密分布。我每次改完网格都习惯先看一眼结构确认结附近的网格确实加密了再跑solve流程。x方向也不能完全忽略。虽然一维PN结问题主要看y方向的电场但Silvaco做的是二维求解x方向网格太稀疏、边界离器件太近时边界效应可能造成人为的电场集中。我给结构留了一点余量x方向用10μm宽度网格间距1μm中部的结果就不会受边界影响了。3.3 什么程度算“网格收敛”网格加密到什么时候可以停标准做法是连续两轮加密之后提取的击穿电压变化小于1%~2%就认为网格收敛了继续加密只剩下计算时间的浪费。我用同一个结构跑了一系列网格实验得到的数据是结附近最小网格间距(μm)仿真击穿电压(V)0.168.20.0557.40.0254.30.0153.80.00553.60.00253.5从0.1μm到0.005μm击穿电压从68V一路降到53.6V变化幅度接近20%。到0.005μm以后继续加密到0.002μm电压只动了0.1V左右这才算收敛了。我把0.005μm作为这次仿真的最终网格配置。它兼得了精度和速度整个IV扫描几十个点跑下来也就几分钟。如果你的机器性能好、时间充裕用0.002μm也行但收获很有限。4. 击穿仿真要开哪些模型碰撞电离不是可选项4.1 Selberherr碰撞电离模型在Silvaco里的写法网格问题的坑爬出来以后还要确认物理模型有没有配全。PN结击穿仿真里雪崩击穿的核心是碰撞电离模型在Silvaco里最常用的是Selberherr模型写法是models srh auger bgn impact selb impact selb第一行models里的其他几个参数也值得解释一下srh是Shockley-Read-Hall复合描述通过缺陷能级的载流子复合反向漏电流的主要来源之一。auger是俄歇复合高注入条件下的重要复合机制。bgn是能带窄化效应高掺杂区域载流子浓度高时需要考虑。impact selb就是开启Selberherr碰撞电离模型这是雪崩击穿仿真的核心。单独一行的impact selb是再次确认碰撞电离参数使用Selberherr形式有些版本需要在models和impact两个地方都写明否则可能不生效。很多人仿真击穿电压离谱第一个怀疑对象是网格第二个就是碰撞电离模型没开。如果你在models里漏了impact selb反向电流扫描到很高电压都只会缓慢增长因为载流子没有倍增机制电流根本涨不上去。4.2 从IV曲线判断模型有没有生效通过IV曲线的形态可以快速判断碰撞电离模型是否真正生效。未开启碰撞电离时反向扫描得到的曲线大致是一条水平线——漏电流基本恒定在10^-14~10^-13 A/μm量级电压扫到200V、300V也不会有明显拐点。这是因为SSH复合漏电流本身对电压不敏感。开启碰撞电离后在接近击穿电压时曲线会明显上翘电流从10^-13量级迅速爬升到10^-6甚至更高量级这条“膝盖”就是击穿电压。如果扫描步长足够细还能看到曲线进入负阻区之前那个陡峭的上升沿。我在实际调试中总结了一个快速判断方法如果反向IV曲线是一条平坦线扫不出拐点先看impact selb有没有写全如果曲线有拐点但拐点位置明显偏大再看网格如果两者都对但结果还是不对才考虑掺杂定义、区域定义这些更细节的问题。5. 我的踩坑排查全链路现象-定位-修复5.1 坑位一击穿电压虚高先查网格再看模型第一次得到500V击穿电压整个排查过程值得完整还原。当时我盯着TonyPlot里的log曲线反向电流确实在500V附近上翘了说明雪崩机制有在发生但阈值完全不对。第一步我先确认模型回到deck里检查models一行impact selb在。第二步确认掺杂我用的是两侧都是1e16理论击穿53V这个不会错。第三步开始怀疑网格——因为TonyPlot打开结构文件时我隐约觉得y方向节点太少。于是我做了一个对照实验把结附近网格从均匀的0.5μm改成0.05μm重新跑一遍。结果击穿电压直接从500V量级跳到了70V左右。继续加密到0.005μm稳定在53.6V。问题定位清楚网格太粗电场峰值被抹平雪崩条件被推迟。排查的顺序很重要。网格引起的问题非常隐蔽因为它不会报错也不会让曲线形状变得奇怪只是把特征参数整体平移到一个错误的位置。遇到击穿电压异常我现在的第一反应永远是先加密网格看趋势而不是反复折腾模型参数。5.2 坑位二扫描步长导致的曲线断裂击穿点附近还有一个容易踩的坑就是扫描步长过大导致曲线“断裂”。在击穿点附近电流对电压极其敏感可能电压只变化0.5V电流就跳了好几个数量级。如果用均匀的大步长扫描很容易跨过击穿拐点导致曲线上少了一段数据看起来像曲线断了或者击穿点位置出现一个诡异的跳变。解决方法是在接近理论击穿电压时把步长手动调小。我当时是这样设计的扫描流程solve init solve vcathode1 solve vcathode2 solve vcathode5 solve vcathode10 solve vcathode20 solve vcathode30 solve vcathode40 solve vcathode45 solve vcathode50 solve vcathode51 solve vcathode52 solve vcathode52.5 solve vcathode53 solve vcathode53.5 solve vcathode54 solve vcathode54.5 solve vcathode55关键技术点是击穿前步长可以大一点接近拐点时缩小到0.5V甚至0.1V。这样既能保证曲线平滑又不会在击穿前浪费太多计算资源。5.3 坑位三regrid和doping定义带来的隐藏问题新手优化的下一步通常会想到用regrid来自动加密网格。这个命令确实很好用regrid uniform d.ratio3它的作用是在掺杂浓度梯度大的区域自动插入更多网格节点对突变结特别有效。但这里也有一个坑regrid如果和手动设置的细网格叠加可能在结附近产生过度密集的节点分布反而增加计算量甚至出现非物理的电场抖动。更好的做法是先用regrid配合比较粗的基础网格试跑如果结果和手动细网格一致就不需要再叠加更细的网格了。另一个隐藏问题是doping语句的参数边界。我曾经一次把两个doping uniform都写成了y.min4.5的区间结果整个结构变成了N型几乎没有PN结效应。这类错误很隐蔽因为仿真不会报错程序正常跑只是结果完全不物理。检查方法是在TonyPlot里打开掺杂分布直接看结是否在预期位置、浓度是否两种类型都有。5.4 排查问题的推荐顺序清单把几次踩坑的经验总结成下面这个排查顺序建议按优先级执行先看掺杂分布打开结构文件确认P区、N区位置和浓度符合设计。确认碰撞电离模型检查impact selb是否在models和impact两处都写全。手动加密结附近网格看击穿电压是否向理论值收敛。调整扫描步长击穿点附近用细步长避免曲线断裂。最后才怀疑数值方法尝试减小itlimit或调整maxtrap。按照这个顺序排查几乎可以解决PN结击穿仿真90%以上的“结果不对”问题。6. 验证与收尾怎么确认你的仿真结果能写进毕设6.1 用公式和文献双重校验仿真跑出53.6V的击穿电压后还不能直接收工。我用两重验证来确认结果可信。第一重是公式验证。前面算过1e16掺杂单边突变结的理论击穿电压是约53V仿真结果53.6V误差不到2%在合理范围内。对于毕业设计这个精度要求完全合格。第二重是趋势验证。我改了掺杂浓度做了两组对照N区掺杂提高到5e16时击穿电压会明显下降N区掺杂降到3e15时击穿电压会显著上升。这个趋势和理论完全一致——掺杂浓度越高耗尽层越窄临界电场对应的电压就越低。如果你的仿真结果随浓度变化的趋势不对那基本可以断定结构或模型有基础性错误。也可以参考Silvaco官方提供的示例文件。Atlas安装目录下自带一批二极管、三极管、MOSFET的示例deck找到相似的PN结例子跑一遍对比曲线形态和击穿电压量级是很好的交叉验证手段。6.2 从PN结到后续器件仿真的网格思路迁移PN结网格优化的思路后面做任何功率器件的击穿仿真都能复用。核心就一句话找到电场集中的区域在那里加密网格。对PN结是冶金结对LDMOS是漂移区与体区交界处的表面对VDMOS是P体区与N漂移区形成的JFET区对IGBT还要额外关注集电结附近的电场分布。网格方案的设计逻辑永远是先粗跑摸清电场分布再看电场梯度大的位置在哪儿最后针对性加密。那次做完PN结击穿仿真后我再遇到运行时收敛失败第一反应不是去调数值方法而是先看网格有没有不合理的突变。网格里相邻节点间距变化太剧烈数值误差会很大严重的直接不收敛。这类问题在复杂器件里比PN结要常见得多早学会早省事。最后再分享一个个人习惯跑每一个仿真前我都会在deck的最上面用#注释写清楚结构参数、掺杂浓度、理论击穿电压。改参数、做对照实验时只看注释就能快速回忆起当时的设计目标省去了反复翻文档的麻烦。对毕设这种需要反复迭代论证的项目来说这条习惯帮我节省的时间远超想象。
返回列表