自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(888)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 Lumerical 教程目录,说明及个人感悟(完结)

Lumerical---教程说明及个人感悟

2023-02-15 12:13:21 8034

原创 Lumerical ------ Edge coupler design

更改完成 Script 中的内容后,重新进行官网给出的操作,运行后可以得到如下图像,这里的 group_span_2 实际表示的是 taper 的长度表示当 taper 的长度大约为 1500 um 时,我们能够得到最大的透射率。本文,我们将使用官方提供的 Edge coupler 设计教程,但是中间会带有作者本人的设计的感悟。中的显示如上图所示,这样我们进行上述操作步骤就可以获取到正确的结果了。光纤模斑的时候一切都是正常的,但是当我们后面启用。查看两个模式的匹配度,最终获取到的匹配度为。

2025-04-02 16:57:29 118

原创 Lumerical ------ 多模干涉仪的设计 Multi-mode interferometer(MMI)

与 Splitter 器件一样,MMI 器件也是一种常见的分光器件,可以根据用户的需求将光束分成不同的比例。本文,我们将介绍如何仿真 MMI 器件。这里我们使用的是 1x2 MMI,其本质上是由四个部分组成的,中间的矩形多模式干涉区域以及左右两侧的三个 taper 模式转换区域。之前的教程中我们也提及了,为了获取稳定的模式场分布,通常,我们需要进行模式收敛性扫描。这里以官网给出的案例为例。如何提取 S 参数我们先暂时不做介绍,后续有时间了我们再做介绍。

2025-04-02 15:12:52 21

原创 光芯片中常用单模波导的尺寸

这里来简单介绍一下常用单模 Si 与 SiN 波导中的尺寸。首先是 Si 波导,目前比较常见的尺寸是。而 SiN 波导,目前比较常见的尺寸是。

2025-04-01 16:35:04 28

原创 Python 图形的绘制轮廓线

它的主要参数有三个,X,Y 为二维图像的坐标,Z 对于每个 X,Y 坐标位置上的值。这里需要注意的是 ,我们将 levels 设置为 10,这意味着我们会将整个图像区域划分为十个区域,因此我们会得到九条等高线。这里唯一需要注意的一点是,如果我们在绘制完等高线后再使用 plt.colorbar(),那么添加的 colorbar 就是针对等高线的,这里我们是针对二维图像给出的 colorbar。今天遇到一个问题,对于一幅二维图像,我们该如何在它上面绘制出类似等高线一样的轮廓线,这里特来记录一下。

2025-03-29 11:55:09 413

原创 Python 使用 Pyinstaller 打包文件(看后不会,作者直播倒立)

有时候,我们自己的 data 文件可能是原创的,涉密的,我们也不希望用户获取到,此时,我们可以通过如下方式将数据集成在应用程序中,这里我们不介绍传统的方法,我们直接通过修改 spec 文件实现这一功能。理论上来说,我们此时不需要将图片数据导入放在这个目录,直接运行就可以,但是,事实上,通常,我们如果不将图片数据放到这个目录下,我们运行程序后仍旧无法得到得到想要的结果。有时候,我们只想要用户看到一个应用程序,其他的程序我们不想展示,此时可以使用如下方式将代码和数据打包为一个可以执行的应用程序。

2025-03-18 16:22:39 783 2

原创 IPKISS i3.VMirror() 函数用法

上面代码给出的是 i3.VMirror() 函数的一种使用方式,我们也可以直接使用 Shape 对象本身带有的 VMirror() 函数用法来实现相同的操作。运行上述代码后可获得与之前图像相同的图像。

2025-03-05 14:38:06 43

原创 二分法查找元素

二分法是一种常用的搜索元素的手段,本文我们将对这种方法进行介绍。

2025-02-28 15:39:08 42

原创 版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点

此处,我们对给定点的坐标进行一下限制,因为是只添加一个点,因此,给定点的 x 或者 y 坐标其中的一个至少需要等于初始点 1 或者初始点 2 对应的坐标。否则我们将需要添加至少两个点才能将整个图形勾勒出来。

2025-02-28 15:19:41 257

原创 版图自动化连接算法开发 00003 ------ 添加两个中间点实现 Manhattan 方式连接两个给定的坐标点

