LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy

news2024/12/24 2:11:09

案例分享:在给定的Shape内填充dummy
在这里插入图片描述
所有代码如下:

from si_fab import all as pdk
from ipkiss3 import all as i3
from shapely.geometry import Polygon, MultiPolygon
import numpy as np
import matplotlib.pyplot as plt

class CellFilledWithContacts(i3.PCell):
    contact_size = i3.PositiveNumberProperty(default=1.5, doc="width and height of the contact box")
    contact_pitch = i3.PositiveNumberProperty(default=2, doc="contact pitch")

    class Layout(i3.LayoutView):
        def _generate_elements(self, elems):
            elems += i3.Boundary(
                layer=i3.TECH.PPLAYER.SI,
                shape=[(0, 0), (7.7, -23.7),
                       (32.6, -23.7), (12.4, -38.4),
                       (20.1, -62.1), (0, -47.4),
                       (-20.1, -62.1), (-12.4, -38.4),
                       (-32.6, -23.7), (-7.7, -23.7)]
            )
            s = elems.size_info()
            polygons = [Polygon(el.shape) for el in elems]
            region = MultiPolygon(polygons).buffer(-2.0)

            plt.show()
            no_of_contacts_row = int((s.east - s.west - self.contact_pitch) / self.contact_pitch)
            no_of_contacts_col = int((s.north - s.south - self.contact_pitch) / self.contact_pitch)
            print('number of contacts in each row of along the whole cell =', no_of_contacts_row)
            print('number of contacts in each column of along the whole cell =', no_of_contacts_col)

            contact_regions = []

            # set the x and y coordinates for each contact via a for-loop
            for cnt, i in enumerate(np.linspace(s.west, s.east, no_of_contacts_row)):
                for cn, j in enumerate(np.linspace(s.north, s.south, no_of_contacts_col)):
                    contact = i3.Rectangle(layer=i3.TECH.PPLAYER.SI,
                                           center=(i, j),
                                           box_size=(self.contact_size, self.contact_size)
                                           )

                    contact_region = Polygon(contact.shape)
                    contact_regions.append(contact_region)

                    # only add the contacts when they are not in the cell
                    if contact_region.intersects(region):
                        elems += contact
            return elems


if __name__ == '__main__':
    lay = CellFilledWithContacts().Layout()
    lay.write_gdsii("demo.gds")

dummy的大小可以调节:

    contact_size = i3.PositiveNumberProperty(default=1.5, doc="width and height of the contact box")
    contact_pitch = i3.PositiveNumberProperty(default=2, doc="contact pitch")

可以通过:

shape=[(0, 0), (7.7, -23.7),
   (32.6, -23.7), (12.4, -38.4),
   (20.1, -62.1), (0, -47.4),
   (-20.1, -62.1), (-12.4, -38.4),
   (-32.6, -23.7), (-7.7, -23.7)]

来调节shape

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

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

相关文章

【AI换脸】Rope一键整合包,实现视频多人实时换脸

随着人工智能技术的发展,人们越来越注重人机交互的趣味性和实用性。AI换脸技术正是在这种背景下兴起的一种创新应用。Rope换脸工具以其易用性和卓越的效果,成为了众多用户和专业人士青睐的对象。 Rope是什么? Rope是一款开源的deepfake软件&…

Redis 的安装与部署(图文)

前言 Redis 暂不支持Windows 系统,官网上只能下载Linux 环境的安装包。但是启用WSL2 就可以在Windows 上运行Linux 二进制文件。[要使此方法工作,需要运行Windows 10 2004版及更高版本或Windows 11]。本文在CentOS Linux 系统上安装最新版Redis&#xf…

健身房预约小程序开发,高效管理健身场馆!

随着社会生活的提高,健身成为了人们在日常生活中的必要选择,而健身房也随之成为了大众经常光顾的地方。健身房预约管理系统是一个便捷预约健身的平台,可以让大众灵活预约,提高健身的便捷性和服务体验。同时,健身场馆也…

JAVA 并发八股

线程与进程区别 进程是正在运行的程序的实例,进程中包含了线程,每个线程执行不同的任务 不同进程使用不同的内存空间,在当前进程下所有线程可以共享内存空间 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低&#xff0…

vueJS中wowjs、animate、swiper的使用

原文关注公众号 本文演示利用swiper纵向全屏滚动 npm 安装 wow.js,安装 wow.js后animate.css会自动安装; npm install wowjs --save-dev npm 安装 animate.css animate.css文档:http://5kzx.cn/doc.html npm install animate.css --save …

Python和MATLAB及C++和Fortran胶体粒子数学材料学显微镜学微观流变学及光学计算

🎯要点 二维成像拥挤胶体粒子检测算法粒子的局部结构和动力学分析椭圆粒子成链动态过程定量分析算法小颗粒的光散射和吸收活跃物质模拟群体行为提取粒子轨迹粘弹性,计算剪切模量计算悬浮液球形粒子多体流体动力学概率规划全息图跟踪和表征粒子位置、大小…

创建docker虚拟镜像,创建启动服务脚本

进入系统命令服务目录 编辑服务 [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.com Afternetwork-online.target firewalld.service Wantsnetwork-online.target [Service] Typenotify ExecStart/usr/bin/dockerd ExecReload/bin/…

Gradle 插件获取所有依赖项,类似 androidDependencies?

诉求 在打包过程中我想知道某个模块的信息,比如: 模块androidx.work:work-runtime是否被依赖?模块androidx.work:work-runtime的版本号是多少? 我们利用 Android studio 已有的任务androidDependencies,双击执行很容…

PyQt5写好的py文件生成可执行的exe文件【Nuitka】

文章目录 1.Nuitka引入2.Nuitka与Pyinstaller对比Nuitka安装 3.Nuitka指令4.参数以及作用5.多文件格式封装完成后可删除文件6.运行问题问题1问题2 1.Nuitka引入 看过我上一篇PyQt5写好的py文件生成可执行的exe文件【Pyinstaller】的应该了解到用PyQt5写的界面程序可以通过Pyins…

安卓冻屏bug案例作业分享-千里马学员wms+input实战作业

背景: 近期有学员反馈在aosp14高版本上有了一个新窗口TaskBar,这个但是有需求就是对这个TaskBar进行隐藏,所以有一个需要对这个TaskBar进行进行隐藏需求 隐藏TaskBar需求做了之后发现有如下bug: 问题复现步骤: 因…

新款示波器RTE1104罗德与施瓦茨RS RTE1102原装二手

罗德与施瓦茨R&S RTE1104触摸屏RTE1102新款示波器 R&S-RTE1000 示波器系列: RTE1022标配:200MHz带宽,2通道,5GSa/s采样率,200M存储深度,16个数字通道(选配) RTE1032标配&a…

HCIP--以太网交换安全(二)端口安全

端口安全 一、端口安全概述 1.1、端口安全概述:端口安全是一种网络设备防护措施,通过将接口学习的MAC地址设为安全地址防止非法用户通信。 1.2、端口安全原理: 类型 定义 特点 安全动态MAC地址 使能端口而未是能Stichy MAC功能是转换的…

解决PyCharm 2023 Python Packages列表为空

原因是因为没有设置镜像源 展开 > 之后,这里 点击齿轮 添加一个阿里云的源 最后还需要点击刷新 可以选择下面的任意一个国内镜像源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/…

asp.net core Partial 分部视图、视图组件(core mvc 才支持)、视图、Razor组件 、razor pages

分部视图 》》》传参 》》两个东西换个名称,PartialView()>渲染视图>不带Layout 部分视图与普通视图没太大区别,它可以将重复使用的HTML内容结合起来,可以单独使用。 一般命名是在名称前面加下划线,放在/Views/Shared 目…

【cocos creator】输入框滑动条联动小组建

滑动条滑动输入框内容会改变 输入框输入,滑动条位置改变 const { ccclass, property } cc._decorator;ccclass() export default class SliderEnter extends cc.Component {property({ type: cc.Float, displayName: "最大值", tooltip: "" }…

基于Web的停车场管理系统(论文+源码)_kaic

摘要 我国经济的发展愈发迅速,车辆也随之增加的难以想象,因此车位的治理也越来越繁杂,为了方便停车位相关信息的管理,设计开发一个合理的停车位管理系统尤为重要。因而,具有信息方便读取和操作简便的停车位管理系统的设…

Java基础-知识点

文章目录 数据类型包装类型缓存池 String概述不可变的含义不可变的好处String、StringBuffer、StringBuilderString.intern() 运算参数传递float与double隐式类型转换switch 继承访问权限抽象类与接口super重写与重载**1. 重写(Override)****2. 重载(Overload)** Object类的通用…

H3C GRE over IPsec VPN 实验

H3C GRE over IPsec VPN 实验 实验拓扑 ​​ 实验需求 某企业北京总部、上海分支、武汉分支分别通过 R1,R3,R4 接入互联网,配置默认路由连通公网按照图示配置 IP 地址,R1,R3,R4 分别配置 Loopback0 口匹配感兴趣流,Loopback1 口模拟业务网段北京总部拥有固定公网地址…

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/ 查看最新…

找不到xinput1_3.dll怎么解决,快来试试这个几个方法

在计算机系统运行过程中,当我们遭遇“找不到xinput1_3.dll”这一错误提示时,实际上正面临一个软件兼容性、系统组件缺失以及游戏或应用程序无法正常启动的关键问题。深入探究这一现象,我们会发现它可能引发一系列连带问题,例如某些…