ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

环形谐振器Lumerical仿真全流程:从FDTD建模到透射谱分析

环形谐振器Lumerical仿真全流程:从FDTD建模到透射谱分析 1. 环形谐振器仿真的整体思路为什么选择Lumerical这几年做集成光子学的人越来越离不开环形谐振器这个结构。滤波、调制、传感、延时、波长复用几乎所有片上光互连的方案里都能看到它的身影。做这类器件仿真环节基本绕不开Lumerical尤其是FDTD和MODE两个求解器。我最早接触Lumerical是因为做硅光子滤波器当时也对比过其他方案但最后实际用下来的感受是Lumerical在环形谐振器仿真这条线上确实有不可替代的地方。先说为什么环形谐振器需要光学仿真软件而不是像普通波导一样用解析公式画个结构就能完事。环形谐振器的核心工作原理是光在闭合波导中绕行当绕行一圈的相位变化正好是2π的整数倍时特定波长的光就会在环内谐振增强从而在直通端形成谐振谷。这个相位条件取决于波导的模式有效折射率、环的半径、耦合区长度等多个因素。直波导和环形波导之间的耦合系数则决定了谐振的深度和带宽。这些参数之间互相纠缠单纯用手算或者用等效折射率公式估算误差常常大到没法接受尤其是做高Q值器件的时候稍微偏移几个纳米就无法满足设计指标。Lumerical FDTD可以全波模拟光场在环形谐振器中的传播和耦合过程得到透射谱、损耗、Q值等关键指标。它的核心算法是时域有限差分法把空间划分为微小的网格单元在时域上一步步推进麦克斯韦方程组然后用宽带脉冲光源一次激发通过傅里叶变换获得宽谱响应。对于环形谐振器这种尺寸在微米级到几十微米级的结构来说FDTD的计算精度和计算量属于可以接受的范围通常是首选方案。而MODE求解器则适合快速计算波导模式的色散曲线、弯曲损耗为FDTD仿真提供初始的几何参数估算。还有一个容易被忽略的优势是Lumerical的高度可视化。仿真结束后可以直接看场分布图、透射谱曲线、模式轮廓甚至可以做动画演示光脉冲在环内一圈一圈跑的过程。对初学者理解环形谐振器的物理图像非常有帮助后端写论文出图也方便。如果你是本科学过电磁场但还没接触过光子学仿真、或者刚进课题组要做微环调制器/滤波器、又或者已经跑过几次仿真但总感觉透射谱不对这篇文章都是可以照着实操的。我会从软件环境、物理原理、几何建模、网格设置到脚本批量优化把环形谐振器仿真的完整流程拆开来讲。1.1 软件版本与工作界面坑窗口比例失调的解决办法很多人在网上搜索lumerical相关的内容时会看到一个高频问题Lumerical打开后各个窗口界面比例不协调。这个问题我刚开始用的时候也遇到了而且挺影响体验的。如果你是第一次安装打开Lumerical FDTD Solutions界面一般由项目管理器、对象树、视口区、脚本控制台、消息日志等几个栏目组成。在高分辨率的笔记本电脑上某些版本的默认布局会把对象树压得很窄、脚本控制台又特别矮整个界面看起来就很别扭操作起来也不顺手。这个问题背后的原因通常是两个。一是Lumerical的界面框架在设计时基于固定像素的布局遇到高分屏或缩放比例不是100%的Windows系统时控件位置会发生偏移二是保存过的布局文件在某些版本切换后发生了兼容性问题。解决办法并不复杂首先在View菜单下找到Layout相关选项选择恢复默认布局如果默认布局仍然不行就直接手动拖动各个窗口的边框把对象树拉宽、脚本控制台拉高调整到自己习惯的比例后再通过View菜单里的保存布局功能存好。实测下来FDTD 2020 R1以后的版本对高分屏的兼容性好很多如果你用的版本太老且调整无效升级版本是治本的办法。还有一个技巧如果视口区的几何模型显示得特别小或特别偏双击视图窗口的适配按钮或者按快捷键A软件会自动把模型居中缩放到窗口大小。1.2 环形谐振器仿真需要准备哪些材料参数和几何参数在动手建模前先把需要准备的材料清单理清楚。硅光环形谐振器最常见的是SOI基底也就是silicon-on-insulator覆盖层一般是二氧化硅或者空气。Lumerical材料库自带了Si、SiO2等基础材料的折射率数据包括色散模型。但要注意材料库里的折射率数据通常来自文献和实际流片工艺线的材料可能存在偏差。如果仿真的目标是发文章或做流片前设计建议要求工艺线提供实测的薄膜折射率数据然后把数据导入材料模型里。除了材料还有几个几何参数必须提前定好波导宽度w常见的是400nm到500nm取决于工作波长和单模条件波导厚度hSOI的顶层硅厚度一般是220nm这是最标准的硅光工艺厚度耦合间距gap典型值从100nm到300nm不等gap越小耦合越强透射谱的谐振谷就越深、越宽环半径R工作在1550nm附近的微环半径一般是5μm到20μm。这几个数值直接决定谐振波长和Q值需要在仿真前有一个初步的估算。估算方法用MODE求解器的模式分析功能最快。在环形谐振器仿真中直波导和弯曲波导各自支持的模式有效折射率是核心输入参数。用MODE计算一截直波导和一个弯曲波导的本征模式得到neff值后可以估算自由光谱范围和近似的谐振波长。但要注意MODE算出来的弯曲波导neff包含了弯曲损耗的影响和FDTD全波仿真的结果会有一些偏差。所以MODE的作用主要是把初始参数定到一个大概范围最终结果以FDTD为准。2. 环形谐振器的核心物理机制谐振条件、耦合与损耗做仿真的前提是把物理图像搞清楚。环形谐振器虽然结构简单就是一根闭合波导挨着一根直波导但它涉及的物理过程相当丰富。我把关键机制拆成三块来理解谐振条件、耦合机制、损耗来源。谐振条件是最基础的。光在环内传播一圈总相位变化等于2π乘以整数m其中m是谐振级次。相位变化包含传播相位和耦合区引入的相位变化两项。传播相位是2π/λ乘以neff乘以环周长2πR。耦合区虽然很短但光在耦合区域里也会积累额外的相位。这个耦合相位通常不是整数倍的π带来的效果就是谐振波长发生偏移。仿真时经常遇到谐振峰的位置不在理论估算的位置上原因往往就是这个耦合相位没有被算进去。耦合机制决定了一个环形谐振器的透射谱形状。直波导和环之间的耦合可以用功率耦合系数k²和透射系数t来描述理想无损情况下满足k²t²1。谐振时环内场强增强透过直波导的光强被削弱形成谐振谷。临界耦合发生在k²等于环内单圈损耗时此时谐振谷深度最大透射谱在谐振波长处几乎降到零。欠耦合时谐振谷浅且窄过耦合时谐振谷深但宽。做传感或者滤波设计的时候经常需要根据应用需求调整耦合区域的状态需要高Q值窄带宽就做欠耦合需要大带宽就做强耦合需要最高消光比就调整到临界耦合。这个调整在仿真里就是扫描耦合间距gap。损耗机制则包括弯曲损耗、侧壁散射损耗、材料吸收损耗和耦合损耗。弯曲损耗在小半径时急剧增加。在硅光SOI平台220nm厚的硅波导半径小于3μm时弯曲损耗会显著上升。侧壁散射损耗取决于工艺粗糙度仿真中通常没法精确建模随机粗糙度一般通过实验校准一个等效损耗系数。材料吸收损耗在1550nm通信波段对硅来说很低主要是SiO2包层中的OH根吸收正常工艺水平下可以忽略。仿真中的损耗主要关注弯曲损耗和模式泄漏损耗。FDTD仿真时如果需要分辨不同损耗的贡献可以在材料模型和结构设置上做对比实验比如把包层折射率设为不同值来观察泄漏损耗的变化。2.1 直波导与弯曲波导的模式有效折射率如何影响谐振波长有效折射率neff是把三维波导的传播特性简化为一维概念的关键参数。直波导的neff主要由波导尺寸、材料折射率和波长决定。弯曲波导的neff除了这些因素还和弯曲半径有关。光在弯曲波导中传播时模式场分布会向弯曲外侧偏移导致有效折射率比直波导略小一些。这个偏移是弯曲损耗的根源之一。在环形谐振器仿真中neff既决定了谐振波长也是计算FSR的关键。用MODE求解器计算neff的时候有一个常见的坑新版本MODE的mode solver设定里要确保边界条件设置正确才能得到单根波导的模式。很多教程用平面波导2D简化模型但实际器件是条形波导2D模型算出来的neff和3D条形波导有偏差。所以我建议直接用3D模式剖面做计算条形波导的尺寸如实设定。计算完成后MODE会返回有效折射率的实部和虚部虚部对应损耗可以从虚部推算出传播损耗的数值。有了neff就可以粗算谐振波长λ_res neff × L / m。其中L是环周长。实际操作中我们往往反着用先确定想要的谐振波长再反推半径。比如目标1550nmneff约2.45周长L如果取2πR假设m取整数就可以求出R的大致范围。注意neff本身随波长变化所以严格来说m和λ_res之间是迭代关系工程上第一步估算用固定neff就行后面在FDTD里直接看透射谱的峰值位置即可。2.2 耦合区gap值如何决定透射谱的深度与形状耦合区是环形谐振器仿真中最微妙的部分。gap值控制的是直波导和环之间的距离从而控制倏逝波耦合的强度。gap越大耦合越弱gap越小耦合越强。在SOI平台上因为硅和二氧化硅的折射率差很大模式被限制得很紧倏逝场衰减很快。典型gap从100nm到300nm之间变化对应的耦合系数可能变化一个数量级。强耦合情况下透射谱的通带会变宽谐振谷加深Q值下降。弱耦合情况下谐振谷窄而浅Q值高但消光比有限。临界耦合时消光比理论上趋于无穷大此时环内往返损耗恰好等于从直波导耦合进环内的能量比例。用一个简单的模型来理解把直波导-环-直波导当作一个互相耦合的双波导系统在谐振波长处直波导透射率是(1-k²-t_total²)的函数。k是耦合系数t_total是环内损耗系数。当k²t_total²时透射率最小。这个公式解释了为什么仿真中gap扫描能出现消光比先变深后变浅的趋势。在Lumerical FDTD中扫描gap的方法很直接。参数扫描工具里把gap当作变量从100nm扫到250nm步长25nm每个点跑一遍透射谱然后对比不同gap下的谐振深度和3dB带宽。实测下来gap每改变10nm耦合系数就可能变化百分之几反映到透射谱上是谐振谷深度的明显改变。需要注意的是FDTD对gap的大小比较敏感网格大小必须远小于gap。如果网格步长是10nmgap是100nm中间只有10个网格耦合区计算精度会偏低。建议gap至少覆盖15到20个网格也就是网格步长不能大于gap的五分之一。3. Lumerical FDTD环形谐振器仿真完整实操流程现在进入最核心的部分从头到尾搭一个环形谐振器FDTD仿真。我用的是标准SOI硅光平台参数直波导和环都用相同截面即波导宽度500nm、厚度220nm、侧壁垂直、顶部无覆盖层为空气包层工作波段1520nm到1580nm。环形谐振器半径取10μm耦合gap初始设200nm。3.1 几何建模从直波导开始搭起微环结构打开FDTD Solutions后第一步是在Projects窗口里右键选择New FDTD Simulation。然后开始搭建几何结构。先建Si材料层。材料库中选中SiSilicon- Palik这一模型在近红外波段有实测的折射率数据适用于硅光仿真。如果材料库里的Si-Palik不可用可以手动输入1550nm处的折射率3.47但要注意色散会影响带宽较大的宽谱仿真手动输入单一折射率只适合窄带仿真。接着画波导。用一个长方体表示直波导长度选12μm宽度500nm高度220nm。位置放在y0z的方向上让波导底面坐在SiO2衬底上。再用一个环形结构表示微环。Lumerical里面画圆环可以用Donut结构或者直接用Ring。Donut结构内外半径一组直接用内半径等于环内径、外半径等于环外径来定义。环的外半径是10μm波导宽500nm那内半径就是9.75μm。高度也是220nm。放置位置和直波导相切具体来说圆心在x0、y10.25μm处这样直波导的中心线和环的外边缘之间留出200nm的gap。用我这个设定要注意直波导和环之间的gap是边缘到边缘的距离不是中心线到中心线的距离。有人会搞混把环的圆心放在波导中心线延长线的距离等于10μm加波导半宽的地方结果gap就变成了0耦合区完全接触了。然后是SiO2衬底和包层。衬底画一个大的长方体厚度2μm放在波导下方。包层如果是空气就不用画如果要模拟SiO2上包层再画一个覆盖层把波导和环全部盖住厚度建议至少1μm以上避免仿真区的边界效应干扰结果。几何结构建完后把这三个组件的材料属性检查一遍。常见的错误是硅材料层或衬底SiO2的z方向高度没有覆盖到仿真区域内波导的整个高度导致模式场被截断。遇到这种情况透射谱会出现莫名的噪声或者谐振波长偏移。3.2 设置FDTD仿真区、光源与监视器宽带脉冲与传输谱提取几何建好后开始设置FDTD模拟区域。因为环形谐振器是水平放置的结构FDTD区域用3D模式范围在x方向覆盖直波导和环的整个长度y方向从直波导下表面到环的最上方再留出至少1μm的空间z方向从衬底底部到空气包层顶部。具体来说x方向从-8μm到8μmy方向从-4μm到25μmz方向从-3μm到5μm。这个范围已包含了衬底大部分区域以及波导上方约2.8μm的空气层。边界条件至关重要。环形谐振器仿真里如果边界反射太强会污染透射谱。FDTD区域外边界设置成PML完美匹配层PML层数默认是8层如果涉及较长的尾波可以增加到16层。在实际仿真中PML离波导的距离至少要有半个波长的距离否则PML本身会吸收一部分倏逝场导致模拟出的损耗偏大。光源选择Mode Source还是Dipole Source是环形谐振器仿真中的一个关键决策。大多数人用的是模式光源。在直波导的输入端放置一个模式光源光源所在截面要先算好基模。光源频率范围覆盖1520nm到1580nm。模式光源的优点是它只激发目标模式不会引入其他杂散模式仿真结果更干净。放置位置取在直波导上远离耦合区的地方比如x-5μm处给光进入耦合区之前留出足够的传播距离。监视器则至少放两个。一个放在直波导输出端用来测量透射功率谱另一个放在环内用来测量环内增强场或谐振模式轮廓。传输监视器放在x5μm处同样要远离耦合区。类型选择Frequency-domain field profile频域监视器能输出功率谱和场分布。如果要看模式电场分布图再加一个frequency-domain field profile监视图放在xy平面覆盖微环区域。透射率计算方式是在输出监视器上测到的功率除以光源注入功率。在Lumerical中光源的归一化一般在分析组中自动处理具体在TFST分析组里可以直接得到透射率T。3.3 网格设置与收敛测试怎么判断仿真精度够不够网格设置是FDTD仿真里最影响精度和耗时的一步。网格太粗耦合区的倏逝波差异计算不准透射谱形状完全不对网格太细计算时间从几分钟膨胀到几小时甚至内存不够跑不动。而环形谐振器这种结构又对网格尤其敏感因为耦合区只有200nm左右网格至少要能在gap区域内放上10个以上的点。Lumerical FDTD支持全局网格和局部网格叠加。全局网格步长在非关键区域可以设置为50nm到100nm在耦合区、波导区域用网格覆盖区域mesh override设为10nm到20nm。实测下来波导区域mesh步长设为20nm、耦合区域单独设成10nm已经能满足大多数硅光微环仿真的精度需求。收敛测试是所有仿真里必做的一步不要去省。做法是把网格步长从40nm逐步减到10nm每步都跑一次仿真并记录谐振波长的位置和谐振深度。当网格步长从20nm降到10nm时谐振波长的偏移量小于1nm就认为网格已收敛。如果偏移还很大说明某些关键位置网格不足需要继续加密。还有一个经验看电场分布的连续性。如果场分布图上出现锯齿状边界说明网格不够细。如果场等高线平滑连续一般精度就可以了。3.4 仿真运行与结果提取从透射谱中计算Q值和FSR配置完成后检查所有设置无误点击Run开始仿真。在这个尺寸下用默认的PML和10nm局部网格仿真时间大约需要5到15分钟取决于电脑的CPU核心数和内存。仿真完成后重点看输出的透射谱。理想情况下在1520nm到1580nm的范围内会出现若干个谐振谷相邻两个谐振谷的波长差就是自由光谱范围FSR。每个谐振谷的形状应该是洛伦兹型底部深度取决于耦合状态谷底位置对应的波长就是谐振波长。Q值的计算方法是中心波长除以半高全宽。在Lumerical的分析结果中可以直接用内置的Lorentzian拟合工具拟合谐振谷算出中心波长和FWHM再用公式Qλ/FWHM得到Q值。也可以用脚本程序从原始数据中读取透射率最小值点附近的数据点自己做洛伦兹拟合步骤稍多但可控性更强。FSR的计算方面大半径环的FSR偏小小半径环的FSR偏大。半径为10μm的环在1550nm附近FSR大约是9nm左右半径为5μm的环FSR可以到18nm左右。如果需要更大的FSR就要缩小半径但要注意弯曲损耗会随之增加。在实际设计时需要做一个权衡。3.5 参数扫描用扫描工具批量分析不同gap和半径单次仿真只能回答一个问题。如果想把gap、半径的影响系统性地看一遍就用参数扫描功能。在FDTD Solutions的Optimizations and Sweeps窗口里新建一个Sweep选择需要扫描的变量比如gap从100nm到250nm步长25nm。扫描模式选择Batch of sweeps这样每个参数组合都是独立进程可以并行跑。参数扫描完成后把所有透射谱曲线叠加到同一张图上。观察gap增大时谐振谷深度的变化趋势应当看到谷慢慢变浅FWHM慢慢变小Q值变大。如果在某个gap值处某个谐振波长的谷深突然和其他gap处的情况不一致就要检查是否是模式杂散耦合或网格不均匀引出的假象。批量扫描也会带来一个新的问题每一个gap值都是重新建网计算的总耗时成倍增长。所以建议先做单点仿真验证整个流程没问题后再跑批量扫描。实测下来gap扫描10个点在8核CPU机器上大约需要两三个小时可以接受。再做进一步优化时可以在MODE里先算耦合系数随gap的变化趋势筛掉明显不合理的gap范围只对合理范围做FDTD扫描能节省不少时间。4. 常见问题与排查技巧实录仿真结果不对怎么办环形谐振器仿真里最让人头疼的就是结果不对。我把这几年遇到的高频问题整理成一张速查表每一类问题都附带排查思路照着顺序检查基本能定位。现象可能原因排查方法透射谱全平无谐振谷光源和监视器摆放位置不对 / 环和直波导没耦合上放大看几何位置确认gap值确认光源位置在耦合区上游谐振谷浅且宽耦合太弱或太强 / 包层漏模扫描gap看深度变化增加包层厚度谐振波长严重偏离估算值耦合区相位没计入 / neff取值偏差大用MODE算准确neff用扫描半径微调谐振谷不对称网格太粗 / PML反射加密网格重跑PML层数改16场分布图有刺状异常几何体不重叠或材料属性错误检查材料是Si还是SiO2检查几何体高度范围仿真内存不足全局网格太细改用局部网格覆盖全局网格放宽到80nm4.1 谐振谷消失光源与监视器的摆放玄机透射谱全平这是新手最容易卡住的问题。最直接的原因是光源和监视器放在耦合区的下游导致测到的光没有经过环形谐振器的耦合作用。还有一种可能是光源的模式设置错误光源截面上的模式算的是自由空间传播的高斯模式而不是波导模式结果光根本没耦合进波导里。查这个问题最快的办法打开电场分布监视器看光场在直波导里是否正常传播。如果直波导里没有明显的导模场分布说明光源没有激发起波导模式。重新在光源所在截面运行一下Mode计算确认这个位置有一个模式且是基模。如果直波导里有导模但环内场强和直波导几乎一致说明耦合区gap太大或者两个波导没有真正靠近减小gap再试。还有一个小点环形谐振器的谐振谷非常尖锐扫描范围如果步长太大谐振谷可能刚好落在两个采样点之间被漏掉。监视器频率点数最好设在2000以上尤其是仿真宽谱时。实测中频率点数太少导致的谐振谷被漏掉是一个极常见的问题很多人误以为没谐振其实只是采样不够密。4.2 谐振谷深度不理想耦合状态调优的实战逻辑谐振谷深度反映了耦合状态和损耗的关系。gap固定时如果谐振谷很浅要么是耦合太弱导致临界耦合不满足要么是环内损耗太大。想验证是不是环内损耗太大可以检查一下环内的传输把环单独拿出来在环内某处加一个监视器看功率每跑一圈下降多少。如果一圈损耗超过3dB说明弯波导损耗过大此时需要增大半径或增大波导宽度。耦合太弱的调节方式就是减小gap让直波导的倏逝场和环内模式的倏逝场重叠更多。在Lumerical FDTD中gap减小到小于100nm之后耦合系数的增长速度会变缓原因是波导侧壁的界面反射等因素开始起作用。所以实际工艺中gap一般在150nm以上过小的gap不但仿真结果不稳定流片工艺也难以保证一致性。要调到临界耦合有一个实用的方法固定gap跑一次仿真看谐振谷处透射率的最小值T_min。如果T_min接近零说明已经在临界耦合附近如果T_min离零很远根据T_min和耦合系数的关系可以估算需要调整的方向。实际操作中在gap扫描结果上找T_min最低的那个gap值是最省事的。4.3 仿真速度太慢从网格和光源两个方向优化跑一个3D环形谐振器仿真如果网格全区域都用10nm计算量非常惊人。正确做法是全局网格用80nm波导区域用局部网格覆盖设为20nm耦合区再单独加一个网格覆盖设置为10nm这样计算速度通常能提高三到五倍精度并不会损失多少。这是因为非关键区域模式场变化平缓不需要高密度网格。光源类型也会影响仿真速度。宽脉冲光源在1520nm到1580nm的范围内时域脉冲的时间宽度越短仿真需要的总时长越短但频率分辨率会下降。FDTD的仿真时间会自动根据光源的频谱宽度和监视器的频率分辨率设定一般不需要手动改。如果发现仿真时间过长检查一下监视器的频率点数量是否设得过多。频率点数从5000减到1500仿真时间可能缩短一半精度误差通常可以接受。4.4 Lumerical怎么调用脚本常用脚本助你批量搞定仿真热搜词里有一个关于脚本调用的问题这个确实是自动化仿真的关键。Lumerical FDTD支持多种调用脚本的方式。最常见的是在软件内打开脚本编辑器运行.lsf脚本文件。脚本本身支持创建新工程、设置几何、定义光源、运行仿真、保存结果等一系列操作。以下是一段经典的环形谐振器参数扫描脚本可以直接在新项目的脚本编辑器中运行# 环形谐振器 gap 扫描脚本 (Lumerical FDTD) switchtolayout; selectall; delete; # 添加 FDTD 仿真区 addfdtd; set(dimension, 3D); set(x min, -8e-6); set(x max, 8e-6); set(y min, -4e-6); set(y max, 25e-6); set(z min, -3e-6); set(z max, 5e-6); set(boundary condition, PML); set(pml layers, 8); # 添加 Si 波导层 addrect; set(name, Si_layer); set(material, Si (Silicon) - Palik); set(x span, 16e-6); set(y span, 22e-6); set(z min, 0); set(z max, 220e-9); # 添加 SiO2 衬底 addrect; set(name, Box); set(material, SiO2 (Glass) - Palik); set(x span, 16e-6); set(y span, 22e-6); set(z min, -2e-6); set(z max, 0); # 添加直波导 addrect; set(name, straight_wg); set(material, Si (Silicon) - Palik); set(x span, 12e-6); set(y span, 500e-9); set(z min, 0); set(z max, 220e-9); # 添加环形结构 addring; set(name, ring); set(material, Si (Silicon) - Palik); set(z min, 0); set(z max, 220e-9); set(inner radius, 9.75e-6); set(outer radius, 10e-6); set(x, 0); set(y, 10.25e-6); # 添加模式光源 addmode; set(name, mode_source); set(injection axis, x); set(direction, Forward); set(x, -5e-6); set(y, 0); set(z, 110e-9); # 添加透射监视器 addpower; set(name, T_monitor); set(monitor type, Linear X); set(x, 5e-6); set(y, 0); set(z, 110e-9); # 添加谐振光谱监视器 addfdfp; set(name, ring_profile); set(monitor type, 2D Z-normal); set(x span, 12e-6); set(y span, 12e-6); set(z, 110e-9); # 添加网格覆盖耦合区域加密 addmesh; set(name, coupling_mesh); set(x min, -2e-6); set(x max, 2e-6); set(y min, 9.7e-6); set(y max, 10.8e-6); set(z min, -50e-9); set(z max, 300e-9); set(dx, 10e-9); set(dy, 10e-9); set(dz, 10e-9);脚本中每一段set命令都是在设置对象的属性。addfdtd添加FDTD模拟区addrect就是建立一个矩形体addring建立环形结构addmode添加模式光源addpower添加功率监视器。如果你是第一次写脚本先在GUI里手动建一个仿真然后用脚本编辑器中的Record功能软件会把你的所有操作自动录制成脚本。这样一个小时的建模仿真操作可以秒变一段可重复运行的脚本是学习脚本语言的最快路径。运行脚本的方式有两种一是在脚本控制台直接打run(xxx.lsf)二是在脚本编辑器中点击运行按钮。针对参数扫描还可以用嵌套循环或参数化Sweep来批量运行配合write和load命令实现扫完一次gap后自动切换下一组参数并保存结果。脚本对仿真最大的价值在于可复现性。实验室里如果换了台电脑或换了个人要复现之前的仿真结果只要给他同一个脚本文件就能完整恢复整个工程而不用手动一步步重建模型。这也是很多成熟课题组强制规定所有仿真必须留存.lsf脚本的原因。5. 进阶优化方向从“能跑”到“跑得好”基础仿真跑通之后实际工程中还有几个经常要做的优化方向我把它们按投入产出比排个序你可以按需选择。5.1 用MODE快速预扫描缩小FDTD参数空间的技巧FDTD虽然准确但速度慢不适合大规模的参数探索。MODE求解器计算一个截面的模式数据只需要几十秒扫描一组gap值几十个点也只要几分钟。所以在做FDTD参数扫描之前先用MODE把所有可能的gap值和波导尺寸对应的耦合系数都算一遍预筛出合理的参数范围再把这个小范围的参数拿到FDTD里精细仿真。这套“MODE粗扫FDTD精扫”的组合方式是我自己跑环形谐振器仿真最常用的工作流能省下至少一半的仿真时间。在MODE中做扫描时除了看耦合系数还要看弯曲波导的有效折射率变化。有效折射率随半径变化的斜率决定了色散对FSR均匀性的影响。如果做的是波分复用滤波器FSR的均匀性很关键那这一步就必须做。5.2 多物理场扩展热调谐和电调谐环形谐振器的仿真思路环形谐振器的实际应用场景里经常需要调谐。热调谐是在环上覆盖加热电极利用硅的热光效应改变neff电调谐则是通过PN结注入载流子改变neff。在Lumerical中做热调谐仿真不需要完全重建模型。只需要把环和覆盖层的折射率相应增减一个量或者用Lumerical的HEAT求解器先算出温度分布再把温度场导入FDTD中做全波仿真。耦合到FDTD的方式是先在HEAT中建立相同的几何结构加一个热源求解稳态温度分布然后通过多物理场耦合将温度映射为折射率变化折射率变化后的结构再导入FDTD中跑透射谱。实测中热光系数对硅是1.86×10⁻⁴/K升温10K大约会带来0.00186的neff变化对应的谐振波长偏移大约是1.2nm。如果你只需要粗略估算调谐效率直接用这个等效折射率变化量来跑FDTD就可以了不用完整做热-光耦合。PN结电调谐的建模就要复杂得多因为要计算载流子分布对折射率的影响。这类仿真通常会用到CHARGE求解器算PN结的载流子分布再结合载流子色散效应模型修正折射率最后导入FDTD。这样的多物理场仿真链路比较长但Lumerical的官方例程里有完整案例照着改参数比从零搭要快得多。5.3 背向散射和粗糙度影响进阶仿真如何还原真实工艺真实流片出来的环形谐振器Q值经常比设计值低一个量级主要原因是侧壁粗糙度带来的背向散射和辐射损耗。FDTD仿真如果不考虑粗糙度得到的Q值只是理想结构的本征Q和实测值会有差距。如果要做更贴合工艺的仿真可以在波导侧壁人为引入随机扰动幅度设为工艺线的粗糙度均方根值在结构编辑器中用脚本生成粗糙侧壁的几何形状。这种方法计算量较大但对于研究散射损耗对Q值的影响非常有效。很多高端滤波器设计文章里出现的Q值预测图就是这样仿真出来的。需要注意粗糙侧壁几何模型会导致网格数量急剧增加仿真时间可能从分钟级变成小时级。实际操作时可以把粗糙度只加在直波导-环耦合区附近的侧壁其他区域保持光滑在保证散射损耗可评估的同时控制计算量。结尾写了这么多最后聊点实在的体会。环形谐振器的Lumerical仿真门槛其实不在软件操作而在对物理机制的理解和对仿真结果的判断力。软件只是工具任何一个仿真报出来的谐振波长和Q值你都应该能解释它背后的物理来源是什么。我在实际做仿真时习惯的做法是先花半小时在MODE里估算neff和弯曲损耗再用半天跑一组FDTD单点验证确认谐振波长和谱形大致合理后才放心地跑宽范围的gap扫描。千万不要一上来就全参数批量扫描结果跑了一整夜第二天发现是最初的光源位置放错了所有数据全部作废那种挫败感很打击人的。另外一个心得是遇到仿真结果和你预期不符的时候不要急着调参数。先把电场分布图打开看一遍很多时候问题一目了然。模式场从断口泄漏、耦合区出现高阶模、PML反射形成驻波这些现象看一眼就能定位问题。仿真软件给了你透视器件内部的能力利用好它比盲目扫描参数高效得多。如果你正准备用这个流程做自己的第一个微环滤波器的仿真我建议把文中涉及的参数先原样跑一遍看能不能复现出预期的透射谱。跑通之后再改成自己的尺寸和材料参数这样出错时比较容易区分是设置问题还是设计本身的问题。祝仿真顺利谐振谷深不见底。
返回列表