ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

高速PCB设计:Signal Length与Routed Length到底有什么区别?

高速PCB设计:Signal Length与Routed Length到底有什么区别? 做高速PCB设计这几年尤其是开始碰DDR、PCIe这类总线之后AD软件里PCB面板那几个长度相关的列我算是彻底看明白了。Signal Length和Routed Length这俩名词在一开始接触时很容易混为一谈以为不就是走线长度嘛。实际上相差一个字物理含义和工程用途区别还挺大不看明白就去做等长、去对时序很容易被数据误导甚至直接导致改版。这篇东西我打算把AD软件里这两个长度概念掰开揉碎了讲清楚包括它们各自是怎么算出来的、为什么数值会对不上、实际做板子时该以谁为准以及我踩过的几个坑。无论是刚入门想搞懂PCB面板里这些参数的新手还是已经被等长问题折磨到想摔鼠标的老哥这篇应该都能帮你省点时间。先说结论的话那就是Routed Length是二维平面上你真正画出来的铜皮走线总长度而Signal Length是考虑了过孔、走线布在内外层导致的真实物理传播路径长度两者在高速设计里缺一不可但各有各的用武之地。1. 核心概念拆解这俩长度到底分别代表什么1.1 Routed Length最直观的“画了多长”Routed Length直译就是“布线长度”它统计的是你从焊盘出发沿着走线走一直到另一个焊盘为止在PCB二维平面上所有铜箔路径的总和。这个长度包含了走线拐弯的路径、走线爬过一个个过孔时在平面上经过的每一段但不包含过孔本身在Z轴方向板厚方向上那一段圆柱形的物理高度。如果你的板子只有单层或者双层而且所有信号都走表层那么Routed Length基本就等于这根网络的真实物理电线长度。很多老工程师在不涉及高速信号时也习惯用Routed Length来判断走线长短做简单的长度约束这个做法在低频、低速场景下完全没毛病。但问题来了现在的板子动不动就四层、六层、八层往上信号在表层走一段通过过孔打到内层走一段再打回表层。这时候Routed Length只是把你二维平面上看到的那段多边形铜箔的路径长度加起来了它并没有把过孔那段“垂直方向”的路径算进去。这就像你开车从A地到B地地图导航显示的是平面道路距离但如果中间要上下高架、穿过隧道实际里程表上的数字肯定比平面距离大。1.2 Signal Length把过孔和层叠都考虑进去的真实路径Signal Length信号长度它是在Routed Length的基础上额外考虑了过孔的垂直高度贡献。AD软件在计算时会把每个过孔按它在层叠中的具体位置换算成一段等效的水平走线长度然后累加到总长度里。这个等效长度怎么算其实不复杂。信号的传播速度在PCB里是由介电常数决定的表层走线微带线和内层走线带状线的传播速度不同。过孔在板厚方向上的实际物理高度除以这段时间内信号在板内传播的速度换算成等效的空气/介质长度就能得到一个可以跟水平走线直接相加的值。通俗点说AD把过孔那一段“垂直绕路”的时间成本折算成“如果走水平线需要多长才能产生同样的延迟”。这里有个关键点顶层和底层的过孔因为层叠位置不同它们打穿板子的介质厚度也不同所以即便孔径一样两个过孔的等效长度也未必一样。AD在计算Signal Length时是结合了实际的层叠设置Layer Stack来做的不是一刀切给所有过孔算同一个值。这也是为什么你在没有正确配置层叠信息时Signal Length的值会变得不准确甚至不可信。1.3 一个具体例子为什么同一根网络两个数字对不上举个例子我前段时间调一块八层板的DDR3走线其中一根数据线的Routed Length显示是1520milSignal Length却显示是1680mil差了160mil。当时第一反应是软件出Bug了后来仔细一查原因很简单这根数据线从CPU引脚出发在顶层走了大概400mil然后打过孔到L3层在L3层走了大概700mil再打过孔回顶层走了420mil。两个过孔在层叠里都要穿透好几层介质每个过孔的等效长度折合下来大约80mil左右两个就是160mil。也就是说信号实际走过的物理路径比你在平面上看到的铜箔路径多了这160mil的“垂直穿行距离”。这160mil在低速设计里完全无所谓但在DDR3跑到800MHz、数据有效窗口不到1ns的场景下160mil对应的时间延迟大概是多少FR4板材的传播速度大约是每英寸170ps左右160mil换算下来大约是27ps。单个信号27ps的偏差不算致命但如果总线里有的信号只走了表层没有过孔有的信号来回打了两三个孔延迟差就能到50ps甚至100ps以上这时候写数据和读数据的时序裕量就很紧张了。2. 为什么会差这么多长度差异背后的物理根源2.1 过孔是最大的“隐形长度”既然Signal Length和Routed Length的核心差异来自过孔那我们就要搞清楚过孔到底是怎么贡献这段“隐形长度”的。过孔在物理结构上是一个圆柱形的铜壁它贯穿了PCB的若干层。信号通过过孔时在Z轴方向跨越了板厚。常规的1.6mm板子一个从顶层打到L3层的过孔实际穿过的介质厚度可能也就0.3mm到0.5mm。换算成mil大概12mil到20mil。听起来不长对吧但信号在过孔里的传播还伴随着寄生电容、寄生电感以及过孔反焊盘带来的阻抗突变这些因素叠加起来等效长度就不能只看物理高度了。工程上粗略估算时很多人会把一个过孔等效为10mil到30mil的水平走线长度具体取决于过孔尺寸、层叠位置和信号速率。更精确的做法是直接做三维电磁场仿真但日常设计用AD的Signal Length来做相对比较精度已经完全够用了。2.2 内层走线和表层走线的传播速度本来就不一样在讲Signal Length计算原理时还需要提另一个因素微带线和带状线的传播速度差异。表层走线一侧是空气一侧是介质等效介电常数相对较低信号传播速度更快内层走线两面都是介质等效介电常数较高信号传播速度更慢一些。这就导致同样物理长度的走线在内层和表层产生的信号延迟是不同的。FR4板材表层微带线传播速度大概是每英寸150ps左右内层带状线大概是每英寸165~170ps左右。做高速等长设计时这类微小的速度差异累积起来对时序的影响也不能忽略。不过这里要说明一点AD的Signal Length计算主要考虑的是过孔贡献的等效长度对于微带线和带状线的传播速度差异在单纯的长度数值中并没有做加权处理。如果你要做的是ps级精确的时序匹配单纯靠AD里这两个长度值是不够的需要结合仿真工具做时延计算。但对于大多数几组等长、容差±5mil以内的常规设计Signal Length已经是一个足够好的参考了。2.3 那些“看不见”的弯曲和补偿还有一个容易忽略的因素走线的弯曲。AD里的Routed Length统计的是走线的中心线长度理论上已经包含了45度拐角、圆弧走线的路径长度。但如果你走线里有大量的小角度拐弯、蛇形走线这个数值是准的。真正容易出问题的地方在于如果你使用了阻焊开窗、或者走线在焊盘区域有非线性的宽度变化长度统计可能和实际高频信号的传播路径有细微偏差。另外就是差分对内等长。很多人在做差分对内等长时只看Routed Length忽略了过孔的影响。一对差分信号如果正线打了两个过孔、负线只打了一个过孔即便Routed Length完全相等Signal Length也会出现几十mil的偏差导致对内时序偏移进而影响共模噪声和EMI表现。2.4 PCB面板里那几列数据是怎么算出来的AD软件的PCB面板中当你选中一个网络在Length列能看到几组数据Routed Length、Signal Length还有Elongation等。这些数据的计算逻辑我大致理过Routed Length就是累加所有走线段的中心线长度这个没悬念。Signal Length的计算AD是根据层叠管理器里的介质厚度、过孔跨越的层对把过孔等效成水平走线长度再加进去。所以这里有个前提你的层叠管理器Layer Stack Manager里各层厚度、介质材料参数必须填对否则Signal Length的过孔等效计算就是按错误数据来的出来的值自然不可信。我见过不少人的PCB文件层叠管理器还是软件默认的四层板结构没有按实际板厚填写。这种状态下看Signal Length数值跟Routed Length的差异就没有参考意义。所以用Signal Length之前第一件事就是把层叠管理器按板厂提供的叠层信息填好这个步骤省不得。3. 实际工程中怎么选不同场景该以哪个长度为准3.1 低速设计Routed Length完全够用别给自己找麻烦如果你的板子信号频率不超过几十MHz时序裕量大把那根本不用纠结Signal Length。用Routed Length做长度约束就足够了简单直观而且此时过孔的等效长度对信号延迟的影响占比很小加了反而容易跟你手动测量的结果对不上造成困惑。比如I2C、UART、SPI这类接口走线长一点短一点完全不影响功能除非特别长导致压降或串扰问题否则长度差异压根不用管。做这类板子时PCB面板里的Routed Length列看看即可甚至不设置长度规则都行。不过即便在低速场景也建议你养成看Signal Length的习惯不是因为它对功能有决定性影响而是为了后续迭代——板子改版升级、信号速率提上来之后你会发现之前的长度数据记录里缺失了过孔信息重新估算时还得翻旧账。3.2 高速并行总线时序裕量吃紧时必须看Signal LengthDDR、DDR2、DDR3、DDR4这类并行总线是PC设计中最典型的长度匹配场景。CPU或SoC对每组信号地址、控制、数据、时钟都有长度或时延匹配要求而且关键约束往往以实际信号传播时间为准。我做DDR3设计时的经验是地址线和控制线做等长时以Signal Length为准因为这些信号的拓扑是菊花链结构从控制器到每一片颗粒之间要经过多个过孔和层切换Routed Length的数值远远不能反应真实延迟。数据线的话因为DQ和DQS通常走同一层、过孔数量也基本对称用Signal Length或Routed Length的差值做对内匹配都能得到近似结果但严格来讲也必须按Signal Length来约束。有人可能会问直接在规则里用Signal Length做约束不就行了AD的Length规则确实支持选择匹配对象是Routed Length还是Signal Length但实际操作中我个人的习惯是用Signal Length做主要参考再用厂商提供的IBIS模型跑一遍仿真来确认时序余量双保险。3.3 射频与高速串行长度要精确到“传播路径”射频领域的长度匹配就更敏感了。比如天线馈线、射频前端电路之间的相位匹配线路哪怕10mil的误差在2.4GHz频段都会引入明显的相位偏转。而这种走线往往有严格的阻抗控制层叠结构复杂过孔等效长度在总长度里占的比例也不小。这类设计里Signal Length和Routed Length的关系已经不是“谁更准”的问题而是两者都要看。Signal Length用来控制总延迟Routed Length用来参考物理排布可行性。因为Signal Length毕竟是软件估算值它假设信号在过孔里以某个速度传播但实际过孔还有阻抗不连续的影响反射和振铃会进一步改变有效延迟。所以射频设计在长度匹配之后还得靠网络分析仪实测或电磁仿真收敛。3.4 差分信号对内等长要不要把过孔算进去差分信号的P和N两端设计原则是尽量对称——包括走线长度对称、过孔数量对称、走线层对称。理想情况下P和N的过孔数量一样Signal Length和Routed Length的差值也就一样这时候你拿哪一列来衡量对内匹配都没问题。但如果布局约束导致P端比N端多了一个过孔那情况就复杂了。此时即便Routed Length完全相同P和N的实际传播时间也不一致差的就是那个过孔的等效长度。这类场景下对内长度匹配就应该对比Signal Length而不是Routed Length。我遇到过一次这种情况差分对内Routed Length差了不到1milSignal Length差了32mil最后把N端的蛇形走线多绕了34mil以Signal Length对齐为准才把测试波形调干净了。4. 实操指南在AD中查看、设置和应用这两个长度值4.1 在PCB面板中快速查看各网络的长度信息AD查看长度信息最直接的方式是PCB面板。操作路径是打开PCB文件右侧面板切换到PCB如果没找到用快捷键ShiftShift打开搜索面板输PCB面板顶部下拉选择Nets等对象类型。在Nets列表里可以看到每个网络的Routed Length、Signal Length在对应列里直接显示出来。这里有几个小技巧。第一列里的数字默认单位可能是mil、mm或inch可以根据需要在View - Toggles - Units里切换。第二面板列表支持点击列头排序我习惯按Signal Length从大到小排一眼就能看出哪根网络是“最长的瓶颈”。第三如果你只关心特定一组网络可以启用Filter面板仅选中这组网络列表刷新后信息更聚焦。有个坑要提醒PCB面板列显示可能需要手动添加。默认状态下不一定所有长度列都有显示在面板右上角点击Properties按钮在Columns区域勾选Routed Length和Signal Length即可。4.2 在PCB规则中设置长度约束长度约束主要在Design - Rules - High Speed - Matched Length部分设置。你可以新建规则在Where The First object matches里指定网络或网络类然后在Constraints里设置长度范围。默认情况下AD的Matched Length规则用Routed Length作为匹配依据。如果你需要以Signal Length为基准这在规则里其实没有直接的下拉框让你选实际的做法是先把规则里的长度值按Signal Length的尺度设置然后仍然以Routed Length为参考去走线。听起来有点绕但对走线过程中的实时反馈是有效的因为布线时编辑器里动态显示的长度通常是当前走线的Routed LengthSignal Length只有在走线完成后才能在面板里看到。我常用的替代方案是先用Script或查询方式在PCB面板里把目标网络的Signal Length列出来算好需要匹配的绝对值然后回填到Matched Length规则里作为Routed Length的目标范围。没办法AD在这个细节上确实不如某些工具直接但用熟了也能保证结果靠谱。4.3 在Properties面板中查看单根走线的长度鼠标选中任意一段走线按F11打开Properties面板在走线属性里可以看到Length、Routed Length等信息。这里注意Properties面板里显示的长度只是你选中的这段走线不是整个网络的累计长度。想看整根网络的要么在PCB面板里看要么使用Report - Board Information查询。4.4 应对没填层叠信息导致Signal Length异常的情况前面反复提到层叠管理器这里专门说下操作步骤。Design - Layer Stack Manager打开层叠设置按板厂提供的叠层信息把各层的电介质材料、介质厚度、铜箔厚度都填进去。特别是Core、Prepreg材料类型和厚度直接决定过孔等效长度计算的精度。填好之后Signal Length的计算就会按实际物理结构来。如果你发现改了层叠之后信号长度值变化很大不用慌这是正常的。说明之前的计算基础是错误的当前的数据才是可用的。建议每块板子在开始布线前把层叠信息填好再动手否则后续所有长度相关的判断都得重来。5. 常见问题与排查技巧实录5.1 为什么我的Signal Length比Routed Length还小这个现象不少人都遇到过第一反应是软件坏了。其实这时候大概率是层叠管理器设置有问题特别是过孔穿透的介质层厚度没配置对或者层叠顺序有误。AD计算过孔等效长度时如果识别到的穿跨层信息异常可能把一个负数或极小值折进去了。另外还有一种可能你选的网络主要是表层走线过孔本来就不多而AD的过孔等效长度计算偶发异常导致信号长度出现微小偏差。遇到这种情况把层叠管理器重设一遍或者删掉这跟网络重新走一遍再看结果。5.2 为什么两块板同样的走线Signal Length差异很大这通常是因为两块板子的层叠设置不同。比如A板是六层B板是四层同样的顶层到内层过孔穿过的介质厚度完全不同过孔等效长度自然不一样。这不是Bug而是物理事实。还有一种情况是跨层不同。我在一块板上走过一根信号从顶层打到L4再从L4打到顶层但另一块板是从顶层打到L2再从L2打回来。前者过孔穿透了更多介质厚度等效长度就长一些。这种差异在做板子间的设计复用、移植时需要特别注意。5.3 长度已匹配但功能还是异常问题出在哪长度匹配只是高速设计的一个必要条件不是充分条件。DDR跑不稳除了长度问题还有阻抗不连续、串扰、电源噪声、参考平面不完整等一堆因素。如果长度已经按Signal Length对齐功能仍然有问题建议从这几个方向排查第一查走线阻抗是否一致性特别是过孔区域的阻抗跌落。第二查走线旁边有没有其他高速信号或时钟线并行走线过长造成串扰。第三查参考平面信号换层后下方的回流地平面是否连续如果回流路径被切断哪怕长度完全一致信号完整性也会崩。5.4 差分对内等长按Signal Length对齐后测试波形反而更差这种情况我也遇到过。分析原因主要是Signal Length本身是估算值它没有把差分信号在过孔处的模态转换、回流路径不对称这些效应考虑进去。如果P和N在过孔数量一致的情况下按Routed Length对齐通常会得到最优结果只有在过孔数量不对称时Signal Length的参考价值才体现出来。所以我的经验是先保证P和N的过孔数量一致、走线层对称然后优先用Routed Length做对内等长。如果过孔数量确实无法一致再用Signal Length来补偿但需要额外通过仿真或实测验证。5.5 蛇形走线绕出来的长度真正有效吗做等长时大家都爱用蛇形走线来补长度但这里有个容易忽略的点蛇形走线相邻线段之间的间距不能太小否则它们之间的耦合会让信号提前跳变实际延迟小于按几何长度计算的理论值。这就是常说的“蛇形线可不只是走线”的问题。工程经验上蛇形线的间距至少要是线宽的3倍以上如果是3W原则耦合影响基本可忽略间距小于2W时补偿长度就要打折扣了。如果你发现长度匹配做了但时序还差一点检查一下蛇形线间距是否过近。另外蛇形线段的长度不宜太长单个锯齿的长度最好控制在某个范围内比如小于信号上升沿对应空间长度的1/4否则也会引入额外的延迟误差。5.6 同样是FR4为什么不同板厂的Signal Length参考价值不同层叠材料和实际介电常数会因为板材批次、树脂含量不同有偏差。板厂给出的Dk值往往是标称值实际内层带状线的等效Dk可能偏低或偏高导致信号实际速度与理论计算有误差。这时候Signal Length作为一个相对参考依然有效——它至少正确反映了过孔和层叠带来的额外长度趋势。但做绝对延迟匹配时需要通过TDR测试来校验实际传播速度。我个人在做完高速板的首版之后有条件的话都会请板厂配合做阻抗测试顺便提一下实测的层间传输时延用实测值回代修正后续设计的长度预算。这个流程虽然麻烦但能让你在第二版设计里把长度约束设计得非常精准。最后再分享一点我自己的习惯每次新建PCB工程我都会第一时间把层叠管理器按目标板厚、铜厚、介质材料配置好哪怕还没确定最终叠层也要先用预估参数占位。这样布线过程中看到的所有长度数据都是基于一致的计算基础等板厂确认叠层后再回头修正一次。就是这个不起眼的习惯帮我少走了很多弯弯路。还有一个小技巧做等长时不要只盯着数字相等最好在PCB上视觉确认一下走线的路径是否真的对称。有时候数值对了但一根线绕了大圈、另一根线密集蛇形两者因为耦合效应和损耗差异会产生肉眼看不出来的偏差。工具是辅助真正决定板子能不能跑的还是你对信号路径的理解。
返回列表