CTS 时钟树综合是什么?为什么要平衡时钟树?
更新时间:2026-09-21。问题驱动短答页。skew/jitter 见 jitter vs skew,实现流程见 Innovus 流程、布局布线入门,门控时钟见 clock gating。
一句话回答
时钟是所有触发器共用的时间基准,如果时钟到达各个触发器的时间不一致(clock skew),本该同时发生的边沿有先有后,就会吃掉建立/保持裕量、严重时直接功能错误。CTS(Clock Tree Synthesis)是物理实现阶段由工具插入一系列缓冲器/反相器,把从时钟根(PLL/引脚)到成千上万个触发器时钟端的网络组织成平衡的树形(常见 H 树、X 树、脊骨或网格),使各条路径延迟尽量相等、边沿转换时间(slew)受控,并把这棵树的缓冲器插入前后的延迟纳入静态时序分析。除了平衡,CTS 还要兼顾时钟网功耗(芯片动态功耗的大头)、门控时钟单元插入和 OCV 降额。
为什么不能随便拉一根线
- 一根长线挂很多引脚:电容巨大、边沿变缓(slew 差),远端到达晚、近端到达早 → skew 大。
- 大偏斜让“同时沿”失效:数据从一个触发器到另一个的可用时间被 skew 压缩,hold 检查也可能失败,见 建立/保持。
- 时钟网每个周期都翻转、负载极大,不经缓冲会导致巨大动态功耗和 EM 问题。
CTS 做的事
- 读时钟根、sink、时钟约束(generated clock、uncertainty、latency),见 SDC 时钟。
- 插入多级 buffer/inverter,平衡各 sink 的插入延迟(insertion delay),目标 skew 最小、slew 满足规则。
- 插入/摆放**集成门控单元(ICG)**以关断空闲时钟,见 clock gating。
- 考虑 OCV/AOCV(片上变异,不同路径快慢不同)多留余量,见 OCV。
- 布线后回写真实时钟延迟,重新做 setup/hold 收敛,见 静态时序分析。
useful skew(有用偏斜)
- 不必所有路径严格零偏斜:故意让接收端时钟稍晚/稍早,可“借时间”改善 setup(代价是相邻路径更紧)。
- 工具在约束允许时做有用偏斜优化,但必须保证 hold 仍满足、且不跨不同功能的时钟域乱借。
常见坑
- CTS 前用“理想时钟”看时序很绿,CTS 后真实延迟插入出现大量违例。
- 漏定义 generated clock/时钟关系,CTS 把不该一起平衡的域混成一棵树。
- 忽略时钟网功耗与 EM,缓冲器/线宽选择不当。
- 门控单元放置太靠叶端或使能时序没对齐,产生毛刺。
总结
CTS 在物理实现时插入缓冲器/反相器,把从时钟根到海量触发器的网络构建成到达延迟尽量相等、slew 受控的平衡树,以消除过大的 clock skew、保证建立保持时序并管理这张“每周期翻转、功耗占大头”的时钟网;它要结合 SDC 时钟约束、ICG 门控插入和 OCV 降额,CTS 后用真实传播延迟重做 STA,并可在受控前提下用 useful skew 借时间。