☰
AD19铺铜间距规则设置:优先级与重铺铜是关键
2026/10/6 4:31:54 网站建设 项目流程

直接说结论:AD19里设置铺铜和其他所有对象的间距,核心就一句话——间距规则要放在规则列表最前面,并且第一匹配即生效。这个特性决定了你在AD19中配置Clearance规则时,规则顺序、对象匹配、优先级这三者的关系比任何其他EDA工具都要敏感,稍不留神你就会掉进”规则配了但不生效“的深坑。

这篇文章我会把AD19中铺铜与焊盘、走线、过孔、器件本体、其他铺铜的间距规则全部拆开讲一遍,再附上一套完整的实操案例和排错方法。主要内容包括:Clearance规则体系的结构、各种对象类型间距的配置逻辑、规则优先级与覆盖机制、以及一个从0.3mm调整到2mm的完整电源板案例。适合正在用AD19做PCB设计、被铺铜间距问题困扰,或者想系统理解规则引擎的工程师参考。

1. 为什么AD19的铺铜间距规则总是不生效:先搞懂规则优先级

很多人第一次在AD19里设置铺铜与其他对象的间距时,会跑到Design -> Rules -> Electrical -> Clearance里新建一条规则,把Gap从默认的0.254mm改成0.5mm,然后高高兴兴去重铺铜。结果发现铺铜和焊盘之间的距离还是老样子,甚至DRC(设计规则检查)一点反应都没有。

这个问题的根源,在于AD19规则引擎的**“第一条匹配规则生效”机制**。规则系统从上往下扫描规则列表,一旦某条规则同时满足“第一个对象匹配”和“第二个对象匹配”,这条规则就立即生效,后面的所有规则直接跳过。也就是说,无论你把新间距规则配置得多细致,只要它前面存在一条适用范围更宽的规则,新规则就永远轮不到执行。

举个例子:假设规则列表里有一条默认的全局间距规则Clearance_1,它匹配“所有对象”,Gap=0.254mm。你在它后面新建了一条Clearance_2,专门匹配“铺铜与其他对象”,Gap=0.5mm。因为Clearance_1排在前面,且默认已经匹配了所有对象(包括铺铜),所以实际生效的还是0.254mm,Clearance_2完全变成摆设。

  • 规则列表的排序决定了执行的优先级,排在前面的规则优先级更高。
  • 新建规则默认追加在列表末尾,如果不手动调整顺序,它几乎不可能抢在全局规则前面生效。
  • 正确做法:在规则管理器中,右键规则条目,通过Priority设置(数字越小优先级越高),或者在规则列表里直接拖拽排序,让铺铜间距规则排到最前面。

这个机制还有一个衍生问题:即使你把铺铜间距规则排到了第一位,如果它的Where The First object matches和Where The Second object matches条件写得不精确,比如同时匹配了“所有对象”,那么它与后面的全局规则就产生了重复,仍然会按第一条规则执行,达不到你区分对象类型的目的。

在展开所有具体设置前,还必须强调一个AD19的“隐藏特性”:修改规则之后,必须让铺铜重新灌铜(Repour)。规则改了,铜箔不会自动更新,尤其是当你改动的是“铺铜与其他对象的间距”这类涉及铜箔边界重算的规则时,不重铺铜等于白改。这一点我会在后面的实操案例里重点演示。

1.1 铺铜间距规则的三个关键理解

理解AD19铺铜间距,要从三个维度去把握:

第一,间距规则属于Clearance规则家族。它在Electrical类别下,控制的是两个对象之间的最小电气间隙,单位通常用mm或mil。这个规则不仅仅管铺铜,也管走线、焊盘、过孔、器件本体之间的间距,铺铜只是其中一个对象类型。

第二,间距规则是按“对象对”来匹配的。一条规则要定义清楚“第一个对象是谁”和“第二个对象是谁”,两个条件都命中才会生效。如果第一个对象是铺铜(Polygon),第二个对象是焊盘(Pad),那这条规则只管铺铜和焊盘之间的间距,管不了走线与走线。

第三,AD19里铺铜在对象类型中通常被标记为Polygon或Region。在Query(查询)表达式里,InPolygon('*')可以匹配所有铺铜对象,但如果你用的是一种特殊形态的填充区域,可能还需要同时考虑IsRegion、IsFill等关键字,特别是平面层或者嵌入式铜皮场景。

