PCB布线规则管理:Net Class分类方法与AD/Allegro/PADS实战

发布时间:2026/10/7 1:06:08
PCB布线规则管理:Net Class分类方法与AD/Allegro/PADS实战 PCB布线的时候很多工程师习惯先把线拉完再回头去看规则设置我相反我第一件事就是在工程里把网络分成不同class然后针对每个class把间距、线宽、过孔这些规则一次性给到位。这套流程看起来多花了一两个小时但后面省的时间远不止这个数——DRC不会半夜跳出一堆报错改版时也不会因为某根电源线太细又得重走一遍。这篇文章就把我在adaltium designer、allegro、pads上创建class和配置规则的完整思路写出来包括参数怎么给、优先级怎么排、常见坑怎么躲。适合画过几块板、想把自己的规则库系统化的工程师也适合刚接触布线规则、被一堆报错搞得头大的新手。1. 为什么PCB布线前一定要先把Class和规则想清楚1.1 规则冲突的本质一根线上同时存在宽与窄、松与严的需求布线规则最让人头疼的地方不是规则本身复杂而是不同网络对同一参数的需求完全不同。举个最常见的例子整板间距设6milDDR信号线之间走4mil也能稳定工作但电源网络和低压控制信号之间你恨不得留到20mil以上。如果你只用一套全局规则就只能取一个折中值结果就是该松的地方太紧、该紧的地方太松。我在实际项目中见过不少因为全局规则过于保守导致的问题板子面积白白浪费、BGA出线困难甚至因为信号间距离不够出现串扰最后只能改版。反过来如果全局放得太宽电源网络和机壳地之间、高压区域和弱信号之间又存在安全间距隐患。这套矛盾靠人工一根一根去例外处理是治不好的因为规则一旦多起来你根本记不住哪根线被特殊对待过。Class就是用来解决这个矛盾的。它把“给所有网络定同一个规矩”变成“给每一类网络定一套合适的规矩”。电源归电源管高速信号归高速信号管模拟信号单独划一片区域管。DRC检查时软件会优先按照网络所属的Class去匹配规则匹配不到才落到全局默认规则上。这样既保留了兜底又给了每类信号专用空间。1.2 Class分类思路先分功能再分优先级那么Class到底应该怎么划我习惯按照功能域和敏感程度分两层。第一层按功能域分比如电源类、地类、高速信号类、普通信号类、时钟类、模拟类、接插件接口类。第二层再按敏感等级细分比如高速信号又可以分成DDR数据组、DDR地址控制组、SerDes差分对、USB差分对等。凡是需要不同线宽、不同间距、不同等长约束的网络都应该有自己独立的Class。这套分类思路的本质是把PCB上的网络当成一份“有等级差别的任务清单”每一类任务有自己的资源和底线。就像物流公司发快递普通包裹、易碎品、冷链件走的是不同流程包装标准也完全不同。你不可能让所有包裹都用冷链车的标准去配送成本太高也不可能全部按最普通的方式处理生鲜早坏了。Class就是PCB里的这套分级配送逻辑。1.3 主流EDA里Class的三种形态不同EDA工具里Class的实现形态稍有区别但核心思想一致。Altium Designer里叫Net Class定义在工程或PCB文件中Cadence Allegro里叫Net Class也常和约束集Constraint Set配合使用PADS里同样叫Net Class另外还有条件规则用来处理Class之间的特殊关系。下表把三种工具里Class的入口和用法做了个对照后面两个章节再展开讲每一步。工具Class名称创建入口规则绑定方式Altium DesignerNet ClassDesign → Classes或PCB面板的Net Classes视图在Clearance/Width等规则里通过InNetClass()条件关联Cadence AllegroNet ClassConstraint Manager → Net Class Assignment创建Physical/Spacing CSet后绑定到ClassPADS LayoutNet ClassSetup → Design Rules → Net Classes在Class内部直接设置线宽、间距或用条件规则设置Class间关系2. 实操主流EDA中Class创建的完整流程与先后顺序2.1 Altium Designer创建Net Class的两种路径Altium Designer里创建Class有两条路原理图阶段和PCB阶段都行我个人推荐直接在PCB里做因为网络信息到PCB阶段更完整而且规则直接生效。第一条路在PCB编辑界面按快捷键D→C打开Object Class Explorer。左侧栏选中Net Classes右键选择Add Net Class先重命名再在右侧把网络列表里的网络拖进这个Class里。拖拽过程中可以按Shift多选效率会高很多。第二条路用PCB面板管理。右下角面板按钮打开PCB面板把过滤器切成Net Classes视图在面板空白处右键Add Net Class然后选中具体网络右键Assign to Net Class。面板的好处是能直观看到每个Class里的网络数量和当前布线状态。无论用哪条路命名规范都建议从第一天起就定好。我的习惯是前缀直接表明功能比如PWR_12V、PWR_3V3、GND_AGND、HS_DDR_DQ、CLK_100M、USB_DIFF。这样后面写规则查询条件时一眼就能看清不至于在几十个Class里找半天。2.2 Cadence Allegro中Class与约束集的绑定Allegro的做法和AD有个很大区别AD里Class本身可以直接挂规则Allegro里Class需要通过约束集Constraint Set来间接关联规则。很多刚从AD转过来的同事在Allegro里建完Class后发现规则没生效就是因为漏了绑定这一步。具体操作是打开Constraint ManagerSetup → Constraints → Constraint Manager先创建Net Class在左侧工作簿的Net Class Assignment表中右键Create → Net Class然后把网络一个个分配进去。紧接着还要在Physical Constraint Set和Spacing Constraint Set工作簿里分别创建对应的PCS和SCS在物理约束里设置线宽、线距、过孔类型在间距约束里设置不同对象的间距。最后一步回到Net Class Assignment表把新建的Class对应的Physical Constraint Set和Spacing Constraint Set列分别下拉选成刚才建好的约束集合。这一步不完成Class里的网络会默默落到DEFAULT约束上规则等于没设。这也解释了为什么总有人在论坛问“Allegro规则管理器中Net的Class不能继承”——Allegro的Class本来就不做默认继承所有约束必须显式绑定。看清这个机制问题就少了一半。2.3 PADS及KiCad里的Class处理PADS里创建Class相对简单在Setup → Design Rules → Net Classes选项卡里点Add创建类后再把网络添加进去。PADS的Class设置界面里可以直接修改线宽和间距不用像Allegro那样再绑一次约束集。如果遇到两个Class之间要单独拉大间距的场合用Conditional Rules选项卡设置例如PWR类和GND类之间的间距大于等于20mil这种规则在电源多、高低压混合的板子上非常常用。KiCad从6.0开始也支持了比较完整的Net Class机制在Board Setup → Net Classes里创建类然后在Board Setup里的Clearance、Track Width等规则中按Net Class进行分配。KiCad里Class可以做继承也就是未特殊指定的规则沿用默认值这一点和AD的思路比较接近适合开源硬件爱好者快速上手。不管用哪个工具核心步骤都是三步建Class、给Class分配网络、把规则挂到Class上。顺序不要反了否则很容易出现建了规则网却没安排进去的情况。3. 从Class到规则间距、线宽、过孔、等长的参数怎么给3.1 间距规则的设定逻辑与优先级间距规则Clearance是所有规则里最基础的它直接决定板子能不能制造、电气上安不安全。间距的取值受三个因素制约PCB厂家的工艺能力、板上的电压差、信号的抗干扰要求。常规数字信号板我一般给6mil到8mil的线到线间距BGA出线区域有条件就4mil但要提前确认板厂能不能做到并且DRC时单独设置区域规则。电源网络到普通信号网络至少10mil高压区域比如12V以上到低压信号至少20mil如果板子上有220V或者变压器爬电距离要求就直接参照安全性标准来而不是靠经验值。Altium Designer里设置Class间距规则时要注意优先级。Design → Rules → Electrical → Clearance下可以创建多个Clearance规则每个规则在Where The First Object matches栏里指定匹配条件比如InNetClass(‘PWR_3V3’)。第二对象条件默认为All表示这个Class和所有网络之间都执行20mil间距。如果一个网络被多条间距规则命中AD会按规则优先级从上到下执行第一条匹配的规则。所以总的原则是越特殊的规则优先级越高默认规则垫底。Allegro里间距规则通过Spacing CSet管理每个CSet里可以分别设置走线到走线、走线到过孔、走线到焊盘、走线到铜皮的间距配置更细。把不同Class绑定到不同Spacing CSet后再让DRC跑一轮间距问题基本能一次性清干净。3.2 线宽规则载流能力、阻抗和制造窗口的三角平衡线宽的选取是布线里最需要权衡的环节。太窄电流一大就发热甚至烧断太宽占地方还可能破坏阻抗要求。线宽规则建议按Class分别设置最小、首选、最大三个值DRC能及时发现超出范围的情况布线时也不会跑偏。信号线的宽度主要由特征阻抗决定。单端信号一般按50Ω控制差分信号按90Ω或100Ω。具体线宽依赖叠层结构比如1.6mm四层板、外层到参考层0.1mm的常见叠层单端50Ω阻抗线宽大约5到6mil100Ω差分线宽和间距组合则要看具体仿真。这组参数建议直接用阻抗计算软件或者和板厂确认过的叠层去算不要照抄别人的板子。电源线宽主要看载流能力。工程上有个粗暴但好用的经验1oz外层铜厚10℃温升条件下1A电流大约需要0.3mm见方的走线宽度。这只是热设计的一个入口更精确的可以用IPC-2221公式计算。内层走线散热差我通常把外层经验值乘2来估。下面是我的参考值表电流A推荐线宽1oz外层常规板推荐线宽1oz内层备注0.50.2mm8mil0.4mm普通控制信号足够10.3mm12mil0.6mm板卡内部模块供电20.6mm24mil1.2mm风扇、小功率器件31.0mm40mil2.0mm模块主供电入口52.5mm5.0mm大电流建议铺铜或开窗注意这只是经验起点遇到大电流或高温环境必须用软件仿真或者按IPC标准详细计算别直接拿表硬套。Class里给电源网络设置了合适的线宽范围之后走线时软件会直接按首选宽度拉出省去反复手动改线宽的功夫。3.3 过孔与电流电源Class的典型配置过孔规则经常被忽略但它和线宽一样影响载流能力和可制造性。常规信号过孔我用0.3mm孔径、0.6mm焊盘机械钻最小可以做到0.2mm但成本会高一点。电源网络上建议加大到0.4mm孔径、0.8mm焊盘或者在需要大电流的多个位置打过孔阵把电流分摊开。对于电源Class还有一个细节如果走线宽度远大于过孔焊盘直径电流在过孔处会被截流形成热瓶颈。所以电源过孔数量和过孔孔径要配套比如3A电流的电源网络上除了加宽走线我一般还加3到4个0.4mm过孔确保从顶层到底层的垂直电流通路不发热。这块规则可以在AD的Routing → Routing Via Style中单独设置一个InNetClass条件也可以直接在Allegro物理约束集里绑定指定过孔集。3.4 表格速查一套可直接参考的规则模板结合我多年来的板级设计经验给出一份相对通用的Class规则参考模板。参数需要根据板厚、叠层、厂家能力和实际工作条件做修正但作为起点是没问题的。Class间距线宽Min/Preferred/Max过孔孔径备注默认规则Default6mil5/6/10mil0.3mm作为兜底PWR电源类10mil0.4/0.8/2.5mm0.4mm按电流细分GND地类6mil5/8/20mil0.3mm大面积铺铜时注意连接方式HS_DDR高速类5mil4/5/8mil0.25mm配合等长和阻抗规则DIFF_100欧差分5mil4/5/6mil0.3mm保持差分对内间距恒定CLK时钟类10mil6/8/12mil0.3mm靠近参考层包地可选ANALOG模拟类12mil6/8/15mil0.3mm远离干扰源必要时屏蔽这套模板的好处是默认规则设一个保守偏紧的值特殊Class按实际需求覆盖。DRC跑出来如果默认规则报错少说明整体密度合理报错多优先看是不是Class没建全而不是急着放松默认规则。4. 实际板卡场景中的Class划分方案4.1 电源网络Class载流和去耦双管齐下电源网络是Class规则最大的受益者。一块复杂板卡上从12V、5V、3.3V到1.8V、1.0V电源域多且电流各不相同如果全用一套电源规则要么小电流电源占地方要么大电流电源线宽不够。我的做法是把每一路电源都单独建一个Class比如PWR_12V、PWR_5V、PWR_3V3、PWR_1V8、PWR_1V0。每个Class根据该路电流设定独立的线宽下限大电流的低压内核供电用宽线加铺铜小电流的模拟电源可以窄一些但要保持隔离。电源规则里还有一个容易踩的坑去耦电容到电源引脚的连接。去耦电容的目的是给高频开关电流提供低阻抗回路这段走线如果又细又长去耦效果会大打折扣。所以我通常在PWR Class里专门为关键芯片的电源引脚创建一小块规则区域要求引脚出走线宽度不小于20mil并且优先直接进/出过孔到内层平面。4.2 高速信号ClassDDR和SerDes等长与阻抗控制高速信号Class的规则不只是间距和线宽还包括等长约束、阻抗约束、拓扑约束。以DDR3/DDR4为例我通常建几个ClassDDR_DQ数据线、DDR_ADD地址控制线、DDR_CLK时钟差分对、DDR_DQS数据选通差分对。数据线DDR_DQ内部要做等长一般按组内±20mil以内地址控制线DDR_ADD以时钟DDR_CLK为基准±50mil以内。差分线对内要严格控制正负线间距差分对Class里的线宽和间距最好用同一个值这样软件布线时不会突然变宽变窄影响阻抗连续性。在Allegro里做等长时Class规则配合约束管理器的Relative Propagation Delay非常方便。先在Net Class Assignment里把DDR数据组建好然后在Electrical约束集里给Class设置相对延迟目标布线时用Delay Tune交互绕线就能自动撑到目标长度附近。AD里则通过规则里的Length或Matched Length模板来实现类似效果。这类规则的共同点是它们都依赖建好的Class来界定“哪些网络属于同一组”没有Class等长规则要么写清单写得头大要么漏掉几根线而不自知。4.3 敏感模拟与保护Class隔离和干净地模拟信号Class的核心诉求是远离干扰源。我会把模拟信号、参考电压、模拟地单独建类并让它们和数字高速信号Class之间使用较大的间距。比如ADC前端参考电压REF_xx间距我给20mil以上同时要求尽量包地。保护网络的Class也值得专门建比如机壳地CHASSIS_GND、ESD放电通道、安全地等。这类网络的间距建议至少40mil以上必要时在规则里设置禁止铺铜区域防止高压打火。对ESD保护器件附近的走线还要约束走线长度尽量短Class规则里可以单独给这类网络设置Max Length。模拟部分的隔离规则一旦建好板子调试时就会少很多麻烦。很多ADC采集数据跳字、传感器信号毛刺大的问题根因就是模拟地上沾了数字噪声而规则又没有把这些网络真正分开。5. 常见问题与排查技巧Class不生效、规则冲突、移植复用5.1 Class不生效的常见原因与对策Class建好了但规则好像没起到作用这类问题几乎每个PCB工程师都遇到过。根据我的经验90%的情况逃不开下面几个原因。第一个是规则优先级问题AD里尤其常见。多个Clearance规则同时匹配同一对网络时优先级高的规则先判断如果把默认的全局规则放在最上面Class规则就永远轮不到执行。解决办法是在规则界面左下角进入Priorities把特殊Class规则上移到全局规则之前。第二个是Allegro漏绑定约束集。前面说过Allegro的Class必须显式关联Physical和Spacing约束集否则它走默认DEFAULT规则。经验是建好Class后回Net Class Assignment表检查一下那两列是否已经填了预设的CSet。第三个是网络没进对Class。特别是复制工程文件时Class分配信息容易丢。AD中可以在PCB面板的Net Classes视图里逐个核对网络数量和名称Allegro里可以通过Net Class Report快速查看网络分配情况。每修一次网络表也要重新确认一次Class分配尤其是ECO更新后新网络默认会掉到ALL不主动加回Class就等于裸奔。5.2 规则文件迁移与复用让新板卡10分钟获得完整规则库在同一家公司做类似产品时规则库完全可以复用不需要每块板卡从零建一次Class。把规则模板沉淀下来收益非常可观。AD里可以通过Design → Rules → Export Rules把规则文件导出成.rules文件新板卡里用Import Rules导回。Class信息不一定完整跟过去建议先把网络表导入、网络名称不变的基础上再导入规则然后用脚本或者手动把网络重新分配进Class。AD还支持从已有PCB文件里通过Save Copy As存成模板文件新建工程时直接调用这个模板很多基础配置可以一次到位。Allegro里复用思路略有不同。可以导入包含约束定义的top文件或者board文件里的约束集。先把物理约束集和间距约束集做成公司级标准库每次新板开建时批量导入然后把新的网络名分配到已有的Class和约束集里。这样不同工程师画出的板卡在间距、线宽、过孔口径上是同一套标准评审和制造沟通都会顺畅得多。我自己习惯在本地维护一份《规则配置Checklist》每次新板开建时照着过一遍比如“是否给所有电源网络建了Class”“是否设置了BGA区域特殊Class规则”“差分对Class是否绑定了阻抗规则”。这份清单比任何EDA操作教程都有用它能保证流程不遗漏。5.3 实战排障记录两个让我印象深刻的案例第一个案例是一块通信背板DDR数据线等长规则明明设了DRC却总是提示某些网络没有匹配到等长约束。查了半天发现是原理图改版后网表更新新加的几个DDR数据网络被自动分到了系统默认的ALL Class里根本没有进DDR_DQ这个Class。等于等长规则对那些新网络完全没生效。从那以后我每次更新网表后都会做一次Class分配核对先把网络表的变化列出来再看这些网络是否落入预期的Class。第二个案例是高压电源区和低压控制信号之间的间距。刚开始在AD里给PWR_48V设置了20mil间距规则但DRC频繁报错检查发现是第二对象条件也选中了PWR_48V导致Class内部网络对之间也要20mil而电源网络本身并联节点密集10mil间距已经足够。调整方法很简单把间距规则的First和Second匹配条件分别指定为PWR_48V和默认All问题立刻解决。这类误伤大量出现时先检查规则的对象匹配条件不要急着放松间距。这两个案例的共同教训是规则本身没有错错在匹配范围和网络分配。在排查任何Class规则失效问题时先确认网络在不在Class里再确认规则的匹配条件是否精确最后检查优先级这套顺序能省下大量排查时间。最后一个我一直坚持的习惯是每块板子在出Gerber之前不只看DRC零报错还要把每一条Class规则在最终的PCB文件里用Clearance/Width检查模式着色显示一遍。用颜色把生效区域可视化出来肉眼确认电源网络的宽度确实足够、差分对的间距确实恒定这种双重检查比单纯依赖DRC更可靠。规则设置这件事功夫花在前面后面所有环节都会顺畅很多。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询