3. 常见等长约束类型:点对点、星形、差分

等长约束这玩意儿,说白了吧,就是让一组走线在物理长度上尽量一致。但问题是——怎么个一致法?不同的芯片接口、不同的拓扑结构,对等长的要求完全不一样。

我刚开始做高速设计那会儿,就吃过这个亏。记得有一次处理一组DDR3数据线,我一股脑全做了点对点等长,结果上板测试总有一两个bit报错。后来才发现,DDR的地址/控制信号用的是星形拓扑,我拿点对点的方式去约束,根本对不上。

所以这一章,我们来把三种最常见的等长约束类型掰开揉碎讲清楚。

3.1 点对点等长 (Point-to-Point)

这是最基础、最常见的一种。一个驱动端,一个接收端,中间就一根线。比如时钟信号从PLL输出到一个DDR颗粒,或者一个SPI的CLK线从主控到 Flash。

点对点等长的核心思想很简单:把这条单线的长度控制在一个目标范围内。你想想看,信号从A点跑到B点,延迟主要由走线长度决定。如果同一个接口的多个点对点信号长度不一致,那它们到达接收端的时间就会有偏差——这就是我们常说的skew。

我的习惯:对于点对点等长,我通常先用T形或蛇形线来绕。蛇形线的间距至少是3倍线宽,不然串扰会给你“惊喜”。我在一个1.8V的LVDS项目里就因为间距太小,眼图直接闭合了,后来改成5倍线宽才搞定。

3.2 星形等长 (Star / T-Branch)

星形拓扑,说白了就是一个驱动端要同时连到多个接收端。典型的例子就是DDR3/DDR4的地址/控制信号,一个控制器要驱动多个内存颗粒。这时你不能再玩点对点那套了。

星形等长的要求是:从驱动端到每个接收端的路径长度必须相等。我习惯把这个路径拆成两段来看:主干段和分支段。

  • 主干段:从驱动端到分支点(T点)
  • 分支段:从分支点到每个接收端

约束的时候,要保证所有分支段长度相等,同时主干段对所有颗粒来说也是相同的。但这里有个坑——分支段的长度本身不能太长。我见过一个设计,DDR3跑800MHz,分支段绕了2000mil,结果信号反射得一塌糊涂。为什么?因为分支过长,不满足传输线理论里的“等效短线”条件。一般来说,分支段不要超过驱动器上升沿对应的空间长度的1/10。

我曾经踩过的坑:做星形等长时,只设了总长相等,没管分支长度。结果上板测试,靠近控制器的颗粒工作正常,远端的颗粒频频出错。后来用TDR一看,阻抗不连续点就在分支末端。从那以后,我每做一个星形拓扑,都会单独检查每个分支的长度。

3.3 差分等长 (Differential Pair)

差分信号,比如USB、HDMI、PCIe、LVDS,两根线一起走,一个正一个负。它们的等长约束有两层意思:

  • 对内等长:差分对内部,P线和N线的长度差,通常要求控制在5-10mil以内。
  • 对外等长:不同差分对之间,总长度匹配。

为什么对内等长要求这么严?因为差分信号的共模抑制能力依赖于P/N线的对称性。如果长度差太大,共模分量就会转化为差模噪声,严重降低信号质量。

我记得在一个HDMI 2.0项目里,对内等长要求做到5mil以内。我一开始觉得差不多就行了,结果仿真眼图在1.65Gbps时已经快闭合了。后来老老实实把长度差压到3mil,眼图一下子就打开了。

对外等长则取决于接口的工作频率。比如PCIe Gen3,对外等长通常允许±50mil的偏差。但如果是DDR4的差分时钟,可能要求更严。

个人经验:差分对内等长,我习惯用信号完整性仿真来定具体阈值。不要只看芯片手册的推荐值,那通常是保守的。在你自己的PCB叠层和材料下,实际能容忍多少长度差,仿真最靠谱。

3.4 三种类型的对比

我把它们放在一起对比一下,方便你快速理解什么时候该用哪种。

类型 典型拓扑 约束对象 典型场景 精度要求
点对点 1对1 单线 时钟线、SPI、单端DDR数据线 ±10~50mil
星形 1对多 主干+分支 DDR地址/控制、共享总线 总长相等,分支受控
差分 1对(P/N) 对内+对外 USB、HDMI、PCIe、LVDS 对内5mil内,对外±50mil

有了这个表,你以后看芯片手册里的等长要求,就能直接对应到拓扑和约束方式上。

常见等长约束类型知识结构 等长约束类型 点对点 (1对1) 单线长度控制 蛇形线绕法 线距3W+ 星形 (1对多) 主干 + 分支等长 分支长度受控 T点位置优化 差分 (P/N对) 对内 + 对外等长 对内5mil内 对外±50mil 💡 选择依据:看拓扑结构,定约束方式 1对1用点对点 | 1对多用星形 | 1对差分线注意对内/对外

这张图把三种类型的约束对象、拓扑特征和关键控制点都串起来了。你可以把它当作一张“快速参考卡”,做约束的时候对照着看,不容易搞混。

3.5 总结一下我的经验

做等长约束,本质上是在跟时间赛跑。点对点管好一条线就行,星形要管好一堆分支,差分则要同时管好内部和外部。

我个人习惯一开始就把拓扑类型定下来,再决定用哪种约束。不要等到绕完线了才去查拓扑——那时候改起来可费劲了。

嗯,这章就到这里。三种类型你记住了吗?点对点、星形、差分,每种都有它的脾气。理解它们的差异,你就能在设计里少走弯路。