在PCB设计里,做高速板绕不开等长这关。尤其DDR、PCIe这类并行总线,一组信号如果长度差得太多,时序直接跑偏,板子做回来点不亮,查起来又费劲又丢人。Altium Designer里天天和长度打交道的两个核心参数,就是Signal Length和Routed Length,这俩名字看着像,实际作用完全不同,很多人用错或者干脆不看,等到板厂反馈、上机调试的时候才后悔。
这篇东西不聊虚的,就讲清楚三件事:Signal Length和Routed Length怎么区分、什么时候该看哪个,怎么用它们把蛇形等长做准。顺便把AD22版本在等长走线这块的几个实用更新也一并说透。无论你是刚转高速设计的新人,还是被DDR4等长折磨过几次的老手,照着这篇文章的流程去配置,都能把等长这件事从“凭感觉”变成“看数据”。
1. 等长的本质:长度差的背后是时序差
做等长之前,先得想明白为什么非要等长。不是所有信号都需要,但只要跑的是并行同步总线,这个问题就躲不掉。
并行总线的读写时序,靠的是时钟边沿去采样数据线上的电平。数据信号和时钟信号从控制器出发,经过PCB走线到达接收端,如果每条线的传输延迟不一样,接收端采样到的数据就会出现建立时间和保持时间不够的情况。所谓等长,本质上是在控制信号飞行时间的一致性,而不是为了好看、整齐。电信号在FR4板材中的传播速度大约是光速的60%左右,换算下来,1英寸走线大约带来160ps到180ps的延迟。看似很短,但DDR4-3200一个时钟周期也就625ps,数据有效窗口更短,几十ps的偏差就可能吃掉大量时序裕量。
所以等长不是“差不多就行”,而是要量化控制。长度偏差控制在多少mil,取决于总线速率、芯片时序规格、信号完整性的预算分配。比如DDR3通常按地址线相对时钟等长,组内偏差控制在±20mil甚至±50mil都有见过;DDR4的地址命令组,很多设计规范直接要求相对时钟的skew控制在几个mil以内。这个数值怎么来?不是拍脑袋定的,有些来自芯片手册的tDQSS、tDSS、tDSH参数计算,有些来自SI仿真结果的时域裕量分析。第一回做新项目时,别偷懒,老老实实推一遍时序预算,你才能在Layout阶段知道每一类走线的等长约束该填多少。
明白了等长为什么存在,再去看Signal Length和Routed Length这两个参数,才算真正有了抓手。否则你只是在软件里把规则填好,并不知道这些数字到底在保护什么。
2. Signal Length和Routed Length,到底差在哪
这是整个话题最关键的两个参数。Altium Designer中,如果你选中一段走线,打开Properties面板看Length相关数据,会出现多个条目:Signal Length、Routed Length,有的版本里还有True Length和Elongation。见过很多人只盯着Routed Length看,或者搞不清Signal Length为什么比Routed Length长出一截,其实这两个值对应的是完全不同层面的长度。
信号在板子上实际走的物理路径,是“焊盘到焊盘的铜箔路径”,包括过孔、焊盘、走线本身。Routed Length记录的就是这条敷铜走线从头到尾的实际物理长度,它是你画出来的那些Track和弧线的总和。只要你没有手动改过、没有删除过线段,Routed Length就是你肉眼可见的铜皮的累加长度。
Signal Length则更接近芯片厂商和SI工程师关心的“电气长度”。它不只看铜皮长度,还把过孔、封装引脚的寄生效应折算成等效走线长度加进去。在Altium里配置过孔封装时,有一个参数就是过孔的等效长度,叠层结构里的介质厚度、过孔尺寸、盘径,都会影响这个折算比例。换句话说,Signal Length是对信号实际传播路径的电气建模,它更能代表信号到达接收端所经历的延迟。正因为这样,在DDR等长规则里,约束对象的信号长度用Signal Length来评估,要比用Routed Length更贴近真实的时序关系。
举一个实际项目里的例子。某块板子,一组地址信号,分组内所有走线的Routed Length调到几乎一致,偏差不超过5mil,但DRC的等长检查仍然报错。原因就是源端和末端过孔数量不同、换层次数不同,导致每根线累积的过孔等效长度差异达到几十mil。用Routed Length做约束,自然管不到这部分差异。后来把Matched Length规则里的长度计算切换成Signal Length,重新做蛇形绕线补偿,DRC才真正跑干净。
那日常操作中到底该看哪个?建议这样做:绕线过程中的实时长度显示,可以看Routed Length,因为拖拽蛇形时反馈直接,视觉直观;但最终过DRC、交付检查时,必须切换到Signal Length确认。实测下来,两者差出50到100mil的情况非常常见,遇到叠层厚、过孔多的板子,差距只会更大。
3. 怎么用这两个参数做“看得见”的蛇形等长
蛇形走线的本质,就是把多余的线长通过“绕弯”的方式补上去。听起来简单,但真正操作时,蛇形该绕多大振幅、多大间距、走线间距和线宽的比例是多少,都有讲究。这些参数直接影响信号质量,不是随便拉个S形就交差的。
3.1 先把设计规则吃透:Matched Length规则配置
等长检查靠的不是人眼,是Altium Designer的Matched Length设计规则。打开PCB设计规则面板,找到High Speed类目下的Matched Lengths,这里才是等长控制的真正主战场。
关键参数有三个。Min/Max Length定义绝对长度范围,适合给“全局绝对长度”约束类信号用。Tolerance是的就是等长偏差,表示组内最大最小值的允差。Amplitude和Gap是蛇形绕线时的默认振幅和间距,前者决定你每绕一个S弯补多长线,后者决定相邻蛇形臂之间的空气隙。
信号分组也在这里处理。可以手动添加一个个网络,但强烈建议先在原理图或PCB里把需要等长的网络归到同一个Net Class,然后在Matched Length规则里直接以Class为作用对象来配置。这样后面增删网络、调整约束,都比单个网络维护省心得多。一个比较稳妥的Tolerance起始值,DDR3数据组可以先放±20mil,DDR4地址控制组建议更紧,直接设±5mil甚至更低,具体按芯片手册来。
这里有一个很多人没注意的选项,就是规则作用对象里的“匹配网络”方式。在Matched Length中,既可以按原理图里的差分对信号对做匹配,也可以按Class做组内匹配,还有按XSignals匹配。如果你是在做多片DDR的拓扑,记得用XSignals的方式去匹配。XSignals会把源端到每个颗粒的完整路径都纳入计算,比单纯网络匹配更贴近实际信号传输路径。
3.2 长度不够?用交互式蛇形走线精准补长
规则配置好了,接下来就是实际操作。选中要绕线的走线,执行菜单Route > Interactive Length Tuning,或者直接按快捷键T+R(部分版本是U+R,取决于你的快捷键配置),鼠标靠近走线时会出现蛇形预览。此时按Tab键打开属性面板,能看到实时长度读数,一边拖着鼠标绕线,一边观察当前长度和目标长度之间的差值。这个差值,就是你要用蛇形补出来的量。
回到前面说的Routed Length和Signal Length,在这个环节就体现出操作细节了。拖蛇形时面板上显示的是当前走线的物理长度累计,它不会实时算过孔等效,这没问题,因为补长补的是铜皮长度。但你要心里有数,DRC最终用的是Signal Length。所以操作上建议:先把走线全部连通,过孔也打好,所有层都走完了,再统一做蛇形补偿。这时候的Routed Length和Signal Length差额是固定的,绕线时只需要把每一根线补到“最长的基准线长度 + 过孔折算差额”即可。
在走线时按小键盘的3和4,可以实时调整蛇形的振幅和间距,数字1和2调节蛇形爬坡的弧度。有一个容易被忽略的细节:蛇形线的间距Gap不能太小。常规经验是蛇形间距至少要不小于3倍线宽,如果在内层且旁边有平行长走线,建议拉到4到5倍线宽以上。间距太小,相邻蛇形臂之间的耦合会明显增加,差模串扰变大,反而得不偿失。
3.3 自动/半自动等长:交互式绕线的小技巧
在实际拉蛇形的时候,不需要每一段都手动拖。先把鼠标放在走线上,按下Tab,在Length Tuning面板的目标长度一栏填上目标值,然后直接沿走线方向拖动鼠标,蛇形会自动展开。靠近目标长度时,蛇形振幅会自动收敛,光标附近也会出现实时数值。
再配合快捷键Shift+F可以快速在PCB里筛选网络,批量定位需要绕线的对象。等长绕完以后,建议逐根检查一遍是否出现锐角折弯、间距是否均匀,以及蛇形是否跨过了其他网络的参考平面切割区域。一个常见的低级错误是,蛇形绕线跨过了分割的电源平面或地平面,导致信号的回流路径被打断,等长是做到了,信号完整性反而更差了。这种情况在高速设计里属于性价比极低的自找麻烦。
3.4 PCB面板的两个核心视图:用数据看板管控进度
Altium Designer的PCB面板里,有两个和长度相关的视图,分别是Nets和Length。Nets视图适合看网络归属和DRC状态,Length视图则是专门的长度数据仪表盘。
在Length视图下,你可以看到PCB中的每条网络、每个XSignal的Signal Length、Routed Length等关键字段,也可以自由添加显示列。把所有需要等长的网络加进去,按长度排序,就能一眼找出最短板和最长的线。板子规模大的时候,这里就是你的等长管控总览,不需要一根根点开Properties看。
这里分享我自己的习惯:在Length视图里打开Routed Length、Signal Length、Target Length、Length Deviation From Target这几个字段。Target Length在规则里配置好之后会自动计算显示,偏差值则直接标红,一眼扫过去就知道哪根线还没绕到位。比一根根去点选网络,效率高太多了。
4. 蛇形等长操作中的几个细节与验证手段
等长不是绕完就完事,后续的验证和微调同样重要。因为蛇形绕线本身只是形式,最终要落实到DRC报告里的数字是否达标。
4.1 绕完蛇形后,DRC怎么查才算数
完成绕线后,执行Tools > Design Rule Check,确保Matched Length规则项已经勾选。DRC跑完,Messages面板里会列出所有不满足等长约束的网络对或XSignals,双击报文可以直接跳转定位到问题网络。
这里要强调一下,DRC结果里列出的长度值,是Altium按照你在规则里选择的计算方式得出的。默认模式往往是走线铜箔长度,也就是Routed Length的累计。如果你的设计要求参考Signal Length,务必去Matched Length规则里,把“匹配长度计算方式”切换成Signal Length再跑一次DRC。两种方式得到的DRC结果很可能不一致,严不严格,要看设计规范而定。我见过好几个项目,因为默认用Routed Length过DRC,板厂回来后整组过孔换大孔,时序直接出问题。
4.2 等长检查的显示设置:在板上直接标出偏差
新版本Altium里,可以在PCB中开启等长长度标尺的可视化显示,也就是选择一段走线或网络后,在Properties面板中打开Length Tuning的显示,Altium会直接在被选中走线旁标注当前长度和目标长度的差值,绿勾红叉,一目了然。批量检查时,配合Filter面板选中一整类信号,扫一眼板上标出的数字就能快速判断出哪根线差了过多。
如果是刚接触蛇形等长的朋友,我建议养成一个习惯:绕线之前,在Properties面板里先把当前长度和目标长度记下来,新建一个Excel表格,把一组信号所有网络的Routed Length、Signal Length偏差都记录进去,绕完一根更新一次。等长这种活儿,最忌讳“我以为绕得差不多了”,到最后DRC一亮灯才发现补了白补。
5. AD22版的新特性:等长操作的“手感和效率”提升
Altium Designer 22这个版本,在PCB布线模块尤其是等长走线相关操作上,做了几个很实在的更新。不扯虚的,说说实际使用中感受明显的地方。
5.1 交互式蛇形绕线的“动态等长”功能
在AD22中,交互式长度调谐增加了更智能的动态反馈。具体表现是,当你操作蛇形绕线接近目标长度时,走线形态会自适应地调整蛇形弯曲的松紧度,避免撞线、压线的情况。老版本里,蛇形绕到后来经常出现蛇形臂之间间距突然变小甚至交织在一起,需要手动一截一截调整。AD22在这块的优化是,蛇形臂会自动保持用户设定的Gap距离,即使转弯处也不会轻易缩水。
实测体验是,绕一组32根的DDR3地址线,手感明显比之前顺滑,特别是在拐角处蛇形的过渡弧线处理得更加自然,不再出现“硬掰”的小半径圆弧。绕完之后的信号质量也更干净,因为最小弯曲半径保持得较好。
5.2 长度面板新增信号长度分布显示
AD22的PCB面板Length视图里,新增了更详细的长度分布分析显示。在面板设置中选择显示历史分布或长度直方图,你不需要一根根比对,扫一眼直方图就能看出整组网络的长度分布集中度。如果直方图里有一两个点离群,不用猜,肯定就是那两根没绕到位或绕过了的信号。
直方图的引入,对大面积等长组的排查效率提升明显。尤其DDR3/4的地址线动辄二三十根,靠肉眼逐根看数字,费时且容易忽略。打开直方图后,分布形态是否符合预期,几秒钟就有结论。
5.3 过孔等长折算的显示优化
上一节讲过,Signal Length是把过孔的等效长度计入总长度的。AD22的改进在于,PCB单端或差分走线的Properties面板中,长度属性对过孔等效长度的拆解显示更加清晰,你能直接看到当前网络的总Signal Length中,有多少是走线长度,有多少是过孔折算长度,有多少是引脚封装折算长度。
这个拆解对调试太有用了。之前遇到等长DRC不过的情况,往往猜不到差异来自何处,现在拆解字段一打开,差异是在走线段还是过孔段全部摊开来看。排查问题时直接瞄准差异大的环节处理,省去了很多摸索。
5.4 更智能的XSignals等长匹配
AD22对XSignals的处理逻辑也有升级,在处理多负载拓扑时,XSignals能更准确地识别从驱动端到每个负载端的独立路径,并且对每一段路径单独做长度累计。这意味着在做一驱多的等长控制时,你能检查到每一个负载分支是否都符合约束,而不是只看到从源端出发的主干长度。
实际项目里做DDR4的地址线一驱多颗粒,每一路分支的目标长度可能存在差异,AD22能分别显示每一路的Signal Length和偏差,再用蛇形逐路修正,效率提升非常明显。如果你们还在用老版本做一驱多的板子,强烈建议升级试试,这个改进属于“回不去”的那种。
6. 避坑指南:这些等长问题,十个人九个遇到过
最后整理几个我实际踩过、也帮别人排查过的等长相关高频问题,按典型程度排个序,供大家参考。
- DRC检查项没勾选Matched Length。这种最坑,规则配好了,也绕完线了,最后DRC报告里干干净净一片绿,以为没问题直接发板。实际上只是等长规则没参与检查。检查方法很简单,DRC设置里搜Matched,确认勾选状态。
- 绕线时只看长度,没看DRC计算方式。也就是全文档反复强调的Signal Length和Routed Length混用问题。逐根绕好之后,把Matched Length规则里的计算方式切到Signal Length再审视一遍,心里就踏实了。
- 蛇形间距盲目缩小,绕完DRC过了,SI仿真却挂了。蛇形线间距小于3倍线宽后,线间耦合增长明显,近端串扰增大。风险不在等长本身,而在你为等长付出的信号质量代价。建议用3倍线宽作为底线来设Gap。
- 增删走线以后没有同步更新蛇形。有时候调整了一根走线的路径,长度变了,却没重新绕蛇形,等到板子回来才发现时序出问题。规范流程是,任何影响走线长度的修改后,必须重新跑一次Matched Length的DRC。
- 过孔换层导致的长度差异被忽略。高速总线中,相邻层的切换会增加额外的过孔延时。如果代码里夹着一根换层次数明显多于其他线的信号,它的Signal Length往往偏大。别只盯着走线长度,过孔数量过多时优先调整拓扑减少换层。
再分享一个排查技巧:当DRC报告报出某根线的长度偏差较大时,不要急着直接拖蛇形。先用Ctrl+H选中网络,在Properties面板里看它到底多了多少、少了多少,再看拆解字段,确认差异主要是出现在走线长度还是过孔折算。先定位差异来源再动手,盲目拖蛇形只会越改越乱。
7. 等长设计最后的落地经验
蛇形等长这件事,做到最后拼的不是技巧,是流程和习惯。规则怎么填、用Signal Length还是Routed Length、绕完之后怎么验证,这些如果每次都是临场发挥,就会在不同项目里反复踩同样的坑。把一套流程固定下来,每次做高速板都按同样的顺序走一遍,问题自然会少很多。
我个人习惯是:画板之前先把所有需要等长的网络分组定义好,规格书里的skew要求直接换算成设计规则里Tolerance的数值;走线过程中阶段性地切到Length视图看分布直方图,心中有数但不强求一步到位;全部走完,先跑Routed Length的DRC粗查长度,再切Signal Length精查过孔差异和整体裕量。最后发给板厂之前,逐个XSignal展开,确认所有分支都在容差范围里面。这套流程走下来,DDR3、DDR4、MIPI这类并行总线的等长问题,基本能在设计阶段全部消化,不留到贴片回来再后悔。
Altium Designer的等长工具这几年确实越做越顺手,但工具只是辅助,真正的判断力还是来自于对信号长度、电气延迟和时序预算的理解。把这几个概念想通了,不管软件怎么更新,你都能快速上手。希望这篇文章能把Signal Length和Routed Length这两个容易被混淆的概念讲透,让各位在做蛇形等长的时候,少一点玄学,多一点把握。