CDC跨时钟域处理(2)时钟属性
时钟(CLK)的性质与参数详解
一、基本参数
1. 频率(Frequency, f)
- 含义:每秒振荡的次数
- 单位:Hz(赫兹),常用 MHz、GHz
- 公式:f = 1 / T
- 例子:100MHz = 每秒 1 亿次
2. 周期(Period, T)
- 含义:相邻两个上升沿(或下降沿)的时间间隔
- 单位:秒(s),常用 ns、ps
- STA 中最核心的约束:set_clock_period
3. 占空比(Duty Cycle)
- 含义:高电平时间占整个周期的比例
- 公式:Duty = T_high / T_period × 100%
- 理想值:50%(高低电平各一半)
- 为什么重要:
- 双边沿采样(DDR)必须保证占空比准确
- 时钟分频、门控时钟会影响占空比
- 占空比太差会导致 setup/hold 不平衡
4. 相位(Phase)
- 含义:两个时钟之间的时间偏移
- 单位:角度(度)或时间(ps)
- 例子:同频反相的两个时钟,相位差 180°
二、时序偏差特性
5. 时钟延迟(Clock Latency)
- 含义:从时钟源点(PLL 输出)到触发器时钟端的总延迟
- 分为两部分:
- Source Latency:时钟源到时钟树根的延迟
- Network Latency:时钟树根到触发器的延迟(时钟树本身)
- SDC 约束:set_clock_latency
理想状态下走线延迟为0,但是现实并不理想,clk从时钟源传递到触发器都是需要时间的。
6. 时钟偏斜(Clock Skew)
- 含义:同一个时钟,到达不同触发器的时间差
- 产生原因:时钟树路径长度不同、负载不同
- 对时序的影响:
- 正 skew(捕获时钟晚到):有利于 setup,恶化 hold
- 负 skew(捕获时钟早到):恶化 setup,有利于 hold
- 时钟树综合(CTS)的目标:把 skew 控制在可接受范围内
在静态时序分析题目中,有时候两个触发器的延迟之差就是clk_skew:
clk到reg1的延迟为Tclk1,clk到reg2的延迟为Tclk2,clk_skew = Tclk2 - Tclk1;
7. 时钟抖动(Clock Jitter)
- 含义:时钟沿实际位置和理想位置的偏差
- 本质:时钟周期的短期不确定性
- 产生原因:PLL 噪声、电源噪声、串扰、热噪声
- 对时序的影响:相当于 setup 和 hold 的余量都减少了
- SDC 约束:set_clock_uncertainty
时钟的短期不确定性,可能早了也可能是迟了,不管早晚反正就是出问题了,所以无论是setup还是hold都会被恶化,对于两个指标的slack都是减少。
| Skew | Jitter | |
|---|---|---|
| 本质 | 空间上的偏差(不同位置) | 时间上的偏差(不同时刻) |
| 是否固定 | 静态的,每个位置固定 | 动态的,随机变化 |
| 谁解决 | 时钟树综合 CTS | PLL 设计、电源设计 |
| STA 中怎么处理 | 算在路径里 | 用 uncertainty 预留余量 |
三、时钟域特性
7. 同步时钟 vs 异步时钟
- 同步时钟:有固定的相位关系,通常同源(如 PLL 分出的不同频率)
- 可以做 STA 时序分析
- 不需要 CDC 处理
- 异步时钟:没有固定相位关系,不同源
- 不能保证相位关系
- 跨域必须做 CDC 同步处理
8. 同源时钟
- 来自同一个 PLL / 振荡器
- 频率成整数倍或固定比例
- 相位关系可预测
四、其他重要性质
9. 时钟边沿(Edge)
- 上升沿触发:最常用,数据在上升沿采样
- 下降沿触发:部分场景用
- 双边沿触发:DDR(双倍数据率),上下沿都传数据
10. 频率稳定性
- 时钟频率随时间、温度、电压的漂移程度
- 晶振 > PLL > 内部振荡器
- 对高速接口很重要
11.时钟使能 / 门控(Clock Gating)
- 用 EN 信号控制时钟是否翻转
- 降低功耗的常用手段
- 要注意不能产生毛刺
12. 不确定性(Uncertainty)
- STA 中用来预留的时钟悲观量(相当于不知道时钟的偏差会有多少,就先给它留点空间,默认它有这么多的时间是有问题的)
- 包含:抖动 + 部分 skew + 设计余量
- SDC:set_clock_uncertainty
