2. 时钟树基础概念与质量指标

时钟树综合(CTS)的目标不是把时钟“连起来”这么简单,而是要在延迟、偏斜、转换时间、功耗、面积等多个互相牵制的指标之间取得平衡。要判断一棵时钟树做得好不好,必须先建立一套可量化、可复现的评价体系。本节围绕六个核心指标展开:时钟偏斜(Skew)、时钟延迟(Latency)、插入延迟(Insertion Delay)、转换时间(Transition/Slew)、时钟不确定性(Uncertainty)以及时钟树功耗与面积,并说明它们如何共同构成后续优化的评价基准。

一、时钟延迟与插入延迟:先分清“从哪算到哪”

讨论延迟前必须先约定参照点,否则数值没有意义。在 Innovus 中通常区分两个概念:

  • 插入延迟(Insertion Delay):从时钟源点(clock source,通常是 CTS 的 root pin,如 clk 输入端口或 PLL 输出)到某个寄存器时钟引脚(sink pin)的路径延迟。它描述“时钟信号走了多远”。
  • 时钟延迟(Latency):常与插入延迟混用,但更严格地说,它指从时钟定义源(如 create_clock 的源点)到 sink 的累计延迟,包含源端到 root 的延迟。工程上若源点即 root,两者数值一致。

插入延迟本身没有绝对的好坏,关键是各 sink 之间是否一致。假设某设计有 4 个 sink,插入延迟分别为 0.82 ns、0.85 ns、0.84 ns、0.86 ns,则最大最小差为 0.04 ns,这就是偏斜的来源。若整体延迟偏大(例如 1.5 ns),会压缩建立时间余量,因为数据路径要在下一个时钟沿到来前完成,而时钟沿被推迟了。

约定:本文所有延迟均以“时钟源点为起点、sink 引脚为终点”,正值表示信号传播耗时;偏斜定义为同一时钟域内最大插入延迟与最小插入延迟之差(max−min),全文与图示保持一致。

二、时钟偏斜:CTS 最核心的质量指标

时钟偏斜(Skew)指同一时钟域内不同 sink 之间时钟到达时间的差异。它直接决定时序余量:

Setup slack ≈ (T_clk + skew_capture - skew_launch) - T_data - T_setup - uncertainty
Hold  slack ≈ T_data + skew_launch - skew_capture - T_hold - uncertainty

可见偏斜既可能帮助也可能伤害时序,因此 CTS 追求的是受控的、可预测的偏斜,而非盲目追求零偏斜。实际项目中常按域设定目标,例如全局 skew 目标 50 ps,关键域 30 ps。评估时通常看三个量:全局最大偏斜、各时钟域内部偏斜、以及跨域(如分频时钟之间)的偏斜。

三、转换时间:被低估的“隐形指标”

转换时间(Transition,也称 Slew)描述时钟信号边沿从低到高或从高到低的过渡快慢,通常以 10%–90% 或 20%–80% 电压区间测量。它影响三件事:

  • sink 引脚处 slew 过大会增加寄存器时钟引脚的延迟不确定性,间接放大偏斜;
  • slew 与驱动能力、负载电容相关,是判断是否需要插入 buffer 的依据;
  • slew 恶化会增大短路功耗。

Innovus 中常用 set_clock_transition 设定目标,CTS 后通过 report_clock_tree -slew 检查各 sink 的实际转换时间。经验上,若某 sink slew 超过目标值 1.5 倍,应视为需要优化的节点。

四、时钟不确定性:为抖动和余量留出空间

时钟不确定性(Uncertainty)是在时序分析中人为加入的余量,用于覆盖 PLL 抖动、时钟源抖动、OCV 等无法精确建模的因素。它通过 set_clock_uncertainty 设置,分为 setup 与 hold 两类。不确定性设得越大,时序越难收敛;设得太小则可能掩盖真实风险。CTS 阶段通常先沿用前端设定,待时钟树稳定后再评估是否可收紧。

五、功耗与面积:CTS 的代价

时钟树是芯片中翻转率最高的网络之一,其功耗可占动态功耗的 20%–40%。功耗主要来自三部分:

  • 时钟缓冲器/反相器的开关功耗:与 buffer 数量、尺寸、翻转率成正比;
  • 时钟线网的充放电功耗:与线长、负载电容、电压平方成正比;
  • 短路功耗:slew 越慢越显著。

面积则体现为 CTS 插入的 buffer/inverter 数量与总面积。功耗与面积往往与偏斜目标冲突:要压低偏斜,常需更多 buffer 和更对称的拓扑,代价是功耗和面积上升。因此评价体系必须把“偏斜达标”与“功耗面积可接受”放在一起看。

时钟树质量指标评价体系 源点 → 时钟树 → sink:延迟/偏斜/转换时间/不确定性/功耗面积 时钟源 clk / PLL root pin 时钟树综合 buffer / inverter 拓扑平衡 线长匹配 CTS engine Sink A 延迟 0.82 ns Sink B 延迟 0.86 ns Sink C 延迟 0.84 ns Skew = 0.86 − 0.82 = 0.04 ns 评价指标面板 插入延迟 源→sink 路径 目标 ≤ 1.0 ns 时钟偏斜 max − min 目标 ≤ 50 ps 转换时间 slew / transition 目标 ≤ 0.15 ns 不确定性 jitter + OCV setup/hold 余量 功耗 buffer + 线网 占动态 20%–40% 面积 buffer 数量 与偏斜权衡 偏斜↓ 功耗↑

六、把六个指标串成评价体系

单独看任何一个指标都不足以判断时钟树质量。合理的做法是建立一张“指标—目标—检查命令—判定标准”的对照表,在 CTS 前后各评估一次。下表给出一个示例(数值为教学假设,非实测):

指标示例目标检查方式判定标准
插入延迟≤ 1.0 nsreport_clock_tree -summary各 sink 延迟分布集中,无异常长路径
时钟偏斜全局 ≤ 50 ps,关键域 ≤ 30 psreport_clock_tree -skewmax−min 达标,跨域偏斜单独确认
转换时间≤ 0.15 nsreport_clock_tree -slew无 sink 超过目标 1.5 倍
不确定性setup 0.10 ns / hold 0.05 nsreport_timing 中 uncertainty 项与前端设定一致,收敛后可评估收紧
功耗时钟网络功耗占比 ≤ 30%report_power -clock_network与 CTS 前对比,增量可接受
面积buffer 面积增量 ≤ 5%report_area / report_clock_tree无冗余 buffer,层级合理

需要强调的是,这些指标之间存在明确的耦合关系。压低偏斜通常需要增加 buffer 和对称布线,功耗与面积随之上升;放宽转换时间目标可以减少 buffer,但 slew 恶化会放大延迟不确定性。因此后续章节中的每一项优化动作,都应回到这张评价表上判断“收益是否值得代价”。

常见误区:只盯 skew 数值而忽略插入延迟总量。若整体延迟过大,即使 skew 很小,setup 余量仍可能不足。评价时应同时看“绝对延迟水平”和“相对差异”两个维度。

建立评价体系后,CTS 的每一步优化都有了统一的度量语言:偏斜回答“对齐得如何”,插入延迟回答“走了多远”,转换时间回答“边沿质量如何”,不确定性回答“留了多少安全余量”,功耗与面积回答“付出了多少代价”。这六个维度共同构成后续时钟树综合与优化的判断基准。