Silvaco学习笔记(四)毕设相关

本文详细介绍了Silvaco仿真软件在处理半导体器件时采用的数值计算方法,包括Newton迭代法、Gummel迭代法和Block迭代法,讨论了它们的收敛性、精确性和效率,并提供了优化迭代过程的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2023.3.4 星期六

写在前边

昨天进行了PIN击穿特性文献调研(大多是关于SiC器件的)和仿真软件的继续学习。今天继续仿真文献的学习,搞清楚数值计算方法的原理,有必要的话需要复习一下计方。

一、Silvaco仿真软件复习

接上篇,今天继续复习

1.5 数值计算方法

ATLAS仿真半导体器件是基于1到6个耦合的非线性的偏微分方程。ATLAS将在器件结构的网格点处对这些方程采用数值计算来获取器件的特性。

对非线性的代数系统采用迭代的方式求解,直到解满足要求或确认不收敛。非线性迭代始于初始猜测值,然后将问题线性化,再对线性子问题直接求解或迭代求解。

不同的解决步骤会导致收敛性、精确性、效率和坚固性上的差别。收敛性主要体现在是否收敛和收敛的快慢。精确性指计算得到的解答和真实结果的近似程度。效率主要体现在计算所耗费的时间多少。坚固性指应用在宽范围结构,或网格和初始猜测策略非最优时的收敛性上的能力。

离散化技术将不同的网格点产生一定的联系。离散化应该包含两重含义,一是通过建立网格使连续的结构离散化,二是数值计算上的算法使物理量离散化。离散化技术对仿真很重要,尤其网格定义是重中之重,初学者往往体会不到这一点。

非线性计算方法由method状态以及迭代和收敛准则相关的参数进行设定。参数是newton、gummel、block,也可以是这些参数的组合。

1.5.1 Newton迭代法

Newton迭代法的每一次迭代将非线性的问题线性化处理。离散化的“尺寸”较大,则所需的时间也会变长。如果初始猜测很成功的话,就能很快得到收敛的且比较满意的结果。

Newton迭代法是ATLAS漂移——扩散计算的默认方法。还有一些其他的计算需要采用newton迭代法,他们是:含有集总元件时的DC计算、瞬态计算、curve tracing,频域的小信号分析。

Newton-richardson方法是newton迭代法的变体,当收敛放慢时它会计算新的系数矩阵。method的参数设置成autonr时会自动采用newton-richardson法

如果经过很多步才能收敛,问题可能来自于:网格定义(网格中高宽比(或宽高比)很大的三角形太多),耗尽区扩展到已定义为欧姆接触的地方,或是初始猜测值很差。

1.5.2 Gummel迭代法

该迭代法每一步迭代都需解一系列相关的子问题,通过对一个方程的主要变量离散化来得到子问题,此时其他的变量保持在当前计算得到的值不变。Gummel迭代法收敛的很慢,但能容忍粗糙的初始猜测值。

Gummel迭代法不能用于含有集总元件或电流边界情形的求解。

有两种方法可以改善gummel迭代计算。一、由于默认的gummel迭代是阻尼的(步长在减小),可将参数dvlimit设置成负值或0让迭代成为非阻尼的。二、由于每一步gummel迭代法其线性possion求解的数目限制为1,这会导致势(potential)更新时弛豫不足。

1.5.3 Block迭代法

在含有晶格加热或能量平衡方程时block迭代法很有用。Block迭代法计算一些子方程组,子方程组由一些不同方程按不同的顺序组成。

在不等温的漂移——扩散仿真时指定block迭代法,则newton迭代法将更新(update)势和浓度,去耦之后计算热流方程。热流方程和载流子温度方程都包含时,block法将先计算最初的温度,然后晶格温度去耦之后再迭代进行计算。

1.5.4组合迭代法

Newton迭代法、Gummel迭代法和Block迭代法可以单独使用,有时也需要联合使用。可以先用gummel迭代法,一定计算步长还不收敛再转为采用block迭代法或newton迭代法计算。gummel迭代次数由参数gum.init设定。

在包含晶格加热或能量平衡计算时可以先采用block迭代法然后newton迭代法的方式,block迭代法的次数上限用nblockit参数设置。

1.5.5 非线性迭代的收敛准则

当计算后的结果(主要是电势、浓度、晶格温度和载流子温度)在可容忍的范围内时非线性迭代就终止,即结果收敛。

计算载流子种类数:默认是2,也可以是1/0。载流子类型elec和hole分别表示电子和空穴。如果载流子类型设置为0时,将主要得到电势分布的仿真结果

如果计算结果很粗糙而导致不收敛,则使用trap参数可定义计算的折半次数。如果计算开始时数值梯度太大(Silvaco会认为计算结果很粗糙),则电极的偏置步长将从最初值减小到原来的一半重新计算,如果结果还是太粗糙就又折半计算直到精细程度在允许的范围内。

Silvaco默认的trap次数是4,如果初始值折半4次还很粗糙,则计算将停止,并在实时输出窗口中显示不收敛的报错信息“max trap more than 4”

例子中计算1V时势更新太大,然后折半到0.5V进行计算,接着是0.25、0.125、0.0625,到折半四次时结果仍很粗糙,就报错了。

参数maxtrap可以增加trap的上限。再考虑使用maxtrap参数前读者需要先确认网格密度是否合理,物理模型和迭代方法是否适当等。

2.组会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值