2. 信号完整性与等长关系

咱们做PCB设计,尤其是高速数字电路,等长走线这件事,说白了跟走线长度本身关系不大,真正管的是时序。你想想看,一片FPGA同时吐出DDR的数据线,走线长度不一样,数据到达CPU的时间就有先有后。CPU在时钟边沿抓取数据的时候,有些线上的数据已经到了,有些还在路上,结果就是——采错了。

我刚开始做DDR3设计那会儿,就吃过这个亏。FPGA跟DDR颗粒之间的走线,我觉得就差那么几十个mil,心里想“没事儿”。结果板子调不通,逻辑分析仪一看,数据眼图乱得跟一锅粥似的。从那以后,我对等长走线的敬畏之心就再也不敢丢。

核心结论:等长走线的本质是等时。信号在PCB上的传播速度由介电常数决定,等长就是为了保证同一组信号的所有bit,从发送端到接收端所用的传播延迟基本一致。

2.1 信号完整性的底线:时序窗口

信号完整性虽然包含反射、串扰、 EMI 这些,但等长走线解决的是时序问题。每一种同步接口(DDR、MIPI、PCIe、千兆以太网)都定义了一套时序容限,比如建立时间(tSU)和保持时间(tH)。

数据信号需要在时钟边沿前后的一段稳定窗口内到达。如果你的等长做得不好,数据跑出了这个窗口,哪怕波形质量再完美,也等于白做。这就是为什么很多工程师说“先有时序,才有信号完整性”。

接口类型 典型数据速率 等长精度要求(典型) 核心风险
DDR3/DDR4 800MT/s ~ 3200MT/s ±5mil ~ ±25mil 数据与DQS DQS#的时序偏差
MIPI D-PHY 80Mbps ~ 1.5Gbps/lane ±25mil 以内(推荐) Data Lane 与 Clock Lane 的 Skew
PCIe Gen3/4 8GT/s ~ 16GT/s ±5mil(差分对内) 差分对内 Skew 导致共模转换
千兆以太网 1Gbps ±10mil(差分对内) 差分阻抗失衡与串扰

从我个人的设计经验来看,如果芯片厂商给出了等长约束规则,你就严格按那个数值走。别自己拍脑袋。不同芯片的封装内部延迟可能差很多,等长目标值要参考芯片的 Read/Write Leveling 要求来定。

2.2 等长跟信号质量也有关系?

嗯,这里要额外说一点。有些设计师以为等长只影响时序,跟波形质量没关系。其实不完全对。当一组走线里有的长有的短,短的那条线的阻抗连续段就变了。对高速信号来讲,走线长度突变的位置,就是一个阻抗不连续点。

我记得有次做一个MIPI CSI-2的摄像头接口,四条数据通道和一条时钟通道。为了迁就结构,时钟通道走了弧线绕了400mil,数据通道却直来直去。结果测试发现,时钟信号的反射比数据通道多了将近15%。原因就是等长绕线时,那段多出来的“蛇形线”引入了局部耦合和阻抗变化。

避坑指南:等长绕线不能乱绕。高频信号在蛇形线的拐弯处会产生额外的寄生电容和电感。你如果发现信号眼图抖动增加、误码率下降,可以先看看是不是等长绕线绕得太密、拐角太过尖锐。我曾经因为蛇形线的间距不够,导致两条绕线段之间相互耦合,产生严重的共模噪声。

2.3 信号延迟:等长的计算基础

咱们得先搞清楚,信号在PCB上走1inch到底花多少时间。简单公式:

延迟时间(ps)= 走线长度(inch)× 传播延迟(ps/inch)
传播延迟 ≈ 85 × √(εr)  (单位:ps/inch)

举个例子:FR4板材的 εr 大约是 4.2 左右,那么 1 inch 走线的纯延迟大概在:

85 × √4.2 ≈ 85 × 2.05 ≈ 174 ps

DDR4-3200 的时钟周期只有 312.5ps。等长偏差 50mil,带来的时序偏差大约是:

50mil = 0.05 inch
0.05 × 174 ps ≈ 8.7 ps

8.7ps在312.5ps的总周期里,占到了快3%的时序裕量。如果再叠加上芯片内部的抖动、电源噪声、温度变化,你就知道等长做不准有多危险了。

小技巧:我习惯在布局阶段,先用Signal Integrity仿真工具跑一次裸延迟,再根据芯片数据手册的setup/hold时间反推最大允许的走线长度差。如果长度差超过100mil,我就会提醒自己,布线的时候一定要专门留出绕线空间。

2.4 等长走线影响信号完整性的逻辑链条

下面这张图是我自己总结的,每次做DDR或者高速串行设计都要过一遍。

信号完整性与等长走线逻辑关系图 等长走线 走线长度差异(Skew) 正确的等长控制 信号到达时序偏差 破坏建立/保持时间 数据采集错误 / 误码率上升 维持信号传播延迟一致 满足时序窗口要求 信号完整性稳定 关键点 时序先于波形质量

这逻辑链条很简单:走线不等长→时序偏差→设保时间不满足→误码。右侧是正确做法:等长控制→保持延迟一致→满足时序窗口→信号完整性达标。

2.5 一个实战经验:等长控制“松一点”真的不行

说个我遇到的例子。有个项目是8层板,DDR3跑1866MT/s。按照芯片手册,数据组(DQ)与DQS之间的Skew要控制在±10ps以内。用FR4的延迟算,大约对应±57mil。

我当时想,留点余量吧,做到±40mil。结果Layout工程师跟我说“布不通”,想放宽到±80mil。我一听就摇头。最后我们硬是在BGA出线区做了一次Fanout优化,把数据组走线全都牵引到同一层,利用过孔绕线区做等长匹配,最终精度控制在了±30mil以内。经过仿真验证,时序余量还有大约25ps的margin(因为芯片内部有一定的补偿能力)。

松一步看似省事,但带来的量产风险很大。PCB制造过程中,蚀刻、阻抗偏差、层压偏移都会让实际走线长度偏离设计值。你留的margin越小,生产不良率越高。

经验公式(我个人总结的):

  • DDR3 1600 以下:等长精度 ≤ ±50mil
  • DDR3 1866 到 DDR4 2400:等长精度 ≤ ±25mil
  • DDR4 3200 及以上:等长精度 ≤ ±10mil
  • MIPI D-PHY 1.5Gbps:差分对内等长 ≤ ±5mil

2.6 小结

信号完整性与等长走线的关系,归根到底就是一句话:等长是为了等时,等时是为了保证时序,时序是信号完整性的第一道防线。做设计的时候,先把等长约束搞清楚,再去操心阻抗匹配、电源完整性那些事。

我一般在新建项目时,会先跟硬件同事对一遍所有高速接口的时序参数,然后亲手把等长规则写到布线约束里。别等到布线快完成了才想起“哦,这个总线也要等长”,那时候再改就很痛苦了。