☰
Silvaco TCAD肖特基二极管正向特性仿真全流程解析
2026/10/7 9:00:13 网站建设 项目流程

最近整理Silvaco TCAD仿真例库的时候,翻到一个很典型的例子:肖特基二极管正向特性仿真。这个例子在例库里不算起眼,但你只要认真把它跑一遍,再亲手改一改里面的参数,就会发现它几乎覆盖了TCAD器件仿真最核心的整套操作流程——网格怎么划、模型怎么开、接触怎么设置、电压怎么扫、结果怎么提取。这篇文章就围绕这个例子展开,把结构设计、物理原理、完整脚本和实际踩过的坑都理顺,给正在入门Silvaco TCAD,或者准备搭自己仿真例库的工程师做参考。

1. 仿真例库的定位与设计思路

1.1 这个例子到底能帮你解决什么问题

Silvaco TCAD自带了不少官方demo,但官方demo往往有一个通病:示例很标准,注释却不够细,新手拿到手能跑,却看不懂为什么要这么写。而这个肖特基二极管正向特性例子最大的价值,是它足够“小”,小到你可以把每一个语句都吃透,同时又足够“全”,从头到尾把一次完整的器件仿真流程走完。

我见过不少刚开始接触TCAD的同事,一上来就拿着SiC MOSFET或IGBT的复杂结构练手,结果被网格、模型、收敛性一堆问题砸得晕头转向。我的建议是,先用这个例子把正向I-V仿真跑通,再去看复杂器件。肖特基二极管虽然没有PN结那种复杂的双极输运,但它涉及金属-半导体接触、势垒、热电子发射、串联电阻效应等一大堆基础物理,这些恰恰是后面做功率器件、碳化硅器件仿真的地基。

这个例子能解决的核心问题包括:如何在Atlas里定义一个金属-半导体接触结构;如何通过接触功函数设定势垒高度;如何选择合适的物理模型模拟正向导通特性;如何扫描电压并输出I-V曲线;如何从仿真结果中反推理想因子、势垒高度和串联电阻。任何一个做过器件仿真的人都知道,这些步骤几乎是所有半导体器件仿真的公共底座。

1.2 为什么拿肖特基二极管做入门样例

在半导体器件里,肖特基二极管算是结构最“朴素”的一款了,一层金属、一层半导体、两个电极,物理图像非常清晰。但它朴素归朴素,正向特性的仿真却一点都不简单,里面牵扯到很多TCAD里最容易出问题的地方。

首先是接触问题。肖特基二极管的阳极必须是肖特基接触,不能随便用一个普通欧姆接触应付,否则仿真结果会变成一个纯电阻,毫无二极管特性。在Silvaco的Atlas里,接触类型的差异就是通过contact语句里的功函数或势垒高度体现的,这一步理解不到位,后面做SiC肖特基、GaN HEMT也会踩同样的坑。

其次是电流输运机制。正向导通时电流主要由多数载流子热电子发射越过势垒产生,这跟PN结扩散电流的物理机制完全不同。Silvaco里对应的是热电子发射模型,需要和接触界面配合起来才有效。很多人在仿真时发现电流比理论值小了好几个数量级,或者曲线形状很奇怪,多半就是模型没开对。

再者,肖特基二极管的正向I-V特性非常直观,开启电压低、串联电阻影响明显,特别适合用来观察TCAD仿真中“理想二极管”和“实际器件”之间的差距。通过调节掺杂浓度、厚度、功函数,可以很直接地看到曲线怎么变化,这对建立仿真直觉非常有帮助。

1.3 TCAD仿真流程的一根主线

从一个完整的仿真例库设计角度看,肖特基二极管这个例子其实给我们展示了一条清晰的TCAD仿真主线:结构定义→网格划分→物理模型设置→接触与电极设置→数值求解→电压扫描→数据输出与后处理。

