数字IC后端培训教程之数字后端项目典型案例分析

今天给大家分享下最近小编帮助学员解决的几个经典数字IC后端项目问题。希望能够对大家的学习和工作有所帮助。

数字IC后端项目典型问题之后端实战项目问题记录(2025.04.24)

数字IC后端设计实现培训教程(整理版)

Q1: 老师好,我这个placement后from A7CORE0的path报了-3ns的wns,高亮了这条路径之后是这样的,为啥a7core0的pin不直接连到iso cell,而是在a7core子模块上绕了一大圈再连到isolation cell?

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

这里有timing violation主要是长线带来的transition问题和delay问题。通过时序报告和layout高亮的路径上看,这条路径上没有任何的buffer和inverter,但工具在做early global route的时候却给规划了这么一条虚拟走线。

在这里插入图片描述
这种一半是属于工具early global route的bug。但我们自己在做子模块lef的时候也存在一定的瑕疵,某些layer的cell blockage没有盖全导致工具在cell blockage和pg pin中间见缝插针,规划了几根走线。

在这里插入图片描述

Q2:在跑Calibre LVS的时候出现了一条路径短路,是从vss到一个io口,在innovus里显示看了一会不知道咋看?

登录服务器端口看到这个学员已经把Calibre LVS Short报告导入到Innovus中,说明它已经掌握到LVS debug分析的基本流程。1)查看LVS short报告2)查看LVS GDS抽取报告3)查看LVS结果报告
在这里插入图片描述
随意选中一个short定位到具体位置后,从高亮的位置我们就可以看出PG Rail VSS和一颗cell输出pin对应的net短路了!而且是M1搭在一起了!

在这里插入图片描述
出现这个short主要原因是该学员在PR实现过程中使用了M1进行绕线!图中所示的short位置是Decap Cell的M1 VSS PG Pin。

如果使用的是普通Filler Cell也不会出现这个问题。但这个DRC正常在innovus中就可以检查出来的。我们接着在innovus中执行verify_drc,其结果如下图所示。

在这里插入图片描述
我们很清楚看到确实存在大量M1的short。

在这里插入图片描述
所以,我们如果想在当前database上做一些修复,我们可以在verify_drc后执行ecoRoute即可自动修复。当然我们还是建议在PR实现全流程严格控制global route和nanoroute的layer范围为M2-M6。

Q3: 跑完a7top routing后NanoRoute DRC Violation如下图所示。请问老师,这类DRC Violation应该如何分析和修复?

Innovus DRC Violation和Calibre DRC Violation分析和修复案例
在这里插入图片描述

通过DRC Violation定位,我们发现主要short集中在cpu2和cpu3附近。低层的M2-M5 Short Violation是因为该学员在摆放子模块两个power switch cell串链信号时使用了M1出pin,而子模块身上是盖了M1-M6的routing blockage。

在这里插入图片描述
所以低层的short可以通过调整子模块这两个io port的出pin layer(使用横向的Metal6即可)。值得注意的是子模块cortexa7core_1 改完io port位置后务必更新一个最新的lef给a7top,否则后续会出现open net的情况。

在这里插入图片描述
其他short主要位于以下红色框框区域。通过高亮可以发现这里的确存在异常——局部区域的cell density高达92%!

在这里插入图片描述
看到这里第一反应就是查看这个位置是否有region这种physical constraint。这里需要切换到floorplan view查看。因为某个module region规划得太小也很容易出现这种现象。

数字IC后端教程之Innovus hold violation几大典型问题
在这里插入图片描述
经过分析发现,该学员并没有在这个位置加region。

在这里插入图片描述
这时候我们就要分析为何工具在这个位置摆放了这么多cell?

这些cell是什么阶段加入的,加入的动机是什么?任何选中一颗cell后,我们可以报报看through这颗cell的timing path。

在这里插入图片描述

从这条timing path上看,我们就发现该区域存在大量PHC的buffer。从名字上看我们就知道这是工具修hold violation加入的。而且是为了修从cpu出发到顶层reg的hold violation而加入的。为了查看这个区域插入的hold buffer数量,我们可以在innovus中高亮出所有hold buffer(当然也可以通过dbQuery来获取指定区域的hold buffer)。从innovus显示的数据看,当前设计工具共插入了12304个hold buffer。

