luceda ipkiss教程 49:以pcell的方式定义线路

在ipkiss中,通常以i3.Circuit来设计线路(见教程2),以i3.Pcell的框架也可以来设计线路:
以SplitterTree为例:

在这里插入图片描述
线路仿真结果:
在这里插入图片描述
所有代码如下:

from si_fab import all as pdk
import ipkiss3.all as i3class SplitterTree(i3.PCell):class Layout(i3.LayoutView):def _generate_instances(self, insts):insts += i3.place_and_route(insts={"splitter1": pdk.MMI1x2Optimized1550(),"splitter2": pdk.MMI1x2Optimized1550(),"splitter3": pdk.MMI1x2Optimized1550(),},specs=[i3.Place('splitter1', (0, 0)),i3.Place('splitter2', (100, -30)),i3.Place('splitter3', (100, 30)),])insts = i3.place_and_route(insts=insts,specs=[i3.ConnectBend("splitter1:out1", "splitter2:in1", bend_radius=10),i3.ConnectBend("splitter1:out2", "splitter3:in1", bend_radius=10),])return instsdef _generate_ports(self, ports):ports += i3.expose_ports(instances=self.instances,port_name_map={"splitter1:in1": "in1","splitter2:out1": "out1","splitter2:out2": "out2","splitter3:out1": "out3","splitter3:out2": "out4",})return portsclass Netlist(i3.NetlistFromLayout):passclass CircuitModel(i3.CircuitModelView):def _generate_model(self):return i3.HierarchicalModel.from_netlistview(self.netlist_view)if __name__ == '__main__':SplitterTree().Layout().visualize(annotate=True)import numpy as npfrom matplotlib import pyplot as pltwavelengths = np.linspace(1.5, 1.6, 2001)cm = SplitterTree().CircuitModel()S = cm.get_smatrix(wavelengths=wavelengths)plt.plot(wavelengths, i3.signal_power_dB(S["out1", "in1"]), label="in1 -> out1")plt.plot(wavelengths, i3.signal_power_dB(S["out2", "in1"]), label="in1 -> out2")plt.plot(wavelengths, i3.signal_power_dB(S["out3", "in1"]), label="in1 -> out3")plt.plot(wavelengths, i3.signal_power_dB(S["out4", "in1"]), label="in1 -> out4")plt.plot(wavelengths, i3.signal_power_dB(S["in1", "in1"]), label="in1 -> in1")plt.legend()plt.xlabel("Wavelengths [um]")plt.ylabel("Transmission")plt.show()

以pcell的方式定义线路需要分别定义:Layout、Netlist 以及CircuitModel

Layout给出线路的版图:

    class Layout(i3.LayoutView):def _generate_instances(self, insts):insts += i3.place_and_route(insts={"splitter1": pdk.MMI1x2Optimized1550(),"splitter2": pdk.MMI1x2Optimized1550(),"splitter3": pdk.MMI1x2Optimized1550(),},specs=[i3.Place('splitter1', (0, 0)),i3.Place('splitter2', (100, -30)),i3.Place('splitter3', (100, 30)),])insts = i3.place_and_route(insts=insts,specs=[i3.ConnectBend("splitter1:out1", "splitter2:in1", bend_radius=10),i3.ConnectBend("splitter1:out2", "splitter3:in1", bend_radius=10),])return instsdef _generate_ports(self, ports):ports += i3.expose_ports(instances=self.instances,port_name_map={"splitter1:in1": "in1","splitter2:out1": "out1","splitter2:out2": "out2","splitter3:out1": "out3","splitter3:out2": "out4",})return ports

Netlist 给出线路中的逻辑连接关系:
layout中定义了ports,Netlist可以直接从Layout继承

class Netlist(i3.NetlistFromLayout):pass

CircuitModel 给出线路中的逻辑连接关系:
线路中的每个器件都有了CircuitModel,所有整个线路的CircuitModel可以通过HierarchicalModel来定义

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

线路仿真:

	import numpy as npfrom matplotlib import pyplot as pltwavelengths = np.linspace(1.5, 1.6, 2001)cm = SplitterTree().CircuitModel()S = cm.get_smatrix(wavelengths=wavelengths)plt.plot(wavelengths, i3.signal_power_dB(S["out1", "in1"]), label="in1 -> out1")plt.plot(wavelengths, i3.signal_power_dB(S["out2", "in1"]), label="in1 -> out2")plt.plot(wavelengths, i3.signal_power_dB(S["out3", "in1"]), label="in1 -> out3")plt.plot(wavelengths, i3.signal_power_dB(S["out4", "in1"]), label="in1 -> out4")plt.plot(wavelengths, i3.signal_power_dB(S["in1", "in1"]), label="in1 -> in1")plt.legend()plt.xlabel("Wavelengths [um]")plt.ylabel("Transmission")plt.show()

