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

资讯详情

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

硅光光栅耦合器宽带设计:Lumerical FDTD仿真与实验验证

硅光光栅耦合器宽带设计:Lumerical FDTD仿真与实验验证

做硅光芯片测试的同行应该都有这种感觉:整套工艺都走完了,结果到耦合测试环节被卡住。倒不是因为光源或者探测器有问题,而是光根本进不到波导里去。芯片端面耦合效率低、对偏振敏感、对准容差小,研磨抛光又不稳定,这些都是让人头疼的老问题。

光栅耦合器就是为了解决这个痛点出现的。它可以把垂直或者近垂直入射的光,通过表面刻蚀的周期性结构耦合进芯片内部的波导,或者反过来把波导里的光引出来。好处很明显——不用做端面研磨抛光,可以在晶圆上任意位置测试,对准容差也大很多。但代价是天然窄带,通常3dB带宽只有30~50 nm,这让它在宽带光通信、光谱传感这类场景里受到限制。

这篇文章就把我从设计、仿真到流片测试的完整过程梳理一遍,标题是“基于Lumerical FDTD的光栅耦合器宽带特性仿真与实验验证”。重点讲清楚几个事:为什么光栅耦合器会窄带、怎么用Lumerical FDTD仿真去预测带宽、怎么优化结构去展宽带宽,以及最终实验数据和仿真对不上时,问题到底出在哪里。内容按“设计→仿真→优化→验证”这条线走,适合正在做硅光器件设计的研究生、工程师,也适合对Lumerical FDTD仿真有兴趣但还没系统入门的人。

1. 整体设计与思路拆解:从布拉格条件到带宽公式

1.1 光栅耦合器的工作原理

光栅耦合器本质上是一个周期性折射率调制的结构。入射光打到光栅表面时,一部分透射、一部分反射、一部分被衍射。要让衍射光高效地耦合进波导,需要满足相位匹配条件,也就是布拉格条件:

[ k_0 \cdot n_{eff} = k_0 \cdot n_{clad} \cdot \sin\theta + m \cdot \frac{2\pi}{\Lambda} ]

其中 (k_0 = 2\pi/\lambda),(n_{eff}) 是波导模式的有效折射率,(n_{clad}) 是包层折射率(通常为空气或二氧化硅),(\theta) 是入射角,(\Lambda) 是光栅周期,(m) 是衍射级次。

简化一下,对于垂直入射((\theta = 0))和一阶衍射((m = 1)),布拉格条件变成:

[ \Lambda = \frac{\lambda}{n_{eff}} ]

这是一个非常简洁但极其重要的公式。它告诉我们,光栅周期和有效折射率决定了共振波长。如果周期选错,哪怕只偏了10 nm,中心波长就可能偏移几十纳米。这里要注意,(n_{eff}) 不是固定不变的,它随波长变化(色散),所以严格来说布拉格条件是一个隐式方程,需要脑补计算或者用仿真软件迭代求解。

1.2 为什么光栅耦合器天然窄带

知道了原理,窄带的问题就好理解了。带宽本质上由耦合强度和相互作用长度共同决定。耦合强度越强,能量在越短的传播距离内就完成转移,那它对波长的选择性就越强,带宽就越窄。

可以打个比方:这就像两个人对话,一个人在楼顶喊话,如果楼下的人只在某个特定的窗口期能听到,那这个窗口开得越短,对时间的要求就越苛刻。光栅耦合器中,入射光的能量在光栅区域内逐步泄漏进波导,泄漏得越快(耦合强度越大),能在更短的区域内完成全部能量转移,但同时相位失配的容忍度就低,带宽就窄。

定量来看,光栅耦合器的3dB带宽可以近似为:

[ \Delta\lambda_{3dB} \approx \frac{0.8 \cdot \lambda_0 \cdot \Lambda}{L_{int}} ]

其中 (L_{int}) 是有效相互作用长度,也就是光栅的耦合长度。对于标准的均匀光栅,(L_{int}) 通常只有几微米到十几微米,所以带宽基本就在30~50 nm这个量级。想要展宽带宽,核心思路就是降低耦合强度,让光栅在更长的距离内缓慢地完成能量转移。这在设计上就是减小刻蚀深度、增大光栅周期方向上的周期数、或者采用渐变占空比的结构。

