当前位置: 首页 > news >正文

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

昨天帮助社区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}

相关文章:

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

昨天帮助社区IC训练营学员远程协助解决一个Calibre DRC案例。通过这个DRC Violation向大家分享下Innovus和ICC2中如何批量约束cell的spacing rule。 数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案 下图所示为T12nm A55项目的Ca…...

每日小练:Day2

1.乒乓球筐 题目链接:乒乓球筐__牛客网 题目描述: 这道题主要考察B盒是不是A盒的子集,我们可以通过哈希表来做 单哈希表 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public stat…...

ubuntu 安装kafka-eagle

上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群 /root/efak 目录 cd /root/efak tar -zxvf kafka-eagle-bin-2.0.8.tar.gz cd /root/efak/kafka-eagle-bin-2.0.8 mkdir /root/efakmodule tar -zxvf efak-web-2.0.8-bin.tar.gz -C /root/efakmodule/ mv /root/efakmodule/efak…...

深入理解指针

在初步了解了指针的用法之后,我们可以想一想,既然一个变量有地址,而且在上一篇文章中我们知道了一个数组也有地址,那么函数、字符串这些东西有没有地址呢?如果有,那这些地址有什么用?我们又要怎…...

自动驾驶合集(更新中)

文章目录 车辆模型控制路径规划 车辆模型 车辆模型基础合集 控制 控制合集 路径规划 规划合集...

Chapter 14 scoped样式以及data函数

欢迎大家订阅【Vue2Vue3】入门到实践 专栏,开启你的 Vue 学习之旅! 文章目录 1 scoped样式1.1 全局样式1.2 局部样式1.3 工作原理2 data函数 1 scoped样式 1.1 全局样式 全局样式是指作用于整个应用程序的样式,不论在哪个组件中定义&#x…...

