3. Cadence实现平台与数据准备
在 Innovus 与 Genus 的流程中,拥塞问题往往在数据准备阶段就已经埋下伏笔。工具本身不会凭空产生拥塞,它只是把库、网表、约束和物理信息按规则映射到版图上;如果输入数据不完整、不一致或精度不足,后续的布局布线就会在错误的前提下优化,最终表现为局部布线资源耗尽、绕线增长或时序无法收敛。因此,理解每个输入文件的作用、它们之间的依赖关系,以及拥塞分析依赖哪些视图和报告,是数字后端工程师必须掌握的基本功。
一、Genus 与 Innovus 的输入分工
Genus 属于综合阶段工具,它的输入以逻辑信息为主:RTL 代码、工艺库(.lib)、设计约束(SDC)、以及可选的物理引导信息。Genus 输出的是门级网表(.v)和综合后的约束文件。Innovus 属于物理实现阶段工具,它的输入除了网表与 SDC 之外,还必须包含物理库信息:LEF(Library Exchange Format)描述标准单元、宏单元和布线层的物理抽象,DEF(Design Exchange Format)描述设计的物理布局、引脚位置和布线轨道。两者共享同一套工艺库和约束语义,但 Innovus 对物理数据的完整性要求更高。
一个常见的误区是:综合阶段只关心时序和面积,物理信息可以等到布局时再补。实际上,Genus 在启用物理感知综合(Physical Synthesis)时,会读取 LEF 和部分 DEF 信息来估算线长和拥塞,如果此时 LEF 缺失或版本不匹配,综合出的网表可能在物理阶段出现严重的局部密度问题。因此,数据准备应从综合阶段就开始统一。
二、库文件与 LEF/DEF 的对应关系
工艺库通常包含以下几类文件:
- .lib:标准单元、宏单元的时序、功耗、面积信息,用于综合和时序分析。
- .lef:分为技术 LEF(层、通孔、布线规则)和单元 LEF(每个单元的引脚、边界、阻塞层)。
- .def:设计的物理描述,包括 die 区域、row、已放置的宏、引脚、电源地网络等。
- .gds/.oas:版图数据,用于最终流片验证,Innovus 在需要时读取。
LEF 与 .lib 必须来自同一工艺版本。如果 LEF 中某个单元的引脚位置与 .lib 中的时序弧不一致,工具可能无法正确建立时序图,导致优化方向错误。DEF 则分为输入 DEF 和输出 DEF:输入 DEF 通常来自 floorplan 阶段或前一个实现步骤,输出 DEF 是 Innovus 保存的当前物理状态。在拥塞分析中,DEF 中的 row 利用率、宏通道宽度、引脚密度是判断拥塞风险的重要依据。
三、网表与约束的输入要点
网表输入时,需要确认顶层模块名、端口顺序、电源地端口命名是否与库和 DEF 一致。Innovus 读取网表后,会先做逻辑与物理的绑定(bind),如果网表中例化的单元在 LEF 中找不到对应物理视图,工具会报 unplaced 或 unresolved 错误。约束方面,SDC 中的时钟定义、输入输出延迟、多周期路径、false path 必须与综合阶段保持一致。物理实现阶段还会额外关注:
- 时钟树目标(skew、latency、transition)是否已定义;
- 是否有 set_max_capacitance、set_max_transition 等设计规则约束;
- 是否有 set_dont_touch 或 set_density 等影响布局的约束。
如果 SDC 中缺少时钟定义,Innovus 的时序驱动布局将失去优化目标,工具可能只按线长最短布局,反而在局部形成高密度区域。因此,约束检查应在读入后立即执行 check_timing 和 report_clocks,确认时钟、约束覆盖率和未约束端点。
四、拥塞分析所需的关键视图与报告
拥塞分析不是单一命令,而是依赖多个视图和报告的综合判断。Innovus 中常用的视图包括:
- Floorplan 视图:观察宏单元通道、IO 位置、电源网格对布线资源的占用。
- Placement Density 视图:以热力图显示标准单元密度,高密度区域往往是拥塞前兆。
- Congestion Map:工具在全局布线后生成的拥塞图,通常以红、黄、绿表示 overflow 程度。
- Pin Density 视图:显示单元引脚密度,高引脚密度区域即使单元密度不高也可能拥塞。
- Routing Track 视图:查看布线轨道利用率,判断是否因轨道不足导致绕线。
报告方面,report_congestion 会给出每个 GCell 的 overflow 数值和总溢出量;report_design_statistics 提供单元面积、利用率、宏面积占比;report_timing 结合拥塞区域查看时序违例是否由绕线引起。一个实用的判断顺序是:先看全局拥塞图定位热点,再用密度和引脚密度视图分析成因,最后用时序报告确认拥塞是否已影响关键路径。
五、实操中的检查清单与常见问题
在 Innovus 中完成数据读入后,建议按以下顺序执行检查,而不是直接进入布局:
# 1. 读入网表与库
read_netlist top.v
read_physical -lef tech.lef cell.lef
read_def floorplan.def
read_sdc top.sdc
# 2. 检查时序约束
check_timing
report_clocks
report_analysis_coverage
# 3. 检查物理绑定
check_design -physical
verify_physical -report
# 4. 查看设计统计
report_design_statistics
report_congestion -hotspot
# 5. 生成拥塞视图
globalRoute
report_congestion -overflow
常见问题包括:LEF 中缺少某个宏的引脚定义,导致该宏在布局时被当作黑盒;DEF 中的 row 方向与 LEF 中单元方向不一致,造成单元无法合法放置;SDC 中时钟名称与网表端口不匹配,导致时钟树综合时找不到根节点。这些问题在拥塞分析中会表现为局部 overflow 异常升高,但根源并不在布线算法,而在数据准备。
拥塞分析的关键视图和报告并不是孤立的。Floorplan 视图帮助判断宏通道是否足够,Density 视图帮助定位标准单元过密区域,Congestion Map 给出全局布线后的 overflow 分布,Pin Density 视图则解释为什么某些区域单元不多却依然拥塞。把这些视图与 report_congestion 的数值结合,才能从“看到红色”推进到“知道为什么红、下一步改什么”。数据准备做得越扎实,后续的拥塞优化就越有针对性,收敛周期也越可控。