
红外10.6μm这个波长只要做过激光加工或者红外光学的人都不陌生CO2激光器主力输出波长很多医疗设备、工业切割机、热成像系统也都在这个波段工作。但真正要在这个波长上做轻量化、紧凑型的光学元件时传统折射透镜的体积和加工成本立刻就成了瓶颈。最近我刚好完成了一套基于几何相位超表面的聚焦透镜设计从单元结构仿真到透镜排布代码全部跑通这篇就把整个设计过程、代码逻辑和踩过的坑完整记录下来。项目本身不算特别难但涉及材料选型、相位计算、单元库构建、GDS版图输出多个环节每一步都有不少细节适合正在学习超表面设计、或者想在红外波段做平面光学器件的朋友参考。我用的设计波长是10.6μm材料以Ge为主设计焦距2mm、口径1mm数值孔径NA约0.25这是一个比较典型且容易验证的参数组合。1. 为什么用几何相位超表面做红外透镜1.1 传统红外透镜的痛点和超表面切入方式常规红外透镜基本就是ZnSe、Ge、GaAs这些材料的球面或非球面镜片装卸简单、工艺成熟但问题也很现实。大尺寸非球面镜片需要单点金刚石车削一台设备加工一件往往要十几分钟到几十分钟模具费也不便宜镜片一厚系统重量和体积马上上去了对于手持热像仪、机载光电吊舱这种对重量敏感的场景非常不友好。衍射光学元件能做得薄但传统二元衍射元件的加工台阶一般是8到16阶效率上不去而且台阶越多工艺越复杂。超表面走的是另一条路在基底表面做一层亚波长纳米结构阵列通过单元的几何参数调控入射光的相位、振幅、偏振。因为结构层只有几百纳米到几个微米厚整个透镜可以做得非常薄等于在平面上实现了传统透镜的聚焦功能。10.6μm这个波长比较特殊它比可见光波长长一个数量级所以单元结构尺寸也相应地变大加工难度比可见光超表面低不少普通紫外光刻加刻蚀工艺就能做不需要电子束曝光那么苛刻的条件。这是我选这个波段的实际原因之一设计复杂度适中加工门槛可控测试验证也不难。1.2 几何相位PB相位的核心原理与优势几何相位超表面全称是Pancharatnam-Berry相位超表面利用的是各向异性纳米柱在圆偏振光入射下产生的几何相位。这里面的物理过程我用一个比较直观的方式解释假设有一束左旋圆偏振光垂直入射到一个双折射纳米柱上纳米柱的慢轴方向与x轴的夹角是θ。经过柱体后出射光中有一部分转化为右旋圆偏振光这部分光的相位改变量正好是2θ。也就是说我只需要旋转纳米柱让θ从0变化到π就能让出射光的相位从0连续变化到2π实现完整的0到2π相位覆盖。这个思路最大的价值在于传统共振超表面要获得不同的相位响应必须改变纳米柱的尺寸参数比如宽度、长度、直径每个尺寸对应一个单元需要做大量的参数扫描。而几何相位超表面只需要一种形状的纳米柱通过旋转就能覆盖全部相位设计过程简化很多。由于相位只取决于旋转角与波长关联较弱几何相位超表面通常还有较宽的工作带宽。相位调控也相对平坦均匀对加工误差的容忍度比共振型超表面高。当然代价是对入射光偏振态有要求必须是圆偏振光线偏振光入射时效率会明显下降这个问题后面测试环节会单独讲。1.3 10.6μm波段几何相位设计的技术特点10.6μm波长对应的频率大概在28.3THz属于远红外波段。在这个波段里单元周期通常是3到4μm纳米柱高度也只需要几个微米相比可见光波段动辄几百纳米的特征尺寸设计窗口宽松得多。具体来说可见光超表面的单元特征尺寸在100到300nm量级想要精确控制需要通过电子束曝光而10.6μm超表面的特征尺寸在1到3μm量级普通紫外光刻就可以实现侧壁倾角和线宽误差的容忍度也更大。热效应问题也不能忽略CO2激光器功率密度普遍较高材料选择时需要着重考虑吸收损耗Ge在这个波段吸收系数极低光学损耗可以忽略但要注意它的折射率温度系数比较大高功率下要考虑热透镜效应。2. 设计理论基础与关键参数选型2.1 几何相位公式与聚焦相位分布超表面透镜的设计目标是让透镜表面每个位置的出射光相位满足同一个球面波的相位分布这样经过透镜后的光就会汇聚到焦点上。对于一个焦距为f、工作波长为λ的理想透镜在半径r处的相位延迟可以写成φ(r) - (2π / λ) × (√(r² f²) - f)这个公式是严格推导出来的从焦点到透镜面上任一点的光程差决定相位差任何严格聚焦的超表面透镜设计都从这里出发。如果透镜的数值孔径不高也就是r远小于f的时候可以用抛物面近似φ(r) ≈ - πr² / (λf)这个近似在NA小于0.3的时候误差很小计算简单不少。我在设计里为了保证精度还是用了完整公式因为我的NA等于0.25左右接近近似公式的适用范围边缘用完整公式更稳妥。几何相位超表面中每个单元结构的旋转角θ与所需相位φ的关系就是θ φ / 2。这个映射关系是几何相位设计的核心代码实现时最核心的就是这一步先计算每个位置需要的相位再除以2得到纳米柱相对x轴的旋转角度。2.2 材料选型在Ge、ZnSe和Si之间做取舍材料选择直接决定整个设计的成败核心指标是目标波段的透过率、折射率、加工可行性和热稳定性。我针对三种常用材料做过对比直接列在表里材料10.6μm折射率10.6μm吸收系数优缺点适用场景Ge约4.0极低折射率高单元可以做得更小但折射率温度系数大大功率下热漂移明显中小功率激光聚焦、成像系统ZnSe约2.4极低热稳定性好能承受高功率折射率偏低单元周期需要更大高功率CO2激光系统Si约3.4中等折射率较高价格便宜但吸收偏大高功率下温升明显红外成像焦平面低功率场景GaAs约3.3较低机械强度好热导率高价格贵工艺相对复杂对稳定性要求高的场景我最后选了Ge主要原因是折射率最高同样周期下柱体高宽比更好控制而且吸收系数低。不过这里必须提醒一下Ge在10.6μm波段的透过率虽然很好但材料本身脆性比较大加工时要注意应力开裂的问题。另外Ge的折射率温度系数约为4×10⁻⁴/K左右这个数值对光热效应比较敏感如果是连续大功率激光使用建议优先考虑ZnSe。2.3 单元周期与纳米柱高度的经验取值单元周期p必须满足亚波长条件即p λ这样才能避免高阶衍射的出现让能量集中在0级设计的衍射级次上。对于10.6μm波长周期选的常见范围是3~4μm我实测下来p 3.4μm是个比较平衡的选择既满足亚波长条件又给纳米柱留了足够的占空比调节空间。纳米柱高度是另一个关键参数。理论上柱体高度h需要让双折射快慢轴之间的相位差达到π这样入射的圆偏振光才能完全转化为反向圆偏振光获得最大的几何相位转换效率。这个条件可以写成Δn × h λ / 2其中Δn是柱体快慢轴方向的有效折射率差。对于Ge材料如果是3.4μm周期的正方形晶格矩形柱的长宽分别设置在1.8μm和1.0μm扫描出来的有效折射率差大概在0.7到0.9之间。按Δn 0.8估算h 6.6μm左右。实际仿真优化后我定的高度是7.0μm既能满足相位条件也在刻蚀工艺的深宽比承受范围之内深宽比大约2:1电子束或ICP刻蚀都能完成。很多初次设计超表面的人容易忽略一个问题柱体高度并不是无脑越高越好太高会导致刻蚀深宽比过大侧壁倾角严重反而破坏相位精度。3. 单元结构设计与仿真验证3.1 单胞仿真用RCWA还是FDTD单元结构设计需要做严格电磁仿真目的是确认柱体的双折射效果、透过率和工艺容差。常用的方法有RCWA严格耦合波分析和FDTD时域有限差分法。RCWA适合周期性结构计算速度快单胞扫描几百组参数也就几分钟的事适合第一轮筛选FDTD可以模拟有限尺寸的整个透镜但网格细、计算量大。我的建议是先RCWA扫描单元库再用FDTD验证包含几百个单元的局部区域最后直接对整镜做一次全波仿真验证效率。COMSOL的波动光学模块和Lumerical的FDTD Solutions都能干这个活免费方案也可以考虑Python绑定的MEEP效率差点但结果可用。仿真边界条件设置时x和y方向必须用周期性边界条件Bloch边界z方向用PML完美匹配层入射光源设置成左旋圆偏振平面波。监视器放在结构层上方和下方分别记录反射光、透射光中同偏振和正交偏振分量的占比。判断设计好坏的核心指标是两个一是正交圆偏振即被调制的那部分透过率要高也叫衍射效率二是残余同偏振透过率要低。理想情况下正交偏振的能量把所有入射能量都带走实际能做到70%以上就已经不错了。3.2 以Ge为例的单元参数优化过程我实际扫描的单元参数范围是柱体长L从1.2μm到2.6μm宽W从0.6μm到1.6μm高度h固定7μm周期p固定3.4μm。评价函数取目标波长下正交偏振透过率的平方与同偏振透过率抑制比的乘积。简单说就是希望被调制的光尽量多、没被调制的光尽量少。扫描结果里有个很明显的规律柱体宽度过窄时单元对光场的束缚能力弱双折射相位差不够柱体宽度过宽时接近连续薄膜状态相位调控能力反而下降相当于光直接穿透过没有产生足够的各向异性。让我最终定下来的是L 2.0μmW 1.0μm这个参数下正交偏振透过率约78%同偏振残留约5%反向圆偏振转换效率约75%整体表现比较均衡。作为对比我把参数微调成长2.2μm、宽0.9μm转换效率能到82%但同偏振残留也跟着升高到8%综合评价反而没有第一组好。柱体边角需要做圆角处理直角转弯处会电场集中但实际加工不可避免会有一定圆角仿真时加上20nm圆角会让结果更贴近真实工艺。3.3 判断单元设计好坏的三个核心指标第一是正交偏振透过率这个值越高越好理想情况下接近100%实际能做到80%以上就说明单元设计是可靠的。第二是同偏振透过率越低越好因为这个分量不会被几何相位调制会形成背景光降低成像对比度。第三是相位覆盖率验证方法是将旋转角从0°到180°等间隔取12个样本提取每个样本的相位值再检查这些相位是否均匀地铺满整个0到2π区间。如果相位不连续或者出现跳变说明单元在工作波段内已经不是理想的半波片需要调整柱体高度或周期。这三个指标不能只看单点波长。如果设计目标是一个波段比如8到12μm的红外窗口还要把多个波长点的效率加权平均如果只做单波长10.6μm就可以简化成只看单点。我做的是单波长所以重点只盯了中心波长的性能但也额外看了一眼9μm和12μm的表现确认带宽没有窄到离谱。4. 透镜排布代码与GDS版图输出4.1 代码整体框架与设计参数定义透镜排布代码是整个设计流程中最核心的部分相当于把所有物理设计映射到实际的几何排布。我用Python写的主要依赖numpy做数组运算shapely或gdspy生成版图数据。整体思路非常直接在大孔径范围内划分周期网格每个网格点上计算所需的相位再映射到旋转角最后把对应的柱体图形写入版图文件。下面这段是初始参数定义部分可以直接拿过去改参数用import numpy as np import gdspy # 基本物理参数 wavelength 10.6e-6 # 设计波长单位米 focal_length 2.0e-3 # 焦距单位米 diameter 1.0e-3 # 透镜口径单位米 aperature_radius diameter / 2 # 单元周期 pitch 3.4e-6 # 相邻单元中心距离单位米 # 单元几何参数 cell_length 2.0e-6 # 柱体长边 cell_width 1.0e-6 # 柱体短边 # 计算网格尺寸 grid_num int(np.ceil(diameter / pitch)) x_coords -aperature_radius pitch * (np.arange(grid_num) 0.5)网格坐标的计算需要注意边界条件孔径边缘处如果网格中心超出了圆形口径范围需要在后续步骤中做掩膜处理否则边缘单元不完整加工出来会出现残缺结构。4.2 相位计算与离散化处理每个网格点的相位是依据严格的球面波聚焦公式计算的# 生成二维坐标网格 x_2d, y_2d np.meshgrid(x_coords, x_coords) r2 x_2d**2 y_2d**2 r np.sqrt(r2) # 严格球面波相位分布 phase (2 * np.pi / wavelength) * (np.sqrt(r2 focal_length**2) - focal_length) # 超表面所需相位是球面波的相位取负号再取模到[0, 2pi) phase_mod (-phase) % (2 * np.pi) # 圆形孔径掩膜 mask r aperature_radius phase_mod np.where(mask, phase_mod, np.nan)这条公式里有个很容易出错的点相位前面的负号是相对于入射光参考相位而言的如果符号搞反了透镜就会从会聚透镜变成发散透镜仿真时焦点位置直接变成虚焦点。第一次做超表面透镜设计的人几乎都会在这里栽一次跟头。相位离散化处理方面虽然几何相位理论上是连续可调的但实际版图数据通常只能限定在有限个离散角度上。我采用8级相位离散化也就是旋转角每22.5°取一个档位正好覆盖0到180°。这样整个透镜内部只有8种旋转角度版图数据量小加工时也方便做光学检测比对。离散化带来的相位误差最大是半个档位也就是约11.25°对应的相位误差换算到波前误差大约是λ/32完全满足常见光学系统的精度要求不需要更细的分档。4.3 旋转角映射与版图坐标变换几何相位超表面中旋转角θ与相位φ的关系是θ φ / 2所以离散化后的相位值直接除以2就得到旋转角。这一步看似简单但需要注意弧度和角度的单位混淆问题容易在最终版图中让所有柱体都指向错误方向。我代码里统一用弧度制只有输出人类可读的调试信息时才会转成角度值。# 相位到旋转角theta phase / 2 rotation_angle phase_discrete / 2.0 # 柱体图形以中心为原点长轴沿x方向 base_rect gdspy.Rectangle( (x - cell_length / 2, y - cell_width / 2), (x cell_length / 2, y cell_width / 2) ) base_rect.rotate(rotation_angle, center(x, y))坐标变换里有一个值得注意的细节旋转中心必须是单元的几何中心也就是当前网格坐标点。如果不显式指定center参数图形会绕原点旋转产生整体偏移肉眼看不出来但在仿真和加工阶段就会以场图错位的形式暴露出来。这个问题排查起来比较隐蔽一开始我还以为是仿真设置问题后来逐项核对才发现是旋转中心写错了。4.4 输出加工用的版图文件GDSII格式版图输出选择GDSII格式这是半导体行业通用的标准格式绝大多数微纳加工厂都能直接接收。gdspy库导出GDS的代码很简单# 创建GDS单元并写入所有柱体 lib gdspy.GdsLibrary() cell lib.new_cell(metalens_layer) for i in range(grid_num): for j in range(grid_num): if not np.isnan(rotation_angle[i, j]): # 计算该单元中心的坐标 xc x_coords[i] yc x_coords[j] # 创建并旋转矩形 rect gdspy.Rectangle( (xc - cell_length / 2, yc - cell_width / 2), (xc cell_length / 2, yc cell_width / 2), ) rect.rotate(rotation_angle[i, j], center(xc, yc)) cell.add(rect) # 导出GDS文件 lib.write_gds(metalens_10p6um.gds)需要注意的是输出文件单位要与加工厂对齐。gdspy默认库单位是微米扫描光刻机通常用的是纳米或者0.1nm网格导入加工软件的时候必须确认单位换算否则整体尺寸直接放大1000倍加工出来完全不是设计样子。这个错误非常经典我见过不止一次所有尺寸对得上但就是毫米级和微米级的区别问题根源几乎都是单位没对齐。5. 实际加工、测试与常见问题排查5.1 偏振态配置为什么必须用圆偏振光超表面透镜做出来之后测试环节最大的坑是偏振态配置。几何相位超表面天然是偏振相关的它只有在圆偏振光入射下才能实现高效的相位调控。如果你直接用CO2激光器出来的线偏振光打上去效率会大打折扣出射光里一半是受几何相位调制的反向圆偏振光一半是未调制的同偏振光这会直接导致透镜效率减半焦点周围还会出现明显的背景杂散光。解决办法是在超表面透镜前加一个消色差四分之一波片工作波段正好在10.6μm附近把线偏振转成圆偏振。注意波片的快轴方向要与入射线偏振方向的夹角控制在45度否则出来的椭圆偏振光偏振度不够还是会影响效率。测试时我建议在透镜后方再加一个检偏器只让反向圆偏振分量通过这样可以单独测量设计的那部分效率避免被背景光干扰。如果不想在系统里增加额外元件也可以设计偏振不敏感的超表面单元结构这个方向后续再展开讲。5.2 仿真效率与实测效率的差异仿真中衍射效率最好能到70%以上但实测往往只有50%左右这个差异来源很多需要逐项排查。首当其冲的是加工误差刻蚀深度如果偏浅相位条件就满足不了有效的几何相位转换效率直接下降。我实测的样品刻蚀深度为6.2μm比设计值7.0μm浅了约0.8μm效率掉到45%左右后来重新调整了刻蚀时间提升到58%。其次是侧壁倾角问题刻蚀过程中侧壁不可能完全垂直一般会有80到88度的倾角这会破坏纳米柱的双折射特性使柱体有效折射率与仿真值发生偏离。再者表面粗糙度会造成散射损耗特别是在远红外波段表面粗糙度在几十纳米量级就会产生明显散射加工时需要对刻蚀工艺的后处理格外上心。5.3 常见问题速查表问题现象可能原因排查与解决办法焦点光斑模糊、尺寸偏大相位符号搞反或焦距参数错误重新核对聚焦相位公式中负号确认输入焦距值与GDS排布一致实测效率低于40%入射光为线偏振或椭圆偏振检查四分之一波片快轴角度确认入射光为圆偏振焦点前移或后移单元相位-旋转角映射错误旋转角被乘以2或除以4打印若干点的期望相位和实际旋转角逐点比对边缘出现衍射斑周期p过大不满足亚波长条件减小周期确认p λ / n_equivalent版图整体异常缩小或放大GDS单位与加工设备单位不一致与加工厂确认单位换算通常为1库单位0.001μm或1μm效率对波长敏感柱体高度偏大或偏小破坏Δn×h λ/2条件扫描柱高取相位条件最佳值光斑周围出现十字形杂散光网格划分在x/y方向产生高阶衍射检查单元周期与设计波长的比值必要时旋转单元晶格方向高功率测试时效率漂移Ge材料热透镜效应改用ZnSe基底或增加散热结构5.4 测试过程中的实操心得测试超表面透镜的焦距我建议不要只靠一维功率计扫描判断焦点位置太容易被干扰。最稳的方法是使用红外相机微测辐射热计型直接拍摄不同传播距离处的光斑图像用光斑能量集中度来判定焦点位置和焦点大小。具体操作就是放一个平移台让相机沿光轴方向步进扫描每个位置拍一张图记录光斑半径随距离的变化曲线找到束腰最小的位置就是实际焦距。当然这需要整个系统的光轴对准精度足够高否则扫描路径本身就是斜的测出来的焦距带着系统误差。数值孔径NA对焦深和光斑大小的影响也要提前想清楚。我的设计NA0.25按照衍射极限公式计算理想焦点的艾里斑直径约是2.44λ/NA ≈ 103μm。实测光斑直径在130到150μm之间确实比理论值大一点但考虑到离散化误差和加工误差这个结果已经说明透镜工作是正常的。光斑尺寸检查是最快的功能验证手段如果实测光斑直径远大于理论值往往说明相位分布有系统性错误。6. 从设计到落地的几个细节复盘6.1 单元库的排布策略正方形晶格与六角晶格的选择我在设计中默认使用了正方形晶格结构简单、版图好写、网格划分直观。但实际在圆对称透镜中六角晶格三角晶格是更好的方案因为六个方向的邻居距离完全一致整个超表面的对称性更接近光学各向同性每个单元的局部环境更均匀散射噪声会明显降低。正方形晶格在x和y方向显然有区别高NA透镜中四重对称的像差会比六角晶格明显。唯一的问题是六角晶格的坐标生成和矩阵索引写起来稍微麻烦一些很多新手会在这一步卡住。如果你打算做扫描光刻或者投影光刻加工六角晶格对版图数据的需求量也会比正方形略大一点。后续我准备把代码改成六角晶格重新跑一轮对比一下聚焦效率的差异。6.2 加工前必须确认的三个工艺参数和代工厂沟通时有三个参数必须提前确认最小特征尺寸、深宽比限制、侧壁倾角预期值。10.6μm波段的设计特征尺寸通常在1μm左右普通紫外光刻没有问题但如果是做可见光超表面特征尺寸小到100nm加工厂的选择面就很窄了。深宽比方面7μm深、1μm宽即7:1的深宽比在ICP刻蚀里有一定难度但可控如果设计跨到10:1必须确认刻蚀工艺的能力。侧壁倾角最好让加工厂明确给出设计值公差这直接影响仿真时要不要把倾斜面建模进去。6.3 设计迭代的工作流建议跑超表面设计迭代时我总结出一个比较好用的工作流先小规模单元扫描确定柱体长宽高参数再做一个包含30×30个单元的小阵列用FDTD验证局部聚焦行为这一步可以同时检查单元之间有没有意外的耦合然后全透镜排布先不做离散化用连续旋转角跑一版验证相位分布公式是否正确确认无误后再做8级离散化对比离散前后的焦点光强和光斑尺寸变化。这样的流程能最大程度把错误隔离在早期阶段避免到GDS输出之后才发现相位公式写错了。我个人在实际设计过程中的体会是几何相位超表面最迷人的地方在于设计链路非常清晰物理原理干净利落代码实现也半小时能写完但真正拉开水平的恰恰是那些不起眼的细节比如网格边界、旋转中心、GDS单位、偏振配置。最后再分享一个小技巧在所有设计代码里把物理参数、仿真参数、工艺参数分开存放用配置文件管理这样每次改波长、改焦距、改材料只需要改动一个文件不用在代码里逐个位置改数值可以大幅降低改错参数的概率。后续如果时间允许我打算用同样的代码框架继续做8到12μm波段的宽谱消色差超表面透镜到时候再回来写一篇对比数据。