数字后端 APR 里,拥塞是最让人头疼的问题之一。它不像时序违例那样有一条明确的关键路径,而是一片区域绕线资源不够用的综合结果。想管住它,第一步是把它量化,而不是凭感觉调布局。

业界通用的量化工具是 G-Cell 网格。版图被切成一个个全局布线单元,每个 G-Cell 有固定的绕线轨道容量,工具先做全局布线,统计每个 G-Cell 里需求的走线数和可用的轨道数。需求超过供给的部分叫溢出(overflow),溢出率就是拥塞最直接的度量。峰值溢出出现在哪个区域、溢出沿着哪条边扩散,拥塞图上一目了然。

拥塞通常来自几个叠加因素。一是引脚密度:标准单元排得太密,引脚都挤在几行里,局部走线需求瞬间冲高。二是高扇出和跨区长线:时钟、复位这类全局信号横跨芯片,占用大量轨道。三是宏单元摆放:大块 SRAM 或 IP 把布线通道切断,绕线只能绕道,通道两侧的 G-Cell 随之变红。四是整体利用率过高:利用率冲到 85% 以上,留给绕线的空间所剩无几,工具再怎么优化也难。

缓解拥塞有一套从粗到细的组合拳。Floorplan 阶段就要给宏单元之间留足通道,别把大模块顶在一起;布局阶段用拥塞驱动的布局(congestion-driven placement),让工具在摆单元时就考虑走线需求;出现局部热点时,可以降低该区域的摆放密度、打散高引脚单元,或者调整绕线层分配,把部分走线挪到空闲的金属层。

拥塞和时序是绑在一起的:拥塞区绕线绕道,线长变长、耦合变大,建立时间违例往往就出在这里。反过来,修时序插缓冲器、加驱动,又会吃掉更多布线资源,让拥塞更重。所以后端收敛的正确顺序是先看拥塞图、再看时序报告:拥塞没降下来之前,时序修修补补很容易反复。把 G-Cell 溢出率当成和时序违例同等重要的签核指标,APR 的拉锯战会少很多无用功。

详细布线完成后还要复核一遍拥塞。全局布线阶段的溢出率只是估计,详细布线会引入过孔、绕线顺序和 DRC 约束,局部热点可能转移。常见的做法是对比前后两版的拥塞图:热点消失了是真收敛,热点只是换了位置,说明根因还在布局或 floorplan 里。另外,时序驱动的布线会优先保关键路径,非关键路径的绕线可能被挤到拥塞区,签核前要把拥塞图和时序报告放在一起读,不能只看其中一张。