拥塞的量化指标:溢出、热点图与路由利用率
聊完了拥塞的成因,咱们得聊聊怎么「看」拥塞。说白了,就是给拥塞定个量。你光说「这里很堵」,那没用。你得告诉我,到底堵了多少?堵在哪?
我个人习惯,看拥塞就看三个核心指标:溢出(Overflow)、拥塞热点图(Congestion Map)、路由利用率(Routing Utilization)。这三个东西,就像医生的听诊器、CT和血常规,缺一不可。
1. 溢出(Overflow)—— 最直接的「红灯」
溢出,英文叫 Overflow。什么意思呢?
你想想看,每个布线轨道(Track)能走的线是有限的。如果工具发现,某个区域需要走10根线,但轨道只能容纳8根,那多出来的2根就是溢出。工具会报出来:Overflow = 2。
我在项目中遇到过一种情况:全局布线(Global Routing)阶段,溢出为0,但到了详细布线(Detail Routing)阶段,突然冒出一堆溢出。为什么?因为全局布线是粗估,详细布线才是真刀真枪地往里塞线。所以,我建议你重点关注详细布线后的溢出。
- Total Overflow = 0:恭喜,理论上没有拥塞问题。但别高兴太早,还要看热点图。
- Total Overflow > 0:有麻烦了。需要定位具体位置。
- Max Overflow > 5:嗯,这里要注意,大概率要手动干预了。
工具一般会输出两种溢出:
- Total Overflow:所有溢出格点的总和。这个值越小越好。
- Max Overflow:单个格点上最大的溢出值。这个值更关键。我曾经遇到一个设计,Total Overflow只有几十,但Max Overflow高达12。结果那个点成了「死结」,怎么绕都绕不开。
2. 拥塞热点图(Congestion Map)—— 哪里堵,一眼便知
溢出只是一个数字。但数字不会告诉你「堵在哪」。这时候,就需要拥塞热点图了。
热点图,说白了就是把芯片平面分成一个个小格子(G-Cell或BIN),然后用颜色表示每个格子的拥塞程度。绿色代表通畅,黄色代表有点挤,红色代表堵死了。
我记得有一次做28nm的项目,Total Overflow显示为0,但我总觉得不对劲。打开热点图一看,好家伙,芯片正中间有一块区域是深红色的。虽然工具硬着头皮布通了,但那些线绕得七拐八拐,时序肯定完蛋。这就是只看数字不看图的后果。
先看全局,有没有大片的红色区域?
再看局部,红色区域是否集中在某个宏单元(Macro)周围?
最后看方向,是水平方向堵还是垂直方向堵?这能帮你判断是走线层资源不够,还是标准单元密度太高。
热点图通常分两种:
- 水平热点图:显示水平方向(M2、M4等)的拥塞。
- 垂直热点图:显示垂直方向(M3、M5等)的拥塞。
你想想看,如果水平方向全是红的,但垂直方向是绿的,说明什么?说明你的标准单元行(Row)太密了,导致水平走线通道不够。这时候,你该考虑的是拉大行间距,或者调整Pin的分配。
3. 路由利用率(Routing Utilization)—— 到底用了多少?
路由利用率,就是问一句:你用了多少走线资源?
公式很简单:Routing Utilization = 实际使用的走线长度 / 可用的走线总长度。通常用百分比表示。
我个人经验,有个大致的参考范围:
| 利用率范围 | 状态 | 建议 |
|---|---|---|
| < 40% | 非常宽松 | 面积可能偏大,可以考虑缩小 |
| 40% - 60% | 健康 | 正常设计,留有余量 |
| 60% - 75% | 偏紧 | 需要关注局部热点,可能出问题 |
| > 75% | 危险 | 大概率拥塞,必须优化 |
注意,这个利用率是全局平均。我曾经遇到一个设计,全局利用率只有55%,看起来挺健康。但打开热点图一看,某个区域利用率飙到了90%。这就是典型的「平均主义」陷阱。所以,我建议你同时看全局利用率和局部利用率。
我曾经犯过一个错:只看Total Overflow为0,就认为拥塞没问题,直接跳过了热点图分析。结果在布线后期,发现有一片区域因为利用率过高,导致信号串扰(Crosstalk)严重,不得不花两周时间重新做Floorplan。从那以后,我养成了一个习惯:先看热点图,再看溢出,最后看利用率。顺序不能乱。
4. 三个指标的关系——一张图说清楚
这三个指标不是孤立的。它们之间的关系,我画了张图,你一看就明白:
你看,这个流程很清晰:溢出告诉你「有没有问题」,热点图告诉你「问题在哪」,利用率告诉你「问题有多严重」。三个指标配合使用,才能准确判断拥塞。
5. 实战中怎么用?
说完了理论,咱们聊聊实战。我一般拿到一个设计,会按以下步骤来:
- 跑完布线后,先看报告里的 Total Overflow。如果为0,心里先松一口气。如果不为0,记下数值。
- 打开热点图。别只看全局,要放大到每个红色区域。我习惯把热点图和Floorplan叠在一起看,这样能快速定位是哪个Macro周围出了问题。
- 查看该区域的 Routing Utilization。如果利用率超过70%,基本可以确定是面积太挤了。如果利用率只有50%但溢出很高,那可能是走线方向分配不合理,或者Pin的位置有问题。
- 做决策:利用率高 → 考虑扩大面积或调整Macro位置;利用率低但溢出高 → 考虑调整走线层分配或优化Pin Access。
很多工具支持导出每个G-Cell的溢出值和利用率。我习惯写个脚本,把溢出值大于5的G-Cell坐标打印出来,然后和热点图对照。这样能快速定位「最堵的那几个点」,而不是漫无目的地看图。
嗯,关于拥塞的量化指标,就聊这么多。记住,数字是死的,但图是活的。别只盯着报告里的数字,多看看热点图,多想想为什么。这才是后端工程师该有的思维方式。
可可精品资料库