这三个理解如果不到位,后面无论怎么设置规则,都可能出现“设置了但不生效”或“生效了范围不对”的问题。我倾向于把AD19的规则系统理解成一张“从上到下优先级递减的表”:第一行能匹配到的就执行,后面的规则哪怕匹配条件更精细也来不及参与计算。

2. 从焊盘到走线:铺铜与其他核心对象的间距规则逐个拆解

我见过太多人只设置了一条“铺铜对焊盘”的间距规则,然后就以为全板间距都覆盖了。实际上,铺铜需要打交道的对象至少有五类:焊盘、走线、过孔、器件本体、其他铺铜。每一类在工程上的工艺诉求都不一样,规则配置也各有门道。

在开始逐条拆解之前,有一个很基础但容易忽略的前提:PCB的单位设置。AD19默认可能有英制(mil)或公制(mm)显示,间距规则输入的值会跟随当前单位。如果你习惯了mm,但工程文件是mil,很可能会出现“设了0.5mm结果实际只有0.5mil”这种数量级错误。建议在规则设置前先把单位切到Metric(快捷键Ctrl+Shift+U或菜单View -> Toggle Units)。

2.1 铺铜与焊盘(Pad)的间距规则

焊盘是铺铜间距里最常被检查的一类。默认的全局规则对焊盘是一致的,但在实际项目中,表贴焊盘和通孔焊盘的工艺间距要求并不一样:通孔焊盘在波峰焊时焊料可能沿着孔壁爬升,边缘距离铜箔太近容易形成锡桥;表贴焊盘则主要靠焊膏熔融,间距可以稍微小一些。

要分别配置,可以在规则里用IsPad关键字匹配焊盘对象,再配合PadType区分表贴还是通孔:

// 第一个对象匹配表贴焊盘 Where the First object matches: (IsPad = True) and (PadType = 'SMD') // 第二个对象匹配所有对象 Where the Second object matches: All

或者只匹配通孔焊盘:

Where the First object matches: (IsPad = True) and (PadType = 'Thru-Hole')

这里特别提醒:AD19的PadType字段在Query里区分表贴焊盘用的是SMD,通孔焊盘用的是Thru-Hole,大小写敏感。一旦写错,规则会默认为不匹配,但DRC不会报错,直觉上你会以为“规则已经生效了”,实际上完全没命中。这个坑我在实际项目中踩过,排查了大半天才发现是大小写问题。

不过更稳妥的做法,是不区分表贴和通孔,直接设定一个全局合理的铺铜到焊盘间距。毕竟在多数设计规则里,把间距设成0.3mm对表贴焊盘已经足够保守,对通孔焊盘也基本能接受。如果必须区分,建议先单独建两条规则分别匹配PadType,再让默认规则兜底。

2.2 铺铜与走线(Track)的间距规则

走线和铺铜的间距规则,本质上是“防止铜皮边缘与走线之间产生短路或寄生耦合”。低压数字电路里设0.3mm问题不大,但稍微有点压差或者高边开关管之类的应用,0.3mm就可能扛不住。尤其对于高压区域,间距要求会被提升到2mm甚至更大。

配置走线间距,核心关键字是IsTrack:

Where the First object matches: IsTrack Where the Second object matches: InPolygon('*') Constraints: Gap = 0.5mm

但这里有一个容易被忽略的点:AD19的走线类型还区分为普通走线(Track)和弧线(Arc),以及差分对走线。大部分IsTrack规则能覆盖普通走线,但差分对走线通常由独立的Differential Pair规则管理,如果没单独配置差分对间距,AD19会在DRC里对差分对使用专门的差分对间距规则,而不是你为Track设置的铺铜间距规则。我建议在布高速差分信号时,专门为Differential Pair规则单独设定铺铜间距,避免规则冲突。

2.3 铺铜与过孔(Via)的间距规则

过孔与铺铜的间距,在工艺上会直接影响钻孔的良率。AD19中过孔对象可以通过IsVia匹配。如果你希望“铺铜避开过孔外径,即铜箔边缘与过孔焊盘边缘保持一定距离”,规则条件可以这样写:

