马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
工艺网格,对于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 [implant material=Silicon $Species \ energy= $Emin dose= $Dose get.moments] set stdev.min [lindex $moments 5]然后就可以设定最小网格尺寸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次扩散计算,将会判断网格是否满足细化规则,进而动态地细化网格。这个值越小,重新划分网格的频率越高,仿真时间也就会越长,需要折中考虑。
|