插入两个点,在没有限制的情况下,两个中间点的横坐标只能在区间 (p1.x, p2.x) 之间,利用这一特点我们可以使用如下代码实现需求。之前,我们实现了添加单个中间点的 Manhattan 连接方式,这里,我们将添加两个中间点实现 Manhattan 连接。运行后,我们会随机得到以下两幅图像中的一幅。必读文章 ------

2025-02-28 13:36:16 259

原创 版图自动化连接算法开发 00002 ------ 添加一个中间点实现 Manhattan 方式连接两个给定的坐标点

之前,我们实现了两个坐标点之间的直接连接,属于最简单的布线方式,但是对于光芯片或者电芯片的版图连线,斜线连接的方式是不被提倡的。通常我们通过直角转弯的方式进行连线,这里我们展示如何通过添加一个中间点实现这种连线方式。这里,我们实现了一种随机的可能性,我们可以添加的中间点有两种情况,分别对应如下两幅图展示的结果,运行代码后将随机得到如下两幅图中的一幅。必读文章 ------

2025-02-28 11:35:41 369

原创 版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点

由于人工智能的加速普及,每次手动绘制版图都会觉得特别繁琐,作者本人在想可否搞一个自动化连接器件端口的算法,后期可以根据一些设定的限制进行避障。对于版图布局工程师来说就方便多了。甚至是否可以训练一个属于自己的 AI 来做这个事情,在此,作者本人新开一个坑,记录个人关于这个课题的所有探索。欢迎大家一起讨论。绘图显示代码直接连接两个坐标点运行上述代码后获取到的图像如下图所示:如果大家觉得有用,就点个赞让更多的人看到吧~

2025-02-28 11:26:50 275

原创 Cross-correlation 加速算法公式推导

次才能计算出一个结果,非常耗费时间。这里我们使用 FFT 优化算法降低时间复杂度。本文将给出 FFT 优化算法的计算公式的详细推导过程。由于使用点对点的计算方式过于消耗计算机的算力,尤其是当信号采样点数超过 1000 时,计算机需要计算。此时,(4)式与(1)式形式一致,即,我们可以通过傅里叶变换的方式实现互相关系数的计算。:两个信号的相对位移。

2025-02-20 11:30:01 46

原创 Python 库自制 Cross-correlation 算法(当采样点需要进行位移进行匹配)

我们假设 x 信号有 n 个采样点, y 信号有 m 个采样点。保持 x 信号不变,移动 y 信号,我们使用负号表示 y 信号向左侧移动,使用正号表示 y 信号向右侧移动。并且当 y 信号移动时,我们需要保证至少有一个离散信号点与 x 信号重叠,否则无法计算互相关系数,因此,y 信号的滞后项 k 值取值范围为 [-(n-1)m, m-1]。最后通过上述代码即可计算出互相关系数。:两个信号的相对位移。

2025-02-20 10:33:05 165

原创 Python 库自制 Cross-correlation 算法(当采样点已经1 对 1 匹配)

sum((a - x_mean) * (b - y_mean) for a, b in zip(x, y)): 计算互相关系数公式 (2)中的分子。Cross correlation 的定义式最早是应用于信号的,因为信号通常是随着时间变化的。x_sq_diff 和 y_sq_diff:分别用于计算每个信号各个位置点处的值与平均值的差值的平方和。math.sqrt(x_sq_diff * y_sq_diff): 计算互相关计算公式(2)的分母。x: cross_correlation 函数接受的第一个信号。

2025-02-19 17:15:35 65

原创 Scipy 计算两个数组中各个坐标点之间的距离

一文中,我们计算了两个数组中各个坐标点之间的间距,但是计算耗费的时间较长,这里我们介绍一个 scipy 库中的优化函数算法,可以极大程度地缩减运算时间。使用上述代码,我们将计算时间从 5.5 秒缩减到了 0.5 秒以内。计算速度提升 11 倍。

2025-02-06 14:49:11 52

原创 Numpy 计算两个数组中各个坐标点之间的间距

虽然我们使用此种方式使用极简单的代码完成了数组中两两点之间间距的计算。最终,我们耗时 5.5 秒完成了计算,显然,这种计算方式对于数据量较大的数组不太有好,后面我们将介绍更为简单的方法。今天,遇到了一个问题,有两个数组,其中分别存放着许多坐标点,如何计算两两坐标点之间的欧几里得距离。关于 np.newaxis 的用法可以参考文章。然后我们可以使用如下代码完成这一操作。

