速查手册
面试前扫一眼,或者做题时对照。所有公式与结论都与课程、题库保持一致。
① 核心公式
Setup Slack(建立时间裕量)
Arrival = T_launch + Tcq + Tcomb_max
Required = T_capture + Tclk − Tsetup − uncertainty
slack_setup = Required − Arrival
= (T_capture + Tclk − Tsetup − uncertainty)
− (T_launch + Tcq + Tcomb_max)
用 Tcomb_max(最慢路径)、慢角 ss。slack ≥ 0 满足。
Hold Slack(保持时间裕量)
Arrival = T_launch + Tcq + Tcomb_min
Required = T_capture + Thold
slack_hold = Arrival − Required
= (T_launch + Tcq + Tcomb_min)
− (T_capture + Thold)
用 Tcomb_min(最快路径)、快角 ff。注意 slack 方向与 setup 相反,且公式里没有 Tclk。
含偏斜的形式
令 Tskew = T_capture − T_launch
slack_setup = Tclk + Tskew − Tcq − Tcomb_max − Tsetup
slack_hold = Tcq + Tcomb_min − Tskew − Thold
同一个 Tskew 对两者的影响方向相反(零和)——这是 useful skew 的基础。
其它常用关系
f = 1 / T
总 latency = source latency + network latency
Tskew = 到达时间之差(相对量)
MTBF = e^(t_r/τ) / (T_0 × f_clk × f_data)
P_dynamic = α · C · V² · f
② 方向速记(最容易记反的地方)
| Setup | Hold | |
|---|---|---|
| 怕什么 | 数据到得太晚 | 数据到得太早 |
| 用哪条路径延迟 | Tcomb_max | Tcomb_min |
| 工艺角 | ss(慢)+ 低电压 | ff(快)+ 高电压 |
| 受 Tclk 影响 | 是 | 否 |
| derate 方向 | data late ×1.1,clock early ×0.9 | data early ×0.9,clock late ×1.1 |
| uncertainty 含 jitter | 含 | 同域 hold 不含(jitter 抵消) |
| 何时修 | CTS 之前 | CTS 之后、布线之后才算数 |
| 怎么修 | 让数据更快 | 让数据更慢 |
⚠️ 三句话防记反
① 降频能修 setup,完全不能修 hold。
② 在数据路径上加延迟 → setup 变差、hold 变好(永远相反)。
③ useful skew 修 setup 是延后 capture 时钟;修 hold 是延后 launch 时钟。
③ Clock Uncertainty 组成
| 阶段 | Setup | Hold |
|---|---|---|
| pre-CTS | jitter + margin + skew | margin + skew |
| post-CTS | jitter + margin | margin(很多流程设为 0) |
典型值:pre-CTS setup ≈ 0.1–0.2 ns;post-CTS 可降至 0.05–0.1 ns。margin 是流程选择,不是物理量。
CTS 后必须把 uncertainty 调小,否则白白浪费裕量。
④ 时序约束优先级(高 → 低)
Timing Exception Priority
1. set_case_analysis ← 最高,直接改变电路拓扑
2. set_false_path
3. set_max_delay / set_min_delay
4. set_multicycle_path
5. 默认单周期检查 ← 最低
口诀:case > false > max/min > multicycle > 默认。
🚫 multicycle 必须配对
set_multicycle_path N -setup 必须配 set_multicycle_path (N−1) -hold。
只设 setup 会让 hold 检查被意外推到第 N 个沿,要求数据保持 N 个周期 → 大量莫名其妙的 hold 违例。
⑤ CTS 检查清单
CTS 之前(六项)
- 布局完成且合法
- 电源地已预布线(PG pre-routed)
- 预估拥塞可接受
- 预估时序可接受(setup)
- 无 max transition / cap 违例
- 高扇出网络(HFNS)已处理
CTS 之后(五项)
- Skew report
- Clock tree report(级数、buffer 数、latency)
- Timing report(setup / hold)
- Power & area
- 时钟树自身 DRC
💡 CTS 三大目标(互相冲突)
最小化 skew、最小化 insertion delay、最小化 功耗。 三者是 trade-off 关系,不可能同时最优。答题时一定要补上这一句。
⑥ 术语中英对照
| 中文 | 英文 | 一句话 |
|---|---|---|
| 建立时间 | Setup Time | 时钟沿前数据需稳定的时间 |
| 保持时间 | Hold Time | 时钟沿后数据需稳定的时间 |
| 恢复时间 | Recovery Time | 异步复位释放相对时钟沿的要求(类比 setup) |
| 移除时间 | Removal Time | 异步复位释放后的保持要求(类比 hold) |
| 时钟偏斜 | Clock Skew | 两点到达时间之差(相对量) |
| 时钟延迟 | Clock Latency | 单点的绝对到达时间 |
| 源延迟 | Source Latency | 时钟源 → 时钟定义点 |
| 网络延迟 | Network Latency | 定义点 → 触发器时钟端(= 时钟树延迟) |
| 插入延迟 | Insertion Delay | 时钟树本身引入的延迟 |
| 抖动 | Jitter | 同一位置每个周期边沿位置的漂移 |
| 不确定性 | Uncertainty | jitter + margin(+ skew,CTS 前) |
| 有用偏斜 | Useful Skew | 故意制造 skew 搬运裕量(可修 setup 和 hold) |
| 时间借用 | Time Borrowing | 靠 latch 透明窗口借下一个周期的时间 |
| 片上变异 | OCV | 同芯片不同位置的延迟差异 |
| 先进 OCV | AOCV | derate 随级数/距离变化(查表) |
| 参数化 OCV | POCV / SOCV | 延迟建模为分布,按 ±3σ 计算,σ 用 RSS 合成 |
| 共同路径悲观消除 | CRPR / CPPR | 把共同段被重复降额的悲观度加回来 |
| 伪路径 | False Path | 结构存在但功能上无法敏化的路径 |
| 多周期路径 | Multicycle Path | 放宽到 N 个周期(setup N 配 hold N−1) |
| 串扰 | Crosstalk | 耦合电容导致延迟偏移(delta delay)或毛刺(glitch) |
| 非默认规则 | NDR | 加宽/加间距/屏蔽,降低 EM 和 SI 风险 |
| 多角多模 | MCMM | 多工艺角 × 多工作模式的分析矩阵 |
| 时钟门控 | Clock Gating | 用 ICG 关掉空闲模块的时钟翻转省动态功耗 |
| 亚稳态 | Metastability | 采样窗口内数据变化导致的中间不确定态 |
| 平均无故障时间 | MTBF | 衡量同步器可靠性的指标 |
| 最差负裕量 | WNS | 最差路径差多少 |
| 总负裕量 | TNS | 所有违例路径 slack 之和 |
| 工程变更 | ECO | 后期小范围修改(metal-only 成本最低) |
⑦ 高频易错点(网上流传的错误说法)
🚫 这些说法是错的
- "false path 和功能无关" → 错。恰恰相反,false path 的本质就是功能上不可能被敏化(或被有意排除的异步 CDC)。
- "useful skew 只能修 setup" → 错。延后 capture 时钟利于 setup,延后 launch 时钟利于 hold。
- "降频可以修 setup 违例" → 这是改规格,不是 PD 修复手段。产品性能降级不叫修复。
- "插 buffer 一定能改善 setup" → 有条件。只有省下的线延迟 > 新增的 cell 延迟时才有效,且应靠近 capture 端。
- "clock buffer 的 rise/fall time 完全相同" → 不准确。被设计成对称的是 rise/fall delay(保证占空比),transition time 仍可能不同。
- "7 层金属时钟固定走 M4/M5" → 是 PDK/层栈/floorplan 相关的。只有"电源走顶层金属"比较通用。
- "zero skew 不可能因为路径长度不同" → 理由站不住。H-tree 可以把长度做等;做不到是因为 OCV/PVT/负载与噪声不匹配。
- "clock gating 是修剪 clock tree" → 不准确。它不改变树的拓扑,只是关闭空闲模块的时钟翻转。
- "SDC 包含功耗约束" → 错。功耗意图属于 UPF/CPF;SDC 管 timing / DRC / area / 例外。
⑧ 延伸阅读
- OpenSTA — 开源 STA 引擎,命令与报告格式参考价值高
- VLSIDA/chip-tutorials — STA / 约束 / 报告 / 多角分析实操教程
- OpenROAD — 开源 RTL-to-GDS 流程,含 TritonCTS
- OpenSTA 命令手册 (PDF)
🎯 怎么用这份手册
做题卡住时对照 ①②;面试前扫 ②④⑦。真正的理解来自课程里的推导过程—— 手册只负责在你已经懂了之后帮你快速回忆。