数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用

news2024/11/14 14:45:32

昨天帮助社区IC训练营学员远程协助解决一个Calibre DRC案例。通过这个DRC Violation向大家分享下Innovus和ICC2中如何批量约束cell的spacing rule。

数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案

下图所示为T12nm A55项目的Calibre DRC Violation M1.EN.9。通过查找T12nm的design manual,我们可以很清晰看到这个DRC Violation的本质是VIA到包边Metal的间距不够。

TSMC12nm A55 Calibre DRC Violation

但是通过Calibre RVE高亮后发现这个VIA1和Metal1都是标准单元内部的pin shape。所以换孔是行不通的。因此只能通过打破DRC Violation的触发条件来解决。

数字IC后端笔试面试真题串讲(Cut_EOL_Spacing DRC Violation自动化修复方案)

我们可以尝试改变并行走线长度L,间距D1和D1’。所以,我们可以把相邻的这两个cell间距拉大即可实现。

传统的做法是通过给DRC Violation Marker所在位置的cell添加cell padding来解决。

今天我们要分享的是通过设置placement spacing rule来约束工具做符合咱们预期的placement。这样做的好处是可以更精准针对某两类cell来设置space rule约束,对整体density或timing的影响相对来说更小。

Innovus中可以对任意cell进行cell edge type定义,并对不同的cell edge设置spacing约束。

在这里插入图片描述

specifyCellEdgeSpacing GROUP1 GROUP2 2

specifyCellEdgeType -cell A -top GROUP1 -range 0 0.2

specifyCellEdgeType -cell A -bottom GROUP2 -range 0.4 0.6

specifyCellEdgeType -cell B -top GROUP2 -range 0.4 0.6

specifyCellEdgeType -cell B -bottom GROUP1 -range 0 0.2

当我们给Cell A和Cell B设置如上约束后,工具在做refinePlace时就会遵守我们约束的spacing rule。当出现第二种图形时工具会检查出checkPlace的violation。

在这里插入图片描述

在这里插入图片描述

Innovus工具不仅支持对cell的bottom,top,也支持对left和right edge进行设置。当工具发现无论如何做refinePlace都无法修复这类placement violation就会报告Context placement violation。

在这里插入图片描述

本案例的Calibre DRC Violation,经过详细分析得知所有这类DRC都位于IND1和DF1这两款cell之间。所以,我们可以针对这两颗cell进行cell edge spacing的约束,只要这个它们之间的间距大于D1即可。

foreach cell [dbGet head.libCells.name -e] { specifyCellEdgeType -cell $cell -reset }

report_cell_edge_spacing

report_cell_edge_type

deleteCellEdgeSpacing

在这里插入图片描述
在这里插入图片描述

ICC2中设置placement space rule相关命令如下。命令中的{1 1}代表工具做placement时不能出现两个cell间距为1个site的场景。如果把{1 1}改成{0 1}则表示任何两个标准单元的间距不能为0(abut)和1个site。

remove_placement_spacing_rules -all

set_placement_spacing_label -name X -side both -lib_cells [get_lib_cells /]

set_placement_spacing_rule -labels {X X} {1 1}

而Innouvs中则可以通过设置如下的placeMode来实现这个效果。

setPlaceMode -place_detail_legalization_inst_gap 2

此外,我们还可以针对特定的cell来约束特殊的spacing rule约束。比如对设计中pin数量大于等于4的DF1寄存器进行spacing约束。

