2、全局与局部拥塞:全局拥塞 vs 局部拥塞,谁才是真正的杀手?
做芯片后端设计这些年,我见过太多团队在拥塞分析上栽跟头。大家一看到拥塞热点,就急着去修,结果修来修去,流片回来还是有问题。为什么?说白了,就是没分清「全局拥塞」和「局部拥塞」到底谁在捣鬼。
我个人习惯,拿到一份拥塞报告,先不急着看细节。我会问自己一个问题:这片子到底是「整体堵」还是「局部卡」?这两个东西,处理方式完全不同。
2.1 全局拥塞:整个芯片都在喊「挤」
全局拥塞,你想想看,就像早高峰的北京二环——所有车道都满了,车速都慢。在芯片里,这意味着整个设计区域的布线资源都紧张,不是某一个点的问题。
典型特征:
- 热点分布广,不是孤立的几个点
- 绕线率整体偏高,比如超过85%
- 修完一个热点,旁边又冒出来一个
我记得有一次,一个28nm的项目,后端做完place之后,全局绕线率飙到了92%。当时团队里有人提议「加几层金属不就完了?」——嗯,这想法太天真了。加金属层要改工艺,成本和时间都不允许。
全局拥塞的本质: 不是布线资源不够,而是逻辑布局太密了。说白了,就是你把太多标准单元塞进了太小的面积里。
怎么治? 我建议从三个层面入手:
- 调整利用率目标——把核心区域的利用率从70%降到60%,给布线留出空间
- 优化floorplan——把那些特别密的模块拆开,或者给它们多分配一些面积
- 检查power grid——有时候是电源网络占用了太多布线轨道
一个小技巧: 我习惯在place之前先跑一个快速绕线预估。如果预估结果就显示全局拥塞,那说明floorplan阶段就已经埋下隐患了。这时候改,成本最低。
2.2 局部拥塞:一个点堵死一条路
局部拥塞就不一样了。它像你开车遇到一个路口,因为事故堵死了,但旁边的路还是通的。在芯片里,就是某个小区域布线资源被耗尽,但周围区域其实很宽松。
典型特征:
- 热点集中,通常只有几个小区域
- 绕线率在热点区域爆表,但整体绕线率正常
- 修完一个热点,它不会扩散
我曾经遇到过一个案例,一个模块内部拥塞严重,但整个芯片的绕线率才65%。团队花了两周去调那个模块的floorplan,结果越调越糟。后来我仔细一看——问题出在时钟门控单元上。那个模块里用了太多高驱动强度的时钟门控,每个都占很大面积,挤在一起自然就堵了。
注意: 局部拥塞有时候是「假拥塞」。什么意思?就是工具报告拥塞,但实际绕线时因为周边有空余资源,工具会自动绕开。我建议先跑一个实际绕线验证,别一看到热点就动手。
局部拥塞的常见元凶:
| 元凶 | 表现 | 我的处理习惯 |
|---|---|---|
| 高驱动强度单元扎堆 | 热点区域单元面积大,密度高 | 换成多个低驱动单元并联 |
| 时钟树过于集中 | 时钟缓冲器挤在一起 | 手动分散时钟树,或者用H-tree结构 |
| 宏单元(memory等)间距太小 | 宏单元之间的通道太窄 | 至少留出3-5倍布线轨道的间距 |
| 扇出过大 | 一个驱动带太多负载 | 插入缓冲器,降低扇出 |
2.3 谁才是真正的杀手?
这个问题,我直接给答案:全局拥塞是慢性病,局部拥塞是急症。
全局拥塞不会让你立刻流片失败,但它会拖累整个芯片的性能和功耗。你想想看,所有线都绕得又长又绕,时序能好吗?功耗能低吗?
局部拥塞呢?它可能只影响一小块区域,但那一块如果正好是关键路径,那整个芯片就废了。我见过一个项目,全局拥塞率只有55%,但一个局部热点导致setup violation修不掉,最后不得不改版。
我的判断标准:
- 如果全局绕线率超过80%,先治全局——调整利用率、优化floorplan
- 如果全局绕线率低于70%,但局部热点超过95%,先治局部——查时钟树、查高驱动单元、查宏单元间距
- 如果两者都有——先全局后局部,因为全局问题不解决,局部修了也白修
2.4 一张图看懂全局 vs 局部拥塞
下面这张图,是我自己总结的拥塞分析决策流程。每次拿到拥塞报告,我就按这个思路走一遍,基本不会跑偏。
2.5 实战避坑指南
最后,分享几个我踩过的坑,希望能帮你少走弯路。
避坑1: 我曾经在一个项目里,看到局部拥塞就急着加spare cells(备用单元)来填充,结果越填越堵。后来才明白,spare cells本身也占面积,加多了反而加剧拥塞。正确的做法是先搞清楚拥塞的根因,再决定怎么修。
避坑2: 别完全相信工具的拥塞报告。工具报告的拥塞是基于预估模型,和实际绕线有差距。我习惯的做法是:先跑一个快速绕线(fast route),看看实际绕线结果和报告是否一致。如果不一致,以实际绕线为准。
避坑3: 全局拥塞和局部拥塞有时候会互相转化。比如你修了一个局部热点,结果把绕线压力转移到了旁边区域,导致新的热点出现。所以修完之后,一定要重新跑一遍全局检查,确保没有「按下葫芦浮起瓢」。
嗯,关于全局拥塞和局部拥塞,我就讲这么多。记住一句话:全局拥塞看布局,局部拥塞看细节。 下次拿到拥塞报告,先别急着动手,花10分钟判断一下是哪种类型,你的修复效率至少能提升一倍。