2025-02-06 14:41:46 165

原创 Python np.newaxis 用法

此外,上述操作,我们成功将原始三行两列的二维数据转换成了拥有三层深度,每一层上都拥有一行两列数据的三维数组。参数时,我们可以使用 : 符号替代剩余两个坐标轴上的数据个数,相对更为简便。函数时我们无可避免地需要指定剩余两个坐标轴的数据个数,而当我们使用。相当于对一维数组扩充了一个新的坐标轴,与。相当于对一维数组扩充了一个新的坐标轴,与。可以看到,结论与一维的情况类似,进行坐标轴占位一致。进行坐标轴占位一致。

2025-02-06 14:18:39 198

原创 Python OrderedDict 实现 Least Recently used(LRU)缓存

LRU 缓存是一种缓存替换策略,当缓存空间不足时,会移除最久未使用的数据以腾出空间存放新的数据。本文将介绍 OrderedDict 实现 Least Recently used(LRU)缓存的方法。会被放在 OrderedDict 最后的位置,提示我们当前缓存中已经不存在该元素。会导致位于开始位置的元素。语句输出结果时,键值对。

2025-01-23 15:43:43 842

原创 Python collections模块中的 OrderedDict

我们都知道,Python 中的 Dict 字典对象是无序的,但是无序的字典在有些时候会给我们的数据操作增加困难,此时,我们可以使用 OrderedDict,该字典类型的特点是它会按照插入顺序保留键值对的顺序。删除元素重新插入字典保留顺序可以看到,此时 ‘a’:1 键值对的位置到了第三个。对于 Python 3.7+ 的版本,普通 dict 也会保留键值对插入的顺序。但是 OrderedDict 有一些其他的功能是普通 dict 不具备的。将某个键移动到字典的开头比较字典时会考虑顺序删除并返回

2025-01-23 15:30:12 466

原创 Python collections 模块中的 deque

总的来说,deque 队列相当于 list 的扩展,加入了一些可以从左侧对元素进行操作的方法,方便我们实现更复杂的功能。与传统的 list 对象一样,通过 append() 方法可以在 deque 队列右侧添加元素。将 Python 内置的 list 对象通过 deque() 函数转换为 deque 对象。和 list 对象一样,也是从左向右获取第一个等于给定值的元素对应的索引值。可以指定队列的最大长度,当元素超出时,会自动从队列另一端丢弃多余的元素。输入参数是正数时可以实现元素循环右移。

2025-01-23 14:00:51 1028

原创 Numpy 三种获取一维数组中元素数量的方法

本文简单介绍一下三种快速获取一维数组中元素数量的方法。

2025-01-14 14:13:58 299

原创 np.gradient() 获取单个,一维,二维坐标点的梯度值

显然,对于单个点,可以理解为二维的情况,相较于一维,相当于既要沿着 x 方向做一次梯度计算,也要沿着 y 方向做一次梯度计算。这里,我们创建数组时,还添加了一个额外的点 (0, 0),这是因为,对于单个点,通常我们将其与原点的连线看作一个矢量,该店对应的梯度就是这个矢量的斜率。由此,我们可以判断出,使用 np.gradient() 作用于二维数组时,其结果优先输出沿着 x 方向的梯度,然后再输出沿着 y 方向的梯度。我们也可以不指定方向,获取所有方向的结果后再提取 x 方向或者 y 方向的结果。

2025-01-14 14:03:12 222

原创 A star search algorithm

通过该算法我们可以搜寻到实际生活中,地图上或者游戏中存在障碍物时从初始点到达终点的最短路径。该算法是最好的且最受欢迎的寻路算法之一。之所以说它是最好的路径,是因为相比于传统的寻路算法,它仿佛拥有大脑,它可以非常聪明地选择路径。A star 算法的核心是通过 f 值来选择节点,f 值等于两个参数 g 和 h 的和。在我们仅仅被允许朝向上、下、左、右四个方向移动的时候。h 通常被考虑是一个启发式,它是一个聪明的猜测。比如我们来考虑一个如下图所示网格状的地图。有两种精确计算 h 参数的方法。

2024-12-31 15:46:20 78

原创 TLP measurement

