时序余量 Slack

概念解析

定义与起源

术语定义:时序余量(Slack)是STA中最核心的指标——它告诉你一条时序路径"有多紧张"。Setup slack = 数据要求到达时间 - 数据实际到达时间。正slack = 时序满足,有余量。负slack = violation,需要修复。零slack = 刚好满足,但工艺变异可能让硅片上变负。

Slack是一把尺子——度量你的设计离fail有多近。WNS(Worst Negative Slack)=全芯片最差的那条violation路径。TNS(Total Negative Slack)=所有violation的slack之和——告诉你总violation严重程度。

核心要义

第一,Setup slack和Hold slack是两种完全不同的度量。 Setup slack检查数据是否"太快到"——数据必须在时钟沿之前稳定下来(建立时间)。正slack=数据及时到达。Hold slack检查数据是否"太慢走"——数据必须在时钟沿之后保持稳定(保持时间)。正slack=数据没有太快消失。修Setup=加快数据路径。修Hold=减慢数据路径。两者优化方向相反。

第二,Slack的多个来源需要不同修复策略。 路径太长(逻辑级数多)→减少逻辑级数或增大驱动。时钟偏斜大→调整时钟树。约束过紧(不合理的延迟约束)→松约束。IR Drop导致局部延迟增大→优化电源网格。找到slack的root cause比修slack本身更重要。

第三,Slack直方图(Slack Histogram)比WNS/TNS更有信息量。 WNS只看最差的一条。直方图展示所有路径的slack分布——如果大部分路径slack>100ps但少数几条<0ps→集中修那几条。如果slack分布整体偏负→需要架构级优化而不是local ECO。

实践应用

* WNS告诉你最紧迫的问题:先修WNS路径——它决定芯片能跑的最高频率。 * TNS告诉你问题的规模:TNS巨大意味着有大量中等violation——需要批量修复策略而非逐条修复。 * Slack Histogram是signoff必备:直方图的形状比单个数字更有价值——偏态分布vs正态分布→不同的优化策略。

实战案例

- 某CPU的WNS追击战:WNS从-200ps开始——修第一轮→-120ps(修了最长的combinational path)。第二轮→-50ps(调整CTS skew)。第三轮→-20ps(插入LVT cell)。第四轮→+5ps(松了一条over-constrained path)。四轮ECO——WNS从负到正。 - TNS爆炸的根因:某GPU的TNS从-50ns跳到-300ns。根因是一条clock gating使能信号的hold violation→影响了所有被它门控的寄存器。修正一条hold violation→TNS跳回-60ns。 - Slack直方图发现了隐藏bug:某SoC的slack分布有两个峰——正常的在+50ps附近,异常的在-30ps附近。异常峰的路径全部经过了同一个PLL生成的时钟——那个PLL的时序模型有bug——修了模型后异常峰消失。

原话引用

> "Slack is the universal language of timing. Every timing engineer speaks it. Every timing problem is diagnosed in it."—— STA工程师, 内部培训 > "WNS tells you where to start. TNS tells you when to stop."—— SNUG San Jose 2017 > "正slack是你的朋友——但太多正slack是你的敌人(过度设计)。零slack是工艺变异中的赌注。"—— PrimeTime 用户指南, 2020

常见误区

误区一:WNS=0就万事大吉。 WNS=0意味着所有路径在STA模型下刚好满足。但STA模型有5-10%的误差——加上OCV/IR Drop/crosstalk影响——硅片上可能变负。需要正slack margin来吸收这些不确定性。

误区二:setup slack修好hold slack就不会坏。 修setup通常加快数据路径——这可能让hold slack变差(数据太快消失)。每次ECO后setup和hold都要重新检查。

误区三:TNS小=问题少。 TNS只是violation的幅度之和。如果只有1条路径violation=-200ps(TNS=-200ps)——比100条各-10ps(TNS=-1000ps)难修得多。TNS小不一定意味着容易修。

思想演变

- 1990s:Slack=setup only:hold slack靠插入buffer——在综合后被当作"简单问题"。STA只看最差路径。 - 2000s:OCV加入slack计算:片上变异让slack不再确定。AOCV用距离相关的降额因子。 - 2010s:POCV统计slack:slack从"固定值"变成"概率分布"。signoff看slack的σ而不仅仅是μ。 - 2020s:AI预测slack:ML在placement阶段预测最终slack——在修复成本最低的时候做优化。

相关论文

- 电压感知静态时序分析实现精确时序收敛 - DC-T与ICC之间相关性的系统分析 - 小延迟缺陷 ATPG 的用户实践经验 - 使用基于时序余量的动态桥接故障模型检测高阻桥接缺陷 - 基于Slack的动态桥接故障模型检测高阻桥接缺陷 - 层次化设计流程中的布局规划与版图优化:案例研究 - 综合与布局相关性:DC-Topography是解决综合布局失配的圣杯吗? - 基于经验分析的跨电压PV收敛方法 - 使用经验分析的跨电压 PV 收敛 - 相信我,我是Design Compiler:综合行为与变化的Slack - 使用 PrimeTime 分布式多场景分析进行 ECO 保持时间修复 - 使用PrimeTime-VX进行变异感知的时序分析 - 使用PrimeTime进行快速时序ECO经验分享 - DC Explorer:用于早期设计探索的快速综合 - 接口时序约束的数学原理 - ICC2时序预算在大型层次化设计中的应用