1.3 设计目标与技术路线

这次设计的目标,是做一个工作在1550 nm附近的宽带光栅耦合器,目标3dB带宽70 nm以上,耦合效率尽可能高(至少大于30%),制备工艺要兼容标准硅光流片。

技术路线选的是SOI标准工艺:220 nm顶层硅,2 μm埋氧层(BOX),光栅区域部分刻蚀(刻蚀深度70~80 nm),上包层为空气。选择部分刻蚀而不是全刻蚀,原因有两个:一是部分刻蚀的工艺容差大,刻蚀深度稍微偏一点对性能影响没那么剧烈;二是部分刻蚀可以降低耦合强度,有助于展宽带宽,这和前面分析的方向是一致的。

仿真工具选Lumerical FDTD,是因为光栅结构尺寸和波长在同一量级,衍射效应、干涉效应无法用简单的模式耦合理论精确描述,需要严格求解麦克斯韦方程组。FDTD(时域有限差分法)在空间和时间上离散化求解,适合这种结构不规则、包含亚波长特征的器件。软件层面的流程是:先用二维FDTD做快速扫描和优化,然后取最优参数做三维FDTD验证。二维和三维的结果差异主要在模式限制因素上,通常三维结果效率要低几个百分点,这在后面的实验对比中要心里有数。

2. Lumerical FDTD仿真建模实操:从几何到边界条件

2.1 几何建模与材料设置

打开Lumerical FDTD,第一步是建立仿真结构。我这里用的是Lumerical 2020 R2版本(语法在FDTD Solution 2022版本也兼容,基本步骤没变化)。先创建硅波导层:矩形结构(Rectangle),长30 μm,宽12 μm(在2D仿真里就是无限宽),厚度220 nm。材料选择Si(Palik数据)。

然后创建BOX层:长同样30 μm,宽12 μm,厚度2 μm,材料选SiO2(Palik数据)。衬底硅可以加一层2 μm的Si,但实际仿真中如果PML设置得当,衬底的影响很小,我只加了一层1 μm的Si。

光栅刻蚀结构用一组矩形表示:周期数25个,周期长度630 nm,占空比0.5(齿宽315 nm),刻蚀深度75 nm。这里就用最简单的uniform grating做基线。后续做优化时,再通过脚本动态改变这组矩形的坐标和尺寸。

设置材料的时候有个小技巧:如果流片厂给你的是他们自己测的折射率数据(很多PDK会提供),最好直接用实测数据,不要用软件自带的Palik库。我在一次仿真中发现,Palik的Si折射率在1550 nm和实际工艺差0.01左右,看起来不大,但会让中心波长偏移3~5 nm,这个偏差在实验阶段就会导致耦合效率对不准。

2.2 网格、边界条件与光源设置

FDTD的核心是网格。网格太粗会明显高估损耗、低估Q值;网格太细计算时间成倍增加。对于硅光器件,我通常把mesh精度设为4级,再在光栅区域加一个mesh override,设置x、y方向为10 nm,z方向为5 nm的网格。为什么要这样设?因为光栅的齿宽是315 nm,刻蚀深度是75 nm,z方向上如果网格太粗,刻蚀台阶的形貌就会失真,直接导致布拉格条件偏移。

边界条件方面,x和y方向用PML(完美匹配层),z方向(垂直方向)也用PML。PML的厚度默认12层,我一般加到16层,保险一点。需要注意,PML和结构之间至少要留半波长的距离,否则近场耦合会让PML吸收不干净,产生非物理反射。

光源选择Bloch模式光源(Bloch/Periodic光源),这是Lumerical专门为周期结构入射场景设计的。入射角度设置为8度,方向指向光栅一侧(让衍射光向波导端方向偏转,提高方向性)。波长范围设为1400~1700 nm,覆盖整个目标C+L波段。这个角度不是随便选的——光栅耦合器的耦合效率对角度的敏感度很高,通常最优角度在8~12度之间,需要和光栅周期一起优化。我习惯先把角度固定在一个初值(比如10度),先扫周期,再反过来微调角度,这样收敛更快。