这几步里,每一步都直接影响最终结果的正确性。比如网格太粗,耗尽区和势垒区的电场算不准,正向电流会明显失真;物理模型少开一个关键项,可能就看不到串联电阻下的电流饱和趋势;接触功函数差0.1eV,反向饱和电流可能就差一个数量级。所以不要觉得例子简单就跳过细节,后面你在任何复杂器件的仿真里,本质上还是在这条主线上做文章。

2. 正向特性背后的物理模型

2.1 肖特基接触是怎么形成势垒的

要理解正向特性仿真,先得把肖特基接触本身想明白。金属和N型半导体接触时,由于金属功函数和半导体电子亲和势不同,电子从半导体流向金属需要跨过一个势垒。这个势垒高度qφB,理论上等于金属功函数qφm减去半导体的电子亲和势qχ。对硅来说,电子亲和势χ大约4.05eV,如果你用功函数4.9eV的金属做阳极,那么零偏时势垒高度大概是0.85eV。

这个势垒是整流特性的根本来源。正向偏置时,半导体一侧的能带被抬高,势垒相对降低,电子更容易从半导体热发射到金属,电流随电压指数上升。反向偏置时势垒主要在金属侧,电子要想从金属进半导体,需要依靠场发射或热电子发射越过更高的有效势垒,电流很小,这就形成了整流。

在Silvaco的Atlas里,这种金属-半导体界面的电流输运是通过接触语句加对应物理模型来处理的。需要注意的是,TCAD仿真的势垒高度并不是单纯由材料功函数决定的,还要考虑镜像力势垒降低效应。也就是说,电场越强,有效势垒越低,反向电流会因此增大。

2.2 正向电流公式:理想因子和串联电阻

肖特基二极管的正向I-V关系,经典的表达是:

I = I_s [exp(qV / nkT) - 1]

其中I_s是反向饱和电流,n是理想因子。对理想热电子发射,n接近1。反向饱和电流的理论表达式为:

I_s = A A^* T^2 exp(-qφB / kT)

A是结面积,A^*是理查森常数,对N型硅约为110~120 A/(cm²K²),φB是零偏势垒高度。这个公式告诉我们一个很重要的现象:势垒高度只要有0.1eV的偏差,I_s就会变化e^(q×0.1/kT)倍,在300K下大约是48倍。所以仿真中功函数设不准,电流就会谬以千里。

实际器件里还有一个不能忽略的因素,就是半导体的体电阻和接触电阻。随着正向电流增大,串联电阻Rs上的压降IRs会吃掉一部分外加电压,导致结上实际分到的电压变小。结果是在I-V曲线上,大电流段不再是线上翘的指数曲线,而会逐渐趋于线性,曲线斜率就等于1/Rs的倒数。TCAD仿真里这个效应自然会被数值计算出来,前提是横纵结构、掺杂和厚度定义得足够真实。

2.3 仿真时该开哪些模型

在Atlas里,模型的开关基本都集中在models语句里。对这个例子,我常用的组合是:

models srh auger bgn cvt

这里srh是肖特基-里德-霍尔复合,auger是俄歇复合,bgn是禁带窄化,cvt是浓度依赖迁移率模型。有人可能会问,肖特基二极管是多数载流子器件,复合模型重要吗?答案是在小注入和反向特性区域,复合仍然会影响漏电流,开着更保险,而且这些模型的计算代价很小,没必要省。

更关键的热电子发射模型,其实不是通过models语句设置的,而是Atlas在识别到肖特基接触后自动生效的。你在contact语句里给阳极设置了功函数或势垒高度,Atlas就会把该金属电极当作肖特基接触处理,在界面处启用热电子发射机制。需要注意的是,如果误用了欧姆接触或者默认接触,这条自动路径就断了,结果会完全偏离整流特性。

还有一个容易被忽视的模型参数是温度。热电子发射电流对温度极其敏感,300K和400K下的I_s可以差好几个数量级。如果仿真环境没有显式设定温度,记住Atlas默认是300K,和你预期的工况对不上时先查这里。

3. 实操:从零搭一个正向特性仿真

3.1 结构定义:网格是仿真的第一道关

下面这段是完整的Atlas输入脚本,对应一个纵向结构的N型肖特基二极管。我分几段解释,方便你照抄后改成自己的结构。