Golang | Leetcode Golang题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; func reverseWords(s string) string {length : len(s)ret : []byte{}for i : 0; i < length; {start : ifor i < length && s[i] ! {i}for p : start; p < i; p {ret append(ret, s[start i - 1 - p])}for i < le…...

区块链技术在电子政务中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 区块链技术在电子政务中的应用 引言 区块链技术概述 定义与原理 发…...

Simulink中Matlab function使用全局变量

目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言 最近发现了之前仿真中的一个问题&#xff0c;记录一下备忘。 Matlab function中有时候需要用到全局变量&#xf…...

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…...

海思Hi3516DV300上播放G711U音频文件

在海思Hi3516DV300芯片运行Linux系统下&#xff0c;可通过如下函数来实现G711U音频文件的播放&#xff1a; int ADecPlayVoiceFile(const char* filename) {FILE* pfd;AUDIO_STREAM_S stStream;HI_S32 s32Ret,length,decLength,allLength 0,aChn 0;HI_U8 buf[SAMPLE_AUDIO_P…...

Linux源码阅读笔记-V4L2框架基础介绍

V4L2视频设备驱动基础 V4L2 是专门为 Linux 设备设计的整套视频框架&#xff08;其主要核心在 Linux 内核&#xff0c;相当于 Linux 操作系统上层的视频源捕获驱动框架&#xff09;。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2 驱动框架能够支持多种类型设备&…...

列表(list)

一、前言 本次博客主要讲解 list 容器的基本操作、常用接口做一个系统的整理&#xff0c;结合具体案例熟悉自定义内部排序方法的使用。如有任何错误&#xff0c;欢迎在评论区指出&#xff0c;我会积极改正。 二、什么是list list是C的一个序列容器&#xff0c;插入和删除元素…...

使用Python抓取数据的实战指南

引言 在当今信息爆炸的时代&#xff0c;数据已成为一种宝贵的资源。无论是学术研究、市场分析&#xff0c;还是个人兴趣&#xff0c;数据的获取都是至关重要的一步。Python&#xff0c;凭借其强大的库和简洁的语法&#xff0c;成为了数据抓取&#xff08;也称为网络爬虫或网页…...

GIC寄存器介绍

往期内容 本专栏往期内容&#xff0c;interrtupr子系统&#xff1a; 深入解析Linux内核中断管理&#xff1a;从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…...

c++实现B树(下)

书接上回小吉讲的是B树的搭建和新增方法的实现&#xff08;blog传送门&#x1f6aa;&#xff1a;B树实现上&#xff09;&#xff08;如果有小可爱对B树还不是很了解的话&#xff0c;可以先看完上一篇blog&#xff0c;再来看小吉的这篇blog&#xff09;。那这一篇主要讲的是B树中…...

外星人入侵

学习于Python编程从入门到实践&#xff08;Eric Matthes 著&#xff09; 整体目录&#xff1a;外星人入侵文件夹是打包后的不必在意 图片和音效都是网上下载的 音效下载网站&#xff1a;Free 游戏爆击中 Sound Effects Download - Pixabay 运行效果&#xff1a;可以上下左右移…...

【数据仓库】hbase的安装与简单操作

HBase 是一个分布式的、面向列的开源数据库&#xff0c;它支持大规模数据存储&#xff0c;并且是 Hadoop 生态系统的一部分。HBase 能够在廉价的硬件上运行&#xff0c;并提供对大量数据的随机、实时读写访问。下面是关于如何在 Linux 系统上安装 HBase 以及进行一些基本操作的…...

为什么RNN(循环神经网络)存在梯度消失和梯度爆炸?

1️⃣ 原理分析 RNN前向传播的公式为&#xff1a; x t x_t xt​是t时刻的输入 s t s_t st​是t时刻的记忆&#xff0c; s t f ( U ⋅ x t W ⋅ s t − 1 ) s_tf(U\cdot x_tW\cdot s_{t-1}) st​f(U⋅xt​W⋅st−1​)&#xff0c;f表示激活函数&#xff0c; s t − 1 s_{t-1} …...

【数据库】数据库迁移的注意事项有哪些?

数据库迁移是一个复杂且关键的过程&#xff0c;需要谨慎处理以确保数据的完整性和应用程序的正常运行。以下是一些数据库迁移时需要注意的事项&#xff1a; 1. 充分的前期准备 1.1 评估迁移需求 明确目标&#xff1a;确定迁移的具体目标&#xff0c;例如添加新字段、修改现…...

Docker 部署实战:前端应用容器化指南

Docker 部署实战&#xff1a;前端应用容器化指南 什么是 Docker&#xff1f; Docker 是一个开源平台&#xff0c;用于开发、部署和运行应用程序。它使用容器化技术&#xff0c;将应用程序及其依赖打包在一个独立的容器中。 Docker 的优势 一致性&#xff1a;开发环境与生产环境…...

Claude Code、Cursor、Codex到底是什么?法律人AI开发工具全解析

一、AI IDE是什么&#xff1f;从代码编辑器到智能助理AI IDE AI 集成开发环境&#xff08;IDE&#xff09;。传统IDE如VS Code、IntelliJ&#xff0c;开发者需要手动编写每一行代码、查阅文档、编写测试用例。AI IDE则让开发者用自然语言下达指令&#xff0c;AI理解整个项目结…...

通讯的数学理论

1948年&#xff0c;香农在题为《通讯的数学理论》指出&#xff0c;信息是用来消除随机不定性的东西&#xff0c;创造宇宙万物的最基本单位是信息。...

百度文库纯净打印助手:3步实现无广告文档导出

百度文库纯净打印助手&#xff1a;3步实现无广告文档导出 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 百度文库纯净打印助手是一个开源JavaScript脚本&#xff0c;专为解决百度文库文档阅读和保…...

3分钟上手BetterNCM:网易云音乐插件管理的终极解决方案

3分钟上手BetterNCM&#xff1a;网易云音乐插件管理的终极解决方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐PC版功能单一而烦恼吗&#xff1f;想要解锁更多个性…...

非标系统控制柜制造:从特殊工况到定制控制的完整解析

一、什么是非标系统控制柜制造&#xff1f;非标系统控制柜制造&#xff0c;是指针对常规PLC控制柜、变频器控制柜、低压配电柜、防爆控制柜之外的特殊控制需求&#xff0c;根据设备工艺、现场环境、控制逻辑、通讯协议、安全要求和安装空间&#xff0c;对柜体结构、电气元件、控…...

【测试】一文读懂软件测试:新手真正需要的测试认知

&#x1f4cc; 相关专栏 【Linux专栏】【C语言专栏】【测试专栏】 &#x1f4cc; 相关文章推荐 【Linux】网络基础2---Socket编程预备【Linux 】网络基础1 哈喽~欢迎来到千余的小天地 ❤ 我会分享很多干货/日常&#xff0c;点个关注不迷路哦~ &#x1f44d; 点赞 ⭐ 收藏 &…...

AArch64虚拟化调试:HDFGWTR2_EL2寄存器详解与应用

1. AArch64系统寄存器与虚拟化调试概述在Armv8/v9架构中&#xff0c;系统寄存器是处理器核心的控制中枢&#xff0c;负责管理处理器的各种关键功能和行为。AArch64架构通过异常级别&#xff08;EL0-EL3&#xff09;实现了严格的权限分级机制&#xff0c;其中EL2作为Hypervisor层…...

数据结构——带懒标记的线段树

一、什么是线段树&#xff1f;线段树是一种二叉树数据结构&#xff0c;用于高效地处理区间查询和区间更新操作。核心思想&#xff1a;将数组分成若干个区间&#xff08;线段&#xff09;&#xff0c;每个节点代表一个区间&#xff0c;通过合并子节点的信息来得到父节点的信息。…...

FICO创凭证标准错误:在折旧范围 01 中的业务与帐面净值规则冲突

凭证过账总金额等于资产剩余总价值创凭证出现如下错误&#xff1a;一、首先确认是否是业务配置问题排查业务问题操作如下&#xff1a;T-CODE:SPRO --->财务会计--->资产会计核算--->组织结构--->复制参考折旧表选折对应折旧表如果不一致设置为一致即可解决问题&…...