在silvaco仿真学习过程中,最近这段时间一直有一个很大的问题困扰着我,那就是我在仿真击穿特型曲线的过程中,在电压加到后期比较大的情况下,往往会出现仿真不收敛的情况,正常情况下器件的击穿应该在一个外加偏压上,电流出现迅速的上升,这才是击穿的定义,但是我仿真的过程中程序跑到一个较大的电压时,器件出现击穿,我观察电压电流曲线,在击穿电压(程序报告的)电流并没有出现迅速的变化,类似于下图这种形式。
通过网上调研主要是在社区观察文章,并没有针对这一现象阐述产生原因及解决方法的文章,而且我比较能够确定的是当程序结束时,其实并没有到击穿的条件,导致程序停止的原因大概率是不收敛。
社区中很多文章针对不收敛问题给出方法大致为以下的三点:
(1)程序中网格设计的不合理,在物理量急剧变化的地方网格因该更加稠密以便能够更加精确的反应物理量的变化,在变化较小的地方网格保持较为稀疏保证总体上网格数目较小,使程序运行不致太缓慢
(2)物理模型选择的有问题,选择的物理模型与仿真的器件有物理原理上的不协调。
(3)在运行过程中电压货真电流的步长太大了也会导致不收敛
以上的对于不收敛问题给出的方法并没有错误,大多数时候不收敛问题的产生的原因都是上述三种之一。但是,针对我遇到的击穿特性曲线的不收敛问题上述的三种方法就无能为力了。通过我的调查和思考,击穿特性曲线不收敛使用的牛顿迭代法造成的。
牛顿迭代方法的收敛的充分条件是“若f 二阶可导,那么在代求零点x周围存在一些区域,只要起始点x0位于这一区域内,那么牛顿拉弗森迭代必然收敛”。
method newton itlimit=25 maxtraps=4
solve init
struct outf=PCSS-JTE10-3-1.str
log outf=PCSS-JTE10-3-1.log
solve vstep=0.01 vfinal=1 name=anode
solve vstep=1 vfinal=5 name=anode
solve vstep=5 vfinal=100 name=anode
save outf=PCSS-JTE10-3-1_100.str
solve vstep=5 vfinal=200 name=anode
save outf=PCSS-JTE10-3-1_200.str
solve vstep=5 vfinal=1000 name=anode
save outf=PCSS-JTE10-3-1_br.str
quit
这是我最初的设计的电压步进程序,程序的起始点就是0.01v但是通过这个程序运算出来的电压电流曲线是在达到击穿电压之前就不收敛了,从上图中也可以看出第一个电压是很异常的。
于是,我对起始电压进行了改变,当起始电压为0.5v时,电流的击穿特性就改善了,变成了如图:
总结:(1)当击穿曲线不收敛,且第一个点很奇怪时,造成的原因很大概率上是初始电压没有选好
(2)解决方法,将初始电压调整到合适的值,这个值可能是更大的也可能是更小的,要注意多多尝试。