1. 课程导入与拥塞问题全景
在数字芯片物理设计(Physical Design)中,拥塞(Congestion)指的是在布局布线阶段,某个局部区域内可用的布线资源(Routing Resource)无法满足该区域内所有网络(Net)的布线需求,导致部分连线无法按预期完成,或被迫绕行、加长、使用更高层金属,甚至出现 DRC 违例与布线失败。拥塞不是某一个步骤的孤立问题,而是贯穿从 RTL 综合、布局规划(Floorplan)、布局(Placement)、时钟树综合(CTS)到布线(Routing)全流程的系统性收敛难题。
理解拥塞,首先要理解它的度量方式。Cadence 工具链中常用 溢出量(Overflow)、拥塞度(Congestion Ratio)、布线资源利用率(Routing Utilization) 等指标来量化。以 Innovus 为例,在全局布线(Global Route)后,工具会输出每个 GCell(全局布线单元)的供需关系:需求(Demand)来自穿过该单元的连线轨道数,供给(Supply)来自该单元可用的水平/垂直轨道数。当 Demand > Supply 时即产生溢出,溢出为正的区域就是拥塞热点(Hotspot)。
拥塞的来源可以归纳为四类。第一类是设计本身的结构性因素:高扇出网络、宽总线、密集的 MUX/Crossbar 结构、SRAM 与宏单元(Macro)之间的通道过窄,都会在局部制造大量连线需求。第二类是布局规划不合理:Macro 摆放过于集中、通道(Channel)预留不足、Pin 密度过高、Power/Ground 网格占用过多布线层,都会压缩可用资源。第三类是单元密度与标准单元布局问题:局部标准单元密度过高(如超过 85%),导致引脚密集、短连线交错,形成“细胞拥塞”。第四类是约束与优化目标冲突:时序紧张时工具倾向于缩短连线、聚集逻辑,反而加剧局部拥塞;而过度追求面积又会牺牲布线通道。
拥塞对 PPA 的影响是连锁的。对性能(Performance)而言,拥塞迫使连线绕行,线长增加、寄生电容电阻上升,时序恶化,甚至出现无法修复的 Setup/Hold 违例。对功耗(Power)而言,线长增加直接抬高动态功耗,绕行带来的额外缓冲器也增加漏电与开关功耗。对面积(Area)而言,为缓解拥塞需要插入更多缓冲、增加布线层、扩大通道,最终导致 Die 面积膨胀。更严重的是,拥塞会形成“时序—拥塞—面积”的恶性循环:修时序加剧拥塞,解拥塞又破坏时序。
面对这样的系统性难题,Cadence 工具链提供了从早期预估到最终签核的完整支撑。在综合阶段,Genus 可通过物理感知综合(Physical Aware Synthesis)提前感知布局信息,避免生成对布线极不友好的网表结构。在布局规划与布局阶段,Innovus 的 Floorplan 与 Placement 引擎内置拥塞分析,可在早期通过 reportCongestion、checkPlace 等命令识别热点,并借助 setPlaceMode -congEffort high 等选项提升布局的拥塞感知能力。在布线阶段,NanoRoute 支持全局布线预估、详细布线迭代与 ECO 修复,配合 setRouteMode -earlyGlobalRoute 可在正式布线前快速评估拥塞风险。此外,Tempus 用于时序签核,Voltus 用于功耗签核,二者与 Innovus 的拥塞数据联动,帮助工程师在 PPA 之间找到平衡点。
需要特别强调的是,拥塞优化不是“布线阶段才做的事”。一个在 Placement 阶段就存在严重 Overflow 的设计,到了 Routing 阶段几乎不可能自动收敛。因此,本课程后续章节将围绕“早发现、早干预、分层收敛”的主线展开:从拥塞度量与报告解读,到 Floorplan 通道规划、Placement 密度控制、CTS 后的拥塞修复,再到 Routing 阶段的迭代策略与 ECO 收敛,逐步建立一套可复用的拥塞收敛方法论。
最后需要建立的一个认知是:拥塞与收敛是一体两面。收敛不仅指时序收敛,也包括拥塞收敛、DRC 收敛和功耗收敛。Cadence 工具链的价值,正在于把这些原本割裂的收敛目标放在同一套物理数据库和优化引擎中协同处理。理解工具链的定位,理解拥塞在流程中的演化规律,是后续所有实操与优化的起点。