Sentaurus推荐的自适应工艺网格划分策略
工艺网格,对于Sentaurus Process来说是一个比较麻烦的东西,太细跑得慢,太粗不够润,需要做一个折中处理以平衡仿真质量与性能。对于不同的离子注入工艺和扩散工艺条件来说,最佳的网格分布肯定是不同的,这也就意味着不能一招鲜吃遍天,用一套网格策略来覆盖所有的情况。为了适应大多数情况,自适应网格就比较重要了,参考官方手册,其提供了一个自适应工艺网格划分策略,下面简单介绍下。在工艺仿真中,最麻烦也最费时的就是扩散制程了,那么在扩散之前,就可以根据不同的离子注入Profile设定不同的自适应网格策略,主要是最小网格尺寸refine.min.edge,绝对误差abs.error,相对误差rel.error,剂量误差max.dose.error。剂量误差max.dose.error,官方推荐的是剂量(多次离子注入取最小的剂量)的1/100,这样基本可以保证剂量的准确性了,毕竟谁也不想因为网格的问题造成剂量的误差吧max.dose.error = Dmin / 100.0相对误差rel.error,当掺杂浓度变化超过rel.error设定的阈值时,就会细化网格。参考手册,推荐的值在0.5到1之间,对于许多典型情况,1代表粗网格,0.5代表细网格,当然也可以设置得更小,只是会更费时间。绝对误差abs.error,和相对误差rel.error搭配使用,当掺杂浓度的绝对值变化超过该阈值时(即使相对变化未达到 rel.error的要求),就会细化网格,这个值官方并没有推荐的设置,因为不同的扩散菜单,结深不同会导致掺杂浓度的绝对值差异,这个值只能自己多试试看怎么设了。最小网格尺寸refine.min.edge,官方提供了一套策略,先找到最小离子注入能量的菜单,执行get.moments命令,计算掺杂分布的统计矩,量化杂质分布的关键参数,这里主要是为了获取最小标准差
[*]
[*]
[*]
set moments set stdev.min 然后就可以设定最小网格尺寸refine.min.edge了refine.min.edge = stdev.min * rel.error / 4.0下面举一个例子,考虑如下的离子注入菜单
[*]
[*]
[*]
[*]
implant boron dose= 1e13 energy= 400implant boron dose= 5e12 energy= 800implant boron dose= 1e14 energy= 40implant boron dose= 2e15 energy= 10根据上面提出的算法,第二次的剂量最小,所以 max.dose.error设为5e10,最后一次注入的能量最小,其最小标准差为24nm,如果rel.error设为1的话,那么最小网格尺寸refine.min.edge应该为6nm,即
[*]
[*]
[*]
[*]
refinebox name= Global_Boron adaptive Silicon \refine.min.edge= "0.006 0.006 0.006" refine.max.edge= "10 10 10" \ max.dose.error= "Boron= 5e10" rel.error= "Boron= 1.0" \ abs.error= "Boron= 1e15"要禁用默认的自适应细化框,必须将以下设置与用户定义的细化框一起使用:
[*]
[*]
[*]
pdbSet Grid AdaptiveField Refine.Abs.Error 1e30pdbSet Grid AdaptiveField Refine.Rel.Error 1e30pdbSet Grid AdaptiveField Refine.Target.Length 1e30在扩散过程中,可以调整扩散仿真过程中网格重新划分频率的参数
[*]
pdbSet Diffuse Diffuse.Regrid.Steps 4默认为4,也就是每执行4次扩散计算,将会判断网格是否满足细化规则,进而动态地细化网格。这个值越小,重新划分网格的频率越高,仿真时间也就会越长,需要折中考虑。
页:
[1]