go atlas # 网格定义 mesh space.mult=1.0 x.mesh location=0.0 spacing=0.10 x.mesh location=5.0 spacing=0.10 y.mesh location=0.0 spacing=0.005 y.mesh location=0.2 spacing=0.02 y.mesh location=1.0 spacing=0.05 y.mesh location=5.0 spacing=0.20 y.mesh location=10.0 spacing=0.50 y.mesh location=50.0 spacing=2.00 # 区域定义 region num=1 silicon y.max=50.0 # 电极定义 electrode name=anode x.min=0.0 x.max=5.0 y.min=0.0 y.max=0.0 electrode name=cathode y.min=50.0 y.max=50.0 # 掺杂定义 doping uniform conc=1e16 n.type y.max=10.0 doping uniform conc=1e19 n.type y.min=10.0 y.max=50.0 # 接触定义:阳极设为肖特基接触 contact name=anode workfunction=4.9 # 物理模型 models srh auger bgn cvt # 数值方法 method gummel newton autonr maxtraps=10 # 初始求解 solve init solve vcathode=0.0 # 正向扫描 log outf=schottky_fwd.log solve vanode=0.0 vstep=0.02 vfinal=1.0 name=anode tonyplot schottky_fwd.log

先说网格。我习惯把结构做成50微米厚,顶部10微米是低掺杂N型漂移区,掺杂1e16,底下40微米是高掺杂N+衬底,掺杂1e19。这样的分层结构更接近真实肖特基二极管,也能在仿真中体现串联电阻的效应。

网格划分上,y方向顶部0.2微米以内加密,间距最小到0.005微米,原因很简单:肖特基势垒区就在金属-半导体界面附近,这里的电场和载流子浓度变化最剧烈,网格不够细,热电子发射电流就算不准。往下逐渐稀疏,因为低掺杂区在正向导通时只是载流子传输通道,不需要那么高的分辨率。如果你只算个理想曲线,可以粗暴地全程用均匀网格,但那样算出来的串联电阻区域会和理论差不少。

x方向的范围取5微米就够了,因为这是一维纵向器件的二维表示。x方向网格不用太密,间距0.1微米完全足够。在实际二维功率器件里,x方向的拓扑和网格会复杂许多,但在入门例库里,保持x方向均匀能减少很多不必要的困扰。

3.2 电极、掺杂和接触:一个都不能错

region语句定义半导体区域,这里我用silicon,代表整个0到50微米的范围都是硅材料。如果你要换SiC,直接考虑改成silicon carbide对应的材料名,相关参数Silvaco的材料库里都有。

electrode语句定义电极。阳极放在y=0的顶面,范围覆盖整个x方向;阴极放在y=50的底面。这里有一个关键点:电极名称要和后面solve语句里扫描的端点名严格一致,否则会报错或扫描到错误的端点上。

掺杂定义我分了两段,第一段是顶部10微米1e16的N型漂移区,第二段是底部10微米以下1e19的N+衬底。这里我故意不做外延层的精细过渡,而是在y=10微米处直接跳变,实际外延结构确实接近这种突变,仿真结果也够用。

最关键的contact语句来了。contact name=anode workfunction=4.9把阳极定义成功函数4.9eV的金属接触,对N型硅来说,势垒高度约为4.9-4.05=0.85eV。如果你更习惯直接指定势垒高度,也可以写成:

contact name=anode barrier=0.85

两种写法效果基本一样,但要注意不要同时指定workfunction和barrier,那样可能产生参数冲突。阴极我没有显式设置,默认为欧姆接触,这符合底部N+衬底加金属形成欧姆接触的实际情形。

3.3 模型设置与数值方法:收敛的底气

models语句我在前面解释过。这里再提醒一句,cvt模型用到了浓度依赖迁移率和电场依赖迁移率,在肖特基二极管大电流仿真中是合理的。如果为了追求速度,把模型砍到只剩srh,低频小信号下问题不大,但正向着大电流时迁移率模型的影响会很明显。

