手把手教你如何在Innovus中解决local congestion问题

手把手教你如何在Innovus中解决local congestion问题

文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。

吾爱 IC 社区

吾爱 IC 社区(52-ic.com)是一个专业交流和分享数字 IC 设计与实现技术与经验的 IC 社区

141 篇原创内容

公众号

在实际项目中,我们经常会遇到设计中容易出现局部区域的 congestion 问题,导致局部绕线出现问题。这种现象特别容易出现在编解码,逻辑运算比较的设计中(比如 AI 运算),比如模块包含大量的乘法器,全加器和半加器等。

那么,遇到这种情况你们是否能够从容应对并高效解决呢?相信大部分经验欠缺的工程师往往不太确定应该如何解决,更多是抱着 try 的态度,用几种方法去评估。

基于此,那我们就很有必要来盘点下数字 IC 后端设计实现中经常用来解决 local congestion 的各种方法。希望今天的分享能够帮助到各位。

1 检查 place 优化的 mode

虽说 EDA 工具并非是万能的,但很多 local congestion 其实可以通过配置不同的 option 让工具最大限度来做优化。不论是 S 家还是 C 家的工具,这点是一致的。

对于 congestion 比较严重的模块,place 过程的 congestion 优化都需要设置成 high。虽然它会带来更多的 runtime,但这个是值得的。可以通过下面的命令来设置。想要获取 congEffort 可以通过 getPlaceMode 来获取。

setPlaceMode -congEffort high

设置完后重新跑 place_opt_design 即可。

2 局部区域 congestion 优化

Innovus 还支持针对某个区域进行 congestion 优化,可以通过下面的命令来实现。

congRepair -area

这个命令可以在做完 place_opt_design 的基础上做 congestion 优化。由于这个命令会根据 congestion 结果将它周围的 cell 均摊开,因此可能会搬动较多的 cell。所以这个命令不适用于 post-cts timing 优化后来使用。

数字后端实现时 congestion 比较严重,你 hold 得住吗?

3 Module Padding

与后面要介绍的 instance padding 和 cell padding 需要区分下。这两种方法都是被普遍采用的方法。Module Padding 的命令使用如下:

setPlaceMode -modulePadding module factor

这里的 factor 值需要根据自己的设计和经验来设定,通常取值范围为 1.2-2.0。举个例子,比如这个值为 2,表示工具在做 global placement 的时候会将这个 module 里面的每颗 cell 看做成 2 颗这样的 cell ,所以做出来的效果是这个 module 占用的面积更大,约为原来的两倍,cell 之间的 space 就更大了。

但需要注意的是,这个命令只在 global placement 阶段起作用,在后续的 refinePlace 工具是不 follow 的。

[思考题] 如果这个 factor 值设置的太大,有什么弊端?

4 Instance Padding

Instance padding 的用法如下。在数字 IC 后端实现中经常会把 innovus 中的几种 padding 结合起来使用来达到一个最佳的 congestion 优化效果。

