时钟树综合:从理想时钟到真实时钟的惊险一跳(D3)
阶段流见 D1 Innovus,时钟概念设计侧见 时钟树综合 CTS;本篇专讲 CTS 工具与时钟树工程:树怎么建、skew/latency 怎么收、门控怎么插、useful skew 什么时候用、CTS 前后报告为什么变脸。黄金签核口径见 E1,降额见 E2。
一、CTS 在解决什么
CTS 之前工具默认理想时钟:所有触发器同一瞬间收到时钟,延迟为零。这显然不真实——时钟从 PLL/焊盘经缓冲树到达上千个触发器,每条分支长度、负载都不同。CTS 就是自动插入时钟缓冲/反相器,构建一棵让时钟同时到达各终点的网络。

| 量 | 定义 | 目标 |
|---|---|---|
| global skew | 任意两终点的到达时间差 | 尽量小(结构平衡) |
| useful skew | 有意让某终点时钟早/晚到以帮时序 | 受控、签核认可 |
| insertion latency | 时钟源到终点总延迟 | 可预测、不过大 |
| clock power | 时钟网络占芯片动态功耗常达 30%~50% | 靠门控与结构降 |
二、建树的输入:时钟规范必须先冻结
CTS 严格按 SDC 时钟约束建,这也是 C2 强调 generated clock 不能糊弄的原因:
- 时钟根与传播:CTS 后用
set_propagated_clock,让工具用真实树延迟替换set_clock_latency估值; - generated clock:分频/倍频/门控后的时钟关系必须正确,否则树会错源、CDC 也乱;
- skew/latency target:
set_clock_uncertainty、set_clock_groups(异步域之间切关系)、例外; - leaf pin 集合与排除项:哪些是真时钟终点、哪些是 don't-touch。
多时钟、时钟门控、分频链复杂的设计,CTS 前时钟规范评审不过,后面全是返工。
三、skew 收敛与 OCV、CRPR
理想上零 skew 最好,真实里工具平衡的是源延迟(插延迟匹配分支)+ 负载(按下游电容选缓冲尺寸)。先进节点必须考虑 OCV(片上变化):同一芯片上不同缓冲因工艺/电压/温度差异延迟不同,所以工具在建树和时序分析时对时钟路径加降额(见 E2)。
- 结构上靠 H-tree / mesh / 平衡树 + 低层时钟布线屏蔽减小固有 skew;
- 分析上 CRPR(Clock Reconvergence Pessimism Removal,时钟收敛悲观消除):launch 与 capture 共用一段时钟路径时,OCV 不能对同一段既加早到又加晚到的悲观量,否则重复扣减——PT/Tempus 自动去掉这部分,让 setup/hold 结果更准(设计侧 CPPR 同源)。
四、Clock Gating:省电与树结构的纠缠
时钟门控单元(ICG,integrated clock gate)在模块不工作时关掉时钟翻转,是降时钟动态功耗的主力。CTS 要处理门控的时钟侧时序与多级门控布局:
- 门控的 enable 信号必须满足相对时钟的建立/保持(glitch-free,见 无毛刺时钟切换),否则门控输出毛刺比不门控更危险;
- 门控单元在树上的位置决定关断粒度:门控越靠近根,一次关掉的叶子越多、省电越狠但灵活性差;靠近叶则细粒度但门控单元多。工具会做 ICG clone/merge 平衡;
- 多级门控的 enable 时序、电源域开关(retention/isolation)要与 UPF 对齐。
五、Useful skew:什么时候该「故意不平衡」
零 skew 服务的是「让所有时序路径都公平」。但当某条路径 setup 紧张、而它相邻的 capture 路径宽松时,可以有意把 capture 触发器的时钟调晚一点,等于多借给这条路径一个相位差——这就是 useful skew(useful/intentional skew)。
| zero skew | useful skew | |
|---|---|---|
| 思路 | 所有终点同时到 | 主动倾斜时钟救关键路径 |
| 好处 | 可预测、hold 好收 | 不插数据缓冲也能救 setup |
| 风险 | 可能牺牲极限频率 | 借的时间要从下游路径还,hold 更敏感,签核/多角必须全部认可 |
工程纪律:useful skew 必须是工具在多角签核下自动、可追溯地施加(set_useful_skew 类),而非手工改某条树;借出去的 skew 会沿流水线传播,要确认在最差角、带 OCV 时不引发新的 hold 违例。CTS 与签核工具的 useful skew 口径必须一致,否则「实现绿、签核红」。
六、为什么 CTS 前后时序报告整体变脸
CTS 前时钟是理想零延迟,CTS 后:
- 数据路径和时钟路径都带上了真实延迟与 OCV,setup/hold 全部按有 skew、有 latency 的时钟重算;
- hold 违例往往此时才大规模冒出来(理想时钟时 hold 普遍被乐观掩盖),需要插延迟单元修;
- 时钟缓冲本身增加了大量负载与功耗,拥塞地图也变化。
所以 CTS 后必须重新出全量 setup+hold 报告并重排队关键路径,不能沿用 CTS 前的结论。这也是 D5 P&R 内收敛「先 setup 后 hold、CTS 后再统一收」节奏的由来。
相关与延伸
- 同线:D1 Innovus、D2 Floorplan、E1 黄金 STA、E2 MMMC/OCV。
- 数据:S4 CTS/布线、F4 SDC。
- 设计侧:CTS 概念、OCV/AOCV/POCV、无毛刺时钟切换。
总结
CTS 是把理想时钟变成真实时钟的惊险一跳:先冻结时钟规范与 generated clock 关系、用 propagated clock 替换理想延迟,再用平衡树加低层屏蔽压 skew/latency 并在 OCV 下靠 CRPR 去掉重复悲观;clock gating 要保证 enable 无毛刺并在省电粒度与树结构间取舍,useful skew 只在多角签核自动可追溯地借用、并确认借来的时间不会在最差角引爆 hold;正因 CTS 后时钟带上真实 skew/latency/OCV,hold 会成片冒出、关键路径整体重排,必须重出全量报告而非沿用旧结论。