等长绕线的理论基础

做等长绕线之前,你总得搞清楚它到底在解决什么问题。说白了,就是让一组信号同时到达接收端。为什么要同时?因为现在的DDR、PCIe这些高速总线,接收器是在同一个时钟沿上采样多个信号的,谁先到、谁后到,时序窗口就被挤没了。

我个人习惯先把这几个物理概念理一遍:传播时延、信号速率、介电常数,以及它们和物理长度的关系。你想想看,如果你连信号在板子上跑多快都不知道,怎么知道绕多少线才对齐?

传播时延 —— 单位长度上的时间差

传播时延,英文叫 Propagation Delay,通常用 ps/inch 或 ps/mm 表示。它反映的是信号每走过单位长度,需要花多少时间。我在一个DDR3的项目里遇到过,两个字节通道差了20mil长度,我以为没事,结果跑起来数据眼图直接塌了。后来查出来,那20mil对应大约3.5ps的时延差,而接收端的setup/hold窗口只有±5ps——几乎撑满。

核心公式: 传播时延 (Tpd) = 1 / 信号速率 (v)

但实际操作中,我们更常用的是:Tpd = √εr / c,其中c是光速,εr是等效介电常数。嗯,这里有个陷阱——等效介电常数不是板材的Dk,而是走线周围介质加权后的值。

信号速率 —— 电流不走直线

很多人以为信号速率≈光速,其实不对。信号在PCB上的传输速度大约是光速的 40%~70%。为什么?因为电磁场大部分能量在介质里跑,介质会“拖慢”它。

关键点在这:

  • 光速:约 3.0×10^8 m/s,换算成 11800 ps/inch
  • FR4内层走线 (Er≈4.2):约 170 ps/inch
  • FR4表层走线 (Er≈3.5~4.0):约 155 ps/inch(微带线)

我记得有次培训,新同事说“我算出来内层应该和表层一样”,我说你拿示波器测一下同一个长度,内层信号比表层慢一截。他当场测完就信了。说白了,介质不一样,速度就不一样。

介电常数 —— 材料说了算

介电常数(Dk/Er)直接影响信号速率。FR4的Dk一般在4.2~4.5之间,但实际走线的等效Er会因为阻焊、空气、玻纤布等因素变化。我曾在一个10Gbps的SerDes项目中遇到过,同一个批次的PCB,板边和板中心的时延差了8ps——就是因为玻纤编织导致局部Er不同。

避坑指南: 我曾经以为FR4的Dk是固定4.2,结果用2D场求解器一算,微带线等效Er只有3.8。后来我每次做等长前,都会让layout抽一下该层的Er实际值,或者直接取供应商提供的差分相位常数。不要用标称值!
板材类型 标称Dk (1GHz) 微带线等效Er 典型Tpd (ps/inch)
FR4 (标准) 4.2~4.5 3.5~4.0 155~170
Megtron 6 3.4~3.6 2.8~3.2 140~150
Rogers 4350B 3.48 3.0~3.2 138~145

你看,同样1inch走线,FR4比Rogers可能多出20ps时延。等长绕线如果混用了不同层、不同板材,哪怕物理长度一样,时延也不一样。

物理长度与时延 —— 绕线的本质

讲到这里,绕线的逻辑就很清楚了:

时延差 = 长度差 × 传播时延 (Tpd)

举个例子:假设你两组信号,一组跑了6inch表层(Tpd=155ps/in),另一组跑了6inch内层(Tpd=170ps/in)。物理长度一样,但时延差是:6 × (170 - 155) = 90ps。你看,不绕线肯定出问题。

所以在EDA软件里做等长绕线时,软件内部其实一直在算:

Tdelay = Length × Tpd(layer, width, spacing)
Target = max(Tdelay of all nets)
Tune_length = (Target - Tdelay) / Tpd

说白了,软件帮你把长度转换成时延,再按最慢的那根去对齐。但我见过有人只盯着长度标尺,觉得差2mil没问题。其实在高速信号里,2mil在FR4内层对应约0.34ps,如果时钟频率10GHz,一个UI才100ps,0.34ps确实不敏感。但如果是DDR3 1600MHz,UI约625ps,等长要求通常在±5ps以内,2mil对应0.34ps可以忽略,但如果叠上其他误差,综合起来就悬了。

我建议: 在Allegro或PADS里做等长时,直接把约束管理器里的单位从mils切换成ps。这样你能直观看到每根线的时延,而不是猜那个长度够不够。我所有高速项目都这么干,避免了很多后期debug。

下面这张图总结了传播时延、信号速率、介电常数和物理长度之间的核心逻辑,你可以把它贴在工位上:

传播时延与物理长度、介电常数关系 传播时延 Tpd 物理长度 L 信号速率 v 介电常数 εr 时延差 ΔT × Tpd Tpd=1/v v = c/√εr × ΔL ΔL 差值 🔑 等长绕线的本质: 用物理长度补偿来消除时延差,但必须考虑不同层的Tpd差异

小结几条硬道理

  • 传播时延不是常数,同一块板子不同层不同线宽都差很多。
  • 介电常数要取等效值,不要直接拿板材Dk算。
  • 物理长度相等 ≠ 时延相等,除非走线在同一层且结构一致。
  • EDA软件里的等长绕线,背后就是L × Tpd这个乘法,但Tpd是自动查表算出来的。
注意: 有些工程师习惯在工程里直接用长度约束“±5mil”,但高速信号(≥1Gbps)强烈建议改用时间约束“±10ps”。因为长度误差在表层和内层实际带来的时延差不一样。我曾经吃过这个亏——一个10Gbps的QDR接口,两条等长约束设了±50mil,结果板子回来跑不了,后来发现内层那组实际差了30ps,把时序撑爆了。从那以后我所有高速constraint都只写时间不写长度。