十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

在OpticStudio中构建DOE与Metalens的高效建模验证流程

在OpticStudio中构建DOE与Metalens的高效建模验证流程 这两年只要碰光学设计方案DOE和metalens几乎绕不开。AR眼镜的衍射光波导、车载激光雷达的固态扫描、手机3D结构光里的点阵投射器核心元件都是这类衍射或亚波长结构。但不少工程师第一次用光学设计软件做这类元件时容易走两个极端一端是把整个纳米结构全部建模结果追迹效率极低系统级像差评估根本跑不动另一端是拿一个普通球面透镜代替像质分析跟实际加工件完全对不上。我在实际项目里用 Ansys Zemax OpticStudio 做过多轮DOE与超透镜metalens的系统级验证慢慢攒出一套从相位模型到波动验证、再到严格电磁仿真的串联流程。这篇就把这套建模方法、关键参数设置和踩过的坑完整整理出来给正在做衍射光学系统集成的同行参考。1. 为什么必须建立高效的DOE与metalens建模流程1.1 DOE与metalens的工程现状衍射光学元件和超透镜在消费电子、车载光学、AR/VR里已经是“标配级”选项了。DOE常用在光束整形、结构光投射、分束合束和光栅波导上metalens则因为能把传统多片式透镜缩成一片平面结构正在被大量评估用于TOF发射端、微型投影和极短焦成像系统。但这两类元件的共同点很让人头疼局部特征尺寸在亚波长量级而整个系统的工作口径又往往是毫米甚至厘米级。如果直接把纳米柱、台阶结构一个个建出来系统级的MTF、鬼像、公差分析几乎没有可能在工程周期内做完。传统做法是只对“宏观系统”用光线追迹把DOE或metalens简化成一个理想透镜。这样做前期是快但衍射效率、级次串扰、相位量化误差这些真正决定产品能不能用的因素全部被丢掉了仿真结果很容易与实测相差巨大。1.2 从“画结构”到“建相位”的建模思路转变想同时保住速度和精度唯一可行的路径是先“建相位”而不是一上来“画结构”。DOE和metalens的物理本质都是通过表面微结构引入一个特定的相位分布比如kinoform台阶式DOE是把连续相位按2π量化metalens则是用亚波长单元柱在各个位置匹配目标相位。对系统设计来说真正做决定的是这个宏观相位分布而不是每个单元柱的长宽高。这就好比做电路板设计系统架构阶段没人会用器件级晶体管仿真去验证整块芯片的功能一定先是寄存器传输级模型跑行为验证再针对性做关键单元的晶体管仿真。同理在OpticStudio里先用衍射相位型面比方说Binary Surface、Grid Phase把DOE或metalens的相位行为表达出来等系统指标稳定达标以后再把关键单元结构放到严格电磁求解器里校核效率和工艺可行性这才是高效的顺序。1.3 三层验证工作流相位模型、波动验证、严格求解我在实际项目里习惯把建模验证拆成三个层次每一层有明确的输入输出和判断标准。第一层是“相位模型层”在OpticStudio序列模式里用Binary 2或Grid Phase把元件等效成相位面快速看系统像差、准直效果、点列斑是否在预算内第二层是“波动验证层”用Physical Optics PropagationPOP做相干光束传播看PSF、Strehl Ratio、聚焦光斑形态是否满足最终光场要求第三层是“严格电磁层”把设计好的相位分布对应到具体单元结构用RCWA或FDTD算每个单元的实际振幅和相位响应再反哺到第一层修正模型。这套流程最核心的价值是“每层都有明确能回答的问题”。第一层回答“系统结构选型对不对”第二层回答“衍射/干涉效应下最终光场行不行”第三层回答“工艺上能不能做出来、效率会不会掉很多”。三层彼此校准而不是互相替代。后面几个小节就按这个顺序把具体操作和参数讲透。2. DOE建模核心从相位型面到Binary Surface2.1 DOE本质与衍射级次的选择DOE的相位分布一般可以写成周期或准周期性函数入射光通过元件后相位被调制不同衍射级次分开。一条最常用的判断公式是光栅方程 mλ Λ(sinθ_i sinθ_m)其中m是目的级次Λ是特征周期θ_i和θ_m分别是入射角和衍射角。做系统布局时这个公式能快速估算DOE的工作角范围也决定了你后续在OpticStudio里该把衍射级次填成几。比如要做1×3分束器设计目标是使用1、0、-1三个级次建模时就不能只在单次追迹里看一个级次而是要建立三个配置分别设置对应级次来模拟不同状态。很多人第一次用Binary Surface时直接把衍射级次保持默认的0结果发现仿出来的像一个普通折射透镜问题就出在这条参数上。在OpticStudio里Binary系列面型会在指定面上叠加相位函数光线经过时直接按你设置的衍射级次改变传播方向。这里的“衍射级次”就相当于光栅方程里的m是整个DOE建模中最先要确认的输入。2.2 Binary 1、Binary 2与Grid Phase的选型边界不同DOE形态在OpticStudio里对应不同面型选错了会导致要么拟合精度不够要么光线追迹效率非常差。我整理了一张常用对照表实际项目里可以先按这个表做初选。元件类型推荐面型适用场景主要限制旋转对称连续相位DOEBinary 1准直镜、旋转对称光束整形只支持按径向半径的多项式非对称连续相位DOEBinary 2任意二维相位分布、分束、投影、定制光场整形项数有限高阶拟合可能振荡深浮雕/任意相位图Grid Phasemetalens相位图、随机相位板、实测相位导入数据文件体积大、插值精度要注意周期光栅分束Grating surface、Surface Grating规则周期光栅、一维分束只适合周期结构不支持任意面型特殊矢高公式User Defined Surface供应商有特定工艺型面需要开发DLL集成成本高工程上我做DOE时旋转对称场景基本先用Binary 1看看结果如果相位图带有明显非对称特征比如斜入射补偿、离轴设计那就直接用Binary 2。Binary 2的相位函数是x和y的二元多项式灵活性足够覆盖大多数连续相位DOE设计。只有遇到深浮雕随机相位板或者metalens这类需要逐点相位表的场景我才改用Grid Phase。2.3 Binary 2的关键参数设置与系数填充Binary 2面型把相位写成关于局部坐标x、y的多项式形式大致是Φ(x, y) Σ A_{ij} x^i y^j在Extra Data Editor里第一步是把“Diffraction Order”填成设计目标级次比如1第二步设置“Maximum Term Number”控制要用多少项第三步按x幂次和y幂次递增顺序填入拟合系数A_{ij}。这里有两个实操上特别容易翻车的细节。第一是系数阶次不要盲目拉高。二元多项式拟合相位时阶次越高越容易在边缘出现振荡尤其相位图上带着残余像差或量化台阶时高阶项会把误差放大。我一般先只用到4到6阶看拟合残差的RMS如果残差已经小于λ/50就不再往上加项。第二是口径边界处要加过渡带。DOE实际加工件在口径边缘往往有圆角或工艺修剪区模型里如果直接把多项式作用到整个通光口径边缘相位与真实件会差很多。我的习惯是建模时在System Explorer里设置一个比有效口径略小的孔径把边缘效应留给工艺层去处理设计层先保证中心有效区域正确。填充系数的方式也不建议手算。先用Python、MATLAB或Zemax的ZPL脚本把目标相位分布算出来再用最小二乘拟合得到多项式的各项系数最后批量写入Extra Data Editor。这样既能保住精度也方便后续做公差或容差分析时批量修改。3. Metalens建模相位拟合与Grid Phase导入3.1 双曲相位分布的计算与拟合Metalens的标准设计是双曲相位分布目的是把平面波完美聚焦到焦点φ(x, y) - (2π / λ) · (√(x² y² f²) - f)其中f是设计焦距λ是工作波长。这个公式所有做超透镜光学设计的人都绕不开。拿到相位分布以后接下来就是怎么把它准确塞进OpticStudio。我通常先写一个非常短的脚本生成相位分布然后把分布转成两种格式之一一种是拟合系数写入Binary 2一种是网格相位图写入Grid Phase。相位分布生成脚本大概是这样的思路import numpy as np wl 0.940 # 波长单位um f 125.0 # 焦距单位um pitch 0.500 # 网格间距单位um N 301 # 网格数 x (np.arange(N) - N // 2) * pitch X, Y np.meshgrid(x, x) phase -2.0 * np.pi / wl * (np.sqrt(X**2 Y**2 f**2) - f) # 折叠到[-pi, pi]方便后续处理与显示 phase (phase np.pi) % (2.0 * np.pi) - np.pi np.savetxt(metalens_phase.txt, phase, fmt%.4f)这个脚本本身不复杂但后面两步很容易被忽略。第一网格间距pitch要和meta单元尺寸匹配。你后续如果打算用RCWA逐单元校验网格间距就应该对应设计单元周期否则相位分布和真实结构对不上。第二拟合或导入前必须做相位解包裹处理。如果直接用折叠到[-π, π]环域的相位图去拟合连续多项式会在2π跳变处产生不连续拟合出来全是振荡。3.2 Binary 2拟合法与Grid Phase导入法的取舍Metalens在OpticStudio里最常见的两种实现方式各有优劣我分别说。Binary 2拟合法相当于把一个连续相位分布用多项式近似。优点很直接面型参数少文件干净后续做优化、公差分析时变量少跑起来也快。缺点也非常明显双曲相位其实不是纯多项式能完美表达的尤其在边缘之前的高NA区域拟合残差会明显增大。如果金属透镜设计NA大于0.6我只把Binary 2拟合法当成粗看方案不会拿去做最终焦点光斑评估。Grid Phase导入法是把实际相位分布按网格文件完整读进去。OpticStudio的Grid Phase面型支持读取标准网格相位文件里面的相位数据可以是文本矩阵或二进制格式。优点是保留了原始相位图的全部细节拟合残差为零适合给最终设计做验证缺点是文件比较大且插值算法会引入轻度平滑。更关键的是网格间距必须足够小否则相位梯度大的地方比如边缘采样不足仿真结果会出现伪衍射条纹。有一种实用组合方式先用Binary 2快速扫出系统参数范围比如焦距、后焦距离、工作波长对像质的灵敏度锁定参数后再换成Grid Phase做最终验证。这样两者优势都能用上又不会在前期被Grid Phase的调试时间拖慢。3.3 标量相位模型的边界极化、色散与高NA所有相位型面模型本质上都基于标量衍射近似也就是默认入射光经过每个位置时只被加了一个相位振幅大小不变。这个假设只在结构特征尺寸远大于波长、且单元响应近似各向同性时才成立。metalens的单元柱直径常常只有几百纳米工作波长如果是940nm或更短标量近似的误差已经不能忽视了。具体来说标量相位模型无法捕捉三类物理效应一是极化转换二是一阶衍射效率的单元差异三是在大入射角下单元响应的非对称性。这些效应会直接影响焦点效率、杂散光水平和偏振相关像质。所以真实工作流里System级用相位模型确定布局元件级一定要回到严格电磁仿真。我会把金属透镜对应的不同位置单元柱分别提取出来用RCWA算透射相位和振幅响应形成一个“单元库”。然后检查单元库实际响应和目标相位分布的偏差如果偏差超出阈值就把偏差修正回OpticStudio的相位模型里重新跑系统。这个迭代过程才是metalens建模验证闭环的关键。4. 验证闭环设计POP波动传播与RCWA/FDTD对照4.1 POP物理光学传播的设置要点光线追迹只能看到“光线到达哪里”看不到干涉、衍射和光斑能量分布细节。DOE和metalens本身是波动器件最终焦点光斑要靠衍射形成所以必须用Physical Optics Propagation做完整的相干传播验证。POP的起点是选择一个“主光束”pilot beam并指定它在哪个面、以什么束腰和发散角开始传播。对DOE或metalens验证来说通常把主光束放在元件前的入射面上用平面波或与系统输入匹配的高斯光束作为起点。然后一路传播到焦点面探测器面上直接读出光斑的辐照度分布。POP窗口里真正决定结果质量的是采样网格参数。网格数量要设置成2的幂次建议至少256×256起步网格物理尺寸要覆盖元件的有效口径最好再留20%到30%的过渡区防止边缘截断泄漏。还有一个很微妙的点网格间距要能分辨最大空间频率否则高频相位信息会被混叠。我的经验是放松网格尺寸到系统最高NA对应的衍射极限频率的4倍以上再跑一次对比两次结果差异如果差异大于几个百分点说明网格还不够密。4.2 用PSF、Strehl Ratio和能量集中度做量化判断验证不能只看仿真图好看必须落到能量指标上。我通常会在POP探测器上同时看三个指标。第一个是斯特列尔比Strehl Ratio也就是实际焦点峰值辐照度与衍射极限系统峰值辐照度的比值。聚焦类metalens和DOE设计里我一般要求相位模型下的Strehl Ratio达到0.9以上否则实际加工后大概率连0.8都保不住中间损耗都在工艺和材料层。第二个是点扩散函数PSF的半高全宽和旁瓣形态。DOE多级次对应多个PSF峰值侧边级次强度、杂光背景都需要在仿真阶段确认不能压过传感器的动态范围。第三个是环围能量或桶能量Encircled Energy。对激光雷达发射端来说焦点光斑贯穿到目标面上的能量集中度比PSF漂亮程度更重要。在POP里可以直接在探测面加一个半径可变的孔径积分能量快速判断如果接收端只有一定尺寸真正耦合进去的能量有多少。下面是我常用的一组阈值供参考。指标目标值说明Strehl Ratio≥ 0.9相位模型下的衍射受限程度PSF旁瓣峰值比≤ 0.3避免相邻级次串扰超过系统容忍度环围能量D1.2×艾里斑直径≥ 80%保证能量集中度够用拟合残差RMS≤ λ/50相位模型与目标分布的一致性4.3 与RCWA/FDTD严格求解器的交叉校验相位模型验证通过不等于真机就能达标。原因是严格电磁效应没法完全装进一个相位面里。我在最后阶段一定会做一次“严格电磁交叉校验”。具体做法是把metalens或DOE按位置采样成一系列代表性单元比如沿径向取10到20个点分别建出对应的纳米柱或台阶单元结构。然后用RCWA算每个单元在目标入射角下的相位响应和透射效率得到一张“相位-位置-效率”对照表。把这张表和OpticStudio里用的目标相位分布做差如果偏差超过允许范围就把偏差补偿进设计相位回到第三部分所述流程重新建模。如果团队里有FDTD工具还可以抽一个完整的小口径meta透镜做整面验证。虽然全口径FDTD计算量很大通常只能做几十微米直径但足够校验中心、边缘和过渡区的真实响应。我用这个方式查出来过一次由单元间近场耦合导致的边缘相位偏移这是纯标量模型完全看不出来的。5. 常见问题与排查技巧实录5.1 光线“直接穿过”或追迹行为像普通折射面这是DOE建模时最常犯的问题。我在评审里见过很多次现象是Binary Surface设了但光线传播方向和普通平板玻璃几乎没有区别。原因九成是衍射级次填了0。级次为0时DOE相当于一个没有衍射能力的相位面光线直接按折射Snell定律走。排查时先把Surface Type选成Binary 2再进Extra Data Editor确认“Diffraction Order”是不是目标级次比如1级就填1。如果多级次同时出现比如分束器要-1、0、1三个级次同时工作那就不是能在单一组态里看到的事。我会把系统建成三个Configuration每个Configuration里同一面的衍射级次分别设为-1、0和1然后在多重组态分析里观察三个级次的光斑分布和能量比例。这里要记住一点OpticStudio的光线追迹不会自动分配能量到各个级次级次间的效率分配需要靠光栅公式或严格电磁仿真结果输入。5.2 POP结果中出现伪条纹或无法收敛POP做出来PSF上多出一圈圈奇怪的同心纹或者中心光斑周围有明显假的次级峰一般不是元件设计错了而是采样或边界设置不对。先检查网格数量和尺寸尤其是网格间距是否小于奈奎斯特条件其次看边界截断如果网格范围刚好卡在元件口径边缘截断衍射会产生很强的高频纹路把网格往四周扩展至少20%再试试。还有一次让我印象深刻POP结果怎么看都收敛不了后来发现是入射光束定义里的束腰半径远大于元件口径导致光束本来就严重截断。定义主光束时要注意束腰半径最好与元件实际入光口径匹配否则物理上就不对数值结果自然也是错的。5.3 相位拟合残差大或边缘振荡导入Grid Phase后焦点光斑出现明显非对称或额外杂散光很大概率是边缘相位梯度没采够。双曲相位的边缘斜率极高如果网格间距太大相邻点相位差超过π插值时就会产生相位混叠。碰到这种情况我的处理方法是把网格间距减到原来的1/2并检查相位图中相邻点最大相位跳变量。若相邻点相位差还大于0.5π要么继续加密网格要么在导入前对相位图做分块插值。如果用的是Binary 2拟合边缘振荡通常是多项式过拟合导致的。可以降低阶数、改用带权重的最小二乘拟合让拟合算法把权重放在有效口径内部。另一个技巧是先做Zernike拟合再转换到笛卡尔多项式一些情况下Zernike基组的数值稳定性比直接二元幂函数好不少。现象可能原因排查与解决光线行为像普通折射面衍射级次0或级次设置错误检查Extra Data Editor中的Diffraction Order多级次缺少部分级次单组态只支持一个衍射级次使用多重Configuration分别设置级次POP出现规则伪条纹网格太粗或边界截断提高网格密度扩展网格范围20%PSF焦点能量下降相位拟合边缘振荡降低多项式阶次检查相位跳变Grid Phase混叠网格间距过大加密网格确保相邻相位差小于π/2仿真与实测效率对不上标量模型无法表达亚波长单元用RCWA/FDTD做单元级校验后再回代6. 几点工程落地心得做完这一整套流程我体会最深的是“建模效率”不等于“建得快”而是“每一层模型都能回答一个明确的问题”并且层与层之间能够互相校准。DOE和metalens如果一上来就无脑往严格电磁仿真里扎系统级和工艺级都会很痛苦反过来如果永远停在相位模型里加工出来往往货不对板。先相位、再POP、最后RCWA/FDTD是我目前验证下来性价比最高的一条路径。工具层面还有个容易被低估的点Zemax本身的脚本接口也就是ZPL和Python API可以把大量重复操作自动化。每次改完相位系数以后自动跑一次POP、自动读出Strehl Ratio和环围能量再自动生成报告这个过程能省掉大量手工操作时间。我习惯把第一节那个相位生成脚本、拟合脚本和POP分析脚本串成一条简单流程新的设计进来时只要改几个初始参数几分钟就能出一份初步评估结果。最后分享一个小技巧即使目标元件是metalens我也会把同一个相位分布同时用Binary 2和普通折射偶次非球面各建一个模型。普通非球面模型用来快速做系统初始布局和公差分配Binary 2或Grid Phase模型用来做最终衍射验证。两个模型的差异本身就是很好的“置信度探针”如果两者结果差很多说明设计对相位敏感度很高真正打样之前一定要先解决敏感度问题。这个习惯帮我在不少项目里提前避开了加工窗口过窄的坑。
返回列表