布线拥塞是什么?怎么缓解?
更新时间:2026-09-21。问题驱动短答页。物理实现见 Innovus 流程、布局布线入门,floorplan 见 floorplan 电源规划,串扰见 SI。
一句话回答
布线拥塞指芯片上某块区域“需要走的线”超过了该区域可用的金属轨道和通孔资源,工具的拥塞热图会用 overflow(需求减容量)标出。拥塞轻则让线被迫绕远、延迟变大、串扰升高,重则详细布线留下 DRC 短路/间距违例、跑不出可布通设计。根因多是大宏模块(SRAM/PHY)摆放夹出狭窄通道、高扇出网络和宽总线在局部扎堆、标准单元局部过密、或层次化边界的引脚集中。缓解要从源头下手:合理 floorplan 和宏摆放留出布线通道、用 placement/soft blockage 控制单元密度、分散热点、插高扇出缓冲、在 RTL/架构上拆窄总线或减少跨区信号,并让布局布线全程跑 congestion-driven 优化。
怎么发现
- 拥塞热图(congestion map):布局后用全局布线估计每格 G-cell 的 overflow,红色即超容。
- 指标:overflow 总量/峰值、不可布线数(unroutable nets)、详细布线 DRC。
- 越早发现越便宜:floorplan/布局阶段就能预估,别等到详细布线。
缓解手段(由早到晚)
- floorplan / 宏摆放:SRAM、PHY 沿边摆放、方向对齐引脚,避免形成“针孔通道”;宏之间和宏与边缘留够 channel,见 floorplan 电源规划。
- 布局约束:对拥塞区加 placement blockage / soft blockage、降低 local density、把宽数据通路的逻辑就近摆放。
- 高扇出优化:高扇出网络插缓冲树(CTS 也会处理时钟),减少长线穿越。
- RTL/架构:避免跨芯片的超宽总线、合理复用层次边界(pin 密度)、减少不必要的跨区连接。
- 布线策略:congestion-driven place/route、分配金属层(高层给长线/时钟,低层短连)、允许局部修线/增量布线。
- 宏/IP 周围放 halo/keepout,防止标准单元紧贴导致引脚处堵死。
与时序/功耗的联动
- 为解拥塞绕远 → 线延迟增大 → setup 违例,可能要回布局重优化。
- 线挤在一起 → 耦合电容和串扰上升,见 crosstalk。
- 加大量缓冲解时序/扇出又会增加面积和功耗,需要折中。
常见坑
- 只看时序全绿,忽略布局后拥塞热图,到详细布线才大面积 DRC。
- 宏随便摆,夹出无法布线的窄通道。
- 用最密布局追求面积,结果不可布通或频繁绕线。
- 宽总线跨整个 die 却没预留通道和金属层。
总结
布线拥塞是局部走线需求超过轨道/通孔容量,表现为 overflow 热图、绕线变长和详细布线 DRC;根因在宏摆放、单元密度、高扇出和宽总线热点。要在 floorplan 就用宏对齐和通道预留、placement/soft blockage 控密度、缓冲高扇出、RTL 侧减少跨区宽线,并以 congestion-driven 布局布线迭代,同时兼顾它引发的时序和串扰连锁反应。