其本质上是一种测试和研究集成线路技术和线路在时域瞬态事件表现的技术。这里我们将说明什么是。

2024-12-19 14:00:45 80

原创 为什么要使用 Optical tranciver 替代 RF tranciver?

随着摩尔定律逐渐失效,当电子线路无法继续变得更细时,电路传输的损耗就无法继续下降,那么意味着损耗问题暂时无法解决,未来的解决方式无非两条,电子线路做的更细或者实现超导,改变外界传输的条件,或者开发新材料。一文中我们介绍的内容,光的传播速度比电的传播速度更快,虽然比电能的传播速度略快一些,但是数据交换的信息传输速度不仅和光或者电本身的传输速度相关,更和它们上面所能够携带的信息载量有关。),相对于 RF,光波的频率更高,意味着单位时间内能够传递的信号数量更多,即单位时间内能够传递更多的信息。

2024-12-19 13:42:12 169

原创 光的速度比电的速度更快

在网上看到一个很有意思的说法,电的速度比光的速度更快,因为,导线内部充斥着自由电子,当导线两端加上电压时,导线内部的电子发生定向移动,然后和小球一样,最后一个运动传递到远端的第一个电子处,这样,虽然电子的移动速度不如光速快,但是电流的整体表现出来的速度比光速更快。单个电子运动并不能产生电流,只有大量的电子一起做定向移动才能产生电流,而当电场被施加在导线上时,此时大量电子一起朝着一个方向移动,这个共同作用的速度近似等于光速,这和引言中提及的说法有些类似,但是这个速度仍旧理论上比光速略小。

2024-12-19 13:25:56 296

原创 什么是 ESD?

我们知道,绝缘体指的是不导电的物体,但是如果承受过高的电压,任何绝缘体都会导电。比如当接触高电压时,塑料也会失去绝缘性能。指的是两个物体之间发生的静电放电过程,该现象通常发生在两个物体之间建立接触或者两个物体之间的材料的介电击穿电压被超过。线路,如果出现了这种情况,势必会对线路造成不可逆转的损伤,因此,测试在集成电路中是非常有必要的。本文,我们记录一下什么是。,中文翻译为静电放电。

2024-12-19 10:32:06 118

原创 Python 行内 for 循环 (list comprehension)

可以看到,此时只有一个值,因为键不变,每次循环相当更改相同键对应的值,实际中没有很大的意义。循环会比较难理解,但是同时可以减少代码的行数。可以看到,此时我们也得到了结果,不同键对应的值均相等。我们可以采用下面的代码获取这个列表。比如,我们想要生成几个变量名称,分别叫做。,但是这种行为也可以被应用在字典中。比如,我们想要创建一个列表,其存放有。循环的写法,这种写法相对于传统的。这里只需要注意一点,此时的行内。的嵌套循环,外层循环变量为。稍作拓展,如果我们想要生成。当然,我们也可以进行二重。

2024-12-05 17:58:03 465

原创 Gitee markdown 使用方法(持续更新)

与众多代码托管网站一样,Gitee 也是用 Markdown 的文件编辑方式,历经过数次改动,本人用的也是极其不适应,因此,这里打算新开一篇,及时记录 Gitee Markdown 文件的使用方法。首先,我们需要将图片上传至 Gitee 的一个目录下,接着我们需要打开图片文件,选择原始数据,然后使用这个页面下的 url 进行填写,否则,可能会出现图片无法加载的情况。事实上,图片名称比较鸡肋,可有可无,即使我们输入了,图片加载时也不会显示,更多的可能是提醒我们自己用。:下面括号中的内容为提示信息,无需输入。

2024-11-25 16:37:54 1172 2

原创 光芯片工艺流程最底层的材料是什么?

也就是我们常说的硅片。由于资料属于保密文件,所以这里的参数进行了特殊处理。我们已经了解过,纯光芯片有两种常见的工艺,一种是。因此,我们说光芯片的底层材料通常不是。但是这并不意味着芯片加工工艺的最底层材料是。从图上可以看出,最下层的材料是。材料,这一点儿读者需要注意。这里我们来看两种常见的情况。可以看到,上述最底层材料为。

2024-11-25 11:45:57 224

原创 Tower strip_heater_metal 截面

