luceda ipkiss教程 48:求线路中波导的总长度

news2024/12/22 18:41:45

当线路中有多条波导时,可以一次输出所有波导的总长度:
如:

在这里插入图片描述
在这里插入图片描述
代码如下:

from si_fab import all as pdk
from ipkiss3 import all as i3

class MZI_Lattice(i3.Circuit):
    mmi = i3.ChildCellProperty()
    mmi_spacing = i3.PositiveNumberProperty(default=210.0)
    bend_radius = i3.PositiveNumberProperty(default=50.0)

    def _default_mmi(self):
        return pdk.SiNDirectionalCouplerSPower(power_fraction=0.5, target_wavelength=1.55)

    def _default_insts(self):
        insts = {
            "mmi_1": self.mmi,
            "mmi_2": self.mmi,
            "mmi_3": self.mmi,
            "mmi_4": self.mmi,
            "mmi_5": self.mmi,
        }
        return insts

    def _default_specs(self):
        specs = [
            i3.Place("mmi_1:out2", (0, 0)),
            i3.PlaceRelative("mmi_2:in2", "mmi_1:out2", (self.mmi_spacing, 0)),
            i3.PlaceRelative("mmi_3:in2", "mmi_2:out2", (self.mmi_spacing, 0)),
            i3.PlaceRelative("mmi_4:in2", "mmi_3:out2", (self.mmi_spacing, 0)),
            i3.PlaceRelative("mmi_5:in2", "mmi_4:out2", (self.mmi_spacing, 0)),
            i3.ConnectManhattan("mmi_1:out2", "mmi_2:in2",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START + 750)], ),
            i3.ConnectManhattan("mmi_1:out1", "mmi_2:in1",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START - 130)], ),
            i3.ConnectManhattan("mmi_2:out2", "mmi_3:in2",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START + 740)], ),
            i3.ConnectManhattan("mmi_2:out1", "mmi_3:in1",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START - 130)], ),
            i3.ConnectManhattan("mmi_3:out2", "mmi_4:in2",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START + 120)], ),
            i3.ConnectManhattan("mmi_3:out1", "mmi_4:in1",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START - 720)], ),
            i3.ConnectManhattan("mmi_4:out2", "mmi_5:in2",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START + 120)], ),
            i3.ConnectManhattan("mmi_4:out1", "mmi_5:in1",
                                bend_radius=self.bend_radius,
                                control_points=[i3.H(i3.START - 710)], ),
        ]
        return specs

    def _default_exposed_ports(self):
        exposed_ports = {
            "mmi_1:in1": "in1",
            "mmi_1:in2": "in2",
            "mmi_5:out1": "out1",
            "mmi_5:out2": "out2",
        }
        return exposed_ports


if __name__ == '__main__':
    MZI_Lattice().Layout().visualize()

    total_length = 0
    for layout in MZI_Lattice().Layout().layout:
        ref = layout.reference
        if hasattr(ref, 'trace_length'):
            total_length += ref.trace_length()
    print("the total length is : {}".format(total_length))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 对象的初始化和清理:构造函数和析构函数

目录 构造函数和析构函数 构造函数 析构函数 构造函数的分类及调用 括号法 显示法 隐式转换法 拷贝构造函数的调用时机 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 构造函数调用规则 初始化列表 类对象作…

JAVA:深入了解Java中的Synchronized关键字

1、简述 在Java中,多线程编程是一项常见的任务,然而,它也伴随着一系列潜在的问题,比如竞态条件(Race Condition)和数据不一致性。为了解决这些问题,Java提供了一种同步机制,即synch…

项目一:IIC读写EEPROM AT24C02

回头想了想在工作中调过的EEPROM还挺多的,有M24M02 、M28010 、AT24C02等,今天讲一下AT24C02吧 一、AT24C02简介 1.1 特点 文档已经上传了,需要的同学可以自行下载哈,晚点我会把下载链接附上来。 我大概照着文档翻译了一下&am…

总线一:I2C简介(介绍看这一篇就够啦)

本节主要介绍以下内容: I2C协议简介 STM32的I2C特性及架构 I2C初始化结构体详解 一、I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强&#xff…

2000-2021年全国各省环境规制水平数据

