luceda ipkiss教程 41:画跑道型微环

news2025/1/18 20:10:10

利用picazzo库中的方向耦合器绘制跑道型微环:

在这里插入图片描述

from si_fab import all as pdk
from ipkiss3 import all as i3
from picazzo3.wg.dircoup import StraightDirectionalCoupler

class RingResonator(i3.PCell):
    trace_template = i3.TraceTemplateProperty(
        default=pdk.SiWireWaveguideTemplate(),
        doc="Trace template of the bus waveguide, also used for the default loopback waveguide"
    )
    coupling_length = i3.PositiveNumberProperty(default=10, doc="The coupling length of the ring resonator")
    spacing = i3.PositiveNumberProperty(default=0.5, doc="The spacing between the bus and ring waveguides")


    class Layout(i3.LayoutView):
        def _generate_instances(self, insts):
            coupler = StraightDirectionalCoupler(
                trace_template1=self.trace_template,
                coupler_length=self.coupling_length
            )
            coupler.Layout(coupler_spacing=self.spacing)
            instances = {'coupler': coupler}
            specs = [
                i3.ConnectManhattan(
                    'coupler:out2',
                    'coupler:in2',
                    control_points=[
                        i3.V(i3.START + i3.TECH.WIREWG.BEND_RADIUS),
                        i3.H(i3.PREV + 2 * i3.TECH.WIREWG.BEND_RADIUS)
                    ],
                    min_straight=0
                )
            ]
            insts += i3.place_and_route(insts=instances, specs=specs)
            return insts

        def _generate_ports(self, ports):
            ports += i3.expose_ports(
                instances=self.instances,
                port_name_map={
                    'coupler:in1': 'in',
                    'coupler:out1': 'out'
                }
            )
            return ports

    class Netlist(i3.NetlistFromLayout):
        pass

    class CircuitModel(i3.CircuitModelView):
        def _generate_model(self):
            return i3.HierarchicalModel.from_netlistview(self.netlist_view)

if __name__ == "__main__":
    default_ring = RingResonator(
        coupling_length=10,
    )
    default_ring_lv = default_ring.Layout()
    default_ring_lv.visualize(annotate=True)

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

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

相关文章

[Geek Challenge 2023] klf_2详解

考点 SSTI、join拼接绕过 fuzz测试后发现过滤了很多关键字 我们先试试构造__class__ {% set podict(po1,p2)|join()%} //构造pop {% set alipsum|string|list|attr(po)(18)%} //构造_ {% set cl(a,a,dict(claa,ssa)|join,a,a)|join()%} //构造__class__ {% set …

『TypeScript』深入理解TypeScript基本类型及其应用

