等长布线的核心原则:组内、组间、总长
等长布线这回事,说白了就是让一群信号跑完同样的路程。但怎么「跑」、谁跟谁「同路」,这里面有严格的层级关系。我做了十几年高速板,发现很多新手一上来就对着整个总线拉蛇形线,结果不是串扰爆炸就是时序绕不过去。
嗯,等长不是瞎等长。得把原则拆开看:组内等长、组间等长、总长控制。这三个东西优先级不一样,处理方式也完全不同。下面我一个个说。
组内等长:最要紧的事
组内等长,指的是同一个信号组内部各条线的长度匹配。比如DDR的DQ组、差分对的两条线。这个必须做死,误差通常压到±5 mil甚至更小。
为什么这么严?因为组内信号在接收端同时被采样,时间差大了直接读错数据。我在一个DDR3项目里遇到过,DQ0到DQ7组内差了30 mil,跑800MHz时偶尔报ECC错误。查到最后就是这30 mil闹的,压到10 mil以内问题全消。
实战经验:组内等长我习惯用「最短路径法」——先找到组内最长的线,剩下的全部绕到跟它一样长。千万别先绕短的,否则长的补不回来。
组内等长常用的手段有两种:蛇形线和锯齿线。蛇形线适合长距离补偿,但注意耦合间距要足够(一般≥3倍线宽);锯齿线更密,适合小范围微调。
避坑指南:我曾经在一款FPGA板卡上把蛇形线间距压到2倍线宽,以为能省空间。结果仿真显示差分模态转换严重,串扰增加了6 dB。后来老老实实拉开到4倍线宽,问题解决。
对了,差分对内部等长要求更高。通常误差控制在±2 mil以内,因为哪怕差5 mil,共模噪声也可能让眼图闭上。
| 信号类型 | 典型组内等长容差 | 绕线方式 |
|---|---|---|
| DDR DQ/DQS | ±5 mil | 蛇形 / 锯齿 |
| 差分对(USB/HDMI) | ±2 mil | 紧密蛇形 |
| SerDes高速通道 | ±10 mil(组内 pair) | 分段补偿 |
组间等长:讲究「差不多」
组间等长,是说不同信号组之间的长度匹配。比如DDR的DQ组与DQS组、数据组与地址控制组。这个要求没那么变态,通常按整个系统时序预算来定。
我个人习惯把组间误差控制在±50 mil以内,够用了。为什么可以放松?因为不同的组采样沿可能不同,或者有独立的DLL(延迟锁相环)做相位调整。你想想看,地址信号跟数据信号差了200 mil,只要建立保持时间能cover住,就没问题。
但是——这里有个常见坑:组间等长不能完全不管。我遇到过一个案例,DDR3的地址组比数据组短了300 mil,结果在温度变化时时序余量跑到负值去了。所以组间等长其实是个「soft limit」,建议还是做个粗略匹配,别差太多。
核心观点:组间等长是「系统级」的,不是「物理级」的。设计时要看芯片手册最严格的时序要求,而不是盲目绕线。
处理组间等长时,我推荐用分组拓扑。比如先把地址命令组归为一类,数据组归另一类,分别设定目标长度,然后统一拉。这样做的好处是后期调整方便,不会因为一组改动而牵动全局。
总长控制:天花板别捅破
总长控制,指的是整个信号路径的长度不能超过某个上限。这个上限主要来自信号衰减和眼图预算。比如PCIe Gen4要求通道总长尽量小于15英寸,超过了就需要加retimer或转接驱动器。
总长控制不要求每条线等长,但要求最长的线不能超限。说白了就是给每个信号组一个「寿命上限」。我见过有人把DDR走线拉到13英寸,结果信号上升沿塌成圆弧,眼高不到200 mV。后来把长度压到8英寸,眼高直接翻倍。
怎么定总长?
- 查芯片IBIS模型或厂商推荐的最大走线长度。
- 考虑过孔、连接器、带状线等带来的等效长度(一个过孔≈0.5~1英寸走线)。
- 留20%余量给温度、工艺偏差。
避坑指南:我曾经在10Gbps高速板上只算了走线长度,忘了加过孔等效长度。结果实测发现总损耗超标,最后不得不削掉一层重新布线。从那以后我每次都会把过孔数量折算进总长表格里。
总长控制还有一个隐性好处:限制蛇形线的数量。如果一条线本身已经很长,再绕蛇形线只会让总长更危险。所以我的设计流程是 先看总长天花板,再决定组内等长绕线空间。
三者的关系与优先级
这三个原则不是并列的,而是有明确的优先级。我画了一张图帮你理清楚。
看到没?总长控制是最高优先级,因为它决定了信号能不能通。组间等长是中间层,保证系统时序裕量。组内等长在最底层,但最精细。我做设计时,会先把所有信号的总长拉一遍,圈出那些接近极限的线,再针对组内做绕线。
举个例子:DDR4设计,数据组内误差压到5 mil,地址组内误差10 mil,但数据组与地址组之间允许差100 mil。同时所有通道总长不超过10英寸。这样的分配既满足了芯片要求,又给布线留了空间。
实践检查清单
- 是否已确认每组芯片手册规定的组内容差?
- 是否对所有信号组做过总长预算(含过孔等效)?
- 组间误差是否落在系统时序余量内?(建议做一次快速时序仿真)
- 蛇形线的间距是否满足≥3倍线宽?
- 差分对内部弯曲处是否保持了对称?
最后说一句:这三个原则不是背下来的,而是在项目中反复碰壁才能形成直觉。我第一次做高速板时只顾着组内等长,结果总长超了,板子废了。第二次吸取教训,却忽略了组间匹配,导致时序报警。直到第三次,才真正把这三层关系刻在脑子里。
嗯,希望你不用像我一样踩三次坑。照着这张图和清单做,至少能避开七八成的等长雷区。