2000-2021年全国各省环境规制水平数据 1、时间:2000-2021年 2、范围:30省市 3、指标:工业污染治理完成投资、工业增加值、环境规制强度 4、计算说明:环境规制工业污染治理完成投资/工业增加值 5、来源:国家统计局…

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址:https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型(RALM)已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合,RALM可以减少事实错误和幻觉,同时注入最新知识。然而&…

Linux - 进程间通信(中)- 管道的应用场景

前言 在上篇博客当中,对Linux 当中的进程通信,做了详细阐述,主要是针对父子进程的通信来阐述的同时,也进行了模拟实现。 对于管道也有了初步了解,但是这仅仅是 进程间通信的一部分,Linux 当中关于进程间通…

散点图,盒须图,折线图混放在一个echarts

散点图,何须图,折线图混放在一个echarts option {tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},legend: {data:[盒须图1,盒须图2,折线图,散点图]},xAxis: [{type: category,data: [周一,周二,周三,周四,周五,周六…

智能优化算法应用:基于萤火虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于萤火虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于萤火虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.萤火虫算法4.实验参数设定5.算法结果6.参考文…

官宣 | HelpLook已入驻企业微信应用市场

HelpLook正式入驻企业微信第三方应用市场。 HelpLook支持自定义域名与AI站内搜索,能够帮助企业微信用户搭建所见即所得的企业知识库、产品帮助中心、用户手册、企业博客。 | 怎么找到HelpLook并开始使用 在企业微信的第三方应用就可直接搜索HelpLook,添…

mysql数据库损坏后重装,数据库备份

重装 先卸载 sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 然后重新安装MySQL: sudo apt-get install mysql-server mysql-client 首先要先使用无密码登录数据库一定要使用 sudo mysql -uroo…

新手上路:盘点「性能测试」必须掌握的技术点

前段时间,有一些小伙伴提出希望我们推送点性能测试的技术干货。所以,小编今天通过上网查资料,结合项目实操过程中的一些问题,总结了一些关于性能测试的内容,希望是大家想要了解的内容哈。 1、性能测试的目的 首先&am…

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述? 1、当用户登录的时候,将用户的信息通过JWT进行加密和签名,并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后,访问其他资源的时候,程序从localStorage中获…

linux(4):linux基础命令第三弹

在linux基础命令第二弹中http://t.csdnimg.cn/JPNYY我们讲了有关路径,创建目录和文件、文件夹,以及如何查看文件内容的问题,第三弹我们将学习有关文件操作和查找以及过滤关键字、展示文件字节,行数的命令,还有一个很重…

【程序员的自我修养04】目标文件生成可执行文件过程

绪论 大家好,欢迎来到【程序员的自我修养】专栏。正如其专栏名,本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度,我会尽自己最大的努力,争…

.Net中的集合

所有的集合都是继承自IEnumerable。集合总体可以分为以下几类:关联/非关联型集合,顺序/随机访问集合,顺序/无序集合,泛型/非泛型集合,线程集合。 各集合类底层接口关系图 泛型与非泛型集合类的分析 泛型集合是类型安…

自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

1、自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常, 在设计了测试用例并通过评审之后,由测 试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。简言之,自动化测试…

【操作系统导论】比例份额调度

本文介绍一种 比例份额(proportional-share) 调度程序,也称为 公平份额(fair-share)。 彩票调度 简介 彩票调度 的基本思想: 每隔一段时间,都会举行一次彩票抽奖,以确定接下来应该…

【上海大学数字逻辑实验报告】六、时序电路

一、 实验目的 掌握同步二进制计数器和移位寄存器的原理。学会用分立元件构成2位同步二进制加计数器。学会在Quartus II上设计单向移位寄存器。学会在Quartus II上设计环形计数器。 二、 实验原理 同步计数器是指计数器中的各触发器的时钟脉冲输入端连接在一起,接…

做题总结 707. 设计链表

做题总结 707. 设计链表 leetcode中单链表节点的默认定义我的尝试正确运行的代码(java) leetcode中单链表节点的默认定义 class ListNode {int val;ListNode next;//无参public ListNode() {}//有参:1public ListNode(int val) {this.val val;}//有参:…