线路仿真结果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] flex wrap 九宫格布局

<div class"box"><ul class"box-inner"><li>九宫格1</li><li>九宫格2</li><li>九宫格3</li><li>九宫格4</li><li>九宫格5</li><li>九宫格6</li><li>九宫格7&l…

Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二) 本篇文章主要讲下蓝牙设备的配对. 1: 蓝牙设备列表展示 下 面是蓝牙设备adapter的代码: package com.test.bluetooth;import android.bluetooth.BluetoothDevice; import android.content.Context; import android.view.LayoutInflater;…

Leetcode—459.重复的子字符串【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—459.重复的子字符串 算法思想 巧解的算法思想 实现代码 从第一个位置开始到s.size()之前&#xff0c;看s字符串是否是ss的子串 class Solution { public:bool repeatedSubstringPattern(string s) {return (s s).fin…

DDoS原生防护和Web应用防火墙组合使用方案

本文介绍了为网站类业务同时部署DDoS原生防护和Web应用防火墙的配置方法。该方案适用于为网站业务同时防御四层DDoS攻击和七层Web攻击、CC攻击的场景。 前提条件 已创建ECS实例并部署了业务相关的应用&#xff0c;ECS实例拥有公网IP地址且网站有域名。 说明 如果网站用于在中国…

python初试二

连接数据库 Django为多种数据库后台提供了统一的调用API。根据需求不同&#xff0c;Django可以选择不同的数据库后台。MySQL算是最常用的数据库。我们这里将Django和MySQL连接。 在Linux终端下启动mysql: $mysql -u root -p 在MySQL中创立Django项目的数据库&#xff1a; …

解决因找不到qt5core.dll文件而导致无法执行代码问题

Qt5core.dll是Qt5框架的核心模块&#xff0c;用于提供基本的Qt功能。如果在代码执行过程中找不到qt5core.dll&#xff0c;可能导致相关功能无法正常使用。以下是五种详细解决方法、qt5core.dll文件详细介绍以及丢失原因。 一、qt5core.dll文件详细介绍 文件名称&#xff1a;q…

科技铸就企业转型钢筋铁骨,群硕获评2023年度数字化影响力企业

12月15日&#xff0c;STIF2023第四届国际科创节暨DSC2023国际数字服务大会在北京顺利举行&#xff0c;本次大会以“数实融合 推动高质量发展”为主题&#xff0c;各大科技服务企业齐聚一堂&#xff0c;共同探讨2023科技发展新趋势。 大会上&#xff0c;群硕软件继2022年后再度…

C++相关闲碎记录(13)

1、排序算法 &#xff08;1&#xff09;对所有元素排序sort(), stable_sort() #include "algostuff.hpp"using namespace std;int main() {deque<int> coll;INSERT_ELEMENTS(coll, 1, 9);INSERT_ELEMENTS(coll, 1, 9);PRINT_ELEMENTS(coll, "on entry: …

智慧电力运维系统

智慧电力运维系统是一个集成了智能化运维管理工具的系统&#xff0c;旨在提高用户侧电力运行安全&#xff0c;降低运维成本。该系统通过安装在电力设备上的多种传感器和现场监测装置&#xff0c;远程在线监测、监视电力设备的运行状态及设备周围的环境状况&#xff08;如&#…

Jmeter接口自动化测试,看完就会了。。。

前面我们复习了jmeter 的非图形化界面运行我们的测试接口。 大家可以翻看往期jmeter的文章。 具体来说就是&#xff1a;jmeter -n -t ****.jmx -l ****.jtl -e -o **** (*号代表路径&#xff09; 生成了测试报告。 但是这个非图形化运行有个缺点&#xff0c;就是只能运…

C语言:指针与数组易错辨析

前言&#xff1a; 在学校学习指针和数组的联系时&#xff0c;对指针与数组的结合产生了很大的疑惑&#xff0c;后来不断查找资料&#xff0c;本人对指针与数组的综合有了一定的理解&#xff0c;现进行综合讨论辨析 数组指针&#xff1a; 数组指针&#xff0c;即为指向数组类…

系列六、DCL

一、DCL 1.1、概述 DCL的英文全称是&#xff1a;Data Control Language&#xff0c;中文意思为&#xff1a; 数据控制语言&#xff0c;是用来管理数据库的用户以及控制用户的权限的。 1.2、管理用户 1.2.1、查询用户 select * from mysql.user; 说明&#xff1a; 其中 Host代…