ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

KiCad PCB等长组设置全攻略:从Net Class到绕线工具实战

2026/10/7 22:05:08 拓冰建站 浏览量
KiCad PCB等长组设置全攻略:从Net Class到绕线工具实战 最近KiCad用的人明显多了起来很多以前用立创EDA或AD的硬件工程师转过来之后第一个卡住的地方往往不是画原理图而是PCB里这堆“高级约束”到底在哪设置。尤其等长组这个概念在别的工具里可能是一个按钮在KiCad里却要自己把“Net Class Length/Skew 绕线工具”串起来用。刚好我这段时间在处理一块带DDR3和USB2.0的四层板等长组从无到有调了个遍踩了几个挺典型的坑干脆把整个过程完整记录下来。如果你也正在纠结“KiCad到底能不能做等长组”“等长组设置完为什么DRC不报错”这篇应该能帮你少走不少弯路。1. 动手之前先搞懂等长组到底在等什么1.1 等长不是“电线一样长”而是“时间一样长”很多刚接触高速PCB的朋友容易把等长理解成“把线画得一样长”这个说法只说对了一半。真正要等的是信号的传播时间。电信号在铜箔里传播的速度不是光速而是由层叠结构、介电常数、线宽线距共同决定的。FR4板材上信号传播速度通常在6.7ps/mm左右也就是说每相差1mm走线信号到达时间就会差大概6.7皮秒。举个实际例子DDR3-1600的一个UI周期是625ps如果组内两根线差了3mm时间差大约是20ps。单独看20ps好像不算大但要是再叠加时钟抖动、电源纹波、串扰、温度漂移时序裕量很快就没了。所以等长组的本质是把一组时序相关的信号比如DDR数据总线、USB差分对、RGMII数据线限制在同一个时间预算范围内而不是单纯为了视觉上好看。理解这一点之后再回到KiCad就会清楚很多KiCad里的等长组不是一个“拖选框”而是一套由规则驱动的工作流。你要先告诉工具“哪几条线是一组的”还要告诉它“组内允许差多少长度”然后DRC才能帮你判断有没有问题。1.2 KiCad 里等长组的组成套路Net Class Length/Skew Tune我在KiCad 8.x和9.x上都试过等长组的基本组成可以拆成三块。第一块是Net Class也就是网络类。你可以在Board Setup里新建一个类比如DDR3_DQ0然后把DQ0到DQ7这几根网络全都归到这个类里。等长组的“组”在KiCad里最直接的落地方式就是这个。第二块是长度约束在Net Class里可以设置Min、Max、Target还有最重要的Skew。Skew就是组内各网络之间允许的最大长度偏差这是等长检查的关键字段。第三块是绕线工具在PCBNew里用Tune Track Length和Tune Differential Pair这两个交互工具把不符合长度的网络绕出蛇形或手风琴形状让实际长度落到约束范围内。这套流程第一次用会觉得绕但熟练之后反而比图形化“拉一根目标线”的方式更精准。因为你把规则写在Net Class里后面换板子、改版本规则还能复用DRC也始终在后台帮你盯着。与其抱怨KiCad没有一键等长不如先适应这种“规则先行”的思路。2. 新建工程前把单位和时序预算先定好2.1 单位、层叠和传播延迟的粗略换算等长调参的第一步不是打开绕线工具而是先把单位体系统一。KiCad默认显示单位可以在Board Setup里的General选项下调整我一般用毫米因为跟机械结构、外壳图纸对起来方便。如果你是从AD转过来的可能习惯mil也完全没问题但要注意同一张板子里别来回切换很容易把数值搞混。1mm约等于39.37mil这个换算关系我每次做等长时都要在心里过一遍。层叠信息同样关键。四层板常见的层叠是“信号-地-电源-信号”FR4的介电常数大约在4.2到4.6之间但考虑到微带走线周围的混合介质实际等效介电常数会低一些。我习惯直接用“每毫米约6.7ps”这个工程估算值来算时间预算。不是特别精确但用来判断“这个等长偏差能不能接受”完全够用。比如USB2.0高速模式协议本身对差分对内skew的要求在100ps级别按6.7ps/mm反推长度差控制在十几毫米以内理论上不会出大问题但工程上大家都会留更严格的裕量一般会做到5mil到10mil以内也就是0.127mm到0.254mm。2.2 每个组的等长范围该给多少很多朋友上来就问“等长组一般设多少毫米”这个问题其实没有标准答案因为每个芯片的手册会给不同的时序预算PCIe、USB、DDR、MIPI的要求也完全不一样。我只能给一组我常用的经验起点值用来做首版约束最终还是要以对应芯片的数据手册为准。信号类型组内等长参考说明DDR2/DDR3数据组同字节组内不超过1mm具体看主控的tDQSS、tDS等参数DDR地址/控制组相对时钟组不超过1.5mm有些平台要求更严USB2.0差分对对内不超过5~10mil主要是控制共模转换百兆/千兆以太网RGMII数据线间不超过1mm时钟通常单独一组MIPI/HDMI差分对对内不超过5mil高速差分信号尤其要控制对内偏差注意这张表不是设计规范只是我调试板子时的初始值。真正靠谱的做法是把主控的数据手册打开找到AC时序特性表把建立时间、保持时间、时钟周期算一遍得出一个允许的最大长度偏差再留出30%到50%裕量填入KiCad。3. 实战KiCad 等长约束设置全流程3.1 第一步新建 Net Class 并把网络归组打开PCBNew之后进入Board Setup左侧找到Net Classes。这个界面就是你管理规则的核心地方。在Classes列表里点加号新建一个类名字建议起得有辨识度比如DDR3_DQ0、DDR3_ADDR、USB_DIFF不要用Class1这种名字不然等长组一多你自己都分不清。创建好类之后还需要把网络分配进去。KiCad支持在Net Class Assignments里把某个网络或者符合某个命名规律的网络指到新类下。比如DDR内存颗粒的数据脚通常命名规律很强DDR3_DQ0_DQ0这种前缀很清晰可以直接按网络名逐个添加。如果你在原理图阶段就给网络标签设置了Net Class属性那在PCB里打开时就已经自动归好类了这块建议在原理图阶段做后面省事很多。分配完成后在PCB里随便点一根网络打开属性面板确认它的Net Class显示的是你刚建的那个类而不是Default。这一步非常关键因为很多人设置了Net Class却忘了分配网络结果等长规则只作用在空类上DRC自然一言不发。3.2 第二步设置 Length 与 Skew 数值在Net Classes编辑器里选中你新建的类右侧会显示这个类相关的约束项。往下找能看到Length和Skew相关的输入框。不同KiCad版本界面会有差异但核心字段基本一致Min、Target、Max以及Skew。我的填法一般是先看组内最长的那根线实际是多少然后把Target设成这个值Min和Max根据Target上下浮动Skew填上组内允许的最大偏差。举个例子DDR3_DQ0这个类里有8根数据线我初步布线之后发现最长那根是32.5mm那我可能把Target设成33mmMin设成32mmMax设成34mmSkew设成1mm。这样DRC的规则就变成每根线都要在32到34mm之间并且任意两根线的长度差不能超过1mm。Skew这个字段一定要填很多人只设了Min和Max以为这样就算等长组了其实不对。Min、Max是单根网络的绝对长度范围Skew才是真正管“组内一致”的参数。你如果不填SkewKiCad的DRC只会检查每根线有没有超长不会管它们之间差多少。3.3 第三步布线顺序和绕线区的预留设置完规则之后不要急着拿Tune工具到处绕线。我自己的经验是等长组能不能顺利调出来80%取决于布局和布线顺序。先把时钟线、差分对、关键高速信号走完因为这些网络往往有阻抗要求可调整的空间比较小。然后走等长组里的核心网络尽量保证同一组网络从驱动端到接收端的路径一致同样的层、同样的过孔数量、同样的弯曲次数。最后再看长度差。元件摆放的时候就要顺便考虑绕线空间。比如DDR颗粒旁边留出一块空白区域不要塞太多去耦电容否则等长线没地方绕。还有同一组线的扇出方向尽量一致这样天生长度差就不大后面绕线量也少。4. 核心调参绕线工具怎么用、参数怎么给4.1 Tune Track Length 单端等长调整当网络布通、规则也填好之后就可以开始绕线了。在PCBNew右侧工具栏里找到Tune Track Length图标或者用默认快捷键T。选中这根工具后再点击你想调整的那根走线沿着走线方向拖动鼠标KiCad就会自动生成蛇形或手风琴形状的绕线。拖动过程中KiCad会实时显示当前长度和目标长度的关系我的习惯是一边拖一边看长度读数让它慢慢接近Target值。需要注意的是蛇形绕线的参数不是随便给的振幅和间隙直接影响信号质量和绕线效率。参数我的常用起点调整思路Amplitude振幅0.4mm到0.6mm太小绕线效率低且容易形成窄尖角太大占用空间Gap间隙至少0.3mm最好三倍线宽以上间隙太小相邻折弯之间的串扰会明显增大Style形状高频信号用圆弧普通信号用直线蛇形圆弧过渡更平滑能减少阻抗突变点Target Length组内最长网络的实际长度统一补线基准避免所有线都绕到离谱的长度这里的Gap非常容易被忽略。很多人为了省空间把蛇形线折得很紧凑相邻两段平行铜箔靠得非常近。表面看长度对上了实际上因为相邻走线之间产生强耦合信号的边沿会被拖慢反而破坏了时序。我的底线是Gap不小于三倍线宽宁可多占一点板子面积也不要在这里省。4.2 Tune Differential Pair 差分对内等长差分对和普通单端信号稍微不同。对于USB、以太网、MIPI这类差分信号等长有两个层面一个是对内等长就是P和N两根线要尽量对称另一个是组间等长比如多组差分信号之间的相对延迟。实际调板子时对内等长永远优先于组间等长。在KiCad里如果已经定义了差分对网络布线时会用Route Differential Pair工具默认快捷键P。走完差分对之后再用Tune Differential Pair工具来调整对内长度。相比单端蛇形差分对这个工具会更智能一些它会保持P、N两根线的对称关系拖动时在弯折处自动保持间距和形状一致。你在调整过程中同样要注意振幅和间隙不能只盯着某一根线。有一类常见错误是P和N本身路径差别已经很大了比如一根走了顶层直连另一根打过孔绕到了底层你再怎么绕也很难把对内偏差调小。遇到这种情况应该先改路径而不是硬绕。4.3 实时读长度与DRC复验调完一组线之后我习惯先选中整根网络在属性面板或者状态栏里确认一下走线长度然后直接跑一遍DRC。KiCad的DRC会把违反长度约束和Skew约束的项列出来相当于自动帮你验收。我在调DDR数据组的时候会一组一组来看比如先看DQ0到DQ7确认DRC报告里没有长度错误再去看DQ8到DQ15。不要一次性把几十根线全调完再跑DRC那样一旦出错你根本不知道是哪一根在拖后腿。边调边查看起来慢实际效率最高。5. 常见问题排查为什么我设置了还不等长5.1 DRC不报错但长度其实超了这种情况我见过很多次原因十有八九是网络压根没被分配到对应的Net Class里。你在Board Setup里建了类、填了规则但Net Class Assignments里没把网络加进去那这个网络就是Default类不受你新建规则约束。DRC查不到问题很正常。排查方法很简单在PCB里点击网络看属性面板里的Net Class是哪一项。只要是Default马上就能发现问题。另外一种情况是Skew没填前面说过只填Min和MaxDRC不会做组内偏差检查网络长度即使相差5mm也不会触发报错。这是新手最容易忽略的点。5.2 绕完之后组内差异反而变大我刚开始也犯过这个错误设了一个比较大的Target Length比如组内最长线是30mm我把Target填成了40mm想着“所有线都往40mm绕不就等长了吗”。结果绕完之后有些线绕到了39.8mm有些在38.5mm组内偏差反而更大了而且每根线都白白增加了长度占用了一大片PCB面积信号质量也没变好。后来我改成“跟随最长线”的思路先看组内当前最长的那根线是多少把Target设成比它略高一点比如30mm的最长线Target设30.5mm然后其他所有线都往这个数值靠。这样既控制绝对长度又缩小组内偏差。记住绕线不是目标缩小偏差才是目标。5.3 空间不够绕线怎么办等长组调到最后往往会出现一两根短线没地方绕的情况。这时候我一般按优先级这样处理先看能不能调整元件布局把内存颗粒或者连接器稍微移动一点给绕线区腾位置不行的话考虑让短线换层走利用另一层的空白区域做蛇形再不行只能把允许偏差适当放大但前提是重新校核一遍时序预算。还有一个容易忽略的点绕线空间要提前留。如果布局阶段就把板子塞得满满当当等长调参阶段一定会痛苦。我现在的习惯是布局后、布线前先大概估算等长组需要的绕线面积然后强制留出一块“缓冲区”哪怕暂时看起来空着也比后面硬塞要好看。5.4 从立创EDA转过来的人最容易踩的坑很多从立创EDA转KiCad的人会问“立创EDA和KiCad哪个好用”这个问题我之前也纠结过。说实话立创EDA在等长设置上确实更直白选中一组网络就能看到目标长度和实时偏差KiCad则是把规则藏在Net Class里需要多一步学习。但KiCad的优势是规则系统完整、DRC检查很透明而且不受平台限制库管理也更灵活。嘉立创的封装库可以导入KiCad使用我通常通过第三方转换工具或者官方生态里的插件来获取封装。这个和等长组设置本身没有直接关系但如果你在布局布线开始之后再换封装、改库很容易把已经调好的走线弄乱。所以我的建议是导入库这件事放在新建PCB之前全部解决不要在调等长的过程中再去折腾。6. 等长调参的几条“保命”经验6.1 先把所有网络布通再统一调整长度头几次做等长的时候我特别喜欢边布线边绕线觉得这样可以一步到位。结果就是改了一根线之后旁边的线又受影响整个板子改得乱七八糟。后来我改成“先连通、后等长”的流程先把一组网络全部按照最短路径布通然后选中所有网络看长度分布找到最长的那根作为基准再统一用绕线工具补齐。这样做的好处是你有一个清晰的目标长度而且知道每一根线需要补多少。如果是边布边绕你根本不知道最终最长线会在哪里很容易做无用功。6.2 目标长度跟着最长的那根走这也是我在多次调板之后总结出来的一个非常实用的习惯。等长组的目标长度不是拍脑门填的它应该来自组内实际布线结果。先看最长的那根线其他线往这个值靠拢而不是选一个任意的理想值然后让所有线都绕到那个理想值去。你可能会想为什么不能直接设一个很大的Target反正最后都等长了因为绕线本身会带来额外的寄生电容和电感还占用空间。所有线都绕得很长意味着每一根信号都经过更多的不连续点信号质量下降不说板子面积也浪费了。我见过有人把USB差分对绕到10cm长就为了“好看”那是完全没有必要的。6.3 差分对内等长优先组间等长其次如果是差分信号我永远先保证P和N两根线的偏差足够小。对内偏差会直接影响共模噪声这个比组间偏差更敏感。组间等长主要影响时序对齐严重程度取决于协议和频率。在KiCad里我会先给每对差分网络单独建类设置严格的Skew然后再考虑多对差分信号之间的组间匹配。调参的时候也一样先用Tune Differential Pair把对内偏差压下去再用单端绕线或者差分对组间工具去拉齐各对之间的长度。顺序反了会陷入反复调整的泥潭。6.4 养成保存规则模板和归档参数的习惯KiCad的Net Class设置是可以沉淀下来的。我每做完一个项目都会把常用的Net Class名称、Min、Max、Skew值整理成一个表格下次做同类板子时直接照着填。DDR3和DDR4的等长要求不同USB2.0和USB3.0也不同但这些经验数据越攒越有用。另外有一个小技巧我会在工程目录里放一个Memo文档记录每块板子的层叠结构、板材介电常数、信号速率估算值、各等长组的允许偏差。这样等长组出了问题翻一下当时的假设条件很快就能定位是规则设置错了还是布线空间不够。这个习惯帮我避过很多次“改了半天不知道自己在改什么”的尴尬。最后再分享一个我自己的感受。调等长组这件事真正难的不是KiCad操作而是你有没有把时序预算、信号完整性、布局空间当成一个整体来看。软件只是把你的设计规则落地规则本身想不清楚哪个工具都救不了你。