数字IC后端项目常见问题之streamOut layermap和innovus drc violation

news2025/4/2 16:26:26

Q1:我需要将Innovus设计GDS导出到Virtuoso,但发现写出GDS的过程会报如下所示的警告。这里写出GDS使用的是Virtuoso (DFII) streamOut mapping文件!

Clock Gen模块Routing DRC,Timing分析及解决

streamOut tease.gds2 -mapFile cds2gds.map -libName DesignLib -structureName tp -stripes 1 -outputMacros -units 100 -mode ALL

Parse map file…

WARN: (IMPOGDS-391): Line 1: Illegal object Type drawing specified with layer NSWARN: (IMPOGDS-391): Line 2: Illegal object Type RES1 specified with layer NS

WARN: (IMPOGDS-391): Line 3: Illegal object Type FILTRGR1 specified with layer NSWARN: (IMPOGDS-391): Line 6: Illegal object Type drawing specified with layer DT

**WARN: (IMPOGDS-391): Line 7: Illegal object Type drawing specified with layer PI

这里的问题在于Virtuoso DFII这个layer map文件格式和Innovus需要的layer map格式不同!

cds2gds map文件内容如下:

------------------- cds2gds.map ---------------------
M1 drawing 15 0
M1 HOLE 15 3
M1 TRANS 15 18
M1 label 15 20
M1 res 15 22
M1 PR 15 26
M1 pin 15 32
M1 obs 15 34
M1 CHEXCL 15 35
M1 fill 15 36
M1 PLANE 15 45
M1 net 15 94
M1 vdd 15 0
M1 gnd 15 0

而Innovus需要的layer map格式如下所示:

--------------------------- streamOut.map -----------------------------
M1 NET 15 94
M1 SPNET 15 0
M1 PIN 15 32
M1 LEFPIN 15 32
M1 FILL 15 36
M1 FILLOPC 15 0
M1 VIA 15 0
M1 VIAFILL 15 0
M1 VIAFILLOPC 15 0
M1 LEFOBS 15 34
NAME M1/NET 15 20
NAME M1/SPNET 15 20
NAME M1/PIN 15 20

数字IC后端设计实现培训教程(整理版)
在这里插入图片描述

如果我们一开始连innovus这个layer map文件格式都没有,我们可以先用streamOut,不带mapFile选项,让工具写出一个默认通用的layer map文件,这个文件默认会输出在当前工作目录下,文件名为streamOut.map。

所以很容易看出这两个文件的差异之处。
小编已经把这两个文件的映射关系整理出来,具体如下所示。

