ARTICLE DETAIL

资讯详情

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

AD22两层板Net Class与设计规则通用配置

AD22两层板Net Class与设计规则通用配置 搜AD22 2层板通用class、规则设置这个词前几页结果相当混乱——一半是 Python 的 class 用法、PHP 怎么改 class、C# 泛型where T : class的报错另一半是 Allegro 的约束管理器教程。真正讲 Altium Designer 里 Net Class 和设计规则怎么配的中文内容反而被挤到了后面。所以先把话说清楚这篇聊的是Altium Designer 22里一块两层板从建网络类Net Class到把整套设计规则Design Rules配到能直接开画的完整流程跟任何编程语言里的类没有半点关系。两层板是个很特殊的存在。它没有完整的地平面信号回流靠铺铜兜底走线密度不上不下成本又卡得死——线宽给 6mil 能画但电源压降大给 20mil 又铺不开。这种情况下如果只有一条All规则管全场你要么被 DRC 报错报到烦要么被迫把规则放宽到失去意义。所以两层板比四层、六层更依赖分组建类 分类设规则这套机制而不是反过来。这篇文章面向三类人刚从别的软件转到 AD22 的画小家电、传感器模块、电源小板这类两层板的以及虽然会画线但规则全靠默认、每次出图都心虚的。整套规则清单可以直接抄参数我按国内常见工艺能力留了余量改一改就能用在你自己的项目上。1. 先把概念掰开AD22 里的 Class 到底管什么1.1 三类 Class 各管一摊事打开Design » Classes快捷键D然后C左边是一棵分类树。AD22 里最常用的是Net Class网络类它管的是哪些网络归为一伙。除此之外还有 Component Class元件类、Pad Class焊盘类有些版本还会带 Layer Class 之类的节点。三者的分工很好理解Net Class 决定走线宽度、过孔尺寸、间距、铺铜连接方式这些跟电气有关的规则Component Class 更多用在布局和贴片规则上比如所有 0402 的元件间距至少 0.3mmPad Class 用得少一般在做特殊焊盘阵列时才碰。对两层板来说90% 的功夫都在 Net Class 上。所以后面提到的 Class默认都指 Net Class。1.2 两层板为什么比多层板更需要 Class多层板有完整的地平面和电源平面很多电气要求被平面本身满足了规则只要管住间距和过孔就够了。两层板没这个待遇电源和地都是走线或者铜皮所有电气约束都得靠规则兜住。举个特别典型的场景一块带 3.3V 稳压的传感器板信号线 8mil 就能跑但 3.3V 主干要过 500mA按后面第 5 节的算法至少得 0.2mm 以上稳压器输入端更粗。如果只有一条全局线宽规则你只能二选一——要么全板 8mil电源压降超标要么全板 0.5mm芯片底下根本布不出来。Class 存在的意义就是把不同网络用不同规则这件事变成可维护的配置而不是每次手动改线宽。1.3 Class 本身不约束任何东西这一点必须反复强调我见过太多人建完 Class 就以为生效了。Class 只是一组网络名字的集合它自己不带任何约束。真正起作用的是规则里的作用域Query引用了这个 Class。流程永远是先建 Class 分好组再到Design » Rules里写规则去引用这个 Class。注意Class 改名之后所有引用它的规则 Query 不会自动跟着改那些规则会静默失效。这是新手第一次踩、老手偶尔也会踩的坑改名前先在Design » Classes里想清楚。2. 规则系统的骨架类别、优先级、作用域2.1 十个规则类别两层板真正要用的是哪个Design » Rules快捷键D然后R打开的就是规则编辑器左边树状结构把所有规则分成若干大类。我把每一类在两层板上的实际使用率列一下方便你判断哪些必须先配、哪些可以放着不管。规则类别主要管什么两层板使用率Electrical间距、短路检查必配Routing线宽、过孔尺寸、布线层必配SMT贴片焊盘到拐角/平面的距离常用Mask阻焊开窗、锡膏层扩展常用Plane铺铜连接方式、平面间距常用Manufacturing孔径、环宽、丝印、板边必配High Speed差分对、等长少用Placement元件间距、Room偶尔Testpoint测试点规格基本不用Signal Integrity信号完整性分析基本不用前六类配齐两层板就能画得很稳。后四类里High Speed 在两层板上偶尔会用到差分对小规则比如板载 USB 走线但一般也就设个线宽和间距等长匹配在两层板上很难做也没太大必要。2.2 优先级是列表顺序不是数字这是 AD 规则系统里最容易被误解的一点。选中任意一个规则类别右边会列出该类下的所有规则。这个列表从上到下的顺序就是优先级越靠上优先级越高。选中某条规则点右上角的Priorities按钮可以调整顺序也可以直接拖动。AD 在做规则检查时的逻辑是按优先级从高到低逐条试找到第一条作用域同时匹配当前对象的规则就用它后面的不再看。所以正确的排布思路是特殊规则放最上面比如电源类网络间距 10mil通用兜底规则放最下面比如所有对象间距 6milClearance间距规则有点特殊它是矩阵型规则——第一对象和第二对象分别匹配两个都命中了才算这条规则生效。所以All对All那条基线规则必须放在最底下否则它会把上面所有特殊规则全盖掉。2.3 作用域写不对规则等于没建每条规则都有至少一个Where the First Object Matches输入框间距规则还有第二个。这个框里写的就是Query查询语句是规则生效的唯一开关。写All就是全匹配写InNetClass(PWR)就是只匹配 PWR 这个网络类里的对象写IsVia就是只匹配过孔。输入框右边有个小按钮能打开 Query Helper里面有可视化的条件选择器比手打靠谱得多。绝大多数规则明明建了却不生效的问题最后都出在这个框里。第 6 节我把常用语句整理成表了可以直接查。3. 两层板通用 Net Class 分组方案3.1 三分法是投入产出比最高的我的习惯是先把网络分成三组再按需细拆。这个分组方案几乎适用所有两类板改动量最小。Class 名包含的网络主要影响PWR3V3、5V、VBAT、VCC_xxx 等所有电源网络加宽线宽、加大过孔、加大间距GNDGND、AGND如果分开铺铜连接方式、焊盘花焊盘SIG剩下的全部信号常规线宽、常规过孔如果板子有明确的模拟部分再加一个ANA类把运放相关的输入网络单拎出来加大间距。如果有板载 USB 或者高速 SPI可以再加HS类专门管线宽和过孔。但我不建议分太细。我见过有人把两层板分出十几个网络类结果每次原理图改网络名都要回来同步一遍改着改着就漏了最后规则全乱。三到五个类是两层板最舒服的区间。3.2 三个入口选对能省一半力气建立网络类有三个入口各有各的适用场景很多人只知道其中一个。入口一PCB 面板拖拽。在 AD22 的 PCB 面板顶部下拉框里选Nets模式面板上方会出现 Net Classes 区域。在上面右键Add Class建一个类然后从中间的网络列表里选中网络拖到上面的类里。这种方式直观、快适合在画板过程中临时调整。缺点是这些分配只存在当前 PCB 文件里跟原理图不同步。入口二Design » Classes对话框。建好类之后右边有Add Member按钮可以从列表里勾网络也可以直接手输网络名。适合小批量微调比如某个网络漏了补进去。入口三原理图侧指令这是最推荐的做法。在原理图里放Place » Directives » Parameter Set在 AD22 里也叫参数集指令把它扣在某根导线上然后在指令的参数里加一条名为Net Class的参数值填你想要的类名。原理图Update PCB Document之后AD 会自动把这根网络分配到指定的网络类里。AD17 之后还有个更省事的Blanket覆盖框指令可以一次性框住一大片网络统一挂上同一个参数集。比如把所有电源线框在一起一次指定Net Class PWR。实测下来只要网络不超过三十根用原理图指令一次配好是最省心的。它跟着工程走换电脑、换同事接手都不会丢。项目大了再考虑在Project Options » Class Generation里配置按总线或图纸自动生成类不同版本这个页面的选项略有差别勾选前先看一眼说明。3.3 命名规范别让空格毁了你的下午网络类命名有几条铁律都是从报错里换来的绝对不要带空格。AD 的 Query 里字符串是用单引号包的InNetClass(PWR )和InNetClass(PWR)是两个不同的东西多个空格就静默匹配不上。不要用特殊字符。括号、斜杠、点号都可能在 Query 解析时出问题。大小写统一。Query 里的字符串值是区分大小写的类名叫Pwr而规则里写PWR一样匹配不上。类名别跟网络名撞车。有个叫GND的类同时又有叫GND的网络看日志的时候很容易搞混。4. 逐条落地两层板通用规则配置清单这一节是全文最抄作业的部分。我把每一类里需要建的规则、作用域怎么填、参数给多少全部列清楚。4.1 Electrical间距与短路新建或修改 Clearance 规则建三条按下表排序第一行优先级最高优先级第一对象第二对象最小间距说明1InNet(VBAT)All0.4mm电池直连网络安全余量大2InNetClass(PWR)All0.254mm电源类统一加宽3AllAll0.1524mm全局兜底约 6mil全局为什么取 6mil 而不是 5mil国内大部分工厂两层板 1oz 铜的常规能力是线宽/线距 5mil但那是能力极限不是稳定量产值。6mil0.1524mm留了一点余量良率更稳价格也一样。除非板子实在挤不下否则不建议压到 5mil。Short-Circuit 规则保持默认不允许短路就行。有人做跳线或者兼容设计时想关掉我的建议是别关——真需要短接就在 PCB 上画一段铜比关规则可控得多。4.2 Routing线宽、过孔、布线层线宽规则Width按网络的电流需求分档作用域MinPreferredMaxAll0.1524mm0.2032mm2.54mmInNetClass(PWR)0.3048mm0.508mm5.08mmInNet(VBAT)0.5mm0.8mm5.08mm这里有个特别容易翻车的点Max 不要设太小。很多人给信号线设 Max 0.5mm结果电源主干画到 0.8mm 就报错或者铺铜连到焊盘的细颈被判超范围。Max 给 2.54mm 甚至更大都无所谓它只是防呆的上限不影响你实际画多宽。过孔规则Via Style作用域孔径 Min孔径 Preferred孔径 Max外径 Min外径 Preferred外径 MaxAll0.3mm0.3mm0.4mm0.6mm0.6mm0.8mmInNetClass(PWR)0.4mm0.4mm0.5mm0.8mm0.8mm1.0mm0.3mm 孔配 0.6mm 焊盘12/24mil是两层板最通用的规格几乎所有的板厂都当标准工艺不加价。0.2mm 孔属于进阶工艺要加钱非必要不用。给电源单独准备一档大过孔是因为小过孔载流能力有限后面第 5 节会算。布线层规则Routing Layers两层板只勾Top Layer和Bottom Layer其余全不勾。这条规则平时不太显眼但如果你在层叠管理器里把某一层的属性从Signal改成了Plane这条规则会立刻跟着变走线就上不去了——这是走线怎么死活画不上去的经典元凶。4.3 Plane 与 Polygon铺铜怎么连焊盘Plane 类别里最有用的是Polygon Connect Style铺铜连接方式。它决定铺铜跟焊盘、过孔之间是花焊盘连接还是直接连。给InNet(GND)建一条参数取值理由Connect StyleRelief Connect花焊盘利于焊接散热Conductor Width0.254mm四根连接颈够载流Air Gap0.254mm与铺铜的隔离间隙Conductors4四个方向连接Angle90°常规十字为什么用花焊盘而不是直连直连的散热太快插件焊盘和需要手工返修的焊盘会焊不动烙铁热量被铜皮瞬间吸走。但如果是纯粹的大电流过孔阵列可以给InNetClass(PWR)单独设 Direct Connect减少压降。这是个取舍看你更在意生产难度还是电气性能。还有一个坑铺铜的优先级。如果板上同时有 GND 铺铜和电源铺铜它们重叠区域的处理由Tools » Polygon Pours » Polygon Manager里的优先级决定。数字大的优先级高会后铺并压在上面低优先级的铜会在它的间距范围内被避开。搞反了会出现电源铜皮被地铜皮挖掉一大块的诡异现象。4.4 Mask阻焊开窗与过孔盖油Solder Mask Expansion阻焊扩展全局设 0.05mm 到 0.1mm 之间。这个值决定了阻焊层比焊盘大多少。设得太小比如 0会出现阻焊桥太薄、工厂做不出来的情况设得太大又会让细间距芯片的相邻焊盘之间阻焊桥断开导致连锡。0.05mm 是国内工厂比较通用的值。过孔盖油要单独处理。AD22 里最直接的做法是双击过孔在属性面板里把Solder Mask Expansion设为Tented这样上下两面的过孔都被阻焊盖住。板子上过孔多的时候一个个改太慢可以在 Mask 类别里给IsVia建一条规则统一控制。注意过孔盖油之后这个过孔就不能当测试点用了。如果量产需要测点得单独留几个不盖油的过孔或者在 Manufacturing 规则里配合 Testpoint 规则一起考虑。4.5 Manufacturing那些工厂真正关心的事规则名建议取值为什么Hole Size0.3mm ~ 6.3mm下限决定加工难度上限是常规钻头范围Hole To Hole Clearance0.3mm孔到孔太近容易破孔壁Minimum Annular Ring0.15mm环宽不足会导致孔壁断裂Silk To Solder Mask Clearance0.15mm丝印压到开窗区会印不上Silkscreen Over Component Pads0.15mm更严格的一条直接禁止丝印压焊盘Board Outline Clearance0.3mm铜离板边太近铣边时会露铜Acute Angle90°锐角铜箔蚀刻时容易残留Maximum Via Count500 或按需控制成本非必需Board Outline Clearance这条有些版本的默认规则列表里没有在 Manufacturing 类别上右键New Rule手动建一条作用域写All间距填 0.3mm 就行。Silkscreen Over Component Pads同理。环宽那条要特别注意。0.15mm 是稳妥值市面上有些工厂宣称能到 0.13mm但我实测过一批 0.1mm 环宽的板子钻孔偏移后有三块出现破环。跟省钱比起来多留 0.02mm 完全值得。4.6 SMT贴片板子的加分项规则名建议取值作用SMD To Corner0.2mm贴片焊盘到走线拐角的距离SMD To Plane0.4mm贴片焊盘到铺铜的过渡距离SMD Neck-Down默认 50%走线从焊盘引出时的收窄比例这三条在密排 0402、0603 的板子上很有用。SMD To Corner是防止走线从焊盘出来立刻拐弯造成应力集中SMD To Plane是防止铺铜直接怼到贴片焊盘边缘影响回流焊时的热平衡。5. 线宽到底给多少拿 IPC-2221 算一遍5.1 公式和参数很多人给线宽是靠感觉和前辈说的其实有个行业通用的计算方法出自 IPC-2221参数不算多A (I / (k × ΔT^0.44))^(1/0.725) A 铜箔截面积单位 mil² I 电流单位 A ΔT 允许温升单位 °C k 外层走线取 0.048内层取 0.024 线宽 W(mil) A / 铜厚(mil) 1oz 铜 ≈ 1.378 mil两层板所有走线都在外层所以 k 固定取 0.048。5.2 实算一遍2A 电流要多宽拿 2A、允许温升 10°C、1oz 铜来算k × ΔT^0.44 0.048 × 10^0.44 0.048 × 2.754 0.1322 I / 0.1322 2 / 0.1322 15.13 A 15.13^1.3793 42.4 mil² W 42.4 / 1.378 30.8 mil ≈ 0.78mm0.78mm 听起来很夸张但这就是 10°C 温升下的理论值。如果放宽到 20°C 温升结果会小不少。下表我把两档都算出来方便对比电流ΔT10°C1oz 外层ΔT20°C1oz 外层0.5A0.12mm0.08mm1A0.30mm0.20mm2A0.78mm0.52mm3A1.38mm0.90mm5A2.78mm1.83mm看得出来电流翻倍线宽不止翻倍——因为指数是 1.3793 而不是 1。这解释了为什么大电流设计不能靠加一点点线宽解决。5.3 几个实际修正第一2oz 铜能把线宽砍一半左右。铜厚翻倍同样截面积需要的宽度就减半。加铜是要加钱的但比堆线宽更省面积。第二铺铜是最好的散热器。如果一段大电流走线旁边就是同网络的铺铜实际温升会比公式算的低不少。我个人习惯是2A 以上不硬堆线宽直接走铜皮或者双面并联走线。第三过孔也要算。一个 0.3mm 孔、孔壁铜厚 25µm 的过孔等效截面积大约是 36 mil²按公式反而算出能过 1.8A。但过孔埋在板子内部散热条件比表层走线差得多实际得打折。我一般按每个 0.3mm 孔过 1A 取值0.4mm 孔按 1.5A 取值大电流就多打几个孔并联。这个约定俗成的经验值比公式更靠谱。6. Query 语句实战速查6.1 语法要点AD 的 Query 语法不算复杂但几个细节必须记住字符串用单引号包比如InNet(GND)用双引号会报错。逻辑运算用、||、!不要用AND、OR。括号可以嵌套复杂条件一定加括号别靠默认优先级。字符串值区分大小写OnLayer(Top Layer)里的层级名称必须和层叠管理器里完全一致包括空格。输入框右边有 Query Helper 按钮实在不确定就点开选条件比自己敲可靠。6.2 常用语句表语句匹配对象All全部对象InNet(GND)指定网络上的所有对象InNetClass(PWR)指定网络类里的所有对象InComponent(U1)指定元件内的对象HasFootprint(0603)指定封装的对象IsVia所有过孔IsPad所有焊盘IsTrack所有走线段IsPolygon所有铺铜IsSMD贴片焊盘IsThroughHole插件焊盘OnLayer(Top Layer)指定层上的对象IsVia OnLayer(Top Layer)顶层过孔InNet(GND) IsPadGND 网络上的焊盘6.3 从 Allegro 转过来的人怎么对应搜这个词的人里不少是从 Allegro 转过来的那边的规则体系跟 AD 完全是两套逻辑这里做个对照。Allegro 概念AD22 对应物Constraint ManagerDesign » RulesPhysical Constraint SetNet Class Width/Via 规则Spacing Constraint SetClearance 规则Class / Subclass概念完全不同Allegro 的 Class 指的是层分组Xnet没有直接对应靠 Net Class 变通最容易绕晕的是 Class 这个词。在 Allegro 里ETCH/TOP这种叫法中的第一个词就是 Class层分组跟 AD 的网络类是两码事。从 Allegro 过来的人第一反应往往是AD 怎么没有 Class/Subclass其实就是叫法不同。另外一个差异是Allegro 的规则是约束集 指定对象AD 的规则是规则 Query 作用域。AD 的灵活性更高代价是 Query 写错了不报错、只是静默不生效这点需要适应。7. 常见问题与排查实录7.1 规则不生效按这六步查这是我用过最有效的一套排查顺序基本能定位到 95% 的问题看规则有没有启用。每条规则对话框里都有个Enabled勾选框不知道什么时候被取消勾选了是最常见的低级错误。看优先级顺序。特殊规则必须在兜底规则上面。特别是 ClearanceAll对All那条如果在顶上下面全白建。看 Query 有没有命中。最笨也最快的验证方法临时把这条规则的作用域改成All如果生效了说明问题就在 Query 上。看网络是不是真的在类里。打开Design » Classes展开 Net Classes点开你建的那个类看成员列表。原理图改了网络名之后不同步成员会悄悄丢。看在线 DRC 有没有开。在Preferences里搜Online DRC确认勾选状态。没开的话你看到的是旧状态以为规则没生效。看规则类别有没有放错。有人把间距写进了 Manufacturing当然不生效。间距永远在 Electrical 下的 Clearance。还有一条补充铺铜Polygon是特殊的对象类型。间距规则对它是生效的但线宽规则不适用于铺铜——铺铜的宽度由它自己的设置和连接方式决定。想控制铺铜跟焊盘的连接得用 Polygon Connect Style。7.2 DRC 报错速查表报错信息主要原因处理方式Clearance Constraint Violation两对象间距小于规则值调线或检查规则是否过严Width Constraint Violation线宽超出 Min/Max 范围检查 Preferred 和 Max 设置Short-Circuit Constraint两个不同网络重叠找出重叠对象Hole Size Constraint孔径超出规则范围统一过孔规格Minimum Annular Ring焊盘环宽不足加大焊盘或减小孔径Hole To Hole Clearance两孔太近挪孔或改小孔Silkscreen Over Component Pad丝印压焊盘移丝印或调整规则值Silk To Solder Mask丝印离阻焊太近整体调整丝印位置Board Outline Clearance铜离板边太近收铺铜或调整板框Un-Routed Net有网络没布完补线Modified Polygon铺铜未重铺右键 RepourAcute Angle铺铜出现锐角调整铺铜外形Maximum Via Count Exceeded过孔数量超限删孔或取消这条规则7.3 几个真金白银换来的坑改类名导致规则全灭。前面提过这里再强调一次因为它造成的后果是你以为规则还在实际上什么都没检查比报错更危险。改完名一定回到规则里把 Query 里的字符串同步改掉。复制粘贴走线会带着旧宽度。从别的地方复制一段 0.5mm 的线粘到信号区如果 0.5mm 超出了该网络的 Max 范围DRC 会报错。批量清理的方法是框选这些线右键Find Similar Objects把Width作为匹配条件一次性改成目标宽度。过孔尺寸不统一出 Gerber 时被工厂问爆。有的人手动改过几个过孔的尺寸最后板子上有三四种孔径。用 Via Style 规则锁死规格画板时只从规则里取值别随手改。原理图同步会丢 Class 成员。如果你在原理图里删了网络又重新加回来PCB 上的 Class 分配可能会丢。大改原理图之后养成打开Design » Classes检查一遍的习惯。在线 DRC 关掉之后忘了开。画大板时为了流畅关掉在线 DRC 很常见但画完一定要在Tools » Design Rule Check里跑一遍完整检查而且记得把Create Report File勾上——报告文件比弹窗有用得多能回看。8. 规则复用导出、导入和一个笨办法规则配一次就完事了吗没有。下一个两层板项目你还得再来一遍。所以复用机制必须用起来。Design » Rules对话框里在左侧的规则类别上右键能看到Export Rules和Import Rules。导出会生成一个.RUL文件默认导出你当前选中的规则也可以选导出全部。新项目里打开规则编辑器右键Import Rules导入即可。这里有个细节要注意导入是按规则名和类别合并的同名规则会被覆盖。如果你在项目 A 里有一条叫Clearance的规则导入到项目 B 时B 里同名的会被顶掉。所以导出前先规划好命名比如给每条规则加编号前缀01_Clearance_VBAT、02_Clearance_PWR、03_Clearance_All。这样不仅导入不冲突规则列表里的顺序也一眼能看出来不用来回点Priorities。另一个更可靠但更土的办法做一个空模板工程。新建一个.PrjPcb把层叠管理器里的两层结构、所有规则、板框、常用安装孔、常用封装库路径全部配好另存成2Layer_Template.PrjPcb放在固定目录。下次开新项目直接复制这个工程文件夹改名把原理图换掉PCB 里的规则和层叠原封不动。我两种都用。规则导出适合在现有项目之间快速搬配置模板工程适合规矩比较固定的产品线。模板工程的好处是连层叠和板框一起带过来省掉的不只是规则那几分钟。最后分享两个我自己一直在用的小习惯。第一个是分批验证不要一次把所有规则配完再跑 DRC那样报出三十个错你根本不知道哪个是哪个的问题。先把All这条基线配到能跑通再一条条往上加特殊规则每加一条就在板上画一小段线验证一下出错范围立刻锁定。第二个是规则分组命名带数字。规则列表里排在上面的优先级高把名字写成01_xxx、02_xxx、03_xxx几个月后回来改一眼就知道哪条压哪条不用靠记忆。这个习惯看着不起眼但在交接项目的时候特别管用——接手的人打开规则列表五分钟就能看懂你当初的设计意图。
返回列表