时序约束核心概念:建立时间、保持时间、时钟偏移

做 eDP 时序设计,这三个概念你躲不开。建立时间、保持时间、时钟偏移,说白了就是高速信号能不能被正确采样的底层保证。

我还记得第一次调试 4K@120Hz 的 eDP 链路,板子调了三天死活点不亮。最后用示波器一量,建立时间差了不到 0.2 ns。嗯,就从那次开始,我彻底学会了“先算后做”。

1. 建立时间

建立时间(Setup Time,tsu)——数据必须在时钟有效沿到达前提前稳定一段时间。这个窗口是芯片内部采样电路决定的,改不了。

  • 公式表达:数据到达时间 + tsu ≤ 时钟到达时间
  • 你实际要看的:PCB 布线造成的延时偏差,不能吃掉这颗芯片的 tsu 裕量。
  • 我在项目中见过:有人为了走线美观绕了一大圈,结果建立时间违例,图像边缘出现闪烁。
个人习惯:我会在原理图阶段就估算每条数据线的长度差,让 PCB 工程师控制在 ±3 mm 以内。这个长度差异直接换算成时间差,心里就有底了。

2. 保持时间

保持时间(Hold Time,th)——时钟有效沿之后,数据还必须持续稳定一小段时间。你想想看,如果数据在时钟刚抓完就变,那采样结果就废了。

保持时间违例比建立时间更隐蔽。建立时间不够,你降频还能跑;保持时间不够,降频没用,换芯片才有救。真的,我曾经折腾过一块 eDP 转接板,最后发现是保持时间少了 0.1 ns,重新布线才解决。

参数建立时间保持时间
方向时钟沿前时钟沿后
违例影响采样错误、频率跑不上去亚稳态、数据错位
直接对策减短数据路径 / 加时钟偏斜加长数据路径 / 减短时钟偏斜

3. 时钟偏移

时钟偏移(Clock Skew)——同一个时钟源到达不同接收器的时间差。理想情况是零偏移,但实际上过孔、走线长度、负载电容都会导致几皮秒到几百皮秒的差异。

时钟偏移不一定是坏事。你想想看,如果故意让目标芯片的时钟晚到一点点,那对建立时间就多了一点裕量。但代价是保持时间变紧张了。这是一种“用鸡蛋换鸭蛋”的取舍。

  • 正偏移:目标时钟晚到 → 建立时间更宽松,保持时间更严格
  • 负偏移:目标时钟早到 → 保持时间宽松,建立时间紧张
  • 我常用的做法:在 eDP 的差分时钟对上做等长绕线,同时尽量缩短支线长度。这样偏移能被限在一个可预测的范围内。
曾经踩过的坑:我有一块四层板,因为时钟走线跨了分割区,偏移一下子大了 300 ps,直接导致 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 工具也会先估算一把。工具算出来的结果,你得知道它合理不合理,对吧?

实用口诀:长路径减建立,短路径减保持;时钟偏移往反方向推就能加裕量。但这个口诀只在理论分析时好用,实际要结合具体芯片的 datasheet 做边界扫描。

知识结构图

下面这张图把三个概念的关系和关键节点画出来了。你一看就能明白它们在时序路径上分别扮演什么角色。

eDP 时序关键概念关系 时钟源 时钟偏移 Δskew 发送端 (Source) 数据路径 t_data_delay 接收端 (Sink) 建立时间 t_su 保持时间 t_hold 注意 时钟偏移影响 建立与保持 的计算窗口

实战视角:两个常见误区

  1. 误区一:只要时序分析工具报“通过”就万事大吉
    其实工具用的是理想模型,没考虑电源噪声、温度变化、参考层不连续这些实际因素。我习惯在工具计算的基础上再加 10%~20% 的裕量。
  2. 误区二:时钟偏移越小越好
    我说不是。有时候故意加一点正偏移能解决建立时间问题。关键是要算清楚保持时间那边有没有被吃掉。我记得有一次把一条 eDP 主链路的时钟偏移从 50 ps 调到 120 ps,稳定了整条链路。
避坑指南:拿到新芯片的 datasheet,第一时间把 t_su 和 t_hold 标出来。然后画一条简单的 PCB 延时估算表,用 Excel 拉个公式。这一步花你 10 分钟,但能省掉后面一周的调试。

以上就是建立时间、保持时间、时钟偏移这三个核心概念,以及它们在实际 eDP 链路中的影响。理解透了,才能在下节准备做精确约束时手不抖。