在这里插入图片描述
另外,我们还发现工具居然在子模块的output pin和isolation的I pin中间插了buffer! 也就是说即便要插hold buffer也不能插在当前这个位置。出现这个现象只有一个原因!a7top PR实现阶段使用的upf没有成功读入。

经过debug发现,该学员在跑placement时执行了free_power_intent命令!

为了对比不同阶段的hold buffer插入情况,我们又打开postCTS的数据,我们发现这个阶段做完hold violation fixing后总插入的hold buffer数量是7920个!

【思考题】为何两个阶段插入的hold buffer数量有个突变呢?

在这里插入图片描述
由于咱们提供的后端flow是在postCTS修hold之前会保存一个单独的database,所以我们此时可以打开修hold violation之前的hold情况。

经过分析发现的确存在FROM_CPU的hold violation,数值还比较大,而且TO_CPU的hold WNS都是大于0的!这是不是说明FROM_CPU和TO_CPU的timing往一边飘?是否有机会通过调整各个子模块的clock tree长度来优化呢?

在这里插入图片描述
所以,遇到这类情况,我们主要可以通过以下几种方法来修复。

1)调整clock tree,把顶层reg和子模块reg的clock tree做balance

2)PR Flow中控制CPU接口相关的hold violation fixing的范围,不要过修

3)在各个cpu子模块门口添加blockage array阵列(降低local density)

blockage array减轻congestion方法
最后,小编还发现如下这类timing path也存在过渡优化的情况!这类timing path完全可以设置multicycle path!

在这里插入图片描述
hold violation原因分析及hold violation修复方法
【思考题】在跑完placement后我们会检查isolation cell的input是否有被插入buffer或inverter,请问下图所示的路径是否正常?该学员反馈这类timing path存在异常,请问对吗?

低功耗设计isolation cell input能否插buffer?

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

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

相关文章

window 显示驱动开发-将虚拟地址映射到内存段(二)

在将虚拟地址映射到段的一部分之前,视频内存管理器调用显示微型端口驱动程序的 DxgkDdiAcquireSwizzlingRange 函数,以便驱动程序可以设置用于访问可能重排的分配位的光圈。 驱动程序既不能将偏移量更改为访问分配的 PCI 光圈,也不能更改分配…

Termius ssh连接服务器 vim打开的文件无法复制问题

你的问题是: • 在 Termius (macOS) SSH 连接到 VMware Ubuntu,使用 vim 打开 .cpp 文件时,可以复制文本; • 但在 Windows 10 上 SSH 到 VMware 的 Red Hat 6.4 时,复制操作无效。 ⸻ 🎯 初步分析 复制…

杨校老师项目之基于SSM与JSP的鲜花销售系统-【成品设计含文档】

基于SSMJSP鲜花商城系统 随着电子商务的快速发展,鲜花在线销售已成为一种重要的消费模式。本文设计并实现了一个基于JSP技术的鲜花销售管理系统,采用B/S架构,使用SSM框架进行开发,并结合Maven进行项目依赖管理。系统分为前台用户模…

集成学习——Bagging,Boosting

一.什么是集成学习 集成学习的基本思想是通过结合多个基学习器的预测结果,来提高模型的泛化能力和稳定性。这些基学习器可以是相同类型的算法,也可以是不同类型的算法。 当基学习器之间具有一定的差异性时,它们在面对不同的样本子集或特征子…

【笔试训练】给一个数组构建二叉树|从前序遍历与中序遍历构建二叉树|二叉树中的最大路径和

文章目录 1.给一个数组构建二叉树2.从前序遍历和中序遍历构建二叉树3.二叉树中的最大路径和 1.给一个数组构建二叉树 思路:就是借助一个队列实现层序遍历的思想。 先将root节点入队列,构造左右节点后,root取出来时,将其左右孩子都…

Swift实战:如何优雅地从二叉搜索树中挑出最接近的K个值

文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结未来展望 摘要 在日常开发中,我们经常会遇到“在一堆数据中找出最接近某个值”的需求。尤其在搜索引擎、推荐系统或者地理坐标匹配中,这种“最近匹配”的问题非常常见。Le…

