3. 静态时序分析基础:建立时间、保持时间、时钟抖动
静态时序分析,说白了就是检查你的芯片能不能跑在目标频率上。我刚开始做设计时总觉得这步可有可无,直到有一次流片回来芯片死活上不了高频……嗯,从那以后我再也不敢跳过 STA 了。
对于电源完整性工程师来说,时序分析不是我们的主业,但你必须懂。为什么?因为电源噪声最终会反映在时序上。你想想看,电压一掉,门延迟就变,时序裕量就缩水。所以,理解建立时间、保持时间和时钟抖动,是连接 PI 和时序的桥梁。
3.1 建立时间与保持时间
这两个概念是时序分析的基石。我见过不少工程师把建立时间和保持时间搞混,其实区分它们很简单:
- 建立时间(Setup Time): 数据在时钟有效沿之前必须保持稳定的最短时间。
- 保持时间(Hold Time): 数据在时钟有效沿之后必须保持稳定的最短时间。
你可以把寄存器想象成一个拍照的相机。时钟沿就是按下快门的瞬间。建立时间就是快门按下前,被拍的人不能动的那段时间;保持时间就是快门按下后,人还不能动的那段时间。动了,照片就糊了——数据就错了。
3.2 时序路径与裕量计算
一条典型的时序路径包含三个部分:发起寄存器(Launch Flip-Flop)、组合逻辑、捕获寄存器(Capture Flip-Flop)。时钟从同一个源头分叉到两个寄存器,这中间会有时钟偏斜(Clock Skew)。
建立时间检查的公式是这样的:
数据到达时间 = T_clk2q + T_comb + T_net
数据要求时间 = T_clk_period + T_skew - T_setup
建立时间裕量 = 数据要求时间 - 数据到达时间
保持时间检查的公式:
数据到达时间 = T_clk2q + T_comb + T_net
数据要求时间 = T_hold + T_skew
保持时间裕量 = 数据到达时间 - 数据要求时间
注意看,建立时间裕量里出现了时钟周期 T_clk_period,而保持时间裕量里没有。这意味着:
- 建立时间与频率强相关——频率越高,周期越短,裕量越小。
- 保持时间与频率无关——它只取决于路径本身的延迟和时钟偏斜。
我曾经遇到过一个案例,芯片在 500MHz 下功能正常,跑到 600MHz 就随机出错。查了半天,发现是一条长路径的建立时间裕量只剩 5ps。电压一波动,这 5ps 就没了。这就是 PI 和时序的交汇点。
3.3 时钟抖动
时钟抖动,就是时钟沿在时间轴上的不确定性。理想时钟的沿是精确的,但实际时钟总有抖动。抖动分为两种:
| 类型 | 定义 | 对时序的影响 |
|---|---|---|
| 随机抖动(Random Jitter) | 由热噪声、闪烁噪声等引起,呈高斯分布 | 长期累积,影响建立时间裕量 |
| 确定性抖动(Deterministic Jitter) | 由电源噪声、串扰、EMI 等引起,有界 | 周期性的,直接影响建立和保持时间 |
对于 PI 工程师来说,我们最关心的是确定性抖动中的电源噪声相关部分。当电源电压波动时,时钟缓冲器的延迟会变化,导致时钟沿的位置发生偏移。这个偏移就是抖动。
3.4 时序裕量与电源噪声的关系
电源噪声如何影响时序?我画了一张图来说明这个关系:
从这张图可以看得很清楚:电源噪声通过两条路径影响时序裕量。一条是数据路径,另一条是时钟路径。两条路径的延迟变化叠加在一起,最终决定了时序裕量还剩多少。
3.5 实际项目中的避坑指南
我在多个项目里踩过时序和 PI 相关的坑,总结几条经验:
- 不要只看典型条件。 我曾经只做了 TT(Typical-Typical) corner 的时序分析,结果芯片在高温低压下直接罢工。后来学乖了,必须跑 SS(Slow-Slow) corner 和 worst-case 电压。
- 时钟抖动要留够裕量。 很多工程师只留 10-20ps 的抖动裕量。但实际电源噪声引起的抖动可能达到 30-50ps。我建议至少留 10% 的时钟周期作为抖动裕量。
- 保持时间问题更难修。 建立时间不够可以降频,保持时间不够只能改设计。所以布局布线时,优先保证保持时间。
- PI 仿真要包含时序信息。 单纯的 IR Drop 分析不够,要把时序路径的延迟变化也仿真出来。现在有些工具已经支持 PI 和 STA 的联合仿真,值得用。
3.6 本章小结
静态时序分析不是 PI 工程师的主战场,但你必须能看懂。建立时间决定芯片能跑多快,保持时间决定芯片能不能跑起来,时钟抖动则是电源噪声和时序之间的桥梁。理解这三者的关系,你才能在设计阶段就预判电源噪声对芯片功能的影响,而不是等到流片回来再抓瞎。