Where the First object matches: IsVia Where the Second object matches: InPolygon('*') Constraints: Gap = 0.3mm

对于多层板里大量的地过孔阵列(散热过孔、缝合过孔),可能会导致铺铜被切得很碎。这时很多人会人工去调整局部铜箔,但更聪明的办法是定义一个过孔网络类或对象类,然后用InNetClass('ViaStitch')做条件,单独给它一个更小的间距,这样既保证安全又减少规则冲突。

2.4 铺铜与器件本体(Component Body)的间距规则

器件本体在AD19中是Component Body类型。这个间距没有太多电气上的硬性要求,但机械装配时要避免铜箔和器件外壳、引脚或塑封体之间产生应力问题。默认规则里很多人并没有专门配置,但如果你用的是包含金属外壳的连接器、晶振、电源模块,建议设置一条铺铜与器件本体的间距规则:

Where the First object matches: IsComponentBody Where the Second object matches: InPolygon('*') Constraints: Gap = 0.3mm

有一种常见场景:铺铜时不小心把铜皮布到了器件本体的投影区域下方,虽然DRC没报错(因为本体不是电气对象),但在装配时可能导致器件无法贴合板面。设置这条规则后,铺铜会自动让位,减少后续装配干涉。

2.5 铺铜与其他铺铜(Polygon)的间距规则

铺铜与铺铜之间的间距同样由Clearance规则控制。一条铺铜和另一条铺铜如果间距不足,就会在视觉上“融合”在一起,形成意外的电气连接。设置方式:

Where the First object matches: InPolygon('*') Where the Second object matches: InPolygon('*') Constraints: Gap = 0.3mm

这条规则尤其适合多电源分区板:数字地铜皮和模拟地铜皮之间如果间距太小,隔离带形同虚设。很多信号完整性问题,其实不是布线的问题,而是两块铺铜之间的间距没控制好,导致地平面产生了额外耦合路径。

3. 规则设置里的“隐藏开关”:Full Query、对象类与优先级调整

设置规则时,很多人把注意力全放在Gap值上,忽略了AD19查询表达式(Query)的完整写法。在每条规则的Where The First object matches和Where The Second object matches旁边,都有一个Full Query按钮,点击后可以进入完整的查询编辑器。

粗浅地理解,Full Query就是允许你写更复杂的表达式,而不是只在简单下拉框里选All或InPolygon('*')。比如你想让“除电源网络外的所有走线”与铺铜保持0.4mm,而电源网络与铺铜保持0.8mm,就得用Query组合:

// 规则一:匹配所有对象,排除'POWER'网络 Where the First object matches: (IsTrack = True) and (Not InNet('POWER')) Where the Second object matches: InPolygon('*') // 规则二:专门匹配'POWER'网络与铺铜 Where the First object matches: InNet('POWER') Where the Second object matches: InPolygon('*')

这里体现的正是规则优先级:规则二必须排在规则一前面,否则排除网络的规则先命中,电源网络的特殊间距就无法生效。也就是前面说的,在AD19里规则顺序就是优先级,不是靠“约束条件更特殊”来覆盖,而是靠“更早匹配”来胜出。

优先级调整的方法很简单:在规则管理器中,规则列表左侧有一个优先级列,通常显示为1、2、3……数字越小优先级越高。你可以选中一条规则,右键选择Priority,输入新的序号,列表会自动重排。

此外,AD19还允许把常用规则导出为规则模板(.rul文件),然后在后续项目里Design -> Rules -> Load Rules批量导入。这个对大量重复性设计特别友好,我可以把一套“铺铜间距规则全家桶”保存为模板,以后每个新项目只要导入一次,规则条件、优先级、Gap值就全部就位,省去大量重复设置时间。

4. 实操案例:一块电源板上铺铜间距从0.3mm调到2mm的完整操作

理论讲再多,不如直接演示一遍。我用了块学生项目的电源板来演示这次操作,板上有一路310V高压母线、一路12V低压输出、MCU控制区、以及大面积的辅助地铜区。整个调整过程会展示:如何新建规则、如何处理优先级、如何保证重铺铜后DRC全部通过。

4.1 环境准备:从Altium Designer 19开始

