1. 为什么DOE设计在Zemax里总让你卡壳
接触Ansys Zemax做衍射光学元件设计的工程师,十有八九都经历过这样的场景:拿着一个DOE的需求文档,翻遍软件自带的帮助文件,却不知道该从哪个窗口下手;或者在文献里看到别人用Binary Optic、衍射光栅、超透镜做出了漂亮的结果,自己照着复现却总差那么点意思。
先说清楚DOE(Diffractive Optical Element)在Zemax里到底是个什么角色。它本质上是一种通过表面微结构调制入射光波前的元件——用一句话概括:普通透镜靠曲面折射改变光线方向,DOE靠微观台阶结构产生相位延迟来重塑波前。这个"相位延迟"四个字,就是Zemax里所有DOE建模的核心逻辑。
很多新手容易犯的第一个认知错误,是把DOE当成一种"特殊的透镜"来设计,拿着Lens Data Editor里的Standard面型硬调曲率半径。这样做的结果往往是:面型看起来差不多了,但衍射效率、色散特性这些真正决定DOE性能的指标完全对不上。实际上,Zemax里DOE的建模思路和折射透镜有本质区别——你需要在相位域里思考问题,而不是在几何域里。
Zemax从很早就内置了针对DOE设计的工具链,主要分布在三个层面:
- 序列模式(Sequential):通过Binary Optic面型、相位面型等方式,在光线追迹层面模拟DOE的相位调制行为。
- 非序列模式(Non-Sequential):通过衍射光栅模型、微结构阵列等方式,更真实地模拟DOE的分光、整形等物理效应。
- 优化与分析工具:通过衍射光学设计向导(Diffractive Optics Wizard)和评价函数(Merit Function),把设计需求转化为可优化的目标参数。
如果你打开Zemax的菜单栏,会发现DOE相关的工具分布得比较分散,这恰恰是它容易让人迷惑的地方。没有一个叫"DOE设计"的按钮让你一键搞定,你需要理解每个工具面型背后的物理模型,才能选对路径。
这篇文章我打算按照实际项目的推进顺序,把一套完整可复用的DOE设计流程拆开来讲。我会以典型的F/10、口径25.4mm、设计波长632.8nm的DOE为案例,从相位求解、建模、优化到公差分析走一遍完整链路,最后单独讲超透镜(metalens)设计里那些文档里不会写明的坑。这套流程我在多个实际项目中验证过,按照这个路径走,能够避开大部分新手会撞上的问题。
2. 动手前的关键决策:选序列模式还是非序列模式
开始建模之前,你需要先做一个影响项目走向的决定:用序列模式还是非序列模式来做DOE设计。
这不是二选一的简单问题,因为两者对DOE的建模方式、分析结果和优化效率差异很大。选错了路径,轻则白干几天,重则得推翻重来。
2.1 序列模式适合什么场景
序列模式(Sequential Ray Tracing)的底层逻辑是"逐面追迹":光线按照你定义的面型顺序,一个面一个面地穿过光学系统,每个面只发生一次相互作用,然后进入下一个面。DOE在序列模式中通常建模为一个带有相位分布的特殊表面,而不是真实的微结构形貌。
Zemax序列模式里和DOE直接相关的面型主要有这么几种:
- Binary Optic 1/2:这是最经典的DOE建模面型,通过在基底表面上叠加一个由多项式或泽尔尼克多项式描述的相位分布来模拟衍射元件。它适合模拟连续相位或台阶化量化的相位分布。
- Phase Surface:允许直接定义相位函数,适合纯相位调制场景。
- Diffraction Grating:用于模拟周期性光栅的分光特性。
- Hologram 1/2:通过记录波前的方式定义相位,适合计算全息元件。
序列模式的核心优势是速度快。因为不需要构建真实的微结构几何体,光线追迹只涉及数学相位计算,优化时的评价函数迭代非常快。对于设计初期需要反复尝试不同相位分布、快速验证光学性能的场景,序列模式几乎是最优选择。
序列模式的核心局限是它"看不见"真实的微结构。你无法用这个模式分析微结构的衍射效率、工艺误差对性能的影响、不同台阶量化方案下的实际分光效果等问题。那些需要联系实际加工工艺的分析,必须放到非序列模式里去验证。
2.2 非序列模式适合什么场景
非序列模式(Non-Sequential Ray Tracing)的底层逻辑是"基于物体追迹":光线在空间中传播,遇到哪个物体就和哪个物体相互作用,顺序不确定,可以同一个物体多次相交。
在这个模式下,DOE可以被建模为真实的微结构几何体——比如一个个锯齿状的闪耀光栅台阶、二元光学元件的多级台阶结构、超透镜的纳米柱阵列。你可以给每个微结构赋予真实的材料折射率和几何尺寸,光线追迹时发生的是真实的折射、衍射和散射。
非序列模式的核心优势是物理真实性。你能直接得到衍射效率、不同衍射级的能量分布、微结构制造公差对性能的影响等关键指标,这些都是序列模式给不了的。
非序列模式的核心代价是速度。因为需要追迹大量光线与微结构的交互,仿真时间比序列模式高好几个数量级。微结构尺寸越小、数量越多,追迹越慢。超透镜动辄几十万根纳米柱,非序列模式追迹起来基本是灾难级的慢。
2.3 我的选择建议:两段式设计流程
在多个DOE项目里反复试错之后,我形成了一个固定的两段式流程,这也是我推荐你采用的方式:
- 第一段——序列模式做相位求解与优化:先用序列模式快速求解放射到目标面的相位分布,优化理想相位函数,得到DOE的相位轮廓。这一阶段的核心目标是"确定DOE应该产生什么样的相位分布"。
- 第二段——非序列模式做真实结构验证:把序列模式得到的理想相位转化为具体的微结构形貌(台阶高度、周期、占空比等),在非序列模式里建模并验证衍射效率、加工容差等物理指标。这一阶段的核心目标是"验证真实工艺条件下DOE能否达到设计性能"。
这个"先相位后结构"的流程,是我在真实项目里验过的最稳妥路径。跳过序列模式直接上非序列建模,很容易在物理结构上花了大量时间,最后发现理想相位根本没设计对,白费功夫。
3. 第1步:从需求到目标相位——DOE设计的关键起点
很多人拿到一个DOE设计需求,第一反应是打开Zemax开始建模型。这个顺序是错的——你应该先搞清楚DOE需要产生什么相位分布,再进行光学建模。
打个比方:设计一个DOE,就像给一个乐团写总谱。作曲家(光学设计师)需要先确定每个乐器(光线的每个入射位置)应该在什么时刻(相位)发出什么音高(方向),然后乐团成员(微结构台阶)才能照着总谱去演奏。直接闷头建模,相当于还没写总谱就让乐手上台。
3.1 从设计规格书里提取关键参数
一份典型的DOE需求规格书,通常包含以下核心参数。我以一个常见的设计需求为例:
| 参数 | 数值 | 说明 |
|---|---|---|
| 设计波长 | 632.8nm (He-Ne激光) | 决定相位台阶高度的基准波长 |
| 光束口径 | 25.4mm (1英寸) | 决定DOE的有效直径 |
| 焦距 | 250mm | 决定相位分布的整体曲率项 |
| 衍射效率目标 | >90% (1级) | 决定台阶量化方案的精度 |
| 基底材料 | 熔融石英 (n=1.457) | 决定台阶高度与相位的换算关系 |
设计波长的选择有一个容易忽略的细节:如果你要用白光照明或者多波长系统,设计波长要选在系统光谱响应的中心或能量加权中心附近。632.8nm的He-Ne激光是实验室里最容易获得的相干光源,所以很多原型验证项目会以它作为设计波长。
3.2 相位分布的解析求解方法
对于最常见的"DOE实现聚焦功能"(即衍射透镜)这一需求,目标相位分布可以用一个简洁的解析式表达。
理想的球面波前相位分布可以写作:
φ(r) = (2π/λ) · (f - √(f² + r²))
其中,φ(r)是径向位置r处的相位,f是设计焦距,λ是设计波长。
这里要注意:DOE的相位分布天然是周期的,以2π为周期。因此,上面这个连续的球面相位分布,会被"折叠"进[0, 2π)的区间内。这个折叠过程,工程上称为相位包裹(Phase Wrapping)。
在Zemax里,当你使用Binary Optic面型时,软件会自动处理相位包裹。但你自己心里要清楚:
- 相位差为2π整数倍的位置,在光学上等价。
- 包裹后的相位分布呈现一系列同心圆环状结构,这就是DOE的"菲涅尔环带"。
- 每个环带边界处,相位从2π跳变回0,这个跳变位置就是微结构台阶的位置。
对于更复杂的整形需求(比如把高斯光束整形为平顶光斑),目标相位通常没有解析解,需要用迭代算法求解。Zemax在这方面提供了GS算法(Gerchberg-Saxton)的变体实现,可以在序列模式下通过优化来逼近目标相位。我在实际项目中遇到的DOE需求里,大约有六成是聚焦/准直类(有解析解),四成是光束整形、分光、结构光投射类(需要迭代求解)。自助迭代求解的内容后面展开讲。
3.3 如何在Zemax序列模式里定义初始相位面
解析式求解出理论相位分布之后,把它转换为Zemax里的面型参数。以Binary Optic 2面型为例,相位分布被表示为极坐标下的多项式:
φ(r) = M · Σ(Aᵢ · r^(2i))
其中M是衍射级次(通常取1),Aᵢ是多项式系数,r是归一化径向坐标。
在实际操作中,如果你已经通过MATLAB或Python求出了相位分布,通常会做一次多项式拟合,把相位函数转换成Zemax能接受的多项式系数。这一步的精度控制很关键——拟合残差直接影响最终成像质量。
用Zemax自带的Zemax Programming Language (ZPL)或者API接口,可以比较方便地完成"外部计算相位+导入Zemax系数"的工作流。具体路径是:外部算出相位分布 → 多项式拟合 → 写入Binary Optic面型的系数列 → 光线追迹验证。
3.4 相位包裹操作:把无限相位折叠成有限台阶
前面提到了相位包裹的概念,这里展开说一个操作的细节。
当你得到连续的解析相位分布φ(r)后,要做的是:
φ_wrapped(r) = mod(φ(r), 2π)
得到的包裹相位分布在 -π ~ +π(或 0 ~ 2π)区间内。每一个2π相位跳变的位置,对应一个环带边界。
在Zemax的Binary Optic面型中,多项式本身描述的是包裹后的相位,因此不需要你手动做mod运算。但如果你用的是Extended Polynomial面型+相位项,就得留意相位是否已经被正确包裹,否则优化器会尝试用连续的巨大相位值去匹配目标,导致优化发散。
这里有一个实用技巧:包裹相位分布中,环带数量N与F数、波长和口径直接相关。估算公式为:
N ≈ D² / (8 · λ · f)
代入前面的参数:D=25.4mm, f=250mm, λ=632.8nm,得到N≈510。这意味着DOE表面会有约500多个环带。环带越密,对加工精度的要求越高,衍射效率的工艺敏感性也越高。这也是我在设计时会提前估算环带数的原因——如果环带数多到加工困难,我会和工艺方沟通调整设计参数。
4. 第2步:在序列模式中建立DOE模型并优化
相位求解完成后,进入Zemax实操环节。这一阶段的目标是把理论相位分布转化为一个收敛的、可制造的DOE光学模型。核心工具是序列模式下的Binary Optic面型,配合系统视场与波长的正确配置。
4.1 新建系统与波长配置的细节
打开Zemax OpticStudio,新建一个序列模式文件。第一步配置系统参数:
- 波长(Wavelengths):在System Explorer → Wavelengths里,输入设计波长632.8nm,权重设为1.0。
- 口径(Aperture):在System Explorer → Aperture里,设置Aperture Type为Entrance Pupil Diameter,数值填入25.4mm。
- 视场(Field):对于单波长单视场的DOE设计,设置Field Type为Angle,Fie ld大小填0(轴上视场)。
配置完这三个基础项之后,视觉上看不出什么特别,但它们决定了后续所有光线追迹的基准。尤其是口径设置——DOE是纯相位调制元件,它不改变光线传播的几何路径(至少在序列模式的傍轴近似中),入口光瞳的大小直接影响系统F数和相位分布设计。
4.2 插入Binary Optic 2面型的完整参数
接下来在Lens Data Editor里插入面型。这里我推荐使用Binary Optic 2而不是Binary Optic 1,原因在于Binary Optic 2允许定义非球面基底叠加衍射相位,适用于更一般的场景,在实际DOE项目中灵活度更高。
在Lens Data Editor里,按照如下顺序定义表面:
- 表面0(OBJ):无穷远物面(平行光入射)。
- 表面1(STO):DOE基底面,面型设为Binary Optic 2。
- 表面2(IMA):像面。
在表面1的属性设置中,关键参数这样填:
| 参数名 | 数值 | 说明 |
|---|---|---|
| Radius | Infinity | 平面基底,DOE通常做在平面基底上 |
| Thickness | 250.0mm | 基底到像面(焦平面)的距离 |
| Binary Optic 2 - Order | 最高次幂设定(比如4-6) | 多项式阶数,覆盖相位变化趋势 |
| Binary Optic 2 - 2π Normalization Radius | 12.7mm | 归一化半径,通常取DOE半口径 |
| Binary Optic 2 - Coefficient A1, A2... | 相位多项式系数 | 来自相位分布的拟合系数 |
这里有一个很多人会踩的坑:归一化半径(Normalization Radius)的设置。这个值决定了多项式系数对应的空间尺度,如果你设得和实际半口径不一致,拟合出来的相位分布会整体错位。我的习惯是直接把归一化半径设为DOE的半口径(12.7mm),这样多项式系数能直接对应实际物理尺寸。
4.3 相位多项式阶数的选择逻辑
Binary Optic 2面型的相位多项式里,径向阶次每增加一阶,模拟的相位分布精细度就提高一档。但阶数不是越高越好——阶数过高会导致优化变量过多、拟合振荡(Runge现象),阶数过低则无法准确描述相位分布的急剧变化。
我推荐的经验值是:对于纯聚焦DOE,多项式最高次幂取4-6阶即可。因为聚焦DOE的包裹相位分布中,每个环带内的相位变化接近抛物线,用少数几个低阶项就能表达得很好。
而如果你的DOE用于光束整形(比如高斯转平顶),相位分布在边缘处会有急剧变化,这时多项式最高次幂需要取到8阶甚至10阶以上才能准确拟合。阶数选择的原则是:逐步增加阶数,观察评价函数是否仍在显著下降,如果增加阶数后评价函数改善不到1%,就说明阶数已经足够了。
4.4 通过评价函数优化DOE的关键设置
序列模式下DOE优化的核心是设置评价函数。在Zemax里,评价函数通过Merit Function Editor(MFE)定义。
对于聚焦型DOE,优化目标是让所有光线在像面上会聚到尽可能小的光斑。方法是:
- 打开Merit Function Editor,选择Tools → Default Merit Function。
- 在Default Merit Function对话框中:
- Optimization Type选"RMS Wavefront"或"RMS Spot Size"。我建议选RMS Wavefront,因为它对相位误差的敏感度更高,更符合DOE的优化逻辑。
- Pupil Integration Method选Gaussian Quadrature。
- Reference Point选Centroid。
- 生成默认评价函数后,把Binary Optic 2面型的所有相位多项式系数设为变量(Variable)。
- 点击Optimize(优化)按钮,执行局部优化。
优化会尝试通过调整相位多项式系数,让波前误差(WFE)趋于零。对于理想的聚焦DOE,优化收敛后RMS Wavefront Error应该小于0.01λ。
**一个关键经验:**DOE优化的收敛速度和稳定性,高度依赖于初始相位估计的好坏。如果你启动优化前没有任何相位系数的估计值,而只把系数初始化为0,优化器很可能收敛到错误的局部极小值。解决办法是:先根据理论解析解计算粗相位系数,填入面型作为初始值,再让优化器在这个基础上的微调。这个习惯能帮助你省下大量优化时间。
4.5 验证优化结果的三个关键指标
优化完成后,你需要用三个指标来验证DOE设计的质量:
指标1:点列图(Spot Diagram)打开Analysis → Spot Diagram,观察RMS Radius是否接近衍射极限。对于纯衍射受限系统,艾里斑半径约为1.22λF≈1.22×0.6328μm×10≈7.7μm。如果RMS Radius远大于这个值,说明还有残余像差。
指标2:波前图(Wavefront Map)打开Analysis → Wavefront Map,观察波前误差分布。理想情况下PV值应该小于0.25λ,RMS应该小于0.05λ。
指标3:MTF曲线(Modulation Transfer Function)打开Analysis → MTF,看衍射极限附近的对比度曲线。DOE的MTF曲线在截止频率之前的下降趋势应与衍射极限曲线基本重合。
这三个指标要结合起来看。有些设计点列图不错但MTF较差,说明光线分布集中但相位一致性不好;有些MTF优秀但波前很差,说明可能是非对称误差被平均掉了。多指标交叉验证比单看一个指标可靠得多。
5. 第3步:将相位分布转化为真实结构
序列模式里的Binary Optic面型验证通过后,下一步是把理想相位分布转化为可以拿去加工的真实微结构。这一步是DOE设计流程中最体现工程经验的环节。
5.1 材料选择与相位台阶高度换算
DOE微结构等效相位延迟量由微结构几何尺寸和材料折射率共同决定。无论你做的是连续浮雕(kinoform)、二台阶还是多台阶二元光学元件,都需要计算相位台阶的物理高度。
对于工作于透射模式的DOE,单个2π相位台阶的物理高度计算公式为:
h = λ / (n - 1)
其中λ是设计波长,n是基底材料的折射率。
以熔融石英为例(n=1.457@632.8nm):
h = 632.8nm / (1.457 - 1) ≈ 1385nm ≈ 1.385μm
这意味着,一个使相位改变2π的完整台阶高度约为1.385μm。如果是N台阶量化(即将一个2π相位周期等分为2^N个台阶),每个台阶的高度为:
h_step = h / 2^N
常见的是二台阶(N=1)和四台阶(N=2)。二台阶每个台阶高度为692.5nm,四台阶每个台阶高度为346.2nm。
这里有个很关键的工程权衡需要你理解:台阶数越多,衍射效率越高,但加工难度和成本也越高。
| 台阶数 | 理论衍射效率 | 加工难度 |
|---|---|---|
| 2台阶 | 40.5% | 低(单次掩模+刻蚀) |
| 4台阶 | 81.1% | 中(2次掩模+刻蚀) |
| 8台阶 | 95.0% | 中高(3次掩模+刻蚀) |
| 16台阶 | 98.7% | 高(4次掩模+刻蚀) |
| 连续浮雕 | 100%(理论) | 很高(灰度光刻或直写) |
如果你对衍射效率的目标是>90%,8台阶是常规选择;如果资金充足且效率要求极高,考虑16台阶或连续浮雕工艺。二台阶衍射效率只有40.5%,除非目标就是做一个分光元件(利用±1级的对称分布),否则不要选二台阶做聚焦DOE。
5.2 台阶量化对性能的影响
理想连续相位到离散台阶的转换过程叫量化(Quantization)。这个操作会给DOE引入量化噪声,降低衍射效率并产生杂散光。
量化误差对衍射效率的影响可以通过理论公式预估:
η_N = [sinc(1/2^N)]²
对于8台阶(N=3):η = [sinc(1/8)]² ≈ 0.950,即95%的衍射效率。
在实际项目中,我会按如下方式考虑效率和工艺的平衡:
- 光学仿真阶段用理想连续相位分布求极限性能;
- 实际DOE版本根据工艺能力选择台阶数;
- 性能评估阶段对比理想版与量化版的MTF和衍射效率差异,确认是否能接受。
5.3 在Zemax中建立量化DOE结构模型
如果你只是想看看量化后的DOE在成像性能上与理想连续相位DOE差多少,可以继续留在序列模式,采用Binary Optic 1面型中的台阶化参数来近似模拟离散台阶。这个面型允许指定台阶数,软件会自动量化相位分布。
如果你需要更真实的微结构级验证(例如分析台阶侧壁角误差、刻蚀深度偏差对性能的影响),那就要进入非序列模式,建立真实的微结构几何模型。
在非序列模式里建模DOE微结构的路径是:
- 切换到Non-Sequential Mode,新建一个Non-Sequential Component。
- 在Non-Sequential Component里定义基底(比如一个圆柱体,材料设为熔融石英)。
- 用CAD原语或自定义DLL构建微结构阵列。
在非序列模式下构建完整DOE结构时,比较推荐的做法是使用自定义的DLL(动态链接库)面型或者通过Zemax API批量生成微结构几何体。如果你用Zemax自带的建模工具逐个放置几百上千个台阶结构,操作效率非常低,而且容易出错。用API脚本批量生成,效率能提升一到两个数量级。
6. 第4步:非序列仿真验证DOE衍射效率与分光特性
结构模型建立后,需要验证DOE的实际光学行为是否和序列模式的结果一致。这就要用到非序列追迹。
6.1 设计一个非序列验证方案
非序列验证的核心任务有三个:验证衍射效率、验证分光方向、验证杂散光水平。
一个标准的验证方案是这样的:
- 在非序列模式下定义一束平行光光源,波长632.8nm,口径25.4mm。
- 光线打在DOE微结构表面。
- 在DOE后方的焦面位置放置一个探测器(Detector Rectangle)。
- 追迹足够多的光线(通常100万条以上),获得焦面上的光强分布。
- 通过分析探测器数据,得到各衍射级的能量占比。
这里有一个容易出错的地方:非序列追迹并不天然区分衍射级次,它通过光线与微结构几何体的真实相互作用来自然产生不同级次的衍射光。因此,探测器上不同位置的光斑代表不同的衍射级。你需要通过查看焦平面的光强分布图,判断能量是否集中在你期望的那个级次上。
6.2 光线追迹数量与精度的权衡
非序列追迹的精度极大地依赖光线数量。光线太少,探测器上的光斑会有很强的散粒噪声,导致效率计算误差偏大。
我的经验值是:对于直径25.4mm、环带数约500个的DOE,追迹500万条光线可以在合理时间内得到较好的效率统计。如果使用GPU加速模式(Zemax OpticStudio支持GPU光线追迹),速度可以提升一个数量级。
判断追迹是否收敛的技巧是:把光线数翻倍,看衍射效率的数值变化是否小于0.5%。如果变化大于0.5%,继续增加光线数量;如果变化很小,说明统计结果已经稳定,可以停止追迹。
6.3 分析衍射效率的结果
追迹完成后,用Zemax的Detector Viewer查看焦平面光强分布图。你会看到中心有一个主光斑(对应你设计的工作级次),周围散布着次级衍射斑点和背景噪声。
要定量计算衍射效率,在Detector Viewer里选择Show Data → Text Output,把探测器数据导出为文本。然后在数据处理软件里,分别计算主级次区域内的总能量和探测器接收到的总能量,两者之比就是衍射效率。
我实际项目中测得的8台阶DOE衍射效率通常在88%-93%之间(理论值95%),略低于理论的原因是微结构侧壁不垂直、台阶深度偏差、材料吸收等工艺误差。
如果实测效率远低于理论值,可能的排查方向有:
- 台阶深度偏差:测一下实际刻蚀深度是否等于设计深度,容差通常在±5%以内。
- 侧壁角度:理想情况侧壁应该90°垂直,实际可能偏差几度,影响大不大要看具体容忍度。
- 环带对齐误差:光刻对准误差会导致相邻台阶间的错位,降低效率。
- 材料吸收或散射:基底材料内损耗也可能成为一部分原因。
6.4 与序列模式结果交叉验证
完成非序列验证后,把非序列得到的焦点光斑尺寸、焦距等数据与序列模式的衍射极限仿真结果对比。两者应该比较接近,非序列结果相对序列结果会略有退化(由于量化误差和加工误差引起)。
如果两者差异显著(比如光斑大了几倍),说明建模过程中某一步出了问题,不要急着改工艺,先回到结构模型去排查。
7. 第5步:公差分析、加工文件导出与实测对照
DOE设计的最后一步,是把设计成果转化为可加工的工程文件,并评估实际工艺条件下DOE的性能表现。这一步连接了仿真与实物。
7.1 DOE公差分析的特殊性
DOE对加工误差的敏感度是折射元件的数倍甚至一个数量级。原因很直观:微观台阶的高度误差直接映射为相位误差,而相位误差是DOE工作的根本。
下表列出了DOE关键公差项及其典型容差范围:
| 公差项 | 典型容差 | 对性能的影响 | 补救措施 |
|---|---|---|---|
| 台阶深度误差 | ±5%以内 | 衍射效率下降、杂散光增加 | 优化刻蚀工艺校准 |
| 侧壁角 | >87° | 衍射效率下降 | 调整刻蚀参数 |
| 环带位置误差 | ±0.1μm | 像差增大、MTF下降 | 光刻对准补偿 |
| 基底面形误差 | λ/10以内 | 波前畸变 | 抛光质量提升 |
| 表面粗糙度 | <5nm RMS | 散射损失 | 优化工艺降低粗糙度 |
在Zemax里做DOE公差分析,方法比折射系统复杂一些。对于序列模式的多项式相位模型,你可以通过设置多项式系数的公差来做灵敏度分析。实际操作路径是:Tolerance → Tolerance Wizard,在公差操作数里添加TEXI(相位系数公差)、TTHI(厚度公差)等操作数,然后执行灵敏度分析。但这里有个大坑:序列模式的多项式系数公差不能直接映射到实际加工参数——因为多项式系数的变化与实际台阶高度、位置偏移之间是复杂的非线性关系。所以对于DOE,我强烈建议在非序列模式里针对真实结构参数(台阶高度、宽度、侧壁角等)做蒙特卡洛分析。
7.2 加工文件生成与格式约定
Zemax本身不直接输出加工用的光刻文件(如GDSII格式),但你可以通过以下方式导出所需数据:
- 相位分布数据导出:用ZPL宏(或API)在DOE表面的网格点上采样相位值,输出为CSV或TXT文件。加工方通常接受这种格式。
- 环带边界坐标导出:对于二元光学元件,每个环带的内外半径需要精确导出。这也可以在ZPL里通过相位包裹边界扫描实现。
- 台阶高度文件:每道掩模对应的台阶刻蚀深度记录。
导出数据时,间距的选择很关键——如果采样间距过大,会丢失环带细节;间距太小,文件过于庞大且加工方也不好处理。我建议每个环带内至少采样5-10个点。
7.3 实测数据的对标与调试
当你拿到加工回来的DOE实体元件后,测试环节的主要任务是把实测结果和仿真结果对标。搭建一个简单的测试光路:
- 用He-Ne激光器(632.8nm)作为光源。
- 扩束准直系统,把光束扩到25.4mm口径。
- 让平行光垂直入射DOE。
- 用CCD或光束分析仪在焦面位置测量光强分布。
对标时重点关注三个数据:
- 焦点光斑直径:实测与仿真差异应在10%以内。
- 衍射效率:实测值应达到仿真值的90%以上(例如仿真93%,实测应≥84%)。
- 焦面背景噪声:观察焦面是否存在明显的杂散光背景。
如果实测效率偏低,优先怀疑加工环节的问题——台阶深度偏差是最常见的原因。你可以用原子力显微镜(AFM)或者白光干涉仪测一下实际的台阶剖面,再和设计数据对比。
8. 超透镜(Metalens)设计避坑指南
超透镜是DOE家族里一个特殊的但我认为值得单独展开讲的成员。它的设计思路与常规DOE有大量交集,但在Zemax里的实现方式完全不同,所以必须单独对待。
8.1 超透镜与常规DOE的本质区别
常规DOE通过台阶状微结构实现相位调制,结构特征尺寸在微米量级,通常工作在周期性或准周期性模式。而超透镜(Metalens)通过亚波长纳米柱阵列实现相位调制,纳米柱的直径、高度、间距都小于设计波长,属于超表面器件。
在Zemax的建模逻辑里,两者区别如下:
| 对比项 | 常规DOE | 超透镜(Metalens) |
|---|---|---|
| 结构尺度 | 微米级,大于工作波长 | 亚波长纳米柱 |
| 相位调制机制 | 台阶高度引起的相位延迟 | 纳米柱波导模式的有效折射率调控 |
| 建模方法 | Binary Optic面型 / 微结构几何体 | 通常需要FDTD或RCWA仿真获取相位数据库 |
| 仿真工具 | Zemax可以直接建模 | Zemax主要用于系统级仿真,微观仿真需外接工具 |
| 色散特性 | 色散强烈 | 可通过结构设计实现反常色散 |
核心区别在于:常规DOE的相位-结构关系是解析性的(台阶高度直接对应2π分之一的相位),而超透镜的相位-结构关系是数值性的(决定相位的是纳米柱的直径,但直径与相位的关系不是简单公式,必须查数据库)。
8.2 为什么Zemax里直接建模超透镜是灾难
很多刚接触超透镜的工程师,第一反应是在Zemax非序列模式里画一个纳米柱阵列,直接做光线追迹。
我的建议是:除非纳米柱总数很少(几百根以内),否则不要这样做。
原因是:
- 一根纳米柱直径约200nm,高度约600nm,在Zemax非序列里建模为一个圆柱体。一个直径25.4mm的超透镜,纳米柱数量约在千万量级(取决于间距)。
- 每一根纳米柱都需要被光线追迹检查是否相交,千万量级的几何体追迹耗时是天文数字。
- 物理上也不对:纳米柱的相位响应来自波导模式共振,Zemax的光线追迹基于几何光学和物理光学基本近似,无法准确捕捉亚波长结构的共振效应。即使追迹得到了结果,那也是错的。
8.3 正确的超透镜设计工作流
正确的设计思路是把超透镜设计拆成微观和宏观两个尺度,分别用不同的工具完成,再在Zemax里做系统级集成:
微观阶段——获取相位数据库(Phase Library)
- 在一个专门求解电磁场的工具(如Lumerical FDTD、COMSOL、或者开源的RCWA工具包)里,建立单个纳米柱单元的仿真模型。
- 设置合适的边界条件:上下为端口,四周为周期性边界(Bloch边界)模拟无穷周期阵列。
- 扫描纳米柱直径从80nm到300nm(步长5nm或10nm),提取每个直径对应的透射相位和透射率。
- 输出一张"直径-相位"查找表,这就是整个超透镜设计的核心数据库。
宏观阶段——确定目标相位分布并量化
在Zemax里(序列模式)使用理想相位面型或Binary Optic面型设计超透镜的目标相位分布。这一步和前面的DOE设计流程几乎一致:确定焦距、口径、波长,求解目标相位。
结构映射阶段——将目标相位分布映射为纳米柱阵列
在外部脚本(MATLAB或Python)中:
- 根据设计的纳米柱间距(pitch)在透镜表面上划分网格,每个网格中心放置一根纳米柱。
- 每个网格位置计算目标相位值φ(x, y)。
- 在相位数据库里查找与该相位最接近的纳米柱直径。
- 生成包含所有纳米柱位置和直径的设计文件。
这个"查询-映射"操作是超透镜设计中实质性的工程计算步骤,批量处理几百万个网格点很考验脚本效率和硬件资源。
系统级验证阶段——把超透镜集成到Zemax
在Zemax里,超透镜本身不是一个需要精确建模微结构的光学元件。在系统级仿真中,你只需要知道它给入射光附加了什么样的相位分布。方法有:
- 导入相位分布为相位面型(Binary Optic或自定义相位面)。
- 或者把超透镜等效为一个大NA的理想透镜(只关心焦点特性时)。
- 需要分析衍射效率、色散等性质时,用微观仿真结果作为半经验参数输入系统模型。
8.4 避坑清单:超透镜设计最常见的五个坑
坑一:忽略网格离散化误差。目标相位在空间上是连续的,但纳米柱阵列只能提供离散采样的相位。采样间距(pitch)越大,相位离散误差越大。经验值:pitch应小于设计波长的1/3(对633nm约小于210nm),以确保足够高的采样密度。低于这个密度,高阶衍射就会开始出现。
坑二:相位数据库缺少透射率信息。很多人只记录相位不记录透射率。实际上纳米柱直径不同,透射率(振幅)也有差异。超透镜设计需要同时考虑振幅和相位,透射率差异过大会导致汇聚效率下降。选择纳米柱直径时,应优先选择透射率大于80%的区间。
坑三:使用单一波长数据代入多色系统。超透镜的强色散特性不能忽视。纳米柱的直径-相位关系随波长剧烈变化。在多色系统里设计超透镜,要么做消色差结构设计,要么至少要在目标光谱范围内多点采样验证性能。
坑四:高NA超透镜忽略了偏振相关性问题。许多纳米柱几何(尤其是矩形柱)具有偏振选择性,导致正交偏振方向的相位响应不同。如果系统使用非偏振光,需要选择对称性更高的柱截面(如圆形、方形)并验证两个偏振方向的性能一致性。
坑五:直接在Zemax非序列模式里追迹整个超透镜阵列。这一条我在前面已详细展开说明过,这里作为坑点专门列出,因为实在看到太多人在这一步上耗费大量时间,最后的结果还不具备参考意义。
9. DOE设计与超透镜项目的经验备注与建议
在多个DOE和超透镜项目摸爬滚打之后,有些经验值得单独拿出来说。这些内容不是教科书上会系统的写,但恰好是项目中真正影响进度和结果的细节。
从简单案例起步,验证好仿真流程后再上复杂需求。如果你第一次做DOE设计,先不要挑战复杂的光束整形目标。从最简单的聚焦DOE开始——它有解析解,你可以提前知道正确答案。等你把相位求解、面型配置、优化、验证这一整套流程跑通了,再去做高难度需求,这样出了问题也更容易定位是流程问题还是需求本身的问题。
多保存版本,对于DOE设计尤为重要。DOE设计牵涉到很多参数之间的耦合。你在调节多项式阶数、归一化半径、初始系数时,任何一次改动都可能让优化结果不可复现。每到一个稳定的设计节点就另存一个版本,命名包含参数说明(如"DOE_632nm_f250mm_8step_v01.zmx")。这套习惯在回头排查问题时能帮你节省大量时间。
注意Zemax版本之间的差异。Ansys Zemax OpticStudio版本迭代很快,不同版本之间的界面、面型选项、优化算法都有差异。如果你在网络上搜索教程,注意核对教程对应的软件版本。有些教程用的是老版本,界面结构和新版本差别很大,生搬硬套容易造成困惑。
DOE设计的物理量与单位一致性,值得反复核对。相位计算中波长单位可能是微米、纳米,焦距单位可能是毫米、米,归一化半径可能是毫米或厘米。任何一处单位不一致,都会导致设计结果错误,而且这种错误有时候很难察觉,因为光路看起来是"合理的"。每次新建模型之前,我都习惯先花两分钟把所有参数的单位统一核对一遍。
超透镜是交叉学科性质很强的课题。Zemax本身解决不了微观电磁问题,需要配合FDTD/RCWA等工具使用。如果你没有接触过电磁仿真工具,建议先花时间学习其中的一种。从我的经验看,掌握FDTD的基本操作和概念,比盲目在Zemax里尝试建模超透镜的效率高得多。
当DOE设计和工艺端沟通时,表达方式决定效率。设计师给工艺端提要求时,不要只说"我要8台阶DOE",而是把每个台阶高度、每个环带边界坐标、基底材料、目标波长这些参数打包成一份规范文档交给工艺方。工艺方最怕的是参数描述不完整而导致的反复沟通和试制浪费。
实测是一切设计的终点。任何仿真结果都需要经过实验验证才算数。我遇到过仿真非常好、加工后性能远超预期的案例,也遇到过仿真非常理想但加工后完全无法工作的情况。DOE是一个高度依赖工艺的领域,设计做完不算完,实测通过才算真正的完成。建议有条件的情况下,在正式批量加工前先做一轮小批量试制,验证全流程后再放大规模。
这套流程做到最后,你会发现DOE设计和超透镜设计并非两条截然不同的道路——它们共享着"相位求解-结构映射-系统验证"的方法论框架,只是微观实现方式不同。框架掌握了,具体器件的设计不过是往里填充参数而已。如果这篇文章能帮你把DOE设计这条路上的几个大坑提前填平,我的目的就算达到了。