Linux512 ssh免密登录 ssh配置回顾

下载MX 官网 参考 OK 登个tom试试 然后再计划登个RealServer 计划再用仅主机网卡试试 连不上 看来要通过JumpServer再联 通过网卡访问 被踢掉了 成功通过跳板机JumpServer登入到RealServer 方法一免密登录 现计划尝试方法二 只有1个tom 我连了两个tom 看来是根据IP划…

编译原理AST以Babel为例进行解读、Webpack中自定义loader与plugin

AST树详解 编译原理 主要研究如何将高级编程语言的源代码转换为机器能理解的目标代码(通常是二进制代码或中间代码)。编译器的底层实现通常包含多个阶段,包括词法分析、语法分析、语义分析和代码生成。 一、AST的核心概念与作用 AST&#…

51c大模型~合集127

我自己的原文哦~ https://blog.51cto.com/whaosoft/13905076 #Executor-Workers架构 图解Vllm V1系列2 本文详细介绍了vllm v1的Executor-Workers架构,包括Executor的四种类型(mp、ray、uni、external_launcher)及其适用场景&#xff…

《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match

《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match 引言 Python 3.10 引入了全新的 match 语句,它不仅是一个“类 switch”的语法结构,更是一种**结构化模式匹配(structural pattern matching&#xff09…

Nacos源码—8.Nacos升级gRPC分析五

大纲 7.服务端对服务实例进行健康检查 8.服务下线如何注销注册表和客户端等信息 9.事件驱动架构源码分析 7.服务端对服务实例进行健康检查 (1)服务端对服务实例进行健康检查的设计逻辑 (2)服务端对服务实例进行健康检查的源码 (3)服务端检查服务实例不健康后的注销处理 (…

[手写系列]Go手写db — — 完整教程

[手写系列]Go手写db ZiyiDB是一个简单的内存数据库实现,支持基本的SQL操作,包含create、insert、delete、select、update、drop。目前一期暂支持int类型以及字符类型数据,后续会支持更多数据结构以及能力。本项目基于https://github.com/eato…

十三、动态对象创建(Dynamic Object Creation)

十三、动态对象创建(Dynamic Object Creation) 目录 13.1 对象创建(Object creation)13.2 new / delete 操作符13.3 数组的 new 与 delete13.4 总结 背景说明 有时候我们需要知道程序中对象的数量、类型和声明周期,…

一、网络基础

IPv4:32位二进制 -- 点分十进制标识 192.168.1.1(连续的32位,为了好看方便每8位一段) IPv6:128位二进制 IP(Internet协议) 洪泛:除流量进入接口外的所有接口的复制 OSI模型&#…

前端面试测试题目(一)

一、Vue的双向绑定机制(v-model底层实现原理) Vue的双向绑定核心由 响应式系统 和 指令语法糖 共同实现,具体原理如下: 响应式系统 Vue通过数据劫持和依赖收集实现数据变化到视图的同步: • 数据劫持:在Vue…

我用Deepseek + 亮数据爬虫神器 1小时做出輿情分析器

我用Deepseek 亮数据爬虫神器 1小时做出輿情分析器 一、前言二、Web Scraper API 实战(1)选择对应的URL(2)点击进入对应url界面(3)API结果实例和爬取结果展示(4)用户直接使用post请…

机器学习实战:归一化与标准化的选择指南

在机器学习实战中——是否需要归一化(Normalization)或标准化(Standardization),取决于所使用的模型类型。 ✅ LightGBM / XGBoost 是否需要归一化或标准化? 不需要。 🔧 原因: L…

磁珠特点,原理与应用

什么是磁珠? 磁珠在1930年由日本东京工业大学的加藤与五郎和武井武两位教授发明,TDK首次生产,是电感的一种,区别就是:电感外面包裹着铁氧体材质。 因铁氧体具有高电阻率,低涡流损耗,高频时依旧…

【连载14】基础智能体的进展与挑战综述-多智能体系统设计

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 在基于大语言模型的多智能体系统(LLM-MAS)中,合作目标和合…

React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题

React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题 问题背景 在最近的React Native项目开发中,我们的应用在iOS设备上运行良好,但当部署到Android设备时,进入语言设置和隐私设置页面后应用崩溃。我们遇到了…