监视器设置两个:一个放在光栅上方2 μm处,用来监视反射光;另一个放在波导输出端(光栅末端往右10 μm处),记录透射到波导中的功率。

2.3 仿真参数扫描与收敛性判断

在正式扫参之前,必须先做一次快速仿真确认一下结构是否收敛。判断收敛的标准很简单:看监视器记录的功率随时间是否达到稳态。FDTD的auto shutoff level默认是1e-5,意思是当所有场能量衰减到初值的1e-5以下就自动停止。但我遇到过一次情况,能量衰减到1e-5还是不够,结果波长扫描曲线出现锯齿状波动——这种非物理的振荡通常是场没有完全衰减干净,或者PML反射导致的。后来我把shutoff level调低到1e-6,同时增加仿真时间到5000 fs,曲线才平稳。

另一个容易出问题的点是光源的入射角设置。Lumerical里Bloch光源的入射角是和波长相关的,不同波长的折射角有微小差异,这会带来一点点系统误差。我通常的做法是:先固定角度扫周期,找到最优周期后,再在这个周期下扫入射角(7~12度),找到真正的全局最优。

参数扫描用Lumerical内置的sweep功能实现。下面是一段典型的优化脚本框架,用来扫描光栅周期和占空比:

# Lumerical FDTD 参数扫描脚本框架 import lumapi # 连接到FDTD fdtd = lumapi.FDTD() # 定义扫描范围 period_values = [610e-9, 620e-9, 630e-9, 640e-9, 650e-9] duty_values = [0.45, 0.50, 0.55, 0.60] for period in period_values: for duty in duty_values: # 更新光栅几何参数 fdtd.setnamed('grating_period', 'x', period) # 更新周期,简化示意 fdtd.setnamed('grating_duty', 'x', period * duty) # 运行仿真 fdtd.run() # 提取监视器数据 transmission = fdtd.getresult('mode_monitor', 'T_forward') # 记录中心波长和3dB带宽...

这里要注意,实际脚本中需要正确设置每个矩形齿的坐标,最方便的做法是在FDTD里把光栅建成一个group,然后通过setnamed操作group内部的对象。前期建模时多花点时间把参数化做好,后面扫描能省很多事。

扫参完成后会得到一个效率-波长曲线矩阵。最优结果是让中心波长在1553 nm附近,同时3dB带宽尽量大。我初步扫描的结果,均匀光栅的3dB带宽大约在45 nm左右,这和理论估计基本一致。

3. 宽带特性的优化设计与实现

3.1 为什么均匀光栅带宽不够

均匀光栅的设计结果让我意识到一个问题:怎么扫周期、调占空比和刻蚀深度,要把带宽稳定推到70 nm以上非常困难。原因是结构本质上没有改变耦合长度这个决定带宽的核心参数。均匀光栅所有的齿结构一致,耦合强度在空间上恒定,能量在几个周期内就完成转移,这决定了带宽上限。

所以要做宽带光栅耦合器,必须打破“均匀”这个限制。目前主流的方案有几种:切趾光栅(apodized grating)、双层光栅、亚波长光栅结构(subwavelength grating, SWG)。我的方案是切趾光栅和亚波长结构的融合。

3.2 切趾光栅的仿真优化

切趾光栅的原理是对光栅的耦合强度进行渐变调制。通常的做法是改变占空比(齿宽/周期比),从光栅入口处弱耦合逐步过渡到强耦合,也可以反过来。这样做的目的是让输入光场的模式分布和光栅的辐射模式尽可能匹配,降低模式失配损耗,同时延长有效耦合长度,展宽带宽。

在Lumerical里的实现方式:对每个周期的齿宽单独赋值。比如第1个周期齿宽320 nm,第2个330 nm,逐渐递增到第13个周期达到最大齿宽400 nm,再逐步递减。这样耦合强度就会呈现先增后减的包络形状。每个齿的宽度由脚本中定义的函数生成:(w_i = w_0 + \Delta w \cdot \sin^2(\frac{\pi \cdot (i-1)}{N-1}))。这个正弦平方包络是切趾光栅中比较常见的选择,它的优点是两端变化平缓,不会引入额外的突变反射。

