时序约束核心概念:建立时间、保持时间、时钟偏移
做 eDP 时序设计,这三个概念你躲不开。建立时间、保持时间、时钟偏移,说白了就是高速信号能不能被正确采样的底层保证。
我还记得第一次调试 4K@120Hz 的 eDP 链路,板子调了三天死活点不亮。最后用示波器一量,建立时间差了不到 0.2 ns。嗯,就从那次开始,我彻底学会了“先算后做”。
1. 建立时间
建立时间(Setup Time,tsu)——数据必须在时钟有效沿到达前提前稳定一段时间。这个窗口是芯片内部采样电路决定的,改不了。
- 公式表达:数据到达时间 + tsu ≤ 时钟到达时间
- 你实际要看的:PCB 布线造成的延时偏差,不能吃掉这颗芯片的 tsu 裕量。
- 我在项目中见过:有人为了走线美观绕了一大圈,结果建立时间违例,图像边缘出现闪烁。
2. 保持时间
保持时间(Hold Time,th)——时钟有效沿之后,数据还必须持续稳定一小段时间。你想想看,如果数据在时钟刚抓完就变,那采样结果就废了。
保持时间违例比建立时间更隐蔽。建立时间不够,你降频还能跑;保持时间不够,降频没用,换芯片才有救。真的,我曾经折腾过一块 eDP 转接板,最后发现是保持时间少了 0.1 ns,重新布线才解决。
| 参数 | 建立时间 | 保持时间 |
|---|---|---|
| 方向 | 时钟沿前 | 时钟沿后 |
| 违例影响 | 采样错误、频率跑不上去 | 亚稳态、数据错位 |
| 直接对策 | 减短数据路径 / 加时钟偏斜 | 加长数据路径 / 减短时钟偏斜 |
3. 时钟偏移
时钟偏移(Clock Skew)——同一个时钟源到达不同接收器的时间差。理想情况是零偏移,但实际上过孔、走线长度、负载电容都会导致几皮秒到几百皮秒的差异。
时钟偏移不一定是坏事。你想想看,如果故意让目标芯片的时钟晚到一点点,那对建立时间就多了一点裕量。但代价是保持时间变紧张了。这是一种“用鸡蛋换鸭蛋”的取舍。
- 正偏移:目标时钟晚到 → 建立时间更宽松,保持时间更严格
- 负偏移:目标时钟早到 → 保持时间宽松,建立时间紧张
- 我常用的做法:在 eDP 的差分时钟对上做等长绕线,同时尽量缩短支线长度。这样偏移能被限在一个可预测的范围内。
4. 三者之间的关联
一个典型 eDP 链路中,建立时间、保持时间、时钟偏移像三根绳子绑在一起。你动其中一个,另外两个也会跟着变。核心公式是:
建立时间裕量 = T_clk + T_skew - t_su - t_data_delay
保持时间裕量 = t_data_delay - t_hold - T_skew
- T_clk:时钟周期
- T_skew:时钟偏移(正值为目标迟于源)
- t_su / t_hold:芯片给定的建立/保持时序要求
- t_data_delay:数据从源到目的地的传输延时
这是我每次做约束检查都会手算一遍的,就算有 EDA 工具也会先估算一把。工具算出来的结果,你得知道它合理不合理,对吧?
知识结构图
下面这张图把三个概念的关系和关键节点画出来了。你一看就能明白它们在时序路径上分别扮演什么角色。
实战视角:两个常见误区
- 误区一:只要时序分析工具报“通过”就万事大吉
其实工具用的是理想模型,没考虑电源噪声、温度变化、参考层不连续这些实际因素。我习惯在工具计算的基础上再加 10%~20% 的裕量。 - 误区二:时钟偏移越小越好
我说不是。有时候故意加一点正偏移能解决建立时间问题。关键是要算清楚保持时间那边有没有被吃掉。我记得有一次把一条 eDP 主链路的时钟偏移从 50 ps 调到 120 ps,稳定了整条链路。
以上就是建立时间、保持时间、时钟偏移这三个核心概念,以及它们在实际 eDP 链路中的影响。理解透了,才能在下节准备做精确约束时手不抖。