method语句是数值求解方法的设置。gummel newton autonr maxtraps=10是一个保守但稳定的组合。gummel和newton是两种迭代方法,gummel对初值不敏感但收敛慢,newton收敛快但对初值敏感。autonr是自动牛顿阻尼,用来防止迭代发散。maxtraps限制步长减半次数,超过10次就报错退出,防止无休止的迭代浪费算力。

实际仿真时,如果遇到不收敛,第一步不是去改模型,而是减小电压步长。比如把vstep从0.02降低到0.01,很多时候问题就解决了。还有一个小技巧,扫描之前先做一次solve init,让初始状态稳定下来,再进行后续扫描,这样能减少初始振荡。

3.4 电压扫描与数据输出

log outf=schottky_fwd.log solve vanode=0.0 vstep=0.02 vfinal=1.0 name=anode

log语句指定数据输出的文件名,从这之后到log关掉之前,每次solve的电极电流、电压等都会记录到这个日志文件里。solve语句的含义是从阳极电压0V开始,以0.02V为步长扫描到1.0V,每步都把结果写入日志。这里需要注意,扫描的起始电压不一定非要从0开始,但推荐从0附近开始,因为初始状态更容易收敛。

为什么步长设0.02V而不是一次加0.1V?因为正向导通区的电流随电压呈指数增长,电压每增加0.1V,电流可能涨几十倍,牛顿迭代在这种强非线性下容易发散。小步长相当于给求解器一个“缓冲”,让它逐步适应新的工作点。对大电流段,如果还想更顺滑,可以在高电压区域用更小的步长或自适应步长选项。

扫描结束后,在DeckBuild里执行tonyplot,就能弹出图形窗口,显示阳极电压和阳极电流的关系曲线。如果你是在命令行下跑批处理,也可以写成tonyplot schottky_fwd.log,TonyPlot会自动打开并渲染数据。

3.5 在TonyPlot里看懂正向I-V曲线

曲线默认是线性坐标的,你会看到一条在低电压段几乎贴着横轴、过了拐点后急速上升的曲线,这就是典型的肖特基二极管正向特性。这个时候建议把Y轴改成对数坐标,方法是右键点击Y轴属性,选择对数刻度,能非常清楚地看到指数区。

从半对数曲线里能读出很多信息。低电流段曲线呈现一条直线,这对应热电子发射的指数区,直线斜率决定了理想因子n。当电流继续增大,曲线逐渐偏离直线、开始弯曲下坠,这就是串联电阻在起作用。把线性坐标下高电流段的斜率求出来,倒数就是串联电阻值。

顺便提一句,TonyPlot里测量两点斜率可以直接用自带的选定工具,手工做线性拟合也行。后面讲参数提取时会具体说这几个量怎么从图上或数据里算。

4. 从仿真结果反推器件参数

4.1 理想因子的计算

理想因子n是衡量肖特基二极管整流特性与理想模型偏离程度的重要参数。在指数区,I-V关系近似为I = I_s exp(qV/nkT),把两边取自然对数:

ln I = ln I_s + (q / nkT) V

所以在ln(I)-V半对数坐标下,指数区是一条直线,斜率就是q/nkT。从斜率可以直接解出:

n = q / (kT × 斜率)

在实际操作中,我一般先把log文件里的I-V数据导入TonyPlot,将Y轴设为对数,然后在指数区选择两个点记录坐标,用Δ(lnI)/ΔV求得斜率。300K下,kT/q约等于0.02585V,代入即可。仿真中如果设置正确,n通常在1.01~1.05之间,如果明显大于1.2,要怀疑是不是串入了某个接触电阻或网格质量太差。

4.2 势垒高度估算

反向饱和电流I_s是另一个关键参数。在半对数I-V曲线上,把指数区的直线延长到V=0处,截距就是ln(I_s)。得到I_s后,利用公式:

φB = (kT/q) ln(A A^* T² / I_s)

