2、全局与局部拥塞:全局拥塞 vs 局部拥塞,谁才是真正的杀手?

做芯片后端设计这些年,我见过太多团队在拥塞分析上栽跟头。大家一看到拥塞热点,就急着去修,结果修来修去,流片回来还是有问题。为什么?说白了,就是没分清「全局拥塞」和「局部拥塞」到底谁在捣鬼。

我个人习惯,拿到一份拥塞报告,先不急着看细节。我会问自己一个问题:这片子到底是「整体堵」还是「局部卡」?这两个东西,处理方式完全不同。

2.1 全局拥塞:整个芯片都在喊「挤」

全局拥塞,你想想看,就像早高峰的北京二环——所有车道都满了,车速都慢。在芯片里,这意味着整个设计区域的布线资源都紧张,不是某一个点的问题。

典型特征:

  • 热点分布广,不是孤立的几个点
  • 绕线率整体偏高,比如超过85%
  • 修完一个热点,旁边又冒出来一个

我记得有一次,一个28nm的项目,后端做完place之后,全局绕线率飙到了92%。当时团队里有人提议「加几层金属不就完了?」——嗯,这想法太天真了。加金属层要改工艺,成本和时间都不允许。

全局拥塞的本质: 不是布线资源不够,而是逻辑布局太密了。说白了,就是你把太多标准单元塞进了太小的面积里。

怎么治? 我建议从三个层面入手:

  1. 调整利用率目标——把核心区域的利用率从70%降到60%,给布线留出空间
  2. 优化floorplan——把那些特别密的模块拆开,或者给它们多分配一些面积
  3. 检查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 局部拥塞

下面这张图,是我自己总结的拥塞分析决策流程。每次拿到拥塞报告,我就按这个思路走一遍,基本不会跑偏。

全局拥塞 vs 局部拥塞 分析决策流程 拿到拥塞报告 全局绕线率 是否 > 80%? 是 全局拥塞 先治全局 否 局部热点 是否 > 95%? 是 局部拥塞 查时钟/高驱动单元 否 拥塞不严重 正常绕线即可 先全局后局部 调整利用率/floorplan

2.5 实战避坑指南

最后,分享几个我踩过的坑,希望能帮你少走弯路。

避坑1: 我曾经在一个项目里,看到局部拥塞就急着加spare cells(备用单元)来填充,结果越填越堵。后来才明白,spare cells本身也占面积,加多了反而加剧拥塞。正确的做法是先搞清楚拥塞的根因,再决定怎么修。

避坑2: 别完全相信工具的拥塞报告。工具报告的拥塞是基于预估模型,和实际绕线有差距。我习惯的做法是:先跑一个快速绕线(fast route),看看实际绕线结果和报告是否一致。如果不一致,以实际绕线为准。

避坑3: 全局拥塞和局部拥塞有时候会互相转化。比如你修了一个局部热点,结果把绕线压力转移到了旁边区域,导致新的热点出现。所以修完之后,一定要重新跑一遍全局检查,确保没有「按下葫芦浮起瓢」。

嗯,关于全局拥塞和局部拥塞,我就讲这么多。记住一句话:全局拥塞看布局,局部拥塞看细节。 下次拿到拥塞报告,先别急着动手,花10分钟判断一下是哪种类型,你的修复效率至少能提升一倍。

可可精品资料库