打开AD19,载入PCB工程后,首先要确认单位。默认可能是mil,我习惯切成mm,菜单View -> Toggle Units或按快捷键Ctrl+Shift+U切换。然后检查DRC设置:Design -> Rules,左侧树形目录里展开Electrical -> Clearance,这里就是所有间距规则的大本营。

注意看规则列表,系统默认会有一条Clearance_1全局规则,通常规则条件匹配所有对象,Gap值0.254mm(10mil)。这就是你铺铜间距的“默认值”。如果不在它前面新建规则,所有间距都会按这个值执行。

4.2 新建规则、设置查询条件

我们需要在Clearance节点上右键选择New Rule,系统会生成一条名为Clearance_2的规则。双击它,在右侧配置区域进行设置。

第一步是设置规则名称。我把这条规则命名成Clearance_HV_2mm,方便一眼识别。接着设置第一个匹配对象:在Where The First object matches下拉里选择Custom Query,然后点击Query Builder,在表达式里写入:

InPolygon('*')

意思是匹配所有铺铜对象。如果只想让这条规则对高压区域的铺铜生效,那就得结合网络类(Net Class)。更推荐的方式是先在Design -> Netlist -> Net Classes里,把高压网络(比如310V母线、整流桥输出、开关管漏极)定义成一个类,例如HV_NetClass,然后在这里写:

InPolygon('*') and (InNetClass('HV_NetClass'))

不过我们要演示的“铺铜和其他所有对象的间距”,就不限定网络了,直接匹配所有铺铜。

第二步设置第二个匹配对象。为了让这条规则作用于“其他所有对象”,我们在Where The Second object matches里选择All,或者用Custom Query填入True(表示匹配一切)。

第三步设置Gap值。在Constraints区域,把Gap改成2mm。同时注意Minimum和Preferred等参数,AD19中Gap是实际生效值,其他参数可以保持默认。

设置完成后点击Apply,规则状态栏会出现一个绿色的勾,表示规则被激活。之后右键规则名称,选择Priority,把这条规则优先级改为1,让它排在全局规则前面。

4.3 重铺铜与DRC检查

规则已经生效,但板上已有的铺铜是静态对象,必须触发重铺铜。我习惯使用菜单Tools -> Polygon Pours -> Repour All,也可以按快捷键T -> G -> A。执行后,AD19会重新计算所有铜区边界,根据当前规则重新生成铜箔。

重铺完成后立刻跑一遍DRC:菜单Tools -> Design Rule Check,快捷键T -> D -> R。DRC结果里你会看到Clearance相关的违规数量。如果所有间距都按2mm生效,此时Should be 0个Error。如果你的板子原先的铜箔把走线包得太紧,可能会报出大量的间距冲突,那就需要手动调整铜区边界,或者重新规划过孔和走线位置。

4.4 验证间距是否真正生效

DRC跑完只是第一步,我还会用测量工具抽查。按下快捷键Ctrl+M启动测量,从铺铜边缘到高压走线边缘拉一条尺寸线,确认读数确实是2mm。测量时注意把捕捉对象设成“铜箔边缘”,否则很容易捕捉到铜箔的中心或末端,导致读数偏小。

这里有个实操细节:在AD19里查看铺铜间距,建议先Shift+S进入单层显示模式,再测量。因为铺铜边缘在多层叠在一起时视觉上会有偏差,单层模式能让你精确点选铜箔边界。我遇到过好几次DRC报0错误,但肉眼测量差0.2mm的情况,都是因为捕捉到了错误的边缘。

5. 绕不开的坑:Repour机制、死铜移除和同网络间距忽略

配置完规则不代表万事大吉,接下来这三个隐藏问题,任何一个都能让你的间距规则“看起来生效、实际上没用”。

5.1 Repour前先理解“死铜”

“死铜”指的是尖端、孤岛状的铜箔,它虽然与网络连接,但没有任何实际的连接作用,反而会带来天线效应或散热问题。AD19在铺铜时默认会做Remove Dead Copper,也就是自动删除死铜。但如果你在设计规则里把铺铜间距设得很大(比如3mm),大片区域的铜箔会被隔离成死铜并自动被删除,这时候铜箔的实际覆盖范围会比你预想小很多。