vdd/gnd 0 (maps to metal SPNET)
pin 32 (maps to metal PIN)
obs 34 (maps to metal LEFOBS)
fill 36 (maps to metal FILL)
net 94 (maps to metal NET)
label 20 (maps to NAME/* in gdsStreamOut.map)

比如这里的label其实就是对应innovus layer map中的text。

一般来说foundary都会提供PR工具使用的layer map,包括ICC,ICC2,Innovus的layer map。但如果foundary确实不提供的,我们也可以根据Virtuoso DFII这个layer map文件来进行修改。

而且这个layer map还可以添加一些特殊的layer,比如TSMC 12nm M2/M3 P48 Layer,我们想要在GDS中看到PR阶段添加的P48 Layer,就必须在streamOut layer map中添加对应的映射mapping关系!

在这里插入图片描述

Q2: 在实际后端项目中,我们经常会遇到如下图所示的Macro或IP出pin位置的DRC Violation。

在这里插入图片描述

上图中的粉红色是M2的OBS,这个是在Macro lef中定义的。而且我们可以发现这些M2 OBS除了出pin位置预留出来,还有白色的一段间距,即出pin的M2 Metal和M2 OBS还有一个间距。

工具默认走线会走成上图右侧这种样式。出pin对应的走线工具要么直接用M2拉出来,要么就是在M2 pin上打VI2,再过渡到M3再拉出去。这里我们可以看到第一个Pin A走线后,工具会报它的走线M2和M2 OBS之间有Spacing的DRC Violation。但这种其实是假的DRC Violation。

一旦这种数量多起来,nanoroute engine就会花很大effort来优化这类假错,而忽略了那些真正需要修复的DRC Violation。

因此,遇到这种情况,我们需要更改这个Macro或IP的lef文件——将整个Macro都盖住M2 OBS,而且设置上SPACING 0。

这样处理后工具就不会报这类DRC Violation,也就不影响其他正常DRC的优化了。

  1. 在LEF文件中增加 “LAYER M2 SPACING 0”

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

  1. 在innovus 中使用如下命令来添加

add_cell_obs -cell -rect {x1 y1 x2 y2} -spacing 0

在这里插入图片描述

Q3: Route后Innovus中看到如下图所示的ViaInPin DRC Violation。请问这类DRC Violation应该如何修复?

在这里插入图片描述

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

看到这个layout,我们马上就知道这是一个Double Pattern工艺。图中的红色是M2,红色带绿色边框的是M2的另外一张Mask(传说中的pre-color)。

而且看起来就像咱们社区T12nm的工艺!M1-M3是DPT Layer,M2有M2_Mask1和M2_Mask2。这类DRC Violation是报VIA2不在标准单元出pin范围内。大家还记得之前小编之前分享的Innovus,ICC和ICC2三个工具控制标准单元出pin走线的教程吗?这个也是一种解决方案。

在这里插入图片描述

如果使用上述routing选项后还是有很多这类ViaInPin DRC Violation,大概率是相关net有ndr约束。我们可以按照下面的流程来排查和解决。

在这里插入图片描述
如何用工具自动修复数字IC后端设计实现绕线后的Physical DRC

TSMC12nm工艺数字IC后端实现难点都有哪些?

1)对于FinFet工艺,我们需要确认下工艺技术库tech lef/tech file中没有对低层M1-M3 DPT Layer设置MINCUT rule或一些特殊NDR宽度的约束

2)如果tehc lef/tech file中没有上述的MINCUT和特殊NDR的定义,我们需要检查相关net是否是用户自定义的NDR约束

3)获取设计中所有NDR Rule

innovus 32> dbGet head.rules.name NDR_2W1S

4)获取所有有NDR约束的net

set ndr_2w1s_net [dbGet [dbGet top.nets.rule.name NDR_2W1S -p2 ].name]

5)创建一个新的NDR Rule,定义Double Pattern Layer的宽度是2W,对应的Via数量为1个

add_ndr -width_multiplier {metal2:metal9 2} \ -min_cut {via1:via2 1 via3:via8 2} \ -name NDR_new_2W1S

6)对上述抓取到的net添加新的NDR Rule约束

foreach n1 $ndr_2w1s_net { setAttribute -net $n1 -non_default_rule NDR_new_2W1S }

7)删除以上所有有DRC Violation的Via

8)设置nanoroute换孔选项

setNanoRouteMode –droutePostRouteSwapVia none

9)重新走线,带上fix_drc选项

ecoRoute -fix_drc重新ecoRoute后的走线结果如下图所示,此时Via2完全在标准单元出pin M2 pin shape范围内。

在这里插入图片描述

Q4: 下图所示为咱们社区复杂时钟clock gen项目的PT时序报告。

在这里插入图片描述

1)当前这条timing path是setup还是hold的报告?

2)请根据这条timing path的报告指出在PR实现阶段存在哪些问题?

3)这样的timing问题是否可以直接用dmsa flow来修复?为什么?

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

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

相关文章

短剧系统开发动漫短剧系统源码开发上线小程序app教程

一、市场规模与用户增长:突破677亿,Z世代成主力 整体扩张 2025年短剧市场预计同比增长15%,规模达677.9亿元,用户规模6.62亿(占网民59.7%)。动漫短剧作为细分领域,增速显著受益于二次元文化渗透&…

太阳能高杆路灯:照亮未来的新光

在全球能源转型进程加速以及可持续发展理念日益深入人心的背景下,太阳能高杆路灯作为融合新能源技术、智能控制技术与多功能集成特性的创新产品,正逐步革新传统路灯的格局。其不仅有效解决了传统路灯对电网供电的依赖问题,更为城市及乡村的照…

《C++Linux编程进阶:从0实现muduo 》-第8讲.C++面试如何高效获取线程ID

章节重点 在C面试时,经常被问到如果高效获取线程ID,但不少同学都不知道如何回答。 重点是通过__thread关键字。 重点内容 视频讲解:《CLinux编程进阶:从0实现muduo C网络框架系列》-第8讲. C面试如何高效获取线程ID 测试获取线…

【Tauri2】011——菜单menu(2)

前言 前面简单地创建了菜单,接下来就来试试菜单中的action Rust中菜单项注册action AppHandle in tauri - Rusthttps://docs.rs/tauri/2.4.0/tauri/struct.AppHandle.html#method.on_menu_event这就需要用到App或者AppHandle中的方法on_menu_event #[must_use] …

架构设计基础系列:面向对象设计的原则

引言 面向对象设计(Object-Oriented Design,OOD)是软件开发中的重要概念,其核心在于通过对象、类、继承、封装和多态等机制,实现对现实世界问题的抽象和建模。OOD不仅有助于提高代码的可重用性、可维护性和可扩展性&a…

UE5学习笔记 FPS游戏制作35 使用.csv配置文件

文章目录 导入.csv要求首先创建一个结构体导入配置文件读取配置 导入 .csv要求 第一行必须包含标题 第一列的内容必须不能重复,因为第一列会被当成行的名字,在数据处理中发挥类似于字典的key的作用 当前的配置文件内容如下 首先创建一个结构体 结构…

嵌入式单片机ADC数模转换的基本方法

第一:模数转换的概述 1:模数转换的概念 一般在电路中,信号分为两种,一种是模拟信号,一种是数字信号,绝大多数传感器采集的都是模拟信号,如温度、湿度、烟雾浓度、亮度.......,但是对于计算机需要处理的数字信号,那就需要利用电路把模拟信号转换为数字信号,这个转换的…

01-Docker 安装

1、安装环境介绍 安装环境:Linux CentOS 7 本安装教程参考Docker官方文档,地址如下:https://docs.docker.com/engine/install/centos/ 2、卸载旧版docker 首先如果系统中已经存在旧的Docker,则先卸载: yum remove do…

Redis 的缓存雪崩、击穿、穿透及其解决办法

文章目录 Redis 的缓存雪崩、击穿、穿透及其解决办法缓存雪崩解决办法 缓存击穿解决方案 缓存穿透解决方案 Redis 的缓存雪崩、击穿、穿透及其解决办法 本篇文章回顾 Redis 当中缓存崩溃、击穿、穿透现象以及相应的解决办法,主要的参考资料是:https://w…

性能比拼: Pingora vs Nginx (My NEW Favorite Proxy)

本内容是对知名性能评测博主 Anton Putra Pingora vs Nginx Performance Benchmark: My NEW Favorite Proxy! 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 介绍 在本视频中,我们将对比 Nginx 和 Pingora(一个用于构建网络服务的 Rust 框架…

Ranger一分钟

简介 Ranger Admin:Web UIPolicy Admin Tool:定义和管理策略的模块Ranger Plugins:HDFS、Hive、HBase、Kafka、Storm、YARNRanger UserSync: LDAP、Active DirectoryRanger KMS:管理和保护数据加密的密钥 加密密钥管理…

STM32单片机入门学习——第5节: [3-1]GPIO输出

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.01 STM32开发板学习——第5节: [3-1]GPIO输出 前言开发板说明引用解答和…

pytorch中dataloader自定义数据集

前言 在深度学习中我们需要使用自己的数据集做训练,因此需要将自定义的数据和标签加载到pytorch里面的dataloader里,也就是自实现一个dataloader。 数据集处理 以花卉识别项目为例,我们分别做出图片的训练集和测试集,训练集的标…

SQL Server:触发器

在 SQL Server Management Studio (SSMS) 中查看数据库触发器的方法如下: 方法一:通过对象资源管理器 连接到 SQL Server 打开 SSMS,连接到目标数据库所在的服务器。 定位到数据库 在左侧的 对象资源管理器 中,展开目标数据库&a…

标题:利用 Rork 打造定制旅游计划应用程序:一步到位的指南

引言: 在数字化时代,旅游计划应用程序已经成为旅行者不可或缺的工具。但开发一个定制的旅游应用可能需要耗费大量时间与精力。好消息是,Rork 提供了一种快捷且智能的解决方案,让你能轻松实现创意。以下是使用 Rork 创建一个定制旅…

WebSocket原理详解(二)

WebSocket原理详解(一)-CSDN博客 目录 1.WebSocket协议的帧数据详解 1.1.帧结构 1.2.生成数据帧 2.WebSocket协议控制帧结构详解 2.1.关闭帧 2.2.ping帧 2.3.pong帧 3.WebSocket心跳机制 1.WebSocket协议的帧数据详解 1.1.帧结构 WebSocket客户端与服务器通信的最小单…

计算声音信号波形的谐波

计算声音信号波形的谐波 1、效果 2、定义 在振动分析中,谐波通常指的是信号中频率是基频整数倍的成分。基频是振动的主要频率,而谐波可能由机械系统中的非线性因素引起。 3、流程 1. 信号生成:生成或加载振动信号数据(模拟或实际数据)。 2. 预处理:预处理数据,如去噪…

RepoReporter 仿照`TortoiseSVN`项目监视器,能够同时支持SVN和Git仓库

RepoReporter 项目地址 RepoReporter 一个仓库监视器,仿照TortoiseSVN项目监视器,能够同时支持SVN和Git仓库。 工作和学习会用到很多的仓库,每天都要花费大量的时间在频繁切换文件夹来查看日志上。 Git 的 GUI 工具琳琅满目,Git…

UI设计系统:如何构建一套高效的设计规范?

UI设计系统:如何构建一套高效的设计规范? 1. 色彩系统的建立与应用 色彩系统是设计系统的基础之一,它不仅影响界面的整体美感,还对用户体验有着深远的影响。首先,设计师需要定义主色调、辅助色和强调色,并…

【计算机网络】记录一次校园网无法上网的解决方法

问题现象 环境:实训室教室内时间:近期突然出现 (推测是学校在施工,部分设备可能出现问题)症状: 连接校园网 SWXY-WIFI 后: 连接速度极慢偶发无 IP 分配(DHCP 失败)即使分…