综合 QoR:先怀疑约束,再读路径,最后才看汇总数字(C3)
综合算法原理在 EDA 算法,脚本与开关在 C1 DC/Genus,约束本身怎么写在 C2;本篇只回答一件事:综合跑完,报告摊在面前,按什么顺序读、看到数字后怎么行动。设计侧概念见 时序收敛基本手法。
一、读报告的正确顺序(多数人读反了)
新手直接盯着 WNS 一个数字看正负;正确顺序是:

一张「全绿」报告,若同时存在 no_clock 寄存器或未约束端点,那绿色是假的——工具根本没优化那些路径。所以 report_constraint -all_violators 与未约束/失效例外检查永远排在第一步。
二、时序报告:WNS/TNS 到底说什么
| 指标 | 含义 | 怎么用 |
|---|---|---|
| WNS(Worst Negative Slack) | 最差一条路径的 setup 余量(正=满足) | 决定能不能过;为负先攻这一条 |
| TNS(Total Negative Slack) | 所有负余量路径之和 | 决定坑有多大;WNS 小但 TNS 大 = 面性问题 |
| WHS / THS | hold 最差/总负余量 | 综合阶段 hold 常靠后端插延迟,先进节点不能完全忽略 |
| 违例路径条数(Endpoint 数) | 有多少终点违规 | 判断是「个别尖峰」还是「成片塌方」 |
WNS 与 TNS 要一起看:WNS=−0.05ns 但只有 1 条,是尖峰,插一级流水或局部调尺寸即可;WNS=−0.05 但 TNS=−2000ns、上万条违例,是系统性问题(时钟定太狠、某模块整体逻辑过深),加 buffer 救不回来,得改微架构或降频。
打开最差路径后重点看三段:
- 数据路径分量:逻辑级数(cell delay 串了多少级)、net delay 占比(综合阶段 net 是估的,占比异常高提示绕线/扇出问题);
- 时钟分量:launch/capture 时钟延迟与不确定性是否合理;
- 路径两端:startpoint/endpoint 是否合理——一条从静态配置寄存器到数据通路的违例,往往是漏了 false/multicycle(回到 C2 例外评审),而不是真的时序不够。
三、面积报告:分清结构性与冗余
report_area 要按层次看,而不是只看总数:
- 组合逻辑 vs 时序单元 vs 黑盒(SRAM/IP):黑盒面积通常占大头且不可优化,先剔除再谈逻辑面积;
- 异常膨胀的模块:某个模块面积远超 RTL 规模直觉,常见原因是运算符没复用(多个乘法器被综合成独立实例)、巨型 case/mux 推成庞大译码逻辑、数组没共享;
- 缓冲器占比过高:通常是过约束或扇出失控逼工具插出来的,治标要降扇出/改约束而非继续压。
四、功耗报告:没有真实活动率就别信数字
综合阶段 report_power 的内部/开关功耗依赖信号翻转率。不给活动率,工具用默认翻转率(常是 0.1、0.2 这种拍脑袋值),出来的功耗只用于相对比较,不能当数。
正确做法是反标真实仿真活动:RTL/门级仿真产出 VCD/SAIF 再算功耗,口径见 F6 活动数据与 DPA。「综合功耗超标」先确认翻转率来源,否则可能在为一个不存在的问题过度优化面积。
五、设计规则违例(DRC):max_cap / max_fanout / transition
这里的 DRC 不是物理设计规则,而是电气设计规则约束,综合必须清零或受控:
| 违例 | 含义 | 后果 |
|---|---|---|
| max_capacitance | 节点总电容超库上限 | 边沿变慢、功耗增、潜在可靠性问题 |
| max_fanout | 驱动扇出超限 | 延迟与边沿恶化,易成片出现 |
| max_transition | 信号转换时间超限 | 直接拖累建立/保持时序 |
时序可以留少量负余量到后端救,电气 DRC 一般要求综合就清零——它们会在布线后被寄生进一步放大,越往后代价越高。
六、达不到目标:先改什么的决策树
1) 约束对不对? → 漏例外/错预算先修约束(最廉价)
2) 个别尖峰? → 调尺寸/插 buffer/关键单元换快档(工具增量优化)
3) 某模块逻辑过深?→ RTL 打拍(retiming/流水)、拆分长组合链、重排关键运算
4) 面性塌方? → 微架构/时钟频率/电压预算层面谈,不是综合能救的
5) 网延迟主导? → 开 topographical + 早期 floorplan(见 C1/D2)最忌讳在第 1 步没做时直接堆第 2 步:用一堆 buffer 和大尺寸单元去追一条本不该存在的关键路径,面积功耗双输,后端还更难绕。改完 RTL 或约束后走增量综合复用结果,并记得重跑 LEC 证明功能没变(呼应 X3 变更传播)。
相关与延伸
- 同线:C1 综合实操、C2 综合约束、D2 Floorplan。
- 数据与格式:F6 活动率、F3 Liberty、S2 交接。
- 设计侧:STA 报告解读、时序收敛。
总结
读综合 QoR 的铁律是先查约束完备性(无时钟/未约束/失效例外不排除,绿色就是假的),再让 WNS 配 TNS、违例条数分清「尖峰」还是「塌方」,并逐段看最差路径的数据/时钟分量与两端是否暴露漏约束;面积按层次剔黑盒找异常膨胀,功耗无真实 SAIF 不看绝对值,电气 DRC 必须当场清零;达不到目标按「修约束→局部调尺寸→RTL 打拍→谈架构频率→topo 估线」的顺序动手,而不是一上来就用 buffer 去追本不该存在的关键路径。