所以在设置大间距规则时,记得先到铺铜属性对话框中,确认Remove Dead Copper这个选项是否符合预期。有些场景下你反而希望保留死铜(比如某个区域想做额外的屏蔽),那就需要关闭自动移除,改为手动处理。这会直接影响DRC的报错数量。

5.2 同网络对象之间的间距:默认忽略还是强制检查

AD19默认忽略相同网络对象之间的间隙检查。也就是说,如果两块铜皮都属于GND网络,哪怕它们间距为0,DRC也不会报错。这其实是合理的,因为同一网络的铜皮合并在一起本来就是电气导通。但在某些特殊场景下,比如你希望在同一个网络上保留两个物理隔离的铜区(防止涡流、降低噪声耦合),你就得开启Ignore Same Net不勾选,并在规则里单独设置:

Where the First object matches: InPolygon('*') Where the Second object matches: InPolygon('*')

然后确保规则里没有勾选Ignore Same Net。否则DRC不会检测同网络的铜箔间距,你设定再大也形同虚设。对于电机驱动板这类对EMC敏感的板子,同网络铜箔的隔离有时比异网络间距更重要。

5.3 修改规则后,铜箔没有重铺的“假失效”

这是最容易被忽视的环节。很多工程师改完规则,看了一眼板上铜箔还在,就认为规则已经生效了。实际上,AD19中已存在的铺铜不会实时响应规则变化,除非你手动触发重铺。

你可以这样验证:在修改规则前,先给铺铜照张“ARJ”记录;修改规则后,选中铺铜看它的边界高亮是否变化。如果不变,请执行T -> G -> A(Repour All)。如果出现Repour后铜箔范围发生异变的区域,别慌,说明规则确实在起作用了,只是把原来不满足要求的铜皮“推”开了。

重铺铜时还有个小技巧:如果不希望全部铜皮重铺,可以选中需要更新的铜箔对象,按下T -> G -> P(Repour Selected),只更新选中的部分。这在局部微调时比整体重铺快得多,也更不容易影响其他区域的铜皮完整性。

6. 进阶:针对不同网络、局部区域、多规则优先级组合的高级设置

前面的内容已经能解决90%的铺铜间距需求,但如果你正在做高速板、电源板或者复杂数模混合板,以下三个进阶场景值得掌握。

6.1 按网络类设置差异化间距

不同网络对铺铜间距的要求不同,这是最常见的高级需求。除了高压网络需要大间距,还有采样信号网络、射频网络、时钟网络等,都需要比普通数字网络更远的距离,以减少铜皮对信号的耦合。

推荐的工程做法是,在网络工程里建立多个网络类:POWER_HV、ANALOG、DIGITAL、RF等。然后在规则管理器里创建多条Clearance规则,每条规则分别用InNetClass()函数匹配对应的网络类。规则的优先级按“特殊网络优先、普通网络垫底”的原则排列。

举个例子,设置三条规则:

规则一:InPolygon('*') 和 InNetClass('RF'),Gap=1mm 规则二:InPolygon('*') 和 InNetClass('ANALOG'),Gap=0.5mm 规则三:InPolygon('*') 和 All,Gap=0.3mm

优先级从高到低排列,这样射频网络间距最大,模拟网络次之,数字网络最低。这种组合在AD19里很稳定,DRC也能准确覆盖。

6.2 用Room或区域定义局部铺铜间距

如果你希望的是“板上某个矩形区域内的铺铜与其他所有对象保持更大距离”,可以用Room(区域约束)。创建Room:菜单Design -> Rooms -> Place Rectangular Room,画出一个区域。然后在规则里通过WithinRoom('Room_1')等关键字来限定。

这种方法特别适用于板边、接插件附近或屏蔽罩下方。对于这些局部区域,全局规则很难覆盖,而Room又能随着器件移动自动跟随,比纯粹用坐标范围限定要可靠得多。

不过Room的问题在于:如果Room被意外删除,规则条件会变成无效表达式,AD19会提示规则错误。如果你用Room,务必在团队协作时注意库文件的同步,避免别人打开板子后规则报红,却找不到原因。

6.3 多条规则优先级组合的复盘方法

当你设置了多条铺铜间距规则,每一条都以InPolygon('*')开头,这时优先级顺序就决定了最终间距的真实值。

