先讲一件我自己的翻车经历。第一次画板去打样,原理图检查了三遍,布局布线熬了两个通宵,结果上传到嘉立创下单系统,直接被审核警告“钻孔到板边距离不足”。当时真的一脸懵。查了半天原因,才发现根本不是某个具体封装画错了,而是设计规则里压根没设置板边禁布距离——有一根走线离板框只有0.3mm,工厂锣板的时候只要偏一点点,这跟线就可能被切破。后来我把Altium Designer的设计规则按照嘉立创的工艺能力逐条过了一遍,同样的板子再下单一次通过,审核聊天窗口干净得让我有点感动。从那以后我养成了一个习惯:画板第一步不是放元件,而是先把规则文件准备好。这篇内容就是把整套流程拆给你看,适合刚接触Altium Designer、准备投嘉立创打样的新手,也适合已经画过几块板但总在下单审核环节被卡住的朋友。
1. 打样被卡不是运气问题:规则是画板与工厂之间的“翻译层”
1.1 规则到底管住了什么
设计规则在Altium Designer里是一整套约束条件,相当于你在画图之前跟软件约法三章:哪些网络之间要保持多远的距离、走线最小能多细、过孔最小能用多大孔径、丝印能不能压到焊盘上,全部提前声明好。软件在做PCB布局布线的过程中以及最后跑DRC(Design Rule Check)的时候,就拿着这把“尺子”一点一点地量你画出来的每一根线、每一个过孔、每一块铜皮。
很多新手把规则当成“事后检查工具”,画完板子之后才想起去跑一遍DRC,发现报错密密麻麻,再回来手动改。这个思路其实把顺序搞反了。规则更应该是一开始就设好的“施工围挡”——你在里面干活随意,但是一旦越界,软件立刻告诉你这里不行。等布局布线全部结束再亡羊补牢,改起来的工作量往往是画板本身的好几倍。
1.2 “能画出来”和“能被造出来”的区别
这一点是我最想让新手理解的:Altium里能画出来的东西,不等于工厂能造出来的东西。
你可能在软件里画了一根3mil的细线,屏幕上看着没问题,放大到生产文件里它依旧是一条逻辑上完整的线。但嘉立创的工艺能力摆在那里,普通双层板的常规最小线宽线距是多少,极限值是多少,你心里得有个数。低于工艺极限,审核系统直接给你退单,或者哪怕侥幸过了审核,良率也会受影响。
规则设置的本质,就是提前把你的设计约束在工厂的工艺窗口内。窗口太宽,DRC查不出问题,板子出来可能有隐患;窗口太窄,DRC报一堆其实不影响生产的错误,反而把真正的问题淹没了。所以这套规则说白了不是给软件看的,是给你的板子和工厂之间的沟通清单。
2. 嘉立创工艺参数与Altium规则语法的映射
2.1 先拿到最新的工艺能力表
在做任何规则配置之前,强烈建议先去嘉立创官网“生产能力”页面把当前最新的工艺参数下载下来。为什么强调“最新”?因为工厂的产线能力会随着设备升级而变化,今天能做的工艺极限,过两年可能更小;一些特殊工艺参数也可能调整。网上搜到的各种参数表,包括我这篇里写的数值,都只能作为参考,最终要以下单页展示的参数为准。
我个人的习惯是在工程文件夹里放一个文本文件,把每次下单用的关键工艺参数粘贴进去,比如“最小线宽6mil、最小间距6mil、最小过孔孔径0.2mm、成品板厚1.6mm”。这样每次新建工程设置规则的时候,直接照着这份记录填,不用反复去官网翻。
2.2 一张表看懂参数落点
Altium的Designator Rules规则类型很多,让人眼花缭乱,但只要抓住和嘉立创工艺强相关的几类,就足够覆盖绝大多数日常板子。我把自己常用的映射关系整理成了一张表:
| PCB设计项 | 常见参考值(以嘉立创官网为准) | Altium对应规则类型 |
|---|---|---|
| 最小线宽/线距 | 常规6/6mil,极限4/4mil | Clearance、Width |
| 过孔钻孔孔径 | 常规不小于0.2mm,推荐0.3mm | RoutingVias的Hole Size |
| 过孔外径(含焊环) | 建议不小于0.45mm,根据孔径和焊环综合确定 | RoutingVias的Via Diameter |
| 焊环(Annular Ring) | 单边不低于0.127mm(5mil)更稳 | Manufacturing的Minimum Annular Ring |
| 阻焊开窗间距 | 常规比焊盘大2.5~4mil | SolderMaskExpansion |
| 阻焊桥/绿油桥 | 推荐不小于4mil | Manufacturing的Minimum Solder Mask Sliver |
| 丝印到焊盘的距离 | 尽量避开焊盘,无法避开时做“丝印置顶”处理 | Silkscreen Over Component Pads |
| 板边到走线/铜皮 | 不小于0.3mm,推荐0.5mm | Manufacturing的Board Outline Clearance |
| 钻孔到板边 | 不小于0.3mm,推荐0.5mm | Manufacturing的Hole to Board Clearance(部分版本) |
我一般喜欢把表里的数值统一换算成mil,因为Altium的规则编辑器里用mil做单位最直观,1mm约等于39.37mil,0.1mm差不多就是4mil。换算熟练了以后,看到工艺参数你脑子能直接转成规则面板里的数字。
2.3 为什么直接照抄别人的规则文件不一定靠谱
现在GitHub、论坛、公众号上能找到很多现成的Altium规则文件,导入之后DRC也能跑通,拿来应急没问题。但我不建议直接照抄,原因是每个板子的电源网络、敏感信号、接插件布局都不一样。别人把VCC走线宽度统一限制成20mil,可能因为他的板子电流需求大;你的板子如果也盲目套用,可能很多细缝处走线DRC报错,你还不知道去哪改。
更合理的做法是把别人的规则文件当一个“起点模板”,导入后逐条看一遍你不需要的规则,删掉或调整成自己的参数。尤其是Net Class相关规则,套用别人的工程时很容易指向他不存在的网络类,最后规则不生效,检查半天发现是空规则。
3. 把规则一条一条写进PCB Rules and Constraints Editor
3.1 基础间距(Clearance)
打开方式是在PCB编辑界面执行Design->Rules,弹出PCB Rules and Constraints Editor。左边是规则树,右边是规则设置面板。最常用的是Electrical下的Clearance,它定义两个对象之间最小的绝缘距离。
我的做法是先建一个覆盖所有的全局间距规则,Minimum Clearance设为6mil或者8mil。如果板子上有BGA、QFN这类细间距器件,局部扇出的线间距可能需要更小,就再单独建一条针对某个器件的规则,把间距放宽或收紧,配合规则优先级去管理。
这里有个点需要注意:Clearance检查的是“距离”,但Altium里同一个约束会对“不同对象对”分别生效。规则设置面板下方有个“Full Query”按钮,点开可以看到当前规则作用的完整对象范围。比如你想让“焊盘和走线”之间的间距和“走线和走线”之间不一样,你可以在Where The Object Matches里面用IsPad、IsTrack这类关键字组合Query。新手阶段不用搞太复杂,先让“All”规则管全局,再针对特定网络类微调即可。
3.2 线宽(Width)与Net Class结合
宽度规则在Routing下的Width。最基础的是给所有网络设一个默认宽度,我通常设Minimum 6mil、Preferred 10mil、Maximum随意留大一点,比如50mil。但这里存在一个问题:全局的Preferred宽度未必适合所有网络。
电源网络和大电流网络需要更宽的走线;普通信号线不需要太宽,反而细一点更好走线、更容易在器件之间穿行。手动一根一根改线宽太痛苦了,正确姿势是结合Net Class——先定义网络类,比如把所有电源网络归到“PWR”类,再把它们当作线宽规则的作用对象,单独设一个Minimum 12mil、Preferred 20mil。在PCB Rules面板里新建一条Width规则,在Where The Object Matches里选择Net Class为PWR即可。
注意规则优先级:如果同时存在“所有网络宽度规则”和“Net Class宽度规则”,系统会用更具体的那条,也就是PWR网络类的那条。这也是Altium规则的默认逻辑——针对性越强,优先级越高。新手容易在这里踩坑:设了一个全局Width规则,又设了一个“PWR”的Width规则,结果全局规则反而覆盖了PWR规则,导致电源线宽迟迟达不到要求。
3.3 过孔(RoutingVias)与最小环宽(Annular Ring)
过孔是打样审核里头最常出问题的地方之一。RoutingVias规则里能限制过孔的外径(Via Diameter)和钻孔孔径(Hole Size)。嘉立创不同板子工艺能力不同,常规我习惯把钻孔孔径最小值设为0.2mm,外径最小设为0.45mm左右,给焊环留出空间。
这里要引入一个概念:焊环(Annular Ring),指的是孔壁到焊盘边缘的那一圈铜环。工厂钻孔的时候如果钻头定位有偏差,焊环太窄会导致孔壁和焊盘边缘之间“破铜”,也就是孔打在焊盘边上。Minimum Annular Ring规则在Manufacturing类型下,它会检查焊环宽度是否达标。我通常设置在5mil左右,既不过于苛刻,又能保证生产良率。
顺便提醒一句:过孔不是越小越好。小过孔打样确实便宜省面积,但钻孔成本高、可靠性也差一些。如果不是BGA扇出真的需要,我建议普通板子用0.3mm孔径起步,省心很多。
3.4 阻焊开窗与丝印规则
阻焊开窗对应的规则是Manufacturing下的Solder Mask Expansion。它定义了阻焊油在焊盘处的开窗范围比焊盘本身大多少。太小的开窗会导致阻焊油盖住焊盘边缘,焊接时吃锡不良;太大的开窗又会把焊盘周围的走线暴露出来,或者让阻焊桥变窄甚至消失。常规设置3~4mil比较合适,具体看你板子的密集程度。器件密度高、焊盘间距小,阻焊开窗就得控制得小一点,否则相邻焊盘的阻焊桥没了。
丝印相关规则是Silkscreen下的Silkscreen Over Component Pads和Silkscreen Over Via。我的建议是这两个都设成“Don't Allow”,也就是丝印不允许覆盖焊盘或过孔。省得你在画丝印的时候,把元器件标号压在焊盘上,下单审核时被提醒“丝印压焊盘影响焊接检测”。如果确实空间不够放丝印,检查一下是不是可以把标号挪到没有器件的位置,或者缩小字号。
3.5 板框、钻孔与制造类规则
这部分是很多新手从来没碰过,但恰恰是嘉立创审核最关注的内容。Manufacturing类型下有几个规则我强烈建议每次都检查一遍:
- Board Outline Clearance:铜皮和板边的最小距离。我给到0.5mm,比工厂最低要求留有余量,后期切割不容易切到铜。
- Hole Size:限制钻孔孔径的上下限,防止你画了一条通孔板却填了非标孔径。
- Hole to Hole Clearance:孔与孔之间的最小距离,设置太近会导致板子结构强度不足。
- Minimum Solder Mask Sliver:两块阻焊开窗之间的最小绿油桥宽度,太小的话绿油桥在生产时容易脱落。
设置这些规则的时候不要死板地认为“又不是所有板子都要填”,你不填,DRC就不会检查,等你上传到嘉立创审核系统里才被弹出来,回头改文件再上传,来回折腾的隐形时间成本很贵。
4. 规则优先级:为什么你设了50mil还要被“全局规则”管
4.1 理解规则作用域与查询条件
Altium的规则不像部分软件那样是一条覆盖另一条的“后写覆盖前写”,它是通过作用域的精确程度来排定优先级的。比如“All”是一个极宽的作用域,“InNetClass('PWR')”是更具体的作用域。当一条走线同时匹配这两条规则时,具体的那条优先执行。
刚接触规则的新手,非常容易犯的错是:设了一个“All”线宽规则,Minimum设成6mil,后来又新建了一条专门给电源线的规则,Minimum设成20mil,但建完之后DRC依旧报电源线太细。跑去检查Find Similar Objects是不是选错网络了,折腾半天,其实是忘了在规则面板里点那个“Rule Priority”按钮,改一下规则上下顺序。
4.2 掌握Rule Priority的排序逻辑
在PCB Rules and Constraints Editor左下角有一个“Rule Priority”按钮,点开之后能看到所有规则按优先度从高到低排列的列表。上面是高优先级,下面低优先级。如果你想让电源线走20mil的规则压过全局规则,把那条电源规则拖到上面去。
这里我的经验是:规则数量不要贪多。每多一条规则,DRC的排查链路就多一环。有些追求极致的老工程师可以建几十条规则来管控整个板子,但新手阶段这会让调试成本爆炸。先建核心的4~8条规则,确保每条都是必要的,等以后板子复杂了再逐步增加。
4.3 Net Class的批量管理技巧
网络类的管理入口在Design->Classes,打开Net Classes面板,可以新建类并批量把网络拖进去。我常用的几个类包括:PWR(电源)、GND、DIFF(差分)、SIGNAL(普通信号)。建好之后,许多规则可以直接按类来引用,而不是一条一条地指定网络,后续维护非常方便。
强烈推荐养成一个习惯:画板之前先把Net Class建好。虽然中途建也行,但中途建会漏——你以为已经把所有网络都分好类了,结果画完线一查,有个供电小网络没分进去,全局规则没覆盖到,DRC就漏检了。
5. 下单前的最后一关:DRC报告与Gerber输出
5.1 跑一次完整的Batch DRC
规则配置好不代表万事大吉,布局布线全部完成后还要跑一次完整的Design Rule Check。入口在Design->Rules,然后在规则面板里点“Run DRC”,或者直接按快捷键在菜单里找到“Design Rule Check”。弹出的窗口里可以勾选要检查哪些规则,我建议全选跑Batch,让它一次性把所有问题列出来。
跑出来的报告会按规则分类列出违规项。看到违规不要慌,先分辨是真的问题还是规则设置太苛刻造成的误报。比如你把丝印到焊盘距离设成了0mil,然后DRC报了无数丝印压焊盘,这可能就是规则本身设置不合理,而不是布局有问题。误报太多会让人麻木,所以规则参数一定要贴合实际,别为了“显得严格”设一堆不可能满足的条件。
5.2 Gerber导出的关键参数
嘉立创打样需要上传Gerber文件,而不是直接上传Altium工程文件,这样双方沟通成本最低。导出Gerber时,File->Fabrication Outputs->Gerber Files。最关键的是格式选择:RS-274X格式基本是行业通用标准。单位用英制mil还是公制mm其实都行,关键是精度要足够。我一般选择2:4格式,也就是整数两位、小数四位的精度,对应的分辨率低于1mil,已经足够。
顺便把钻孔文件也一起导出:在Fabrication Outputs里选择NC Drill Files。导出时确认单位和格式跟Gerber设置一致,否则工厂拼板时容易对不上。
5.3 嘉立创审核常见退板点自查
把我自己遇到过的、以及身边朋友被审核退回的常见原因列出来,你们下单前对照一遍:
- 丝印压在焊盘上,影响贴片和焊接检测。
- 过孔孔径小于工艺下限,工厂无法钻孔。
- 焊环偏小,孔壁边缘到焊盘边缘不足,容易破孔。
- 铜皮离板边太近,V割或锣板时容易损伤。
- 板框不闭合或者有多余线段,工厂无法识别外轮廓。
这些绝大多数都在设计规则里能提前拦住。只要规则参数设好,DRC跑干净,审核通过率会大幅提升。
6. 进阶玩法:阻抗、差分对、拼板与工艺边的规则预留
6.1 阻抗线的规则落地
如果你的板子上有高速USB、HDMI、以太网这类信号,需要控制阻抗。嘉立创官网那个阻抗计算神器我可以直接推荐——它是根据叠层结构和材料参数算线宽、线距的在线工具,比手工查对照表方便得多。拿到计算器给的线宽和线距之后,把它填进Altium的规则里:线宽按计算结果设Preferred值,差分对的话还要设置间距规则。
阻抗线和普通信号线的处理方式不同:我会为这些网络单独建一个Net Class,比如“USB_HIGH_SPEED”,然后针对这个类建Width规则,把线宽限制在计算出的目标值附近。差分对还涉及匹配长度的问题,规则里需要用到Differential Pair Routing下的Min/Max/Gap设置,配合Tuning工具做长度补偿。
6.2 差分对的规则设定
在Altium里建差分对,先要在原理图端把网络命名成_P和_N的配对形式,然后在PCB端使用“Interactive Differential Pair Routing”命令布线。规则层面的关键是设置“Diff Pair”相关规则:线宽、间距、最大/最小长度差。间距这个参数会直接影响阻抗,所以务必以阻抗计算器给的结果为准。
需要注意的是:差分对规则放进Net Class后,Altium会按规则里的Gap和Width来判断这对差分线合不合格。我在实际项目见过有人把Gap设得太小,DRC不报错,但实际阻抗计算结果完全不达标,最后板子贴完片调试才发现信号异常。规则只是形式约束,真正的核心是阻抗计算。
6.3 拼板和工艺边别丢在角落
如果你要做拼板,规则层面也要提前留好余量。拼板时V割和邮票孔是两种常见方式。V割需要保证板边到走线有足够的距离,否则V割线会切到铜皮;邮票孔拼板要注意孔到板边的距离符合工厂要求。这些本质上都落在板框和板边间距相关规则里。
很多时候新手的板子只是单板,不需要拼板,但工艺边和定位孔是可能需要关注的点。如果你的板子上有贴片元件,尤其是两排焊盘比较靠近板边的器件,强烈建议加上5mm左右的工艺边,方便SMT贴片时轨道夹紧。工艺边上的铜皮要避开邮票孔或V割区域,这些约束同样需要规则守卫。
最后再分享一个我自己实际操作中的小习惯:每次打样回来,我都会把一块板子在光线下仔细观察——阻焊桥是否完整、焊环有没有破铜、过孔是否居中。看得多了,你会慢慢体会到设计规则里那些数值不是凭空来的,而是为了给生产留出误差空间。以后再设规则的时候,你心里会更有底,也知道哪些地方可以适当放宽、哪些地方必须死守。