☰
Silvaco PN结击穿仿真实战:从网格优化到碰撞电离模型
2026/10/6 5:53:41 网站建设 项目流程

我第一次用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开始:一个可运行的最小deck

Silvaco的操作基本都在DeckBuild界面里完成。新建一个输入文件,一行行敲命令,本质就是一个文本描述的仿真流程。下面是一个可以完整跑通的最小deck,结构是10μm宽、9μm厚的硅片,P区在顶部,N区在底部,冶金结在y=4.5μm处:

go atlas mesh space.mult=1.0 x.mesh loc=0.0 spac=1.0 x.mesh loc=10.0 spac=1.0 y.mesh loc=0.0 spac=0.1 y.mesh loc=4.0 spac=0.01 y.mesh loc=5.0 spac=0.01 y.mesh loc=9.0 spac=0.1 region num=1 silicon x.min=0.0 x.max=10.0 y.min=0.0 y.max=9.0 electrode name=anode top electrode name=cathode bottom doping uniform conc=1e16 p.type y.max=4.5 doping uniform conc=1e16 n.type y.min=4.5 contact name=anode contact name=cathode models srh auger bgn impact selb impact selb method newton itlimit=25 maxtrap=10 solve init solve vcathode=1 solve vcathode=5 solve vcathode=10 solve vcathode=20 solve vcathode=30 solve vcathode=40 solve vcathode=45 solve vcathode=50 solve vcathode=52 solve vcathode=54 solve vcathode=56 log off

这里有几个关键点要说明一下。

go atlas是进入Atlas仿真模块的入口,必须在所有网格、结构定义之前写,否则后续命令根本没有执行环境。

mesh space.mult=1.0是全局网格缩放因子,保持默认1.0即可。如果算复杂结构想快速验证,可以临时改成2.0或4.0,相当于把所有网格间距放大,但精度会明显下降。

x.mesh和y.mesh定义了二维网格的分割方式。每一条x.mesh或y.mesh都会在相应位置生成一个坐标轴上的分割点,相邻两个分割点之间的间距由spac决定。后面第3部分会详细讲网格怎么影响击穿仿真结果。

region定义了一个矩形硅区域,坐标范围对应网格的范围。

electrode name=anode top的含义是:在结构顶部形成一个电极,名字叫anode。因为顶部是P区,所以anode是阳极。electrode name=cathode bottom同理,底部的N区电极是阴极。

2.2 掺杂、电极与接触:最容易搞反的三个地方

第一个容易搞反的是掺杂方向。我之前想当然地用y.min=4.5定义P区、y.max=4.5定义N区,结果整个结构都变成了N型。正确的做法是:P型在顶部的时候用y.max=4.5,它是从0到4.5这个区间;N型在底部的时候用y.min=4.5,是从4.5到9.0这个区间。写反了的话,PN结界面的位置就变了,击穿特性完全不是那么回事。

第二个容易搞错的是电极和偏置的关系。阳极在顶部P区,阴极在底部N区。要仿真反向击穿,最稳妥的写法是保持阳极接地(0V),在阴极上扫描正电压,因为对PN结来说,N端接正、P端接负就是反偏。也可以给阳极扫描负电压,但阴极用正电压扫更符合一般习惯,而且后续数据处理也更直观。

第三个是contact语句。初学者常常漏掉,其实Silvaco默认会为每个电极假设理想欧姆接触,大多数PN结仿真的精度要求下不需要特别设置。但如果你以后做肖特基二极管、或者考虑接触电阻,就要回来仔细配置contact参数了。对PN结入门来说,保持默认即可。

2.3 第一次跑通:结果离谱是常态

上面的deck里,solve vcathode=1这样的语句是逐点扫描电压,跑一次就得到一个工作点。扫描到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 loc=0.0 spac=0.1 y.mesh loc=4.0 spac=0.01 y.mesh loc=5.0 spac=0.01 y.mesh loc=9.0 spac=0.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.2
0.0557.4
0.0254.3
0.0153.8
0.00553.6
0.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 vcathode=1 solve vcathode=2 solve vcathode=5 solve vcathode=10 solve vcathode=20 solve vcathode=30 solve vcathode=40 solve vcathode=45 solve vcathode=50 solve vcathode=51 solve vcathode=52 solve vcathode=52.5 solve vcathode=53 solve vcathode=53.5 solve vcathode=54 solve vcathode=54.5 solve vcathode=55

关键技术点是:击穿前步长可以大一点,接近拐点时缩小到0.5V甚至0.1V。这样既能保证曲线平滑,又不会在击穿前浪费太多计算资源。

5.3 坑位三:regrid和doping定义带来的隐藏问题

新手优化的下一步,通常会想到用regrid来自动加密网格。这个命令确实很好用:

regrid uniform d.ratio=3

它的作用是在掺杂浓度梯度大的区域自动插入更多网格节点,对突变结特别有效。但这里也有一个坑:regrid如果和手动设置的细网格叠加,可能在结附近产生过度密集的节点分布,反而增加计算量,甚至出现非物理的电场抖动。更好的做法是,先用regrid配合比较粗的基础网格试跑,如果结果和手动细网格一致,就不需要再叠加更细的网格了。

另一个隐藏问题是doping语句的参数边界。我曾经一次把两个doping uniform都写成了y.min=4.5的区间,结果整个结构变成了N型,几乎没有PN结效应。这类错误很隐蔽,因为仿真不会报错,程序正常跑,只是结果完全不物理。检查方法是在TonyPlot里打开掺杂分布,直接看结是否在预期位置、浓度是否两种类型都有。

5.4 排查问题的推荐顺序清单

把几次踩坑的经验总结成下面这个排查顺序,建议按优先级执行:

  1. 先看掺杂分布:打开结构文件,确认P区、N区位置和浓度符合设计。
  2. 确认碰撞电离模型:检查impact selb是否在models和impact两处都写全。
  3. 手动加密结附近网格:看击穿电压是否向理论值收敛。
  4. 调整扫描步长:击穿点附近用细步长,避免曲线断裂。
  5. 最后才怀疑数值方法:尝试减小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的最上面用#注释写清楚结构参数、掺杂浓度、理论击穿电压。改参数、做对照实验时,只看注释就能快速回忆起当时的设计目标,省去了反复翻文档的麻烦。对毕设这种需要反复迭代论证的项目来说,这条习惯帮我节省的时间远超想象。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询