这里A是器件面积,A^*是理查森常数。二维仿真中电流的单位通常是安培每微米,这是因为Atlas默认二维结构在第三个方向上取单位长度,所以A要理解为宽度1微米对应的面积,换算时别忽略了这一点。

这种提取方法成立的前提是电流输运以热电子发射为主,如果仿真里势垒很低,隧穿电流占比变大时,提取出来的φB会偏低。要判断是否处于热发射主导区域,可以观察低温与高温下电流随温度的变化趋势,不过对入门例库来说,用上面这个方法足够。

4.3 串联电阻的提取

串联电阻在正向I-V曲线的“尾巴”上表现最明显。当外加电压足够高,结本身已经充分导通,额外增加的电压基本都落在串联电阻上,曲线退化为线性关系。这时线性段的斜率ΔV/ΔI就是Rs,单位是Ω·cm²或者Ω,取决于你使用的电流和面积单位。

还有一种更精确的做法是Cheung方法,利用dI/dV或H函数作图,可以在不需要明确知道势垒高度的情况下解出Rs和n。这个方法在提取SiC肖特基二极管参数时特别常用。TCAD仿真中可以直接检查串联电阻来源,把仿真结构的材料电阻率算一遍,看看和提取出的Rs是否对得上,从而验证结构定义是否正确。比如1e16掺杂的硅,电阻率大约0.5Ω·cm,10微米厚,如果面积1cm²,单片漂移区电阻约5mΩ,仿真中如果Rs远大于这个值,很可能是接触设置或网格有问题。

5. 常见问题与排查技巧实录

5.1 电压扫描中途不收敛

这是最常见的问题。现象是solve语句跑到某一步时报错,或者日志里的电流突然跳成极大或极小值。我一般的排查顺序是:

先检查有没有给结构留足够的过渡网格。肖特基二极管的势垒区极薄,网格间距在0.005微米量级是基本的,如果间距到了0.05微米,计算的势垒曲线会严重失真,电流也就不可能收敛。

再看电压步长。把vstep从0.02改成0.01或0.005,很多时候就直接解决问题。原因很简单,指数型I-V曲线在开启电压附近电流变化非常剧烈,步长太大让牛顿迭代很难回到正确的解。还可以检查method语句,把autonr加上,或者直接把方法从gummel改成newton试试,但注意newton对初值更挑剔。

最后,如果还是不收敛,尝试把杂质浓度稍微降低或升高一档,看是否与掺杂引起的数值病态有关。低掺杂情况下,耗尽区宽度可能超过结构厚度,导致底部边界影响计算结果,这时需要加厚结构或者加长求解域。

5.2 正向I-V曲线严重偏离理论形状

如果你跑出来的曲线不管怎么调都是个纯电阻直线、没有指数区,那大概率是肖特基接触没生效。典型错误是contact语句写错了电极名,或者根本没写。Atlas把这种情况当作普通欧姆接触处理,I-V曲线自然就是一条过原点的直线。

如果曲线有指数区但开启电压远高于理论值,多半是势垒高度设置偏大。功函数设得太高,或者barrier写得太大,都会导致I_s极小,曲线整体右移。这时候对比一下理论值,金属功函数4.9eV、硅电子亲和势4.05eV,势垒应该在0.85eV附近。

如果曲线指数区斜率很平,即n值很大,常见原因是接触表面存在界面态,这在TCAD里一般通过在接触界面设置表面电荷或缺陷态来模拟。但入门例库里通常不需要这么复杂,先把网格和模型检查一遍再说。

5.3 网格敏感性:如何判断网格够不够细

网格问题在TCAD里是最隐蔽的坑。一个简单的测试方法是把网格整体加密一倍,如果I-V曲线变化不大,说明当前网格基本收敛;如果变化非常明显,那就说明之前的网格没有算准。

以这个例子来说,最敏感的网格区间是顶部0.2微米以内的势垒区。我通常把这个区域的网格间距从0.005微米往下缩到0.002微米,看电流是否明显变化。如果还是变化很大,就要继续加密,直到结果稳定为止。不过网格越密,仿真时间越长,调试时可以先用粗网格跑通流程,最终定稿前再用细网格跑一次正式的。

