4. 拥塞度量与可视化分析
在数字后端实现中,"拥塞"并不是一个可以直接测量的物理量,而是通过多个代理指标(proxy metrics)间接反映布线资源的供需矛盾。Cadence Innovus 在全局布线(global route)阶段会生成一整套拥塞度量数据,理解这些指标的含义、量纲和相互关系,是定位拥塞根因、判断优化方向的前提。本节围绕 overflow、congestion map、hotspot、gcell 利用率与 pin density 五类核心指标展开,并结合 Innovus 的实际命令与报告格式说明如何用它们定位拥塞区域。
一、gcell 与布线资源:所有指标的公共基础
全局布线把芯片划分成规则的网格单元,称为 gcell(grid cell)。每个 gcell 在特定金属层上拥有固定数量的布线轨道(track),这些轨道构成该 gcell 的可用布线资源。水平层与垂直层分别提供水平、垂直方向的轨道,因此一个 gcell 的资源是分方向统计的。当某个 gcell 内需要穿过的连线数量超过其轨道容量时,就产生了溢出。所有拥塞指标本质上都是在描述"需求 / 容量"这一比值在不同聚合粒度上的表现。
需要先明确一个约定:本文中 overflow 为正值表示需求超过容量(即真正溢出),为负值表示仍有剩余资源。Innovus 报告中的 overflow 通常以正数表示溢出量,负值或零表示不溢出,阅读报告时需先确认符号约定,全文与图示保持一致。
二、overflow:最直接的拥塞量化指标
overflow 是全局布线迭代收敛的核心指标,定义为:
overflow(gcell, layer) = demand(gcell, layer) - capacity(gcell, layer)
其中 demand 是该 gcell 在该层方向上需要布通的连线数,capacity 是可用的轨道数。Innovus 在每次 global route 迭代后输出总 overflow(total overflow)和最大 overflow(max overflow)。工程实践中更关注两个量:一是 total overflow 是否随迭代单调下降并趋近于零,二是 overflow 是否集中在少数 gcell 中。如果 total overflow 下降缓慢且 max overflow 长期维持在高位,说明存在结构性拥塞,单纯增加迭代次数无法解决。
可以用如下命令查看全局布线后的拥塞报告:
globalRoute
reportCongestion -overflow
reportCongestion -hotspot
报告会按层、按区域列出 overflow 数值。判断标准可参考:单个 gcell 的 overflow 若持续大于其容量的 10%~20%,该区域基本可判定为需要结构性调整的拥塞区,而非靠布线器自身优化能消化的局部冲突。
三、congestion map:把数值变成空间分布
overflow 是标量,无法直接看出拥塞在版图上的位置和形状。congestion map 把每个 gcell 的拥塞程度映射为颜色,形成二维热力图。Innovus 的 GUI 中可通过 Congestion 视图或 reportCongestion -map 生成,颜色通常从冷色(低拥塞)过渡到暖色(高拥塞)。
读 congestion map 的关键不是看"哪里红",而是看红色的形状和走向:
- 块状红区:通常对应宏单元(macro)之间的狭窄通道、IP 边界或电源网格密集区,属于通道资源不足。
- 条带状红区:往往沿标准单元行方向延伸,提示局部标准单元密度过高或 pin 分布过于集中。
- 点状红点:多为单个高扇出单元、时钟缓冲器簇或 pin 密集的宏单元引脚区。
把 congestion map 与 placement density map 叠加观察,可以快速区分"密度型拥塞"和"结构型拥塞":若红区与高密度区重合,优先考虑降密度;若红区出现在密度不高的通道处,则更可能是布线通道被宏单元或 blockage 挤占。
四、hotspot:需要优先处理的局部极值
hotspot 是拥塞指标中的"极值点",指 overflow 显著高于周边、且通常超过设定阈值的 gcell 或 gcell 簇。Innovus 的 reportCongestion -hotspot 会输出 hotspot 的坐标、所在层、overflow 数值和涉及的网络。hotspot 的价值在于它把优化目标从"降低整体 overflow"聚焦到"消除具体几个点"。
处理 hotspot 的常规顺序是:先看它是否由少数几条高扇出网络或长距离跨模块连线造成,若是则考虑调整布局或增加布线引导;再看它是否位于宏单元引脚密集区,若是则考虑 pin 访问优化或调整宏单元朝向;最后才考虑局部降密度或加 routing blockage 引导布线器绕行。
五、gcell 利用率与 pin density:解释拥塞成因的两个视角
gcell 利用率(gcell utilization)描述一个 gcell 内被标准单元、宏单元、blockage 等占用的面积比例。利用率高意味着留给布线的空间少,即使连线需求不大也容易溢出。它回答的是"这个区域还有没有地方走线"。
pin density 描述单位面积内的引脚数量,通常按标准单元行或 gcell 统计。pin density 高意味着大量连线需要在此处进出单元,即使面积利用率不高,也会因为引脚过于集中而形成局部需求峰值。它回答的是"这个区域的连线进出是否过于密集"。
两者结合可以形成一张诊断表:利用率高且 pin density 高,属于"又挤又忙",需要同时降密度和分散引脚;利用率低但 pin density 高,属于"引脚扎堆",重点在布局分散和引脚优化;利用率高但 pin density 低,属于"空间被占满",重点在释放布线通道。
六、用 Innovus 定位拥塞区域的实操路径
把上述指标串成一条可执行的定位路径,通常按以下顺序推进。第一步,完成 placement 后先跑一次 globalRoute,用 reportCongestion -overflow 确认 total overflow 的量级,判断是全局性紧张还是局部问题。第二步,打开 congestion map,叠加 density map,按红区形状分类:块状、条带状还是点状。第三步,对红区执行 reportCongestion -hotspot,拿到具体坐标、层和网络名,确认是哪些网络在制造需求峰值。第四步,针对 hotspot 所在区域查看 gcell 利用率与 pin density,判断是空间不足还是引脚过密。第五步,根据判断结果选择对应手段:降局部密度、调整宏单元通道、优化高扇出网络、增加布线引导或调整层分配。
总结来看,overflow 给出"有多堵"的量化答案,congestion map 给出"堵在哪"的空间答案,hotspot 给出"先治哪"的优先级答案,gcell 利用率与 pin density 则给出"为什么堵"的成因答案。四者配合使用,才能把拥塞从一堆数字转化为可执行的布局与布线决策。