首先,我们使用如下代码绘制对应的示例结构。定义器件时,通常我们需要指定其。可以理解为我们绘制一个条带状的。运行代码后,我们会在。

2024-11-25 10:30:06 159

原创 Python 中的 | 符号

符号也是注释内容的一部分,它表示的是。有些时候我们会遇到下面的写法,此处的。换成二进制表达后,再按位进行。表示的是注释内容,这个在。一文中我们已经进行了说明。符号还有另外一种用法。

2024-11-22 17:58:15 277

原创 光芯片设计上的 Dummpy fill 指的是什么?

的中文翻译为虚拟填充,实际可以理解为使用人为添加的没有实际意义的图层对版图上器件没有占用的部分进行填充。这样做的原因是为了流片厂流片时更加容易。并无实际意义,通常,绘制版图如果使用对应厂商提供的。然而光芯片的器件之间都是存在间隔的。无法完全填充整个版图,这时就需要进行。因此,在光芯片版图绘制中,我们需要将器件绘制在。对于纯光芯片的制作工艺通常有两种。在绘制版图时会被自动添加。

2024-11-11 14:10:00 258

原创 Jupyter lab 打开时默认使用 Notebook 而不是浏览器

系统会弹出一个设定默认程序打开窗口提示我们选择默认打开的应用程序,通常我们这里直接选择电脑上的浏览器即可,比如。,我们需要在第一超链接上点击鼠标左键,极为不方便。后来本人按照网上的建议尝试更改设置,依然无果,即使重新安装了。,后续将这个默认程序更改为浏览器之后,再次运行代码顺利打开。打开,这样每当我运行上述代码后,自动弹出如下窗口。今天遇到了一个特别有意思的事情,这里我们以。但是,当我们第一次运行上述代码打开。然而本人今天手贱,直接选择使用。下尝试更改默认打开程序,发现。的默认打开程序被更改为了。

2024-11-01 16:58:27 776

原创 Two Photon Absorption 双光子吸收

在中有一个效应叫做TPATPA,即双光子吸收,双光子吸收指的是一个原子从基态吸收两个光子从而达到激发态的过程,这两个被吸收的光子可以是一致的,也可以是不一致的(不同频率),双光子吸收本质上是一种非线性效应,其发生的概率正比于单位面积内的光子数量。

2024-10-30 15:22:26 193

原创 Ring resonator 环形谐振器

αt。

2024-10-30 14:44:19 650

原创 GDSFactory 内置层及其索引值查看

中的内置层,但是并未能找到相应的文档说明,最终经过测试得到了结果,这里特来记录一下。个索引值处没有东西进行打印,因此,我们可以得出结论,为对应的索引值来获取。当然,我们也可以直接使用。个内置层,且每个内置层的索引值如上述结果所示。今天遇到一个问题,我想要查看。使用如下代码可以获取。

2024-10-16 17:16:21 151

原创 GDSFactory 使用自定义数量端点输出 Box 对象到 .gds 文件中

中进行显示的时候,最终都会如下图所示用两个点来表示。不会对自定义的点进行优化,这是如何我们将其输出到。对象,如果使用 nm 作为单位的时候我们仍旧希望。的选项来实现,对应在上述代码中为被注释掉的那一行。对象创建的优化算法,无论用户使用何种方式构建。这一奇怪的现象后期可能会被开发者优化,敬候佳音。对象,最终都会由四个端点进行描述,当导出到。可以看到,此时我们成功绘制出了由多个点描述的。作为单位时,即使我们使用自定义的点来绘制。对象的描述会被优化为传统的两个点进行表示。可以自动优化描述的点,可以使用。

2024-10-16 15:05:23 170

原创 GDSFactory dbbox() and bbox() 用法

于是对这两个函数进行了探索,发现了它们之间的微小差异,这里特来记录一下。函数的区别了,对于用户,通常我们的选择都是使用。首先,我们可以采用如下代码生成一个。获取结果时,结果以我们较为熟悉的。作为单位进行输出,相反,使用。今天遇到一个问题,本人发现。对象的边界点时可以使用。从结果上可以看出,当使用。函数获取结果时,结果以。

2024-10-16 10:35:55 397

numpy100.zip

用于100个numpy问题25-100相关数据集合,本数据集合仅粉丝可以下载,并且仅 应用于numpy的教学教学目的,请不要过度传播

2020-10-30

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除