仿真这一步很耗时,因为25个周期,每个周期独立参数,要做多维优化计算量太大。我的做法是分两步走:第一步固定周期和刻蚀深度,只优化占空比包络的参数(起始占空比、最大占空比、包络指数);第二步把第一步得到的最优占空比再和周期、刻蚀深度联合优化。最终优化结果,中心波长1554.2 nm,3dB带宽71 nm,比均匀光栅多了整整26 nm,耦合效率从均匀光栅的42%降到35%——这个效率的下降是展宽带宽的必然代价,因为在能量转移过程中,弱耦合区域的模式匹配损耗增加了。设计目标中带宽70 nm以上、效率大于30%,这个结果是可以接受的。

3.3 亚波长结构锦上添花

亚波长结构(SWG)是在周期的局部引入比布拉格周期小得多的结构,等效为一种梯度折射率介质。它可以让光场在进入光栅之前先经过一个平滑的过渡层,减少折射率突变带来的反射。在光栅耦合器里,SWG常常用在光栅末端和波导之间的过渡区,用来匹配光栅衍射场的相位分布和单模波导的基模场分布。

这个优化用Lumerical的2D仿真就够用了。我把光栅下游的10 μm均匀波导改成了SWG渐变波导,周期200 nm,占空比从0.5渐变到0.8。这个结构不需要额外增加工艺步骤,因为SWG和光栅的刻蚀是同一道工序,只是版图上多了些小图形。但要注意,SWG的尺寸太小,普通的深紫外光刻可能做不出来,需要电子束曝光(EBL)或者工艺能力更强的激光直写。如果流片厂的能力受限,这个方案要谨慎选择。

仿真结果,加了SWG过渡结构后,耦合效率提高了1.8个百分点,带宽几乎不变。虽然幅度不大,但聊胜于无。而且它还能改善波导端口的模式质量,对后续测试有点帮助。

3.4 鲁棒性仿真与工艺容差分析

宽带器件的设计不能只看理想状态的仿真结果,还必须考虑工艺波动。硅光流片过程中,最常见的波动是:硅膜厚度偏差(±10 nm)、刻蚀深度偏差(±5 nm)、CD偏差(±5 nm)、掩模对准偏差。

我做了一轮蒙特卡洛仿真,在Lumerical脚本里随机生成50组工艺参数(硅膜厚度、刻蚀深度、齿宽),每组运行一次2D仿真,统计中心波长和带宽的分布。结果发现,中心波长对硅膜厚度最敏感——硅膜每偏1 nm,中心波长大约偏1.2 nm。这意味着,如果流片的硅膜厚度比标称值厚了20 nm,探测器最高效率点就会偏到1580 nm附近,完全脱离目标波段。

这个问题要在设计阶段就要留好余量。我的做法是把目标中心波长设计在1555 nm(略高于设计带宽的中心),这样即使工艺导致硅膜厚度有±5 nm的波动,中心波长偏移在±6 nm以内,仍然处于电信C波段的范围内,不影响实际测试。

4. 实验验证:从版图到测试数据

4.1 流片与器件结构设计

光栅耦合器的版图设计比仿真还要细致。流片是通过某MPW平台完成的,工艺为220 nm SOI,全刻蚀加部分刻蚀两层工艺。光栅区域采用部分刻蚀(75 nm),波导和SWG区域全刻蚀。每个单元芯片上放置了多个测试结构:均匀光栅作为对照,切趾光栅作为主要测试对象,还有不同周期(620、630、640、650、660 nm)的变体,每个结构两端都有光栅耦合器对,用于端到端测试。

这里有个经验要提醒大家:版图上一定要加对准标记和朝向标记。光栅耦合器是有方向性的,光栅倾角8度决定了需要从固定一侧入射,如果朝向标反了,测出来的损耗会非常难看,不是几千瓦时那种小问题,是直接没有信号的级别。我吃过这个亏,一次测试中有一整行器件测不出光,查了半天才发现是版图上光栅排布朝向弄反了。

4.2 测试平台搭建

测试平台的核心设备:可调谐激光器(Santec TSL-510,覆盖1480~1640 nm),偏振控制器,六维精密调整台(带压电微调),单模光纤阵列(FA),光功率计,以及把光纤阵列和芯片对准的显微成像系统。

