luceda ipkiss教程 69:导出器件或者线路的三维模型

2024-05-11 00:44

本文主要是介绍luceda ipkiss教程 69:导出器件或者线路的三维模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ipkiss 3.12版加入write_obj函数,可以直接输出器件的三维模型。

如,输出自定义的mmi的三维模型:
在这里插入图片描述
代码如下:

from si_fab import all as pdk
from ipkiss3 import all as i3class MMI1x2(i3.PCell):"""MMI with 1 input and 2 outputs."""_name_prefix = "MMI1x2"trace_template = i3.TraceTemplateProperty(doc="Trace template of the access waveguide")width = i3.PositiveNumberProperty(default=4.0, doc="Width of the MMI section.")length = i3.PositiveNumberProperty(default=20.0, doc="Length of the MMI secion.")taper_width = i3.PositiveNumberProperty(default=1.0, doc="Width of the taper.")taper_length = i3.PositiveNumberProperty(default=5.0, doc="Length of the taper")waveguide_spacing = i3.PositiveNumberProperty(default=2.0, doc="Spacing between the waveguides.")def _default_trace_template(self):return pdk.SiWireWaveguideTemplate()class Layout(i3.LayoutView):def _generate_elements(self, elems):length = self.lengthwidth = self.widthtaper_length = self.taper_lengthtaper_width = self.taper_widthhalf_waveguide_spacing = 0.5 * self.waveguide_spacingcore_layer = self.trace_template.core_layercladding_layer = self.trace_template.cladding_layercore_width = self.trace_template.core_width# Si coreelems += i3.Rectangle(layer=core_layer,center=(0.5 * length, 0.0),box_size=(length, width),)elems += i3.Wedge(layer=core_layer,begin_coord=(-taper_length, 0.0),end_coord=(0.0, 0.0),begin_width=core_width,end_width=taper_width,)elems += i3.Wedge(layer=core_layer,begin_coord=(length, half_waveguide_spacing),end_coord=(length + taper_length, half_waveguide_spacing),begin_width=taper_width,end_width=core_width,)elems += i3.Wedge(layer=core_layer,begin_coord=(length, -half_waveguide_spacing),end_coord=(length + taper_length, -half_waveguide_spacing),begin_width=taper_width,end_width=core_width,)# Claddingelems += i3.Rectangle(layer=cladding_layer,center=(0.5 * length, 0.0),box_size=(length + 2 * taper_length, width + 2.0),)return elemsdef _generate_ports(self, ports):length = self.lengthtaper_length = self.taper_lengthtrace_template = self.trace_templatehalf_waveguide_spacing = 0.5 * self.waveguide_spacingports += i3.OpticalPort(name="in1",position=(-taper_length, 0.0),angle=180.0,trace_template=trace_template,)ports += i3.OpticalPort(name="out1",position=(length + taper_length, -half_waveguide_spacing),angle=0.0,trace_template=trace_template,)ports += i3.OpticalPort(name="out2",position=(length + taper_length, half_waveguide_spacing),angle=0.0,trace_template=trace_template,)return portsclass Netlist(i3.NetlistFromLayout):passif __name__ == '__main__':mmi_layout = MMI1x2().Layout()mmi_layout.visualize(annotate=True)mmi_geometry = i3.device_sim.SimulationGeometry(layout=mmi_layout,process_flow=i3.TECH.VFABRICATION.PROCESS_FLOW,)mmi_geometry.write_obj(filename="mmi.obj")

输出三维模型部分的代码:

mmi_geometry = i3.device_sim.SimulationGeometry(layout=mmi_layout,process_flow=i3.TECH.VFABRICATION.PROCESS_FLOW,)mmi_geometry.write_obj(filename="mmi.obj")

生成的obj文件可以用Mayo打开。

这篇关于luceda ipkiss教程 69:导出器件或者线路的三维模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978029

相关文章

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个