📣读完这篇文章里你能收获到 掌握TypeScript的基本及高级数据类型掌握TypeScript的类型系统 文章目录 一、基本类型1. 类型声明2. 基本数据类型2.1 数字(Number)2.2 字符串(String)2.3 布尔值(Boolean&…

YOLOv8改进 | 2023 | DiverseBranchBlock多元分支模块(有效涨点)

一、本文介绍 本文带来的改进机制是YOLOv8模型与多元分支模块(Diverse Branch Block)的结合,Diverse Branch Block (DBB) 是一种用于增强卷积神经网络性能的结构重新参数化技术。这种技术的核心在于结合多样化的分支,这些分支具有…

机器学习应用 | 使用 MATLAB 进行异常检测(上)

异常检测任务,指的是检测偏离期望行为的事件或模式,可以是简单地检测数值型数据中,是否存在远超出正常取值范围的离群值,也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。 在不同行业中,异常检测的典型…

Linux 文件写入报错E297: Write error in swap file

错误原因 Linux系统不能向文件写入内容,无论写入都无保存,并且提示下文信息 E297: Write error in swap file "abc.txt" [New File] Press ENTER or type command to continue 经过查找资料得知可能是磁盘满了。通过df -h命令查看磁盘情况…

互联网Java工程师面试题·RabbitMQ篇

目录 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息? 5、如何避免消息重复投递或重复消费? 6、消息基于什么传输? 7、消息如…

新农村建设集中污水处理需要哪些设备

新农村建设集中污水处理是一个关乎环境保护和农村发展的重要议题。在实施该项目时,需要一系列专业设备来确保污水处理的高效性和可持续性。 首先,在新农村建设集中污水处理中,最基本的设备是污水收集系统。这包括地下管网、检查井和泵站等设施…

C++新经典模板与泛型编程:SFINAE特性的信息萃取

用成员函数重载实现is_default_constructible 首先介绍一个C标准库提供的可变参类模板std::is_default_constructible。这个类模板的主要功能是判断一个类的对象是否能被默认构造(所谓默认构造,就是构造一个类对象时,不需要给该类的构造函数…

Linux 网络协议

1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线,连接起来,按照一定的规则,进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及,能够进行联网的设备将会是越来越多&#xff08…

12、组合模式(Composite Pattern,不常用)

组合模式(Composite Pattern),有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。 它在我们树型结构的问题中…

微信小程序动态加载图表[echart]

1.引入Echarts (1)将ec-canvas文件拷贝下来放到你自己的项目中: (2)在你需要使用Echarts的页面的json文件中引入Echarts "usingComponents": {"ec-canvas": "../utils/ec-canvas/ec-canva…

[⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记

前言 DPD 数字预失真技术,是一种用于抑制功率放大器非线性失真的方法。 它通过在信号输入功率放大器(PA)之前插入一个预失真模块,对输入信号进行适当的调制,以抵消功率放大器引起的非线性失真,使功率放大器…

【AIGC】prompt工程从入门到精通--图片生成专题

本文为系列教程【AIGC】prompt工程从入门到精通的子教程。 一、介绍 与文本提示相比,找到最佳的提示词来生成完美的图片并没有那么成熟。这可能是因为创建对象自身的挑战,这些对象基本上是主观的并且往往缺乏良好的准确性度量方法。 本指南涵盖了基本…

【libcurl库】OpenSSL 库、多线程、断点续传(二)

一、libcurl函数库常用字段解读 1、curl_global_init():初始化libcurl2、curl_easy_init():得到easy interface型指针,拿到句柄3、curl_easy_setopt(CURL *handle, CURLoption option, parameter):设置传输选项 第二个参数CURLop…

Linux——进程状态

我们都知道进程信息被放到了PCB(task_struct)中,可以理解为进程属性的集合。 PCB中包含了进程的ID,时间片,pc指针,所有的寄存器,进程状态、优先级、I/O状态信息等等...有兴趣的可以去看看源码&…

【Flink系列六】Flink里面的状态一致性

状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。一条数据不应该丢失,也不应该重复计算。再遇到有故障时可以恢复状态…

2024年度AI策略报告:AI浪潮扬帆起航,传媒应用百花齐放

今天分享的人工智能系列深度研究报告:《2024年度AI策略报告:AI浪潮扬帆起航,传媒应用百花齐放》。 (报告出品方:兴业证券) 报告共计:52页 1、行情回顾:板块处于较低区间&#xff0…

粒子库particles.vue3在项目中的使用

一、particles.vue3是什么 particles.vue3 是一个 Vue 3 的组件库,用于在 Vue 3 项目中创建和管理粒子效果。它基于 tsparticles 引擎,提供了一系列的 Vue 组件,使我们能够轻松地在应用程序中添加动态的粒子效果。   如果您正在开发一个 V…

【Python源码保护】02 - pyc

1. python编译过程 Python虽然是一门解释型语言,但Python程序执行时,也需要将源码进行编译生成字节码,然后由Python虚拟机进行执行,因此Python解释器实际是由两部分组成:编译器和虚拟机。 Python程序执行过程和Java类…

函数声明、调用的过程

【 一 】函数声明、调用的过程详述 1. 函数必须先定义后调用,没有定义函数是一定不能够调用的 2. 函数在定义阶段,只检测语法是否错误,不检测逻辑是否有问题 3. 逻辑上的错误只会在调用阶段检测 4. 函数一定是被调用之后才会执行函数内部的代…