foreach i [dbGet [dbGet -p2 top.insts.cell.name AOI*].name DTMF_INST/RESULTS_CONV_INST/*] {specifyInstPad $i 2}

5 Cell Padding

实际项目中经常会碰到某个 module 中包含大量的 AOI,OAI,NAD 这种高 pin density 的 cell。往往这种地方容易有 local congestion 问题。那解决的方法就是将这类 cell 设置 padding。这个与 ICC/ICC2 中的 keepout 是一样的效果。只不过 S 家的单位是具体距离,而 C 家的单位是多少 site。

specifyCellPad cellName 6 (这里的 6 并非是 6um)

6 Density Placement Blockage

对于局部区域的 congestion 问题,特别是各种窄 channel 的地方或拐角的地方,经常需要添加 density placement blockage。这种 blockage 其实就是传统所说的 partial placement blockage。主要的原理是通过控制该区域的 density 来解决 congestion 的问题。

7 Clock Tree ECO

目前大规模的后端实现 flow 中都是使用 MCMM Flow,因此 flow 中都会有 fix hold 的操作。在实际项目中经常会遇到 place 后 congestion 都很好,可是 post-cto 后 congestion 存在很多 local 的 hotspot。这是为什么呢?

手把手教你如何在 Innovus 中分析 clock tree 质量

如何在 Innovus 中做好 Clock Tree Synthesis?

想成为数字 IC 时钟树综合(clock tree synthesis)专家,建议好好看看这个!

数字 IC 后端时钟树综合专题(OCC 电路案例分享)

这种大概率是因为工具在某些局部区域插入太多的 hold buffer 导致的,这些 hold buffer 通常都有一个特殊的关键词,你们都知道是带什么关键词吗?之所以要插入那么多的 hold buffer,是因为工具看到这些地方存在较大的 hold violation。

对于一个比较合理的 clock tree,即 clock latency 和 clock skew 比较合理,它的 hold violation 不应该太大。

**[思考题]**如果 launch 和 capture 的 clock path 的 common path 比较短,它们的 setup 和 hold 会是什么情况?

数字 IC 设计实现之 hold violation 修复大全

为了解决这种因插入过多的 hold buffer 导致的 local congestion,除了从 clock tree latency 和 clock skew 的角度去做优化外,我们还可以通过 “clock eco” 来解决。这种方法小编将它称之为“buffer 转移大法”。

这种方法的基本思想是通过调 tree 的方式使得存在 local congestion 的地方不再有 hold violation,而是把这部分 hold violation 挪到它的前级或后级的方法。

好了,今天的内容分享就到这里。另外,因为公众号更改推送规则,小编分享的每篇干货不一定能及时推送给各位。为了避免错过精彩内容,请关注星标公众号,点击 “在看”,点赞并分享到朋友圈,让推送算法知道你是社区的老铁,这样就不会错过任何精彩内容了。

如果你想和小编有更进一步的沟通交流的机会,欢迎加入小编知识星球,让我们一起学习成长,共同进步。相信在这里能让你成就一个更完美的自己

小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入 *** *)

在这里,目前已经规划并正着手做的事情:

  • ICC/ICC2 lab 的编写

  • 基于 ARM CPU 的后端实现流程

  • 利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现

  • 基于 ARM 四核 CPU 数字后端 Hierarchical Flow 实现教程

  • 时钟树结构分析

  • 低功耗设计实现

  • 定期将项目中碰到的问题以案例的形式做技术分享

  • 基于 90nm 项目案例实现教程(ICC 和 Innovus 配套教程)

  • 数字 IC 行业百科全书

吾爱 IC 社区 知识星球星主为公众号” 吾爱 IC 社区” 号主,从事数字 ic 后端设计实现工作近十年,拥有55nm,40nm,28nm,22nm,14nm 等先进工艺节点成功流片经验,成功tapeout 过三十多颗芯片

这里是一个数字 IC 设计实现高度垂直细分领域的知识社群,是数字 IC 设计实现领域中最大,最高端的知识交流和分享的社区,这里聚集了无数数字 ic 前端设计,后端实现,模拟 layout 工程师们。

在这里大家可以多建立连接,多交流,多拓展人脉圈,甚至可以组织线下活动。在这里你可以就数字 ic 后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。

最重要的是在这里,能够借助这个知识社群,短期内实现年薪百万的梦想!不管你信不信,反正已经进来的朋友肯定是相信的!相遇是一种缘分,相识更是一种难能可贵的情分!如若有缘你我一定会相遇相识!知识星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有 898 位星球成员,感谢这898 位 童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标
在这里插入图片描述

欢迎关注 “吾爱 IC 社区

微信号:ic-backend2018

在这里插入图片描述

https://mp.weixin.qq.com/s/ApEanPXJqPLSY1eYXjJIDA

  • 5
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值