我复盘规则组合的逻辑很简单:把规则列表从头到尾看一遍,永远只找第一条“两个对象都命中”的规则,那才是实际生效值。

举例:

规则一:铺铜 vs 高压网络,2mm,优先级1 规则二:铺铜 vs 模拟网络,0.5mm,优先级2 规则三:铺铜 vs 所有对象,0.3mm,优先级3

如果一个对象同时属于高压网络和模拟网络(比如高压母线通过电阻连接到模拟采样网络,但这个电阻的封装焊盘本身不带网络归属),那么这条规则匹配时会直接命中规则一,采用2mm。所以配置规则时一定要关注网络归属的排他性,必要时通过Not InNetClass()来排除重叠,或者把网络类划分干净。

7. 常见错误排查清单:间距规则不生效时,按顺序检查这几项

很多工程师在论坛上求助“为什么我设置了铺铜间距但没效果”,问题往往出在几个基础环节。这里整理一份我多年检查规则时的排查顺序。

检查项操作方法常见问题
规则优先级在Rules面板查看列表排序,确保目标规则在该类对象的第一条新规则排在Default规则后面,从未生效
Query表达式Shift+F高亮所选对象,对照规则条件检查命中范围对象类型写错,如用IsTrack但不包括IsArc
单位一致确认板子使用mm还是mil,规则值与预期单位一致在mil单位下输入0.5,实际只有0.0127mm
重铺铜修改规则后执行T->G->A铜箔仍是旧边界,规则未反映到实物几何
DRC选项Design -> Rules中确认对应Clearance规则是Online/ Batch启用的规则被禁用,或只有Batch模式而没有Online模式
同网络忽略检查规则是否勾选Ignore Same Net同网络铜皮间距为0却不报错

这份清单基本覆盖了我在项目中遇到过的所有“间距规则不生效”的情况。遇到疑难点时不要猜,用Shift+F去高亮查询对象,看它到底有没有被规则命中,这是最直接的判断方式。

7.1 Shift+F的妙用:快速验证Query是否命中

在做规则诊断时,Shift+F是最强大的工具之一。在PCB上放一个目标对象上,按下Shift+F,会弹出Find Similar Objects对话框。这里可以观察对象类型、网络、层等信息,并生成一个对应的Query表达式。把这个表达式与规则里的Where The First object matches对照,就能快速定位到底有没有命中。

我曾经遇到一个案例,规则设置的是InPolygon('*'),但板上的铺铜对象名是一个Custom Primitive(自定义图元),并不是标准的Polygon对象。在AD19中,只有通过Place -> Fill放置的填充区和标准铜皮会被识别为Polygon,其他图元可能要用IsRegion或IsTrack匹配。这类问题用Shift+F立刻就能暴露出来。

7.2 DRC报告的分析策略

当你运行DRC后,不要只看错误数量,要看Error消息里的具体对象和规则名称。DRC消息会指出“这条错误由哪条规则触发”,如果你发现违反的规则是你根本不关心的旧规则,说明优先级顺序不对;如果违反的规则名称是空白或Invalid,说明Query表达式有问题。

DRC报告还可以导出成文件,通过Tools -> Design Rule Check -> Generate Report生成.drc文件,里面包含每条违规的细节。我习惯在投板前生成一份DRC报告,并从中检索Clearance相关错误,逐条确认是否和预期一致。这是投板前最稳妥的检查动作。

7.3 经验之谈:铺铜间距设置宁可保守,不可激进

作为最后一条经验,我想说:在条件允许的情况下,铺铜间距稍大一点远比稍小一点稳妥。间距大一点主要影响铜皮的覆盖率,间距太小则会直接引发制造良率问题和信号完整性隐患。0.3mm是很多工艺默认值,但如果你板子面积不紧张,我建议表贴区域用0.3-0.4mm,高压或特殊信号区域用1-2mm。

设置间距时多花五分钟规划规则优先级,后面可以省下一整天的DRC排查时间。AD19的规则系统灵活度高,代价就是配置逻辑一旦混乱,排查难度也成倍上升。希望这篇文章能帮你把铺铜间距规则理清楚,下次画板时不用再对着DRC报错发愁。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询