朋友半夜发来消息,说板子回来发现顶层丝印一个字都没有,问是不是板厂做漏了。我让他把发出去的光绘包解压,一层层看——SILKTOP 那个文件只有 3KB,打开后除了板框和几个定位孔,干干净净。问题不在板厂,在他导出时 Film 里只勾了 Board Geometry/Silkscreen_Top,Ref Des 和 Package Geometry 下的丝印全没选。这种亏,几乎每个画板的人都吃过一次。
Gerber 导出这件事,看着是点几下鼠标的收尾工作,实际上是整个 PCB 项目里容错率最低的环节。原理图错了可以改,布局丑了可以重排,但光绘文件和钻孔文件一旦发出去、板子开出来,错了就是几千块和两周交期。这篇内容我按Cadence Allegro的实际操作路径,把 Artwork 配置、层内容划分、钻孔文件生成、导出后自检这几块拆开讲清楚,顺带把我这些年踩过的坑整理成速查表。适合已经能画完板子、但每次出图心里没底的朋友,也适合带新人时当检查清单用。
1. 先想清楚交付物:一套生产文件到底包含什么
1.1 Gerber 在产业链里的真实角色
很多人把 Gerber 理解成"把设计图导成图片",这个理解偏差会直接导致出图思路走偏。Gerber 不是给人看的图,它是给光绘机、激光直接成像设备读的矢量指令集,核心只有三种动作:移动到某点(D02)、画一条线到某点(D01)、在某点闪一个光圈(D03)。板厂的 CAM 工程师拿到这套指令,先做层间对位,再做拼板、补偿、加泪滴,最后转成曝光用的文件。所以你导出的每一个坐标,都直接对应成品上的一块铜、一层油墨、一扇开窗。
理解了这一点,很多操作上的"讲究"就说得通了。比如焊盘为什么必须用 flash(D03)而不是用线段描出来,因为 flash 是一个标准光圈,板厂可以直接按光圈尺寸做补偿;用线段描出来的焊盘,在 CAM 里会被识别成一堆碎线,补偿算法一跑就变形。再比如精度为什么不能随便选,因为坐标是整数存储的,精度不够就会产生量化误差,0.1mm 的线可能被量化成 0.11mm 或者 0.09mm。
一套完整的光绘包,通常包含这些文件:各层线路(顶层、底层、全部内层)、顶层与底层阻焊、顶层与底层钢网、顶层与底层丝印、板框(外形层)、钻孔文件、钻孔表、有时还有装配图和阻抗层。层数越多,漏层的风险越高,所以下面会讲怎么用命名规范和自检流程把风险压下去。
1.2 为什么优先选 RS-274X 而不是老格式
在 Artwork 的 Film Options 里,Format 下拉框会列出一堆格式,Gerber RS274X、Gerber 6x00、Gerber 4x00 等等。这里没有悬念,选 RS-274X。
RS-274X 也叫扩展 Gerber,最大的特点是光圈(Aperture)定义直接内嵌在文件头里,用%ADD10C,0.2500*%这样的语句声明,板厂拿到单个文件就能完整解析。老式的 RS-274D 不带光圈定义,必须额外配一个光圈表文件(aperture wheel),一旦光圈表和光绘文件对不上,整层就废了。我见过有人用 4x00 格式出图,压缩包里忘了带光圈表,板厂那边直接卡了一天。
RS-274X 的文件头还有几个关键信息值得你会看:%FSLAX24Y24*%表示格式(Format Specification),L 是 Leading zero omitted(前导零省略),A 是 Absolute(绝对坐标),X24Y24 表示 X 和 Y 都是 2 位整数、4 位小数。%MOIN*%或%MOMM*%表示单位是英寸还是毫米。这两个头信息如果和你实际想要的不一致,后面的坐标全是错的,所以导出后打开文件头扫一眼,是我每次必做的动作。
1.3 层划分的思路:从"工序视角"而不是"设计视角"
新手出图最常见的错误,是按 Allegro 里看到的颜色层去对应光绘层。Allegro 里一个网络可能同时出现在 Etch、Pin、Via 三个 subclass 里,但板厂关心的是"这一层要不要蚀刻铜"。
正确的思路是换成工序视角:蚀刻工序需要线路层,阻焊工序需要开窗层,丝印工序需要油墨层,钻孔工序需要钻孔文件,成型工序需要外形层。同一个设计对象,在不同工序里可能要出现在不同文件里,也可能一个都不出现。比如一个过孔,线路层要它的焊盘,阻焊层要不要它取决于是否盖油,钻孔文件要它的孔径,丝印层通常不要它。
把这张"对象—工序"的映射关系想清楚,Artwork 里每个 Film 该勾哪些 subclass 就是水到渠成的事,而不是靠记忆或者抄别人的模板。下面第 3 节会给出一张完整的对照表。
2. Artwork 配置:光绘文件的骨架怎么搭
2.1 进 Artwork 之前的准备工作
打开Manufacture > Artwork之前,有三件事必须先做完,否则后面全是返工。
第一件是确认叠层。走Setup > Cross-section,把层数、层序、介质厚度、铜厚核对一遍。内层数量直接决定你要建几个内层 Film,层序错了会导致内层镜像或者顺序颠倒。特别是刚改过层数的项目,很容易出现 Cross-section 里是 6 层、Artwork 里还是 4 层的 Film 配置。
第二件是清理 subclass。走Display > Color/Visibility,把不用的临时层、测试层关掉,顺便检查有没有把图形画在了不该画的地方,比如把丝印文字画到了 Etch 层,或者把板框画到了 Package Geometry。这类错误在 Artwork 里看不出来,因为 Film 是按 subclass 抓取的,画错层就等于那个图形彻底消失在光绘里。
第三件是铺铜重新填充。走Shape > Global Dynamic Params确认参数,然后Shape > Fill All(或者用Tools > Database Check之后重新 fill)。动态铜皮在 Allegro 里是"显示时计算"的,如果不做一次全局填充,导出的光绘可能是旧的和未更新的状态,出现铜皮没有连到焊盘、孤岛没被删掉的问题。这一步花不了两分钟,但能省掉一次报废。
提示:
Tools > Database Check建议在出图前跑一次,勾选所有检查项。数据库里如果有非法图形、重复对象、越界坐标,光绘生成时会报错或者静默丢图形,先修干净比事后排查省事得多。
2.2 Film 的创建与命名规范
在 Artwork Control Form 里,右键 Film 区域选 Add,输入 Film 名称。命名这件事看起来无所谓,实际上是团队协作和板厂沟通的第一道关口。我一般用下面这套命名:
| Film 名称 | 对应内容 | 板厂常见识别名 |
|---|---|---|
| TOP | 顶层线路 | GTL / L1 |
| BOTTOM | 底层线路 | GBL / L2 |
| INNER1 ~ INNERn | 各内层 | G1 ~ Gn |
| SOLDERTOP | 顶层阻焊 | GTS |
| SOLDERBOT | 底层阻焊 | GBS |
| PASTTOP | 顶层钢网 | GTP |
| PASTBOT | 底层钢网 | GBP |
| SILKTOP | 顶层丝印 | GTO |
| SILKBOT | 底层丝印 | GBO |
| OUTLINE | 板框外形 | GKO / OUTLINE |
| DRILL | 钻孔图(可选,用于核对) | — |
命名要满足两个要求:一是自己能一眼看懂,二是板厂 CAM 工程师能不追问就识别。全大写、不带空格、不带中文,是最稳的。我见过用 "顶层线路最终版2修改" 这种名字的,打包发出去板厂直接回邮件问哪个是最终版。
创建 Film 的顺序建议按工序走:先建线路层(TOP、BOTTOM、内层),再建阻焊、钢网,然后丝印,最后板框。这样建的过程中就能顺带检查层数是否齐,不会出现建到一半忘了内层的情况。
2.3 Film Options 里的参数,一个都别蒙
每个 Film 建好后,右侧的 Film Options 里有一堆参数。这些参数是整个出图流程里最容易被"默认值"坑到的地方,逐项说。
Format:选 Gerber RS274X,理由前面讲过。
Device:这是输出设备类型,一般填 Gerber RS274X,和 Format 对应。有些版本里 Device 是必填的,随便填个有意义的字符串也行,它主要影响文件头的注释。
Output file:这是输出路径和文件名。Allegro 支持变量,%f代表 Film 名,%x代表扩展名。我一般填./gerber/%f.%x,这样所有光绘文件自动落到工程目录下的 gerber 文件夹里,文件名就是 Film 名,不用一个个改。强烈建议用变量而不是手写文件名,手写文件名在复制 Film 的时候会全部指向同一个文件,后生成的覆盖先生成的,最后你只剩一层。
Units:英制或公制,跟着设计单位走。这里有个坑——设计用英制、出图用公制,或者反过来,坐标会整体缩放。虽然 RS-274X 文件头有%MOIN*%声明,但一旦有工具不认这个头,就会出大问题。我的习惯是设计用什么单位,出图就用什么单位,从头到尾不换。
Format(精度):整数位和小数位。英制常用 2:4,也就是 0.0001 英寸的分辨率,换算过来是 2.54 微米。公制常用 4:4,分辨率 0.0001mm,也就是 0.1 微米。有人会问 2:4 够不够,算一下就知道了:主流板厂的蚀刻精度在 ±1mil(25.4 微米)量级,激光成像的分辨率也在微米级,2.54 微米的坐标分辨率远高于工艺能力,完全够用。反过来说,如果你选了 2:3(1mil 分辨率),一条 4mil 的线量化误差可能达到 25%,那就不能接受了。
Zero suppression:零抑制。选 Leading(省略前导零)还是 Trailing(省略后置零),本质是让坐标字符串更短。RS-274X 文件头里的%FSLAX24Y24*%已经把规则写死了,现代 CAM 软件都能正确解析。真正需要注意的是别和板厂的老设备较劲,如果对方反馈坐标偏移或者整体错位,第一时间检查这个选项和精度设置是否匹配。有些版本支持直接输出带小数点的坐标,如果你们的板厂支持,勾上能省掉一堆沟通成本。
Scale:缩放比例,永远是 1.0。这个参数唯一合理的用途是做特殊工艺的放大缩小平移,正常出图填 1.0,填错了整层尺寸全错,而且很难第一眼发现。
Offset:偏移量,一般填 0。除非你要把图形平移到某个原点,否则不要动。
Undefined line width:未定义线宽。这个参数处理的是设计里宽度为 0 的线段(比如某些用零宽线画的板框或者丝印)。如果填 0,这些线在光绘里会直接消失;填一个具体值,它们会被替换成该宽度。我的习惯是填 0.1mm,然后在 CAM 里检查有没有异常的粗线——这个值填大了,零宽线会变成一条肥线,压在焊盘上就是灾难。
Draw holes:是否在光绘里画出钻孔。默认一般关闭。原因是孔的位置和大小由钻孔文件定义,光绘里再画一遍没有意义,反而会让阻焊层或者丝印层出现不该有的圆。除非你要出一张给结构工程师看的装配图,否则保持关闭。
Vector based pad:是否用矢量方式绘制焊盘。不勾选时焊盘用 flash 输出,文件小、精度高、CAM 好处理;勾选后焊盘用线段描边,文件大而且容易在补偿时变形。除非板厂明确要求,否则不勾。
2.4 一个容易被忽略的动作:Aperture 预览
Film 配置完,点 Create Artwork 之前,可以先点一下 Apertures 按钮(有些版本叫 View Apertures),它会列出当前 Film 用到的所有光圈。这个列表能提前暴露问题:如果某个焊盘的尺寸是 0,或者出现了奇怪的负值光圈,说明 padstack 有问题;如果光圈数量异常多(比如几百个),说明设计里用了大量不同尺寸的焊盘,CAM 处理起来会慢,但不致命。
我一般会顺手看一眼最大和最小的光圈。最小的光圈如果小于 0.1mm,要确认它是不是设计意图,因为有些板厂的工艺能力做不了这么细的线。
3. 每一层到底该放什么:逐层拆解
3.1 线路层与内层
线路层的内容相对简单,但恰恰是最不能出错的。
顶层线路(TOP)应该包含:Etch/Top、Pin/Top、Via Class/Top。有些设计还会把Board Geometry/Outline加进来,方便板厂对位,这个做法我觉得挺好,加进去没坏处。注意不要加Package Geometry/Silkscreen_Top,丝印是油墨,不是铜。
底层线路(BOTTOM)同理,换成Etch/Bottom、Pin/Bottom、Via Class/Bottom。
内层(INNER1 ~ INNERn)要看设计方式。如果是正片设计,包含Etch/内层名、Pin/内层名、Via Class/内层名。如果是负片(Plane)设计,情况复杂一些,Allegro 里负片层的显示是反的,出图时的极性处理要格外小心。
这里我要强调一句:内层极性一定要在 CAM 工具里核对,不能只看 Allegro 里的显示。Allegro 的负片层在屏幕上看起来是"铜是暗的、隔离区是亮的",但导出的 Gerber 到底是不是这个极性,取决于版本和配置。最稳的做法是导出后用 CAM 工具打开,找一个确定应该有大面积铜的区域,看它是实心还是镂空。如果反了,板子做出来就是整层短路或者整层没铜。
我个人的偏好是内层尽量用正片设计,虽然铺铜操作麻烦一点,但出图时所见即所得,少一层心智负担。负片设计在改版频繁的项目里省事,但出图环节的风险确实高一些。
3.2 阻焊层:开窗尺寸直接决定焊接质量
阻焊层(SOLDERTOP / SOLDERBOT)是新手最容易做错的一层,因为它不是"把焊盘画出来",而是"把不该盖油的地方开出来"。
标准的顶层阻焊应该包含:Pin/Top、Via Class/Top(如果过孔要盖油则不选,见下)、Package Geometry/Soldermask_Top、Board Geometry/Soldermask_Top。有些设计里阻焊开窗是通过 padstack 里的 Solder Mask 参数控制的,这种情况下Pin/Top会自动带上开窗尺寸,不需要额外加图形。
开窗尺寸怎么定?行业惯例是焊盘四周各扩 0.05mm(约 2mil),也就是单边扩 2mil、总尺寸每边大 4mil。举个具体例子:一个 0.25mm × 1.0mm 的贴片焊盘,开窗后是 0.35mm × 1.1mm。这个扩展量不是拍脑袋定的,太小了阻焊油墨会爬到焊盘上影响焊接,太大了相邻焊盘之间容易连锡。
过孔要不要盖油,这是个需要和板厂、和工艺确认的问题。盖油(tented via)能防止焊锡从过孔流走,但盖油质量不稳定,过孔边缘可能露出铜环。不盖油则过孔裸露,可以做测试点。我的做法是:非测试点的过孔默认盖油,在 Film 里不选Via Class/Top;测试点过孔单独处理,确保它在阻焊层里有开窗。这里的关键是不要一刀切,同一个设计里两种过孔混用很常见,出图前要确认哪些过孔需要露出。
3.3 钢网层与丝印层
钢网层(PASTTOP / PASTBOT)只对贴片焊盘有意义,插件焊盘不需要钢网。内容包含Pin/Top和Package Geometry/Paste_Mask_Top。钢网开窗的尺寸通常和焊盘一致,或者按面积比略微缩小(比如 90%),具体取决于器件封装和锡膏工艺。对于 0.4mm 间距的 QFN 这类细间距器件,钢网开窗可能需要做分割或者缩小,这部分一般由工艺工程师给规则,PCB 设计端按规则执行。
丝印层(SILKTOP / SILKBOT)的内容最多也最杂:Package Geometry/Silkscreen_Top(器件外框)、Ref Des/Silkscreen_Top(位号)、Board Geometry/Silkscreen_Top(板级标识、版本号、logo)、有时还有Manufacture/Drill_Legend(钻孔表)。
丝印最常见的两个问题是压焊盘和字号太小。压焊盘会导致焊接时油墨污染焊盘,虽然多数板厂会帮你削掉,但不能指望。字号方面,丝印线宽一般不低于 0.15mm,字高不低于 0.8mm,再小就印不清了。出图前可以用Display > Measure量一下关键位号的尺寸,或者在 CAM 里放大看。
还有一点,丝印层里不要放板框。板框属于外形层,混进丝印会让板厂在铣边时把丝印也当成轮廓,轻则警告,重则铣错。
3.4 板框层与它的三个近亲
板框(OUTLINE)只放Board Geometry/Outline,这一层的内容必须是一条闭合的轮廓线,不能有断点、不能有重复线段、不能有自交。
跟板框容易混淆的有三个东西:Board Geometry/Cutout(内部挖槽)、Board Geometry/Dimension(尺寸标注)、Package Geometry/Place_Bound(器件占位)。前两个如果设计里有,需要单独确认要不要出图层;尺寸标注绝对不能进板框层,否则板厂会把它当成外形铣出来。Place_Bound 是给布局检查用的,任何光绘层都不该包含它。
我在实际项目里养成了一个习惯:出图前用Display > Measure沿着 Outline 走一圈,确认闭合;再用Tools > Reports > DRC看有没有 outline 相关的报错。板框不闭合是导致"板子做出来尺寸不对"的头号原因,而且这种错误在 Allegro 里看不出来,必须在 CAM 里放大检查。
4. 钻孔文件:最容易被当成附属品的关键交付物
4.1 NC Parameters 和 NC Drill 是两回事
很多人把这两个命令混为一谈,实际上它们是"设置"和"执行"的关系。
Manufacture > NC > NC Parameters是全局参数设置,包括输出单位、格式(Excellon)、零抑制方式、输出文件路径、是否使用增强格式。这些参数一旦设错,后面生成的所有钻孔文件都是错的,而且错得很隐蔽。
Manufacture > NC > NC Drill是执行生成,弹出一个对话框让你选要生成哪些孔(通孔、盲埋孔、槽孔),然后输出.drl文件。
我建议的顺序是:先NC Parameters逐项确认,再NC Drill生成,最后NC > Drill Legend出一张钻孔表放在图纸上或者单独出 PDF。钻孔表不是生产必需文件,但它是核对钻孔数量和孔径的最好工具,特别是多孔径、多槽孔的设计。
4.2 钻孔参数怎么填,以及为什么
Format选 Excellon。这是钻孔文件的事实标准,几乎所有板厂都认。有些老版本还有 "Excellon 2" 之类的选项,差异主要在文件头格式,选默认的就行。
Units跟设计单位走。这里有个历史坑:Excellon 格式早期默认是英制,公制设计如果没在文件头声明单位,板厂按英制解析,孔位会整体偏移 25.4 倍。现代版本一般会在文件头写METRIC或者INCH,但导出后还是要打开文件看一眼。
Zero suppression和光绘的逻辑一样,Leading 或 Trailing。关键是和板厂确认他们习惯哪种,有些老 CAM 软件对零抑制的处理不一致,会导致孔位偏移。
Output file一般填./gerber/%f.drl,让钻孔文件和光绘文件放在一起。
Enhanced Excellon format建议勾选。增强格式会输出完整的工具表(M48 头、T 定义、坐标),板厂解析起来更省事。不勾选的话可能只输出裸坐标,需要人工补工具表。
生成后打开.drl文件看一眼,正常的内容长这样:开头是M48,然后是METRIC(或INCH),接着是工具定义T1C0.300(表示 1 号刀直径 0.3mm),%分隔,然后是G90、G05,最后是坐标行X12.500Y8.300。如果工具表里的刀具数量和钻孔表对不上,或者坐标明显超出板框范围,说明参数有问题。
4.3 槽孔、盲埋孔与钻孔表的处理
槽孔(Slot)在 Allegro 里通常用带槽的 padstack 或者Manufacture > NC > NC Route处理。如果设计里有长条形的孔(比如某些连接器的固定脚),一定要确认它出现在了钻孔文件或者单独的.rou文件里。我见过槽孔在 Allegro 里显示正常,但NC Drill只认圆孔,槽孔被静默忽略,板子回来连接器装不进去。
盲埋孔需要在NC Drill对话框里按层对选择,或者用NC > Backdrill单独处理。盲埋孔的钻孔文件必须和叠层严格对应,孔深错了就是整板报废。这块建议单独出一份说明文档给板厂,写清楚每个孔从哪层到哪层。
钻孔表(Drill Legend)的位置一般在Manufacture > NC > Drill Legend,生成后是一个表格图形,包含孔径、数量、是否镀铜。我一般把它放在 Board Geometry 下的一个独立 subclass 里,然后单独出一张 PDF 给板厂做参考,不放进生产用的光绘层。这样既不干扰生产文件,又能在评审时快速核对。
5. 完整实操流程与导出后自检
5.1 从零到一套可交付文件的步骤
把前面的内容串成一条线,实际操作按这个顺序走:
- 数据库体检:
Tools > Database Check,勾选全部检查项,修掉所有 error。 - 铺铜填充:
Shape > Fill All,确认动态铜皮是最新状态。 - 叠层核对:
Setup > Cross-section,确认层数和层序。 - 颜色层清理:
Display > Color/Visibility,关掉临时层,检查有没有画错 subclass 的图形。 - 建 Film:
Manufacture > Artwork,按命名规范逐个创建,配置 Film Options。 - 预览光圈:点 Apertures,检查有没有异常尺寸。
- 生成光绘:Select All 后点 Create Artwork,看输出窗口有没有报错。
- 生成钻孔:
NC Parameters确认参数,NC Drill生成.drl,Drill Legend出表。 - CAM 自检:用 CAM 工具逐层导入,做层间对位、极性检查、尺寸测量。
- 打包交付:按规范命名,附一份层对应表。
第 9 步是整个流程里最值钱的一步,下面单独说。
5.2 CAM 自检到底该看什么
导出光绘后直接用 Allegro 看是没用的,因为 Allegro 显示的是设计数据库,不是光绘文件。必须用独立的 CAM 工具导入,才能看到板厂看到的东西。常用的有 CAM350、GC-Prevue、KiCad 自带的 Gerber Viewer,甚至一些在线的查看器也能用。
导入后按这个清单过一遍:
第一,层是否齐全。把所有层叠在一起看,线路、阻焊、丝印、板框应该能对上。如果某一层是空的或者只有几根线,大概率是 Film 配置漏了 subclass。
第二,层间对位。打开顶层线路和顶层阻焊,焊盘应该完全重合,阻焊开窗比焊盘大一圈。如果错位,检查 Film 的 Offset 和 Scale,或者检查 padstack 里的阻焊参数。
第三,极性。内层重点看,找一块确定应该有大面积铜的区域,确认它是实心还是镂空。
第四,尺寸。量一下板框的长宽,和设计值对比,误差应该在 0.01mm 以内。如果差了一个数量级,多半是单位搞错了。
第五,钻孔对位。导入钻孔文件,叠在线路层上,确认每个孔都在焊盘中心。偏移超过 0.05mm 就要查原因,常见的是钻孔单位和光绘单位不一致。
第六,丝印压盘。放大看丝印有没有压在焊盘上,特别是小尺寸器件周围。
第七,1:1 打印。把线路层和丝印层合成一张 PDF,按 1:1 打印出来,拿个实际器件放在上面比一比。这一步能发现封装尺寸错误,是 CAM 检查发现不了的。
5.3 打包与交付的规范
文件命名建议用"项目名-版本号-层名.扩展名"的格式,比如board_v1.2_TOP.gtl。如果板厂有指定的命名规则,优先按他们的来,没有的话用这套通用规则。
压缩包里除了光绘和钻孔,建议放三个东西:一份层对应表(写明每个文件名对应哪一层)、一份钻孔表 PDF、一份简单的工艺说明(板厚、铜厚、阻焊颜色、表面处理、是否有阻抗要求)。这三个东西不占多少空间,但能减少 80% 的来回确认邮件。
6. 常见问题与排查速查表
6.1 层内容类问题
| 现象 | 可能原因 | 排查动作 |
|---|---|---|
| 某层光绘文件异常小(几 KB) | Film 里没勾选任何有内容的 subclass | 打开文件看内容,回 Artwork 检查 |
| 丝印全没了 | 只选了 Board Geometry,漏了 Ref Des 和 Package Geometry | 补选后重新生成 |
| 阻焊开窗全部消失 | 漏选 Pin 层,或 padstack 里阻焊尺寸为 0 | 检查 padstack 的 Solder Mask 参数 |
| 内层大面积无铜 | 负片极性反了,或铺铜未填充 | CAM 里看极性,回 Allegro 重新 Fill |
| 板框出现在丝印层 | Film 里误加了 Board Geometry/Outline | 从丝印 Film 里移除 |
| 焊盘变成一堆碎线 | 勾选了 Vector based pad | 取消勾选,用 flash 输出 |
6.2 坐标与单位类问题
坐标类问题最典型的表现是"整体偏移"或者"尺寸差一个数量级"。
如果整层图形偏移了一个固定距离,先查 Artwork 的 Offset 参数,再看 Film 的原点设置。Allegro 默认用设计原点,如果设计原点不在板框左下角,导出的坐标就会带一个偏移量,这在多数情况下没问题,但如果板厂要求原点在板框角上,就要在出图前把原点移过去。
如果尺寸差了 25.4 倍,百分之百是英制和公制搞混了。检查三处:设计单位、Artwork 的 Units、钻孔文件的 Units,三处必须一致。这种错误在 CAM 里一眼就能看出来,因为板子会变得巨大或者极小。
如果出现 0.1mm 量级的系统性偏移,检查精度设置。2:3 精度下,坐标会被量化到 1mil,累积起来就是可见的偏移。
6.3 钻孔与槽孔类问题
钻孔文件最常见的问题是孔径不对和孔位偏移。
孔径不对,先看 padstack 里的 Drill diameter 是不是成品孔径。有些设计里填的是钻孔直径,板厂会自己加补偿;有些填的是成品孔径,板厂直接按这个做。两种约定都行,但必须在工艺说明里写清楚,否则做出来的孔可能大一圈或者小一圈。
孔位偏移,先确认钻孔文件和光绘文件的单位、精度、零抑制是否一致。这四个参数任意一个不匹配,孔位就会偏移。我遇到过一次,光绘用英制 2:4,钻孔用公制,结果孔全部偏到板外,CAM 里一眼就看出来。
槽孔丢失,检查NC Drill对话框里有没有勾选槽孔选项,或者单独跑一次NC Route。槽孔不会自动出现在.drl文件里,这是很多人不知道的。
6.4 几个我踩过的坑
坑一:Film 复制后输出路径没改。复制一个 Film 改名字,结果 Output file 里还是手写的旧文件名,两个 Film 输出到同一个文件,后生成的把先生成的覆盖了。当时没发现,板子回来少了一层内层。从那以后我所有 Film 都用%f.%x变量。
坑二:改了 padstack 没重新出图。项目中期调整了某个焊盘的阻焊开窗,改完直接出图,忘了先进 Artwork 把 Film 重新生成一遍。Allegro 的 Film 配置是静态的,padstack 改了不会自动更新已生成的 Gerber,必须手动重新 Create Artwork。
坑三:以为板厂会帮你检查。有些板厂确实会做 DFM 检查,但不是所有板厂都做,而且他们的检查重点是能不能做出来,不是符不符合你的设计意图。丝印压盘、阻焊桥太窄这类问题,他们可能直接帮你改掉,改完还不告诉你。所以自检这一步不能省。
坑四:忽略钢网层的插件焊盘。有一次钢网层里混进了插件焊盘的开窗,板厂照着做了钢网,插件孔位置多出一坨锡膏,手工焊接时特别难受。钢网层只应该有贴片焊盘,插件焊盘一个都不能有。
坑五:单位改了没检查钻孔表。设计从英制切到公制,光绘和钻孔都重新生成了,但钻孔表还是旧的英制版本,打印出来贴在图纸上,装配时按错表查孔径,装错了一批连接器。钻孔表要和钻孔文件同批次生成,不能混用。
7. 最后几条实操建议
出图这件事,工具再熟也架不住项目赶。我的做法是把上面那套流程做成一个固定的检查清单,每次出图前对着勾一遍,勾完再发。清单不长,十项左右,但能挡住九成的低级错误。
另外建议养成一个习惯:每次出图后,把光绘包在本地留一份存档,命名带上日期和版本号。板子做回来如果有问题,第一件事就是拿存档和设计文件对比,确认是设计问题还是导出问题。没有存档的话,只能靠回忆,而回忆通常不可靠。
还有一点,不同板厂的 CAM 软件和对 Gerber 的解析习惯不完全一样。同一套文件,A 厂能做,B 厂可能报错。遇到这种情况,不要急着怀疑自己的设计,先让对方把报错信息发过来,多数时候是精度、零抑制或者光圈定义的问题,改一个参数就能解决。把这些参数记下来,下次给这家板厂出图直接套用,能省不少事。