5.4 百密一疏:电流单位与面积换算

二维Silvaco仿真的电流单位很容易把人绕晕。默认情况下,电流单位是A/μm,意思是每微米宽度上的电流。如果你的电极宽度是5微米,那么总电流等于单位宽度电流乘以5。提取参数时,如果忘记把宽度和单位换算进去,算出的I_s、Rs都会出问题。

我的习惯是,仿真前先明确自己要什么单位,然后在提取参数时统一换算。比如要算标准化的电流密度,就把电流除以电极宽度;如果要算实际器件的总电流,再把宽度乘回去。

5.5 安装与运行环境的那点事

很多新手卡在Silvaco TCAD安装上,其实Silvaco是商业软件,正常渠道是通过学校或公司购买授权,拿到安装包和license文件后,在Linux或Windows环境里装好。装完后一定要确认环境变量正确指向license,否则软件起来容易,一跑工程就报license错误。

Windows下DeckBuild和TonyPlot是图形界面的,操作直观;Linux服务器下更多是命令行跑脚本和TonyPlot出图。我个人的建议是,入门阶段用Windows图形界面把流程熟悉一遍,等要批量跑参数扫描了,再迁到Linux命令行环境,配合脚本做自动化。这样既好上手,又保留扩展空间。

5.6 从硅到碳化硅:SiC肖特基二极管仿真要注意什么

我前面提到过,很多人学完硅肖特基二极管,转头就去碰SiC肖特基器件。SiC材料本身在Silvaco里有现成库,直接region ... material=silicon_carbide就能调用,但仿真细节和硅有很大区别。

SiC的带隙宽约3.26eV,本征载流子浓度极低,反向漏电机制主要表现为电场相关的隧穿和热电子发射,对接触势垒高度的敏感性更高。SiC的电子迁移率与掺杂浓度关系、不完全离化效应等都需要通过模型参数体现,比如在material语句里设置杂质离化能,或者在models里打开不完全离化模型。

网格方面,SiC功率器件的工作电压高,耗尽区比硅器件厚得多,结构尺寸和网格策略都要重新考虑。收敛性也更难调,通常要把步长进一步缩小,或者用更适合高场问题的数值方法组合。这些细节做好了,SiC肖特基二极管的仿真才靠谱。

6. 例库扩展:这个例子还能怎么改

6.1 改变材料与温度

例子本身是一个硅基器件,但你可以把材料参数改掉,模拟4H-SiC肖特基二极管、GaN肖特基二极管,甚至化合物半导体结构。温度参数也可以从300K改到400K或250K,观察热电子发射电流随温度的变化趋势。这些改动看似简单,实际上能把器件工作的物理机制摸得更透。

6.2 加反向恢复或击穿特性

正向特性只是第一步,改一改扫描方向和电压范围,就能看反向漏电和击穿特性。对肖特基二极管来说,反向恢复几乎是瞬时的,这也正是它比PN结二极管更适合高频应用的重要原因。把这部分加进例库,就能完整覆盖一个功率二极管的基础仿真需求。

6.3 往二维结构扩展

真实功率肖特基二极管往往带有场限环、结终端扩展等结构,需要在二维甚至三维里仔细划分网格。从一维/准一维结构出发,逐步加入横向结构变化,是一个比较平滑的学习曲线。很多人在二维结构里遇到网格扭曲、边界电极定义错误等问题,返回来重新理解这个简单例子的电极和网格定义,会发现大部分坑都在基础阶段埋着。

根据我个人的实操经验,把例子跑通只是第一步,更重要的是用“改参数、看响应、找原因”的方式反复折腾:把功函数从4.9改到4.5,把漂移区浓度从1e16改到1e17,把厚度从10微米改成50微米,每一次改动都记录I-V曲线的变化,很快你就能建立非常扎实的TCAD仿真直觉。以后再做更复杂的结构,遇到问题也会知道从物理上、从网格上、从参数上去排查,而不是盲目地乱调。

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

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

立即咨询