测试流程分四步:

  1. 芯片解理后,放在真空吸盘上,用相机找到光栅耦合器的位置。
  2. 使用光纤阵列(通常是1x8或1x16的FA),把光纤端面调整到和光栅表面平行,距离控制在10~20 μm。这时候可以通过红外相机观察端面反射光斑来判断对准状态。
  3. 在1550 nm附近找到最大耦合点,然后做精细对准。先用粗调台把光斑对准光栅位置,再用压电微调做精度为0.1 μm的扫描。
  4. 对准找到最大点后,固定位置,开始扫波长,记录传输功率曲线。

值得注意的是,测试环境的温度和湿度对结果影响大。硅波导的折射率温度系数约1.8e-4/K,温度变化5度就能让中心波长偏移近1 nm。实验室的空调如果直接吹到测试平台上,会在分钟内造成明显的功率抖动。我后来在平台上加了亚克力罩子,才把功率曲线稳定下来。

4.3 仿真与实验数据对比

最终测试结果:切趾光栅的峰值耦合效率为32.5%(单端),3dB带宽66 nm,中心波长1557 nm。对照仿真的35%效率和71 nm带宽,效率和带宽都略低。

这个偏差属于正常范围。效率差异主要来自这几个方面:

  • 实验中光栅表面有10 nm左右的天然氧化层(SiO2),这层膜的折射率和硅相差很大,会反射一部分光,仿真中没有建模。
  • 光纤阵列端面的反射和模式失配:仿真中假设入射光是理想的平面波,但实际上光纤输出的是高斯光束,两者之间的模式重叠积分不可能达到100%。
  • 工艺偏差:刻蚀深度很可能不是精确的75 nm,光栅齿壁也不可能是理想的垂直侧壁,侧壁角偏1~2度非常常见,这会让布拉格条件发生细微偏移。

带宽差异的主要原因:仿真中光栅区域是完美的周期结构,但实际工艺中CD在版图上不同位置会有±2 nm的波动,这会引入额外的相位扰动,等效于展宽了共振响应。

中心波长偏了3 nm,基本可以用硅膜厚度比标称值厚了2.5 nm来解释。这个量级的膜厚波动在硅光工艺中非常常见,也在预留的容差范围内,算是测试结果中比较理想的部分。

4.4 误差分析与仿真修正

为了验证对误差来源的判断,我做了一步修正仿真:在Lumerical中把模型更新为含10 nm表面氧化层、侧壁角87度(即侧壁倾斜3度)、硅膜厚度222.5 nm。更新后的仿真结果显示:中心波长1556.8 nm,带宽67 nm,峰值效率33.2%——和实验结果的差距缩小到1%以内。这说明仿真模型如果足够精确,是完全可以和实验数据吻合的。

这一步很有价值。在实际工程中,不要只做一次设计仿真就交付流片,最好能在拿到测试数据后,反向推导工艺偏差,再用修正后的模型重新仿真,验证偏差解释的一致性。这样做两个好处:一是搞清楚器件的性能损失到底来自哪里,二是积累工艺偏差数据,为下一次流片的设计修正提供依据。我每次做硅光流片,都会做一个“设计-流片-测试-修正模型-再设计”的闭环,虽然周期长一点,但器件迭代效率反而高很多。

5. 常见问题排查与实操技巧

5.1 仿真发散与收敛问题

Lumerical FDTD里最头疼的问题就是仿真“发散”——能量不衰减、监视器功率曲线震荡不平稳、结果出现非物理的尖峰。我自己遇到过四种典型场景:

第一个是PML反射。默认PML厚度在某些倾斜入射角度下不够,反射率可能会到-40 dB量级,这足够造成扫参曲线上的细微波动。解决方式是把PML层数加到16或20,同时确认PML外边界距离结构至少1 μm。

第二个是网格不足。尤其在光栅齿尖和刻蚀台阶处,如果网格不够细,会引入数值色散。判断方法是做网格收敛性测试:网格精度从3级逐步提高到5级,观察结果变化幅度。如果结果仍然变化超过1%,说明网格还是没有收敛,需要进一步细化或者对局部区域单独加密。

第三个是光源设置问题。Bloch光源的入射角度过大时,可能激励起高阶衍射模式,导致边界处能量异常。建议检查光源插入损耗监控值和远场分布,确认没有异常的方向性。

第四个是shutoff level设置太小导致仿真时间过长,或者太大导致没有完全收敛直接把结果提交了。稳妥的做法是每次改变几何参数后,先跑一次短时仿真看能量衰减曲线,确定合适的shutoff level和最大仿真时间。

5.2 实验测试中的典型问题速查

实际操作中遇到的问题五花八门,把最常见的问题整理成一张速查表:

现象可能原因排查方法
完全没有耦合信号光纤未对准光栅位置、偏振错误、芯片朝向反先用红外相机观察光斑位置,旋转偏振控制器确认偏振态,检查对位标记
信号弱且波动大光纤端面距离太大、芯片表面有灰尘调整光纤头-芯片间距到10~20 μm,用氮气清洁芯片表面
中心波长明显偏移硅膜厚度偏差、刻蚀深度偏差测量对称结构(不同周期的同种光栅),反推工艺偏差
带宽比仿真窄光栅区CD误差、耦合强度偏强检查SEM图像确认实际齿宽和刻蚀深度,更新模型重新仿真
功率曲线出现干涉纹波两层反射面之间形成FP腔检查是否是PML残余反射、光纤端面反射或BOX层驻波效应,适当倾斜光纤端面

5.3 Lumerical操作实用技巧

最后分享几个我在Lumerical FDTD里用得比较多的小技巧:

第一,用脚本文件做参数化设计,比手点GUI高效太多。我有一次需要扫描60组参数,用脚本夜里自动跑,第二天早上直接看结果就好。手动操作在GUI里点60次周期扫描,光建立和复制模型都要花大半天。

第二,善用varFDTD快速估算。在设计初期,用varFDTD(变分FDTD)粗略估算周期和带宽范围,计算速度快一个数量级以上。等找到大致参数区间再用2D FDTD精扫,最后用3D FDTD验证最终结构。这个多层级仿真策略能把设计周期从两周压缩到三天。

第三,监视器不要只放一个功率监视器。我习惯在光栅上方放一个场监视器,看电场分布。电场分布图能直接显示耦合过程的能量泄漏方向、模式分布情况,这在判断光栅有没有对准布拉格条件时非常直观。

第四,实验前先用仿真确认测试方案可行。比如可调谐激光器的扫描步长(0.1 nm还是1 nm)、是否需要偏振控制器(光栅对TE和TM偏振响应不同)、功率计的动态范围(耦合效率低的时候信号可能只有-40 dBm),这些都能在仿真阶段估算出来,避免到实验室才手忙脚乱。

6. 最终体会

做完这个项目,我最大的体会是:仿真模型和实验数据的差距,不在于哪一边“更准确”,而在于你是否把所有的物理效应都考虑进去。氧化层、侧壁角、硅膜厚度、光纤模式失配——每一个因素看起来都是几纳米或者百分之几的差别,但叠在一起就是十几个百分点的效率差和几个纳米甚至十几纳米的波长偏移。

另一个感受是,宽带光栅耦合器的设计空间其实还没有被完全挖掘。切趾、SWG、双层光栅这些结构都有效果,但各有代价。效率、带宽、工艺容差三者天然存在折中关系。没有完全免费的午餐,设计时首先要明确应用场景最看重的指标是什么,再去做取舍。如果目标是40 nm带宽就够用,那我建议直接选均匀光栅加比较浅的刻蚀深度,工艺最简单、容差最大。如果像这次一样要70 nm以上的带宽,切趾光栅基本是必选项。至于再往上的超宽带需求(比如100 nm以上),可能需要引入多层光栅或者更复杂的逆向设计结构,这个可以作为下一步的探索方向。

如果你正在做硅光耦合相关的仿真或者测试,希望这篇记录能帮你少踩一些坑。尤其是仿真参数设置和实验误差分析这两块,值得多花点时间深入研究。光栅耦合器看着结构简单,实际需要考虑的细节远比你想象的多。

返回列表