3. 等长绕线的约束类型:单端等长、差分对内等长、差分对间等长、组间等长

约束类型搞不清楚,绕线绕到一半才发现规则设错了。这种事我见过太多次。

其实等长约束就四种,弄明白了,后面调线才能有的放矢。咱们一个个过。

3.1 单端等长 (Single-Ended Match)

最基础的等长要求。说白了就是让一组信号线,长度基本一样。

为什么要这样?因为单端信号靠电压高低判断0和1,如果走线一个长一个短,信号到达时间就不一样。接收端一乱,时序就崩了。

适用场景: 数据总线、地址总线、控制信号。只要是一组并行传输的线,基本都要设。

个人经验: 我在项目里调过一组8位的并口线,要求全部等长。当时有一条线比别的短了150mil,我觉得应该没问题吧?结果一仿真,建立时间窗口真就卡住了。从那以后,我每条都拉到目标长度,不留隐患。

设置要点:
  • 通常设一个 目标长度 (Target Length),比如5000mil
  • 再设一个 误差范围 (Tolerance),比如±25mil
  • 长度在范围内的,就算合格

3.2 差分对内等长 (Intra-Pair Match)

一对差分线内部的两根线,长度要尽量相等。

差分信号靠两根线上的电压差来传信息。如果一根长一根短,两根线上的信号会有一个时间差,这叫“错位”。错位多了,差分的共模抑制能力就没了,电磁干扰也跟着冒出来。

我记得有个案例: 有一次客户反馈USB 2.0信号眼图很差,我一看设计文件,对内长度差了80mil。这么长的错位,眼图能好才怪。调成5mil以内之后,问题解决。

对内等长的要求一般比较严,通常控制在 5~10mil 以内。

特别注意:
对内等长和差分阻抗是两回事。差分对内等长只保证长度一致,保证信号同相到达;差分阻抗要靠线宽、线距和叠层来控制,不是为了等长。别搞混。

3.3 差分对间等长 (Inter-Pair Match)

多对差分线之间,也要等长。比如一组差分对中,每一对都对齐到同一个长度。

什么时候需要?像PCIe、SATA这种串行总线,每个通道都是一对差分线。通道之间如果长度差太多,数据会在接收端错位。接收端虽然有时钟恢复电路,但等长做得越好,接收器压力越小,系统越稳。

对比一下:
类型 比较对象 误差要求 常见场景
单端等长 线 vs 线 ±25~100mil 数据/地址总线
差分对内等长 P vs N 5~10mil 差分信号对
差分对间等长 对 vs 对 ±25~100mil 串行总线通道

3.4 组间等长 (Group-to-Group Match)

这是最复杂的。不同的信号组之间,也要满足长度约束。

比如,一组数据总线和一组地址总线之间。它们可能来自同一个芯片,在芯片内部有其固定时序关系。要是两组线外部分别拉到不同长度,信号到达的先后顺序就变了,芯片时序就对了。

你想想看,内存接口就是最典型的例子。数据组、地址组、控制组都要对齐。而且不止是组内等长,组间也得到指定长度。

组间等长怎么做?

  1. 先确认所有组的 公共参考长度,一般取最长的那组
  2. 每组内部先绕好,统一到参考长度附近
  3. 最后检查组间偏差,再微调
我曾经犯过的错:
第一次做DDR3设计时,我把数据组和地址组分别都做好了等长,但没检查组间关系。结果两个组差了300mil。板子回来后实测,读写时序怎么都调不通过,测了三天才发现是组间长度没对齐。后来加了绕线才补救回来,但那块板子已经白费了一版。

所以我现在做任何多组等长项目,第一步就是把所有组的长度约束列在一张表里,组间配对检查。这个习惯帮我省了至少两次改板的钱。

3.5 四种约束的关系与优先级

四种约束不是孤立的,它们有比较明确的优先级:

  • 第一优先级:差分对内等长 —— 误差最小,直接关系到信号质量
  • 第二优先级:单端等长 / 差分对间等长 —— 误差要求一般,影响时序一致性
  • 第三优先级:组间等长 —— 最次要,但在关键接口上还是得做好

实际项目中,一般先调对内,再调组内,最后调组间。这个顺序能少走很多弯路。

等长绕线约束类型 等长约束类型 单端等长 线 vs 线 差分对内等长 P vs N 差分对间等长 对 vs 对 组间等长 组 vs 组 说明: 工作时先调差分对内等长 → 再调单端/差分对间等长 → 最后检查组间等长

3.6 选哪种约束,怎么判断?

实际项目中,我一般按这个流程判断:

  1. 先看信号类型:单端还是差分?—— 决定要不要考虑对内等长、对间等长
  2. 再看信号组数:一组还是多组?—— 决定要不要考虑组间等长
  3. 最后看接口速率:高速接口通常三个约束都要设,低速信号只做单端等长就够了

举个例子:

  • 普通GPIO: 只要单端等长,甚至不需要等长也行
  • USB 2.0: 差分对内等长(5mil以内)
  • DDR3 数据组: 单端等长 + 差分对内等长(时钟、数据选通)
  • PCIe Gen3 x4: 差分对内等长 + 差分对间等长 + 必要时组间等长

你把这些类型和场景对应上,后面设约束的时候就不会晕头转向了。