
做了这么多年计算光刻每次听到有人说“矢量OPC也就是在标量模型上硬加了一个偏振修正项”我都想请他先把严格耦合波分析跑一遍再说。光刻技术发展到45nm以下节点之后照明数值孔径推向1.2甚至1.35的浸没式系统掩膜上的图形尺寸又远小于曝光波长标量成像模型算出来的结果和晶圆上实际印出来的图形经常对不上误差能到好几个纳米。这个差距就是矢量效应和掩膜三维电磁散射共同造成的而矢量OPC的数值计算就是为了把这个差距在仿真环节里实实在在地算出来、补回去。这一期内容是光刻技术系列的第11期主题是矢量OPC的数值计算与分析面向的是正在做OPC模型开发、计算光刻算法研究或者工艺窗口分析的工程师也适合刚入行、想搞清楚OPC底层物理逻辑的在校学生。我会从标量模型为什么会失效讲起再展开矢量成像和掩膜电磁仿真的数值框架带一套可复现的实操参数配置和收敛判断方法最后把那些文档里基本不会写的坑单独拎出来说。1. 从标量到矢量为什么OPC必须要升级1.1 标量模型的适用范围与物理前提先明确一个概念标量成像模型在光刻计算里统治了很多年它的核心逻辑是把掩膜看成一张无限薄的振幅透过率屏所有衍射光都当成标量波来处理不考虑电场方向的变化也不考虑掩膜本身的厚度对电磁场的扰动。这个模型在数学上非常漂亮Hopkins公式一步积分就能算出空间像强度计算效率极高所以从i-line到KrF再到ArF干式光刻的前半段它都是绝对主力。什么时候它够用呢当数值孔径NA较低、入射角范围小、掩膜特征尺寸远大于波长的时候偏振效应太弱掩膜三维散射带来的相位扰动也几乎可以忽略标量模型和严格电磁计算之间的差异通常小于1nm。这也是为什么90nm节点之前很多OPC模型跑标量也能满足收敛要求。但到了45nm及以下情况完全不同了。1.2 高数值孔径与浸没式光刻带来的矢量效应ArF浸没式光刻把工作流体换成水之后数值孔径直接顶到1.35。这里有个非常直观的数最大入射角的正弦值等于NA除以介质折射率NA1.35、水的折射率约1.44算下来最大入射角大约是69度。光以这么大角度斜着打到光刻胶上电场矢量的方向必须分解成平行于入射面的p分量和垂直于入射面的s分量这两个分量在光刻胶界面的透过率、相位变化、吸收特性完全不一样。曝光结果就是在同样版图条件下横向线条和纵向线条的最优剂量、CD偏移都不相同。更麻烦的是光刻胶内部还存在驻波效应。入射光和从基底反射回来的光会发生干涉光强分布在深度方向呈周期振荡振荡周期和波长、胶折射率相关。标量模型在描述这些干涉时只能处理强度叠加没法表达不同偏振态的干涉项。实际情况是s偏振和p偏振各自的驻波分布并不一样这直接决定了最终显影后剖面形状。千万别小看这个差异实测数据里密集线条的CD因为偏振选择出现2到4nm偏移是常有的事。1.3 掩膜三维效应薄掩膜假设彻底失效除了成像光路里的矢量效应掩膜本身也出了问题。标量模型假设掩膜无限薄光透过掩膜时只发生振幅调制相位损失为零。但真实掩膜是几十纳米的铬层或钼硅多层膜叠在石英或玻璃基底上光在穿过这些结构时会发生散射、吸收和相位延迟而且散射强度与图形的周期、线宽、侧壁角度强相关这就是掩膜三维效应。对EUV光刻来说这个问题尤其严重。EUV掩膜是反射式结构钼硅多层膜厚度大概在280个原子层量级吸收层图形刻蚀后有侧壁角光在图形边缘的散射强烈依赖角度和偏振。有一组数据我印象很深在同一张掩膜上同样线宽的密集线条和孤立线条由于掩膜三维效应引入的相位差异成像焦面偏移可以达到几十纳米。标量模型在这个层面上完全无能为力所以矢量OPC的数值计算不仅是透镜光路的修正更要把掩膜的电磁场仿真纳入整个链路。2. 矢量成像模型的核心数值计算框架2.1 Abbe成像原理从点光源积分到偏振叠加理解矢量OPC的数值计算第一个要搞清楚的是成像框架。目前主流实现基本都采用Abbe成像原理而不是直接做Hopkins公式的四重积分。Abbe方式更符合矢量模型的计算习惯先把扩展光源离散成一系列互相不相干的点光源对每一个点光源分别作相干成像计算再把所有点光源的像面强度加权相加。这样做的好处有两个一是能自然处理各点光源的偏振态和入射角差异二是在计算过程中可以随时插入掩膜近场数据和薄膜堆叠的反射透射系数。它的数学表达可以写成像面强度 I(x) 等于所有光瞳采样点对应的电场强度模平方的加权和。注意这里的关键字是电场强度而不是振幅强度。矢量模型里每一个点光源发出的光经过掩膜衍射后在像方会形成三个分量的电场矢量不能简单叠加成标量而是要对电场矢量的每个分量先做傅里叶传播再在像面合成。2.2 偏振分解与电场传播算子具体到数值实现偏振分解是绕不开的第一道工序。入射光经过照明系统后可以看成部分偏振光通常用Jones矢量来描述。当它入射到掩膜上时我们先把入射电场分解成s和p两个方向分别作用于掩膜的衍射近场。然后这些衍射光通过光瞳光瞳本身又引入了截断效应高频衍射级被挡掉低频部分继续传播。在像方我们需要把光瞳面上的s、p分量重新映射到像空间的x、y、z坐标轴上。这一步特别容易出错因为做傅里叶变换时默认的坐标系统是光瞳柱坐标而实际像面使用直角坐标两者之间的转换系数是入射角和方位角的函数。很多开源代码算出来的结果不收敛问题往往就出在这个映射关系的某个正负号或三角函数项上。我建议新手第一次实现时先用NA比较低、入射角比较小的情况验证坐标映射函数因为那时s和p的差异基本可以忽略容易对照解析解。2.3 掩膜近场仿真严格耦合波分析与时域有限差分接下来是整个矢量OPC计算里计算量最大的部分——掩膜近场电磁仿真。常用方法有严格耦合波分析RCWA、时域有限差分FDTD、有限元法等。RCWA在周期性版图场景下非常高效因为光刻掩膜图形基本都是周期重复的结构可以直接在频域里把电磁场展开成傅里叶级数对每个衍射级次求解麦克斯韦方程组。FDTD则擅长处理非周期、大尺寸的复杂图形但网格划分精细时内存和时间开销惊人。不管用哪种方法输入参数都包括掩膜各层材料在曝光波长下的复折射率n和k值、膜层厚度、图形侧壁角、线宽偏差等。仿真结果输出的是一片复振幅场既包含振幅也包含相位这个近场数据才是后续成像计算真正需要的输入。需要特别提醒的是EUV掩膜的吸收层厚度对相位非常敏感厚度差1nm可能带来近几十度的相位变化所以仿真输入的材料参数必须经过严格标定不能直接照搬教科书数值。2.4 数值离散与收敛性判断所有数值计算都面临离散化的问题。光瞳采样点数、掩膜近场的网格尺寸、RCWA的谐波截断阶数这三个参数直接决定计算精度。光瞳采样不足会带来像面强度的放射状伪影而网格过粗则会让近场相位失真。我的经验法则是网格步长至少小于最小特征尺寸的十分之一对于45nm半间距的图形网格取2到4nm比较靠谱RCWA的截断阶数建议从9阶开始试逐步增加到21阶观察关键CD的变化CD漂移小于0.1nm就可以认为收敛了。收敛判断不能只看CD还要看聚焦曝光窗口的敏感度。实际操作中我会同时监控两个指标一是目标尺寸处空间像的CD变化量二是归一化对数斜率的变化率。后者对工艺窗口更敏感如果光瞳采样翻倍后NILS还有超过1%的变化就说明采样还是不够需要继续加。3. 实操过程与关键参数配置3.1 完整仿真链路与输入准备搭建矢量OPC仿真链路我的习惯是先从输入文件开始梳理。一份完整的输入数据包括版图文件GDS或OASIS格式、光刻工艺栈参数表、照明条件设置、镜头像差数据、光刻胶显影模型参数。工艺栈参数表要写清楚从掩膜到基底每一层的材料、厚度、复折射率缺任何一层都会让后续的衬底反射计算出问题。建议所有输入参数都统一到同一个单位体系下避免出现纳米和微米混用。我自己踩过这个坑早期做一个项目时掩膜厚度错误地写成微米结果仿真出来的焦面偏移大了整整三倍排查了一整天才发现是单位问题。现在我的做法是做一个参数检查脚本统一读取所有配置文件先做物理范围合理性校验超出预定义区间的直接报错。3.2 照明条件与偏振设置照明条件方面需要设置光源形状和偏振模式。常用的照明模式有传统圆形照明、环形照明、偶极和四极照明。每种模式的参数表达不一致圆形照明用一个sigma值就够了环形照明需要内外sigma偶极照明还要加开口角度和旋转角度。这些参数的设定直接决定了衍射光的频谱分布对OPC修正方向有非常强的影响。偏振设置一般有三种选择线偏振、圆偏振和无偏振。真实光刻机里偏振度不可能做到100%仿真时需要按实际偏振度做混合。以45nm密集线条工艺为例假如使用垂直方向取向的偶极照明那s偏振分量应该占主导而p偏振分量会被光瞳滤波器大幅衰减。如果你在仿真里不做偏振分解直接按无偏振算密集线条的CD可能被高估1.5nm以上。3.3 薄膜堆叠与抗蚀剂模型选择薄膜堆叠对成像的影响主要通过多层反射干涉来实现。光刻胶厚度、底部抗反射涂层的厚度和吸收系数、基底反射率三者共同决定驻波效应和衬底反射对CD的贡献。在ArF浸没工艺中抗反射涂层厚度稍微偏了5nm反射率就可能从1%跳到5%驻波效应立刻变得明显光刻胶侧壁会出现明显的波纹状条纹。抗蚀剂模型选择也很关键。最简单的常数阈值模型处理工艺流程快适用于初步评估工程上常用的是可变阈值模型它把空间像的多个特征量映射到显影后的CD值精度更高一点。更复杂的物理模型则要考虑酸扩散和反应显影动力学参数标定难度大但仿真置信度最好。做矢量OPC时我建议至少用到可变阈值模型否则前面花了那么多算力去精算矢量场最后被一个粗糙的光刻胶模型毁掉精度得不偿失。3.4 计算资源评估与加速策略矢量OPC数值计算的资源消耗比标量模型高一个数量级。掩膜近场仿真本身就很重一个100微米乘100微米的版图区域FDTD网格到2nm网格数量就达到25亿单机跑根本不可能。实操上通常只对局部代表性区域做严格的近场仿真然后通过边缘库方式插值应用到整块版图。GPU加速已经是很常规的操作了。商业光刻仿真软件基本都支持GPU开源电磁求解器也有很多版本支持CUDA。我的经验是从CPU迁移到GPU后掩膜近场计算速度能提升10到20倍但内存占用会明显增大显存小于8GB的卡跑大区域仍然吃力。另一个实用策略是预先计算一批常见掩膜结构的近场电磁数据存成数据库后续OPC迭代时直接查表效率提升特别明显。3.5 一个具体算例的完整流程用一个45nm半间距密集线条的例子来说明整条链路。曝光波长193nm数值孔径1.35水浸没偶极照明sigma外环0.95、内环0.75偏振设置为TM偏振。第一步做掩膜近场仿真输入石英基底、铬吸收层厚度65nm、侧壁角85度网格步长2nm。仿真输出的近场振幅分布显示图形边缘的电场强度出现增强峰值大约是入射场的1.4倍这个增强效应标量模型完全预测不到。第二步做矢量成像计算空间像的CD在阈值强度0.3的条件下得到45.8nm与设计目标45nm相比偏大0.8nm而在同样设置下跑标量模型得到44.5nm偏小0.5nm两者方向相反说明不升级到矢量模型盲目的OPC迭代只会把图形越修越偏。第三步做OPC修正时利用矢量近场数据重新计算边缘位置误差对目标图形边缘施加偏置。迭代3轮后CD收敛到45.1nm以内但和标量模型的OPC修正结果对比同一版图上需要修正的特征数量增加了一倍——很多标量模型认为不需要修正的小尺寸辅助图形在矢量模型里对主图形的影响其实不可忽略。4. 常见问题与排查技巧实录4.1 光瞳采样不足导致的放射状伪影我见过很多同事第一次跑矢量仿真算出来的空间像在密集线端出现星状或放射状的条纹第一反应以为是算法写错了。其实大概率只是光瞳采样点数太少。Abbe成像法采用离散采样点代表连续光源采样点不足时高频信息被低频采样点混叠就会在像面产生周期性伪影。解决方式非常简单把采样点数从24增加到48伪影通常就消失了。判断依据是采样点数翻倍后关键特征处的空间像强度分布不再发生变化。要注意的是采样点数最好选奇数因为奇数采样点在光瞳中心有明确的采样位置避免中心点漂移。4.2 驻波效应与衬底反射的误判矢量仿真里衬底反射处理不好会导致光刻胶内的驻波比异常进而让CD对胶厚极其敏感。有一次我在模拟某图像处理Demo时固定其他参数只改光刻胶厚度从110nm扫到140nmCD变化达到了12nm这明显超出了正常范围。排查后发现是底部抗反射涂层厚度和折射率参数填错了涂层实际太厚底部反射率升高驻波效应被放大了好几倍。把涂层厚度修正到工艺标称值后CD随胶厚的变化降到2nm以内。这类问题提醒我仿真参数表的准确度往往比仿真算法本身更影响最终结果。参数填错再精确的模型也救不回来。4.3 掩膜三维效应导致的CD分布不对称另一个高发问题是掩膜三维效应带来的CD不对称。实测数据里经常出现左侧边缘线偏粗、右侧偏细的现象即使版图本身完全对称。原因在于掩膜图形的垂直侧壁不是理想陡直光照射到侧壁时会产生向单一方向的散射偏移类似一个微型的反射镜效应。仿真时如果没有考虑侧壁角参数计算出来的对称图形CD是相等的完全复现不了实测现象。要复现这个现象掩膜近场仿真必须把侧壁角按实际量测值设置进去。比如吸收层侧壁角从90度改成87度后左右两侧CD差立即从0.1nm扩大到接近1.2nm。你可能觉得0.1nm的差异无所谓但在OPC收敛标准0.1nm的时代这个差异足以让良率出现明显波动。4.4 仿真与实测偏差的追因流程仿真结果和晶圆实测数据存在偏差是常态追因过程需要系统化。我的标准排查顺序是先核对光学参数照明强度分布、偏振度、数值孔径再核对掩膜参数CD偏差、侧壁角、膜厚最后核对光刻胶模型参数阈值、灵敏度、扩散长度。千万别一上来就调光刻胶参数光学部分的误差会被光刻胶参数强行吸收折抵得到一组看着很准的参数组合一旦换工艺条件立刻原形毕露。另有一条经验用多组工艺条件联合标定模型参数不要只盯着一组曝光剂量和焦点的数据。同一套参数如果能同时拟合密集线、孤立线和不同焦面位置的数据点这套参数的可信度才比较高。4.5 快速排查参数速查表异常现象最可能原因快速检查方法常规修正方向空间像出现放射状伪影光瞳采样点数不足采样点数翻倍看结果变化采样点数调至48以上密集线与孤立线CD偏差异常大掩膜三维效应未启用对比薄掩膜与厚掩膜仿真使用严格掩膜电磁模型左右或上下CD不对称掩膜侧壁角参数错误量测实际侧壁角并回填侧壁角按实测值修改CD随胶厚剧烈变化底部反射率过高检查抗反射涂层厚度和n/k调整抗反射涂层参数偏振敏感特征与实际不符偏振度设置错误对比不同偏振设置CD差按光刻机实测偏振度设置4.6 关于收敛判据的补充建议最后补一点关于收敛判据的个人看法。很多工程规范要求OPC迭代收敛到CD误差小于0.1nm这个目标在标量模型里不难但在矢量OPC里可能比较吃力因为掩膜近场仿真本身的网格离散会带来一定的相位误差。我的做法是把收敛阈值放宽到0.5nm同时严格要求整版图边缘放置误差EPE分布的百分位数稳定如果Houston判据下的EPE最大值连续两轮迭代不再下降就认为工程收敛已经达到继续算下去只会浪费算力。还要提醒一下矢量OPC计算中保存中间结果是必须的。每次迭代都输出近场数据、空间像和CD参数到一个汇总目录方便对比分析。我见过不少项目debug到半路发现参数被覆盖、找不回中间结果只能从头再跑一遍白白消耗好几天时间。以我个人经验来说从标量OPC切换到矢量OPC最大的变化不是代码和算法而是工作习惯。标量模型的容错率高参数粗糙一点结果也不会太离谱矢量模型对每一步输入都极其敏感掩膜厚度、侧壁角、偏振度、薄膜折射率任何一个参数偏离实际仿真结果就可能和晶圆数据差之千里。所以如果你正要上手矢量OPC的数值计算建议先从复现一组已知的实测数据开始确认整条链路所有环节都对得上再去做图形修正。光刻技术系列的下一期可以接着聊聊矢量OPC的加速算法与掩膜邻域正则化处理这块在实际工程中同样有不少有意思的坑。