时钟树综合 CTS:让一个时钟沿同时抵达百万触发器
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」**进阶层(intermediate)数字逻辑第六十五篇。建立保持时间分析时假设所有触发器在同一刻看到时钟沿——真实芯片里时钟要从 PLL 经导线走到每个触发器,路径长短差异造成到达时刻不同。这一篇讲后端怎么用时钟树综合(CTS)**把这种差异压到极小。
本文要回答的问题
- 时钟到不同触发器的时间差(skew)从哪来?为什么会导致保持时间违规甚至功能错?
- CTS 怎么靠插缓冲器、平衡路径长度做到「同时到达」?H 树/网格什么区别?
- 插入延迟 latency、不确定度 uncertainty、抖动在时序里怎么用?
- 什么是「有用偏斜(useful skew)」?故意让时钟晚到一点反而能修时序?
- ICG 时钟门控怎么挂到树上?为什么时钟网络吃掉三到一半芯片功耗?
一、偏斜:同一个沿,到达有先有后
时钟源到 FF1 和 FF2 的导线长度、负载、经过的缓冲不同,两端看到沿的时刻差就是时钟偏斜 skew = t_clk2 − t_clk1。后果体现在两类时序检查上:
- 建立时间(setup):要求数据在下一个捕获沿之前稳定。若捕获 FF 的时钟偏巧早到(负 skew),留给数据的时间变短,setup 裕量被吃掉;
- 保持时间(hold):要求数据在捕获沿之后还保持一会儿。若捕获 FF 的时钟晚到(正 skew),新数据可能在老沿真正到达前就冲进第二级——hold 违规会导致同一拍数据连穿两级,是功能性错误且无法靠降频解决,必须修。
在时序收敛中,skew 因此被当成时钟路径的一等公民管理,而不是普通连线延迟。
二、构建平衡树:根、主干、叶 + 逐级缓冲
CTS 在布局布线阶段,从一个时钟根(PLL/分频器/无毛刺 mux输出)出发,自动插入多级时钟缓冲器/反相器,把网络组织成对称结构,使得到每个叶节点(触发器时钟脚)的缓冲级数和线长近似相等,从而延迟近似相等:
root (PLL)
┌────┴────┐
buf buf ← 主干层(global)
┌─┴─┐ ┌─┴─┐
buf buf buf buf ← 中间层
┌─┴┐ ┌─┴┐ ┌─┴┐ ...
FF FF FF FF FF FF ← 叶(leaf)触发器常见拓扑:H 树/X 树(几何对称、理论上等长,适合规则阵列)、平衡缓冲树(ctree)(按实际负载和位置聚类、工程最常用)、时钟网格 mesh(用低阻金属网格强驱动整片,skew 极小但功耗大,高性能 CPU/GPU 用)。时钟走线用高层低电阻金属、双倍间距、避开 SI 串扰,并设 don't-touch、走专用 clock net,禁止综合器当普通信号优化。
三、latency、skew、uncertainty 在约束里的含义
- 插入延迟(clock latency):时钟源到某个触发器的总延迟,分源延迟(PLL 到芯片根)和网络延迟(CTS 树);
- 全局/局部偏斜(global/local skew):任意两叶 vs 有时序关系两叶的到达时刻差,CTS 目标是把相关路径的 local skew 压到几十~几百 ps;
- 不确定度(uncertainty)/抖动(jitter):时序分析时人为加在时钟沿上的悲观裕量,涵盖 PLL 抖动、跨周期抖动和尚未知的偏斜。Setup 检查用「到达更晚、捕获更早」的方向加不确定度,hold 检查关注同周期沿、抖动影响小但 skew 更致命。
四、有用偏斜:让时钟「故意晚到」来修时序
skew 不总是敌人。若某条关键路径 data 太慢(setup 紧张)而后级很闲,可让捕获触发器的时钟刻意晚一点到(在它前面多插一点延迟),等于多借给它近一个周期的时间——这叫有用偏斜(useful skew / intentional skew)。代价是可能挤压前后相邻路径,需要工具整体权衡,且不能影响 hold。现代 CTS 在最小化偏斜之外,会做「skew scheduling/budgeting」,主动分配偏斜辅助时序收敛;但跨时钟域、走异步桥的两端不应依赖共享时钟树的相位关系。
五、时钟功耗与门控在树上的位置
时钟网络每拍都翻转、负载巨大且缓冲成树,占芯片动态功耗 30%~50% 很常见,主要手段有两类:
- 时钟门控 ICG:在模块空闲时关掉时钟分支(见时钟使能、低功耗)。CTS 时把 ICG 当作树上的「可关断的再生成点(clock gate enable pin)」,使门控下游整片子树一起停摆、省掉它们的翻转,门控单元用负沿锁存确保无毛刺;
- 进一步是电源门控(连漏电一起关)和 DVFS(配合 PLL 动态降频降压)。
CTS 还要做多模多角(MMMC):在快/慢工艺角、不同电压温度下分别保证 skew 最小、latency 可接受,并兼顾功能模式和 scan/测试模式(测试时钟可能从边界扫描/JTAG进入)。它处在「综合 → 布局 → CTS → 布线 → 时序收敛」流程的中枢,时钟树质量基本决定芯片最高能跑的频率。
与现有篇目的衔接
总结
一句话总结:时钟从 PLL 经长度不一的导线抵达数十万触发器,到达时刻之差即时钟偏斜,捕获沿早到会吃掉建立裕量、捕获沿晚到会造成保持违规使数据同一拍连穿两级(hold 违规无法靠降频解决、必须修);CTS 在后端布局布线阶段从时钟根起插入多级缓冲/反相器,用 H/X 树、聚类平衡树或低阻网格等对称拓扑,让每个叶节点的缓冲级数和线长近似相等从而延迟近似相等,时钟走高层低阻金属、专用网络并设 don't-touch;时序签核用插入延迟、全局/局部偏斜和涵盖 PLL 抖动的时钟不确定度来建模;偏斜也可被主动利用——让关键路径捕获触发器时钟故意晚到的有用偏斜能借出近一个周期修 setup,但需整体权衡且不用于异步跨域;时钟树每拍全翻转、负载巨大,常占动态功耗三到一半,因此把 ICG 作为树上可关断再生成点让整片子树停摆是主要省电手段,进一步才是电源门控和 DVFS;CTS 还要在多工艺角、功能与扫描多模式下同时平衡,它是综合到布线流程的中枢,时钟树质量基本决定芯片的最高频率。