
Lumerical 仿真教程
文章平均质量分 81
该专栏主题内容部分已完结,后续不会做太大改动,作者本人会定期维护。
优惠券已抵扣
余额抵扣
还需支付
¥399.90
¥499.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
勤奋的大熊猫
芯片设计及版图布局工程师
接专业问题咨询,有需求的可以私信我,价格可以商量。
展开
-
Lumerical 教程目录,说明及个人感悟(完结)
Lumerical---教程说明及个人感悟原创 2023-02-15 12:13:21 · 8572 阅读 · 0 评论 -
Lumerical mesh structure 用法
按键,从而我们会在右侧的图形窗口看到一个结构图,该结构图表示的是当前我们创建物体以及周围背景共同组成的空间的折射率分布。通过这种方式,我们就能够很快了解到我们所构建的结构是否正确。仿真中,当构建好结构后,为了确保结构构建是正确的,我们可能需要查看所构建结构各部分的有效折射率值,此时,我们就可以通过。按键来实现这一操作。具体过程如下,首先,我们在 Mode 工程中构建一个如图所示仿真结构。命令就是模仿鼠标左键点击。原创 2025-04-16 13:54:42 · 91 阅读 · 0 评论 -
Lumerical ------ Edge coupler design
更改完成 Script 中的内容后,重新进行官网给出的操作,运行后可以得到如下图像,这里的 group_span_2 实际表示的是 taper 的长度表示当 taper 的长度大约为 1500 um 时,我们能够得到最大的透射率。本文,我们将使用官方提供的 Edge coupler 设计教程,但是中间会带有作者本人的设计的感悟。中的显示如上图所示,这样我们进行上述操作步骤就可以获取到正确的结果了。光纤模斑的时候一切都是正常的,但是当我们后面启用。查看两个模式的匹配度,最终获取到的匹配度为。原创 2025-04-02 16:57:29 · 298 阅读 · 0 评论 -
Lumerical ------ 多模干涉仪的设计 Multi-mode interferometer(MMI)
与 Splitter 器件一样,MMI 器件也是一种常见的分光器件,可以根据用户的需求将光束分成不同的比例。本文,我们将介绍如何仿真 MMI 器件。这里我们使用的是 1x2 MMI,其本质上是由四个部分组成的,中间的矩形多模式干涉区域以及左右两侧的三个 taper 模式转换区域。之前的教程中我们也提及了,为了获取稳定的模式场分布,通常,我们需要进行模式收敛性扫描。这里以官网给出的案例为例。如何提取 S 参数我们先暂时不做介绍,后续有时间了我们再做介绍。原创 2025-04-02 15:12:52 · 174 阅读 · 0 评论 -
光芯片中常用单模波导的尺寸
这里来简单介绍一下常用单模 Si 与 SiN 波导中的尺寸。首先是 Si 波导,目前比较常见的尺寸是。而 SiN 波导,目前比较常见的尺寸是。原创 2025-04-01 16:35:04 · 110 阅读 · 0 评论 -
端口参数设置之 Number of field profile samples
如果去官方论坛查看解释,往往会被搞得云里雾里。这个参数实际上表示的是仿真时需要的模式数量。比如,我们要进行但单模式仿真,如上图所示,我们选择的是。如果我们的仿真涉及高阶模式,那么可以根据高阶模式的数量设定这个值,如果只看基模,那么我们需要设置其为。端口中的光束模式进行设定,很多时候我们会遇到一个名为。仿真时,通常我们会对。原创 2024-08-16 15:02:02 · 165 阅读 · 0 评论 -
S 参数扫描计算群延迟
这个不同寻常的事情也是作者本人无意中发现的,如果有小伙伴也发现了这个问题,不用大惊小怪,继续等待仿真执行完毕即可。),作者本人的其他专栏中有介绍,读者也可以自行谷歌。结构,我们创建了两个。,并且如下图所示勾选了。此时是未被勾选的状态。选项,我们会发现此时。关于什么是群延迟 (原创 2024-08-12 14:47:26 · 320 阅读 · 0 评论 -
FDE 求解器的 enabled 选项是不开放的
并且,不同于结构组件,对于结构组件,我们通常可以使用如下脚本将其设置为不启用状态。我们通过如下脚本设置其为不启用状态后, CAD 显示界面将是一片漆黑。在 Mode 工程文件中,只能添加一个。比如,我们这里有一个三角型结构。属性是不对用户开放的。中的组件显示为灰色。但是,这种设置方式对。原创 2024-08-07 15:06:38 · 130 阅读 · 0 评论 -
内置材料在 1310 nm 波长下的折射率
本文主要用来记录常用波导材料在典型波长。原创 2024-08-07 14:31:18 · 331 阅读 · 0 评论 -
光束重叠率计算
看起来我们获取到了不错的结果。接下来,我们在我们感兴趣的模式上单击右键选择。一文中我们介绍了如何进行光纤模式的仿真。本文,我们将继续使用。中我们之前存放的模式和与该模式对应的新获得的模式,在。构建完成光纤后我们可得到如下所示的结构图,我们沿用。放置光纤端口处,此时其尺寸我们设置为。且为了获取更为精确的仿真结果,我们将。进行同样的操作进行仿真并查看结果。可以看到,此时的重叠率上升到了。来进行光束重叠率计算说明。网格的最大步长值设置为。可以看到,仿真结果与将。我们将新的模式也添加进。此时,光束重叠率来到了。原创 2024-08-05 15:07:28 · 376 阅读 · 0 评论 -
光纤模式仿真
这一次可以看到,结果并不理想,模式四周区域白色轮廓发生畸变,结果也成了不合理模式(有效折射率判断),因此,16 * 16 um 的大小是一个能够获取较好结果的一个选择。关于光纤的相关知识,这里默认大家知道,不知道的小伙伴可以查看作者的其他专栏。,那么光波的有效折射率应该大于纤芯折射率且小于包层折射率,可以看到,此时符合要求的有效模式只有一组。可以根据需求调大一些,本人由于想要精确的结果,因此,特意将网格尺寸放的非常小。模式,剩下的模式都是不合理的模式,我们不予理会即可。我们之前设置纤芯的折射率为。原创 2024-08-05 10:43:07 · 823 阅读 · 0 评论 -
根据索引值删除数组中的元素
现在我们想要自制一个能够根据我们提供的索引值删除指定数组中元素的函数。这里我们介绍两种方法。更为简便,推荐使用。原创 2024-07-11 11:27:52 · 172 阅读 · 0 评论 -
查找最接近给定透射率值的波长值
显然,简单的方法就是对透射率数据进行截取,使其仅包含最高点左侧的数据,然后重复上述的代码即可。透射率的点位于图像最高点的右侧,而我们的图像是一个开口向下的抛物线,如果我们想要得到位于左侧图像最接近。中的索引值获取算法,这里,我们来介绍一下如何查找最接近给定透射率值的波长值。之后元素组成的新的透射率数据。结合上述结果和图像我们可以看出,此时上述代码给出的近似等于。的索引值对应的波长更大,因此,我们只需要考虑索引值。最大值索引值的方法------数组的索引值,我们需要使用。对应的是我们截取后新的。原创 2024-07-08 11:22:41 · 251 阅读 · 0 评论 -
使用 Python 处理 Lumerical 导出的 .txt 文件(完结)
导出数据的时候采用这种规范。最终绘制出来的图像也是一样的,这里不再进行展示了。显然,上述代码不够简便,我们将读取数据定义为一个函数来简化这一过程。可以看出,通过这种方式,我们简化了读取数据的代码。至此,这一问题完结。这里我们来分享如何使用。一文中我们已经介绍了如何将。对这些数据进行处理。原创 2024-07-08 10:37:49 · 652 阅读 · 0 评论 -
INTERCONNECT 使用脚本创建一个完整的 SCRIPTED 器件示例
但是对于一个完整的器件,导入后我们仍旧需要对它进行一些操作以及参数上的设置,它才能够成为一个可用的完整的器件。这里仅作抛砖引玉,其他类型的器件均可采取这种方式操作。一文中我们介绍了如何导入自定义的器件以及如何导入。器件添加必要的参数使其成为一个完整的器件。因此,这里我们来介绍一下如何使用脚本为。原创 2024-07-05 17:18:01 · 274 阅读 · 0 评论 -
INTERCONNECT 使用脚本导入 Element Library 的器件
这一点需要特别注意,意味着加载后我们最好手动再次对加载的器件进行更名,或者通过。最简单的方式就是手动点击导入,但是我们不喜欢那种方式,这里,我们介绍使用脚本导入器件。一文中,我们介绍了如何将器件或者自定义器件添加到用户自定义的库中。这里比较奇怪的一点是,如果我们对库中这个器件重命名,然后导入它,在。注意大小写,器件名称务必与库中名称保持一致。其他组件也类似,加载后名称都会回归。窗口中我们加载它的默认名称还是。中导入我们需要的器件呢?比如,我们这里有一个名为。窗口中看到如下器件。原创 2024-07-05 16:05:40 · 265 阅读 · 0 评论 -
INTERCONNECT 添加自定义器件到 Custom 文件夹下
中的所有结构都可以通过运行对应的脚本文件得到。运行脚本文件获取结构可以使得结构本身具有可迁移性和重复使用性,长远来看,一定比手动创建更方便。因此,这里我们来介绍一下如何在。中向自定义 Custom 文件目录下添加自定义器件。做完这一系列操作后,我们可以在。作者本人一直坚信一件事情,运行如下脚本也可以将名为。原创 2024-07-05 15:36:53 · 254 阅读 · 0 评论 -
Lumerical Script 算法,查找矩阵中对应值的所有索引值
中我们需要对我们的结构或者仿真进行优化,我们就需要利用一些算法,因此,能够使用。我们想要获取数组 A 中所有等于0.5 的值对应的索引值。这样,我们就可以得到所有我们想要值的索引值。去实现一些简单的算法就显得尤为重要了。原创 2024-07-02 17:19:35 · 161 阅读 · 0 评论 -
获取材料库中材料的折射率并绘制图像
有时候我们想要获取材料库中材料的折射率,但是我们并不像直接去查看它们对应的数值,因为数值是离散的,且不能够直观的展示出材料折射率变化的趋势。原创 2024-06-26 14:59:59 · 252 阅读 · 0 评论 -
导出 S 参数扫描结果供 INTERCONNECT 使用
第一列是频率,第二列是振幅,第三例是相位,虽然我们知道每一列数据的意思,但是我们也无法对它们进行操作去获取完整的光场。参数扫描创建后的默认名称,当然,这个名称用户可以进行更名。数据时存在一种默认对数据进行操作的方式,属于我们不知道的黑匣子。中,但是,此时读入回来后,文件存储形式已经不再是原来的。当然,对于电脑文件处理比较好的朋友,也可以直接手动修改。参数结果进行提取,这无异于增加了我们的数据处理成本。针对单个小的模块进行仿真,再将得到的。的存放形式了,意味着,我们无法再用像。参数扫描的名称,此时名称为。原创 2024-06-25 17:50:24 · 840 阅读 · 0 评论 -
获取 S 参数仿真中属性所对应的值
参数扫描后,想要可视化一下对应参数的图像,每次手动点击一个是比较麻烦,另一个是显示的效果并不是很美观。此时,如果我们可以使用。函数进行绘图和美化,显示结果将会变得清晰。那么肯定有小伙伴会问,那我如何知道有哪些属性的值是我可以获取的呢?通过以下脚本可以查看当前选中对象所有的属性名称。看到这里,有些细心的小伙伴们就会问了,前面的。脚本对我们感兴趣的值进行访问,并且使用。参数仿真中的属性所对应的值暂时告一段落。进一步,我们就可以计算得出。此时,我们可以通过如下代码获取。进一步,我们可以获取其属性。原创 2024-06-25 17:25:04 · 322 阅读 · 0 评论 -
波导尺寸与有效折射率之间的关系
我们知道,波导的折射率是波导材料本身的一种特性,这里我们以。从上面的表格中可以得出结论。波导尺寸越大,有效折射率也越大。来举例说明这个问题。原创 2024-06-25 16:44:31 · 491 阅读 · 0 评论 -
定向耦合器中心波长位置与耦合长度之间的关系
对于定向耦合器,耦合长度越长,中心波长值越小,反之,耦合长度越短,中心波长值越大。原创 2024-06-18 16:43:12 · 340 阅读 · 0 评论 -
使用 write() 函数将 S 参数扫描结果导出为 .txt 格式(完结)
功能较为简陋以至于图像展现时不够美观,因此,很多时候我们需要将仿真数据导出使用。脚本来实现,但是这个情况处理起来比较复杂,不推荐使用。这里也不做过多说明。因此,我们可以通过下面的代码对这两个参数进行提取和导出。格式的文件,然而这种格式的文件很难被其他软件调用,比如。进行仿真,那么在仿真完成后,我们可以得到关于当前结构的。这里我们来介绍一下其他文件格式的导出方式。这样我们就可以将所需要的数据导出为。可以操作的文件格式,可以使用。我们介绍了如何将数据导出为。格式的文件,后续可以通过。比如,我们这里创建了一个。原创 2024-06-18 10:08:15 · 376 阅读 · 0 评论 -
自定义函数命名规范
比如,内置函数有一个angle的函数,因此,对于我们自定义的函数名称,不能再以angle取名。比如,我们想要自定义一个名为vector3d的函数,那么我们的script文件名称就不能再以vector3d命名,即不能产生的文件。特别需要注意的是即便是有大小写区别,也是不行的,如下图所示,这种命名方式在运行时会产生错误。希望大家在自定义函数名称时可以注意到这些问题。原创 2024-06-13 10:12:14 · 237 阅读 · 0 评论 -
Mesh 尺寸对仿真结果的影响的示例
最终光场的行为就可以通过这些独立的格点进行拟合形成,因此,格点数越多,信息量越多,拟合也就越精确,理论上越精确这个概念是没有上限的,即格点的数量趋近于无穷。然而数值方法讲究的是精度,由于制造工艺的误差等等,实际中我们是不需要非常高的精度的,即使理论上能得到,实际加工的产品也是的达不到的,因此,这个问题就变成了,给定合适的精度获取最合适的格点数,那么格点的数量就有最大值了。选择合适的格点数量,或者说网格的最小尺寸在仿真中就显得尤为重要了。网格光场的截面分布会有更多的像素点,即跟多的信息。原创 2024-06-04 17:45:19 · 295 阅读 · 0 评论 -
Create Mode Waveguide Element (模式波导仿真的数据用于 INTERCONNECT 中)
选项,那么 start wavelength 就会被显示为可以更改的,但是这个"可以更改"是一个虚假的,因为此时即使我们更改了这个值,当我们重新勾选。模式,那么右侧图像就会记录两者叠加的场分布,记录后场分布就不再改变了,当我们切换选择模式的时候,仅左侧的场分布会发生变化。本文,我们介绍如何将如何创建一个可以让用户导入频率相关的性质(比如有效折射率,损耗,群速度,色散等等)到。的图像,我们会发现,此时已经没有了不光滑的部分。后我们会在上图中下方红色框的部分看到我们选中模式的场分布。是灰色的,保存不了呢?原创 2024-06-03 08:41:09 · 499 阅读 · 0 评论 -
Creating parameterized straight waveguide in INTERCONNECT 创建参数化的器件
其余三个属于高级用法,这里我们暂时不做介绍。对于一个直波导,我们最关心的参数是它的损耗,因此,我们在。创建好后的器件如下,因为我们已经有了一个名为。对于直波导,通常需要两个端口,一左一右,因此,在。中的直波导来进行仿真,这里我们简单介绍如何在。,因此,我们会在最终给的结果中看到波导的。标签页下我们创建两个端口,并将它们的。中创建属于自己的参数化的直波导器件。标签页下,有四个子标签页,其中。至此,我们得到了正确的仿真结果。的器件,所以会新产生一个名为。,由于我们设置的波导损耗为。可以看到,此时,我们得到的。原创 2024-05-28 10:03:36 · 369 阅读 · 0 评论 -
INTERCONNECT 中使用库中器件制作一个损耗为 3 dB /m 的直波导
首先,插入以下器件并连接。,因为,我们的波导长度为。原创 2024-05-27 16:08:54 · 199 阅读 · 0 评论 -
导入 FDTD 仿真的 S 参数到 INTERCONNECT 的器件中
对于 ONA 的设置,默认中心频率设置的是频率,我们也可以通过更改后面的单位,比如改为。关于如何在 Visualizer 中查看到上图所示图像属于基础操作,这里不再赘述。很多时候,仿真链路比较大时,我们可以将仿真的每个部分分隔开来,用。分析完成我们的文件后也是帮我们补齐了端口。来设置中心波长,如下图所示,我们将中心波长设置到了。中得到最终的仿真结果。按钮,打开我们事先通过 FDTD 获取到的。绘制出来的图像,可以看到,二者基本完全一致。值,根据验证,这个值是大概值,并不精确。不难看出,该器件的默认端口为。原创 2024-05-27 15:19:50 · 701 阅读 · 0 评论 -
Simulate Ring Resonator in INTERCONNECT
接着,我们需要对它的名称进行更改,此时我们看左侧。路径,这个目录的名称是默认的且不能够被更改的。如果想要更改,我们需要选中器件然后。下面对器件的名称进行更改。更改完成后我们可以看到,器件的名称已经发生了变化。模式的传输情况,首先我们需要对四个组件中的部分参数进行修改。上图中中间两个直波导是旋转后的,我们可以选中器件后使用快捷键。这是因为我们当前选中的是。沿用相同操作,我们可以构建出如下线路图。为了获取仿真的结果,我们还需要添加。器件,这里我们将它们的。,我们需要更改它们中。,我们需要更改它们的。原创 2024-05-27 10:23:40 · 628 阅读 · 0 评论 -
INTERCONNECT模块中的 Circuit Layout Editor
当然,用户也可以自己手动重新规划各个窗口的位置,但是此处,我们保持各窗口位置不变。可以打开在线文档,我们就可以详细了解器件对应的特性。中拖动想要器件,我们可以快速添加我们想要的器件。选取我们需要的工具窗口。通过在器件上右键点击。原创 2024-05-27 09:28:40 · 92 阅读 · 0 评论 -
Interconnect 模块的工作流程
这里给大家来介绍一下。原创 2024-05-27 09:14:02 · 755 阅读 · 0 评论 -
Add object from object library 从对象库中添加内置器件
但是这种操作方式不够智能。如果我们想要实现自动化,我们可以使用如下。中添加器件,通常我们的做法是手动添加。如下图所示,我们添加一个。那么我们如何获取我们想要载入器件的名称呢?,有些时候我们在使用中,可能需要从。,但是我们用脚本载入的时候名称是。上图中仅展示了部分器件的名称。原创 2024-05-25 14:29:44 · 243 阅读 · 0 评论 -
能获取精确仿真结果的最小网格尺寸
中,为了得到精确的结果,我们需要设置仿真时网格的尺寸,虽然尺寸越小精度越高,但是对于实际问题,我们需要平衡仿真速度,仿真内存占用量和仿真设备能力之间的关系。这里我们重点来说明一下,得到仿真正确结果时能够设置的最小网格尺寸问题。进行网格重写,然后设定我们所需的网格尺寸即可。最简单的设置方法就是为当前结构添加一个。我们设仿真时的入射波长范围为。原创 2024-05-22 13:45:28 · 502 阅读 · 0 评论 -
波导仿真包层设置
来求解波导的有效折射率,此时求解出的结果一定是错误的。这一点儿属于新手常见错误。工程文件中创建了一个直波导对象,此时,我们并没有设置包裹层,且我们创建了一个。在推荐阅读中,我们解释了仿真时为什么要添加包裹层。下面是仿真的一种常见错误。包层中,再次进行仿真,就可以得到正确的结果了。原创 2024-05-13 10:46:03 · 970 阅读 · 0 评论 -
Lumerical Script ------ 产生错误提示信息并中断执行
产生错误提示信息并中断执行操作的指令。这里我们提供一种使用。如果不满足要求,则提升一个输入错误,并中断程序的执行。这里,我们输入一个数据,我们要求输入的参数值小于。通过这种操作,我们可以在书写我们的。时加入一些即时的反馈,放置程序的。通过上述方法,我们就可以实现类似。原创 2024-05-13 09:35:37 · 376 阅读 · 0 评论 -
保留有效数字位
那么遇到需要保留有效位的情况该如何做呢?这里我们以保留六位有效数字为例。比如我们这里有两个很长的小数被放在。类型转换为字符串来实现小数位数的保留,最后再从字符串类型转换为。变量中,然后我们可以采用如下代码替代。这里我们给出两种方法来解决这个问题。原创 2024-05-11 11:12:09 · 222 阅读 · 0 评论 -
Self Define Functions 自定义函数返回多个返回值
已经有了介绍,但是实际使用的时候还是有一些需要注意的问题,这里特来记录一下。我们需要将它们组合成一个数组。关于数组类型数据我们在。只能返回一个值,如果此时我们想要同时返回。原创 2024-05-10 14:58:50 · 229 阅读 · 0 评论 -
Lumerical Script 数据类型
中,数据类型不是特别丰富。这里我们介绍它数据类型中的一种,数组类型。且同时,如果我们想要访问数组中的数据,我们需要通过索引值来访问,类似。这篇仅仅用作个人笔记,因为作者本人比较擅长。我们可以通过以下方式创建一个数组。函数对目标对象的值进行打印。序列解包的写法,即下面的写法是。脚本,但是又不太一样。原创 2024-05-10 14:09:00 · 464 阅读 · 0 评论