set cells [get_object_name [get_lib_cells -filter “number_of_pins >=4&& name=~DF1]

set_placement_spacing_label -name X -side both -lib_cells [get_lib_cells $cells]

set_placement_spacing_rule -label {X X} {0 1}

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

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

相关文章

LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143749468 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 影响 (…

一图胜千言,一张图深入读懂大模型应用是如何工作的

在科技飞速发展的今天,人工智能(AI)早已不再是遥不可及的科幻概念,而是融入了我们生活的方方面面。其中,大模型作为AI领域的重要分支,以其卓越的表现力和广泛的应用前景,吸引了无数人的目光。但…

Spring AI Alibaba - 快速开发生成式Java Al应用

大家好,我是袁庭新。 今天我们不谈ServerlessAI、AI可观测性、云消息队列演进与AI赋能以及AI原生应用架构等,这些都是近年最火热的技术方向。但是如果你想在未来成为一名合格且具备前瞻视野的软件开发工程师,这些新兴且热门的技术领域都是需…

简易入手《SOM神经网络》的本质与原理

原创文章,转载请说明来自《老饼讲解神经网络》:www.bbbdata.com 关于《老饼讲解神经网络》: 本网结构化讲解神经网络的知识,原理和代码。 重现matlab神经网络工具箱的算法,是学习神经网络的好助手。 目录 一、入门原理解说 01.…

大模型经典著作《大语言模型基础与前沿》

介绍 **《大语言模型基础与前沿》是由美国明尼苏达大学双城分校电子与计算机工程博士熊涛所著。**熊博士曾在多家中美知名高科技公司担任高级管理职位和首席科学家,在人工智能的多个领域,包括大语言模型、图神经网络等从事研发和管理工作多年。 本书深…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件,支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的,想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

定时任务进行简单监控、爬虫的自动化之旅

原文链接:「定时任务」进阶指南:监控、爬虫的自动化之旅

spring gateway 动态路由

##yml配置 spring:application:name: public-gateway # cloud: # gateway: # routes: # - id: mybatis-plus-test # 路由的唯一标识 # uri: http://192.168.3.188:9898 # 目标服务的地址 # predicates: # - Path/test/** # 匹配…

论文1—《基于卷积神经网络的手术机器人控制系统设计》文献阅读分析报告

论文报告:基于卷积神经网络的手术机器人控制系统设计 摘要 本研究针对传统手术机器人控制系统精准度不足的问题,提出了一种基于卷积神经网络的手术机器人控制系统设计。研究设计了控制系统的总体结构,并选用PCI插槽上直接内插CAN适配卡作为上…

OpenHarmony-1.启动流程

OpenHarmony启动流程 1.kernel的启动 流程图如下所示:   OpenHarmony(简称OH)的标准系统的底层系统是linux,所以调用如下代码: linux-5.10/init/main.c: noinline void __ref rest_init(void) {struct task_struct *tsk;int pid;rcu_sch…

Python Plotly 库使用教程

Python Plotly 库使用教程 引言 数据可视化是数据分析中至关重要的一部分,它能够帮助我们更直观地理解数据、发现潜在的模式和趋势。Python 提供了多种数据可视化库,其中 Plotly 是一个功能强大且灵活的库,支持交互式图表的创建。与静态图表…

校园交友系统的设计与实现(开源版+三端交付+搭建+售后)

系统基础架构 采用UniApp进行开发,UniApp是一个使用Vue.js开发所有前端应用的框架,它支持编译为H5、小程序、App等多个平台。 使用PHP作为后端开发语言,PHP是一种广泛使用的开源脚本语言,尤其适用于Web开发,并可高效…

SQL 外连接

1 外连接 外连接是一种用于结合两个或多个表的方式,返回至少一个表中的所有记录。 左外连接 LEFT JOIN,左表为驱动表,右表为从表。返回驱动表的所有记录以及从表中的匹配记录。如果从表没有匹配,则结果中从表的部分为NULL。 右…

死磕grass平台

Grass平台:重塑互联网价值与AI数据采集的革新之路 引言:互联网资源的新范式 在当今数字时代,大多数互联网用户面临着一个共同但鲜少被关注的现象:我们付费购买的带宽资源往往没有被充分利用。想象一下,当你订购了100 Mbps的网络服务,在浏览新闻或查看邮件时,实际可…

Spring boot + Vue2小项目基本模板

Spring boot Vue2小项目基本模板 基本介绍基本环境安装项目搭建最终效果展示 基本介绍 项目来源哔哩哔哩的青戈,跟着学习搭建自己的简单vue小项目;看别人的项目总觉得看不懂,需要慢慢打磨 这里目前只简单的搭建了菜单导航和表格页面&#x…

大数据面试题--kafka夺命连环问(后10问)

目录 16、kafka是如何做到高效读写? 17、Kafka集群中数据的存储是按照什么方式存储的? 18、kafka中是如何快速定位到一个offset的。 19、简述kafka中的数据清理策略。 20、消费者组和分区数之间的关系是怎样的? 21、kafka如何知道哪个消…

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能

(一)安装插件SystemVerilog - Language Support 安装一个vscode插件即可,插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能,但它只能提…

万字长文解读深度学习——Transformer

🌺历史文章列表🌺 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总万字长文解读…

Leecode热题100-35.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…

LabVIEW环境监测系统

随着环境问题的日益严重,环境参数的实时监测成为保障公共健康和生态平衡的重要手段。开发了一款基于LabVIEW开发的环境监测系统,能够对大气中的温度、湿度及二氧化硫浓度进行实时监测,并提供数据存储和超阈值报警功能。 系统组成 本系统由下…