PCB打样回来发现丝印糊成一团、钻孔对不上位、阻焊开窗偏了半个焊盘——这类问题十有八九不是板厂工艺差,而是Gerber导出环节埋了雷。我做了十多年硬件,用Cadence Allegro出过上千套Gerber包,早期也交过不少"学费":有一次四层板漏导了内电层,板厂直接按两层板做,回来整批报废。Allegro这套工具功能强、参数细,但导出Gerber的入口藏得深、选项多,新手很容易在某个勾选框上翻车。这篇就把Allegro导出Gerber的完整链路拆开讲清楚,从Film设置、钻孔文件生成到打包自检,每一步为什么这么做、哪里最容易出错,都给你说明白。不管你是刚上手Allegro的学生,还是从其他EDA工具转过来的工程师,照着走一遍就能出一套板厂直接能用的生产文件。
1. Allegro导出Gerber前必须搞清楚的几个概念
很多人一上来就找"导出"按钮,结果在菜单里绕半天。Allegro的逻辑和其他EDA工具不太一样,它导出Gerber的核心不是"导出",而是先"定义Film(底片)"。理解这一点,后面所有操作都顺了。
1.1 Gerber到底是什么,板厂拿它做什么
Gerber文件本质上是把PCB每一层用矢量图形描述出来的标准格式,板厂拿到它之后,用CAM软件解析、拼版、做光绘,最终生产出实物板。一套完整的Gerber包通常包含这些层:
- 顶层/底层线路层(Top/Bottom):铜箔走线和焊盘
- 顶层/底层阻焊层(Solder Mask):开窗位置,决定哪里露铜
- 顶层/底层钢网层(Paste Mask):贴片焊盘的开锡膏区域
- 丝印层(Silkscreen):器件位号、极性标识、版本信息
- 钻孔文件(NC Drill):所有过孔、插件孔的坐标和孔径
- 钻孔图(Drill Drawing):钻孔的图例说明,部分板厂要求
- 板框/外形层(Outline):板子的物理边界
板厂真正用来生产的是线路层、阻焊层、钻孔文件和板框,丝印和钢网是辅助。少任何一层,板厂要么做不出来,要么做出来是错的。我见过有人只导了线路层就发给板厂,结果对方打电话来问"阻焊呢",白白耽误两天工期。
1.2 为什么Allegro要先做Film再导出
Allegro的Film概念,你可以理解成"给每一层拍一张照片"。它把当前设计里所有可见的图形元素,按照你设定的层叠和颜色,固化成一个独立的底片文件。导出Gerber时,Allegro其实是把每一张Film分别输出成对应的Gerber文件。
这样做的好处是灵活:你可以精确控制每一层包含哪些元素。比如丝印层,你可以选择只放位号不放焊盘,也可以把装配信息一起放进去。坏处是配置项多,第一次配容易漏。所以我的习惯是:先建一套标准的Film模板,以后每个项目直接套用,省得每次重新配。
提示:Film的名字建议用板厂能识别的标准命名,比如TOP、BOTTOM、SOLDERTOP、SOLDERBOTTOM、SILKTOP、SILKBOTTOM,避免用中文或特殊符号,否则打包后板厂CAM工程师可能识别困难。
1.3 导出前设计本身要满足的前提条件
Gerber导出只是"翻译",如果设计本身有问题,翻译出来也是错的。导出前我一般会确认这几件事:
- DRC已经全部通过:线宽、间距、孔径都符合工艺能力,否则板厂可能直接拒单
- 板框是闭合的:用Outline层画一个完整闭合的矩形或异形框,不能有断点
- 原点已设置好:通常把板子左下角设为原点,方便钻孔坐标对齐
- 叠层结构已定义:四层板以上必须在Cross Section里配好层叠,否则内电层导不出来
- 器件位号已更新:丝印上的位号要和原理图一致,避免装配时对不上
这几条里,板框闭合和叠层定义是最容易出问题的。板框有断点,导出的外形层就是断的,板厂铣板时会出问题;叠层没配,内电层在Film里根本显示不出来,自然也就导不出去。
2. 一步步配置Film:从新建到参数确认
Film配置是Allegro导出Gerber的核心环节,也是最容易出错的地方。我按实际操作顺序拆成几步,每一步都说明为什么这么设。
2.1 打开Film管理界面并新建底片
在Allegro里,路径是Manufacture → Artwork,打开Artwork Control Form窗口。这个窗口分两大块:上面是Film Control(底片控制),下面是General Parameters(通用参数)。
新建Film的步骤:
- 在Film Control区域,点"New"按钮
- 输入Film名称,比如"TOP"
- 在"Available films"列表里选中刚建的Film
- 点"Add"把它加入当前配置
这里有个细节:Film名称区分大小写,而且不能有空格。我一般用全大写加下划线,比如"SOLDER_TOP",清晰又好认。
2.2 每一层Film里该放哪些元素
这是最关键的一步。Allegro默认会把当前可见的所有层都塞进Film,但实际生产不需要那么多。以顶层线路Film为例,我通常只保留:
- PIN:焊盘
- VIA:过孔
- ETCH/TOP:顶层走线
- OUTLINE:板框(可选,有些板厂要求每层都带板框)
阻焊层Film(SOLDER_TOP)则要放:
- PIN:焊盘(阻焊开窗依据焊盘)
- VIA:过孔(如果过孔要盖油就不放,要开窗就放)
- SOLDERMASK_TOP:阻焊层图形
丝印层Film(SILK_TOP)放:
- REFDES:位号
- SILKSCREEN_TOP:丝印图形
- PACKAGE GEOMETRY/SILKSCREEN_TOP:器件丝印
这里有个经验:过孔盖油还是开窗,直接决定阻焊层里放不放VIA。如果过孔要盖油(大多数情况),阻焊层里就不要放VIA,否则板厂会把过孔开窗,回来一看过孔周围一圈露铜,很难看还可能短路。如果过孔要做测试点,那就放进去。
2.3 底片参数:格式、单位和精度怎么选
在General Parameters区域,有几个参数必须确认:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Format | Gerber RS274X | 嵌入式格式,板厂通用 |
| Output units | Inches 或 Millimeters | 和设计单位一致,别混用 |
| Integer places | 3 | 整数位 |
| Decimal places | 5 | 小数位,精度足够 |
| Output options | 勾选"Use Apertures" | 使用光圈表 |
Format一定要选RS274X,这是嵌入式格式,光圈信息直接写在文件里,板厂不用额外要光圈表。老式的RS274D需要单独提供Aperture文件,现在基本淘汰了,但有些老工程师还在用,容易出问题。
精度方面,3整数位+5小数位是行业通用配置,对应0.00001英寸的分辨率,足够精细。如果选2+4,精度不够,细线路可能失真。
2.4 底片生成前的自检清单
点"Create Artwork"之前,我习惯做这几项检查:
- 每个Film的层叠是否正确(在Film里点右键可以预览)
- 有没有多余的层被误加进去
- 板框是否在每一层都可见(如果板厂要求)
- 钻孔符号是否已更新(Tools → Reports里可以查)
预览这一步别省。我有一次就是没预览,结果丝印层里混进了顶层走线,导出来丝印上全是线,板厂打电话来确认了半天。
3. 钻孔文件的生成:NC Drill和Drill Drawing的区别
钻孔文件是Gerber包里最容易漏、也最容易出错的部分。Allegro里钻孔相关有两个东西:NC Drill(数控钻孔文件)和Drill Drawing(钻孔图),很多人分不清。
3.1 NC Drill文件:板厂真正用来钻孔的文件
NC Drill是板厂数控钻床直接读取的文件,包含每个孔的坐标、孔径、镀铜与否。生成路径是Manufacture → NC → NC Drill。
关键参数:
- Format:和Gerber保持一致,RS274X
- Units:和设计单位一致
- Leading/Trailing zero suppression:一般选"Leading"
- Output file:默认是nc.drl,可以改名
生成后,Allegro会弹出一个报告,显示每种孔径的孔数。这个报告一定要看,如果孔数和设计不符,说明有孔没被识别。常见原因是过孔没定义钻孔属性,或者焊盘没关联钻孔。
3.2 Drill Drawing:钻孔图,部分板厂要求
Drill Drawing是把钻孔位置和孔径用图形方式画出来,方便人工核对。路径是Manufacture → NC → Drill Legend,生成一个钻孔图例,然后像普通层一样放进Film里导出。
不是所有板厂都要Drill Drawing,但建议一起提供,尤其是孔多、孔径种类多的板子。板厂CAM工程师核对时有个图例会快很多,也能减少沟通成本。
3.3 钻孔文件最常见的三个错误
我踩过的钻孔坑,基本集中在这三个:
错误一:孔数对不上。原因是有些过孔用了自定义焊盘,但焊盘里没定义钻孔。解决方法是检查Padstack,确认每个过孔焊盘都有Drill属性。
错误二:孔径单位错了。设计用毫米,导出选了英寸,结果孔径全错。这个错误很隐蔽,因为文件能生成,但板厂一看孔径就知道不对。导出前确认Units和设计一致。
错误三:槽孔没导出来。Allegro里槽孔(Slot)需要单独处理,普通NC Drill可能不包含。如果板子有槽孔,要在NC Drill里勾选"Include Slot Holes",或者单独生成槽孔文件。
注意:钻孔文件生成后,建议用CAM工具(如CAM350或免费的Gerber查看器)打开核对一遍,确认孔径、孔位和设计一致。这一步花五分钟,能省掉后面几天的返工。
4. 导出Gerber并打包:文件命名与自检
Film配好、钻孔生成后,就可以正式导出Gerber了。这一步操作简单,但打包和自检有讲究。
4.1 执行导出与文件输出
在Artwork Control Form里,选中所有Film,点"Create Artwork"。Allegro会在当前设计目录下生成一堆.art文件,每个Film对应一个。
默认输出路径是设计文件所在目录,文件名就是Film名加.art后缀。比如TOP.art、SOLDER_TOP.art。这些.art文件其实就是Gerber文件,只是扩展名不同。
4.2 文件重命名:让板厂一眼看懂
.art扩展名板厂能识别,但为了沟通顺畅,我习惯重命名成板厂通用的命名:
| 原文件名 | 重命名后 | 对应层 |
|---|---|---|
| TOP.art | Gerber_TopLayer.GTL | 顶层线路 |
| BOTTOM.art | Gerber_BottomLayer.GBL | 底层线路 |
| SOLDER_TOP.art | Gerber_TopSolderMask.GTS | 顶层阻焊 |
| SOLDER_BOTTOM.art | Gerber_BottomSolderMask.GBS | 底层阻焊 |
| SILK_TOP.art | Gerber_TopSilkscreen.GTL | 顶层丝印 |
| SILK_BOTTOM.art | Gerber_BottomSilkscreen.GBL | 底层丝印 |
| OUTLINE.art | Gerber_BoardOutline.GKO | 板框 |
| nc.drl | Gerber_NC_Drill.DRL | 钻孔 |
这套命名是行业通用的,板厂CAM工程师一看扩展名就知道是哪层,不用再问。别用中文名,也别用空格,有些板厂系统对中文路径支持不好。
4.3 打包前的最终自检
打包发给板厂前,我一定会做这几项检查:
- 用Gerber查看器打开每一层,确认图形完整、没有缺失
- 核对钻孔文件和Gerber的坐标原点是否一致,否则孔位会偏
- 检查阻焊开窗是否比焊盘大(一般单边大0.05-0.1mm),太小会导致焊接不良
- 确认丝印没有压在焊盘上,否则会影响焊接
- 板框层是否闭合,用查看器量一下尺寸和设计是否一致
这几项里,原点一致性最容易被忽略。Gerber和钻孔文件如果原点不同,孔位会整体偏移,板子回来插件孔全对不上。我一般导出前就把原点统一设在板子左下角,导出时不再改。
5. 常见错误排查:从现象反推原因
导出Gerber出的问题,现象五花八门,但根因就那么几类。我按"现象→原因→解决"的方式整理了一份排查表,遇到问题直接对照。
5.1 板厂反馈"缺少某层"或"层是空的"
现象:板厂说阻焊层是空的,或者内电层没收到。
原因:Film里没加对应的层,或者层加进去了但该层没有可见元素。
解决:回到Artwork Control Form,检查对应Film的层叠列表。如果是内电层,确认Cross Section里已定义,并且在Film里加了对应的Plane层。内电层在Allegro里默认可能不显示,需要在Color Dialog里打开。
5.2 钻孔对不上位或孔径错误
现象:板子回来插件孔偏了,或者孔径比设计大/小。
原因:钻孔文件和Gerber原点不一致,或者单位不匹配。
解决:确认导出Gerber和NC Drill时用的是同一个原点、同一个单位。Allegro里原点设置在Setup → Change Drawing Origin,导出前统一设一次。
5.3 丝印糊成一团或压在焊盘上
现象:丝印文字看不清,或者丝印盖住了焊盘导致焊接不良。
原因:丝印层里混进了焊盘或走线,或者丝印本身太细。
解决:检查丝印Film里是否误加了PIN或ETCH层。丝印线宽建议不小于0.15mm,太小板厂印不出来。位号字体高度建议不小于0.8mm。
5.4 阻焊开窗偏小或偏大
现象:焊盘露铜面积不对,或者阻焊盖住了焊盘边缘。
原因:阻焊层Film里焊盘的处理方式不对,或者阻焊开窗规则没设好。
解决:阻焊开窗一般比焊盘单边大0.05-0.1mm,这个在Padstack里可以设,也可以在导出时通过Solder Mask层控制。确认Film里SOLDERMASK层包含了所有需要开窗的焊盘。
5.5 板框不闭合或尺寸不对
现象:板厂说外形层有问题,或者做出来的板子尺寸和设计不符。
原因:板框线有断点,或者板框不在Outline层。
解决:用Outline层画闭合框,检查有没有断点。导出前用查看器量一下板框尺寸,和设计值对比。
6. 提高效率的几个实操技巧
导出Gerber这件事,做一次不难,难的是每个项目都稳定不出错。分享几个我用了多年的提效技巧。
6.1 建立Film模板,一劳永逸
Allegro的Film配置可以导出成模板文件,下次直接导入。路径是在Artwork Control Form里点"Save"保存配置,下次点"Load"导入。我一般针对两层板、四层板、六层板各存一套模板,新项目直接套,省去重复配置的时间,也避免漏配。
6.2 用Script自动化重复操作
Allegro支持Script录制,把导出Gerber的一系列操作录下来,下次一键执行。路径是File → Script,开始录制后正常操作一遍,停止后保存成.scr文件。下次直接运行Script,几秒钟完成导出。
不过Script有个坑:它依赖当前设计的层叠和Film配置,如果设计结构变了,Script可能报错。所以Script适合结构固定的项目,比如同一系列的板子。
6.3 导出后自动核对的小方法
我习惯在导出后,用免费的Gerber查看器(如KiCad自带的Gerber Viewer或在线查看器)快速过一遍。重点看三样:线路层有没有断线、钻孔和焊盘是否对齐、板框是否闭合。这三样没问题,基本就能发给板厂了。
另外,把Gerber包和设计文件一起归档,标注好版本号和日期。后面如果要改板,直接翻出旧包对比,能快速定位改了什么。
6.4 和板厂沟通的几个细节
导出前问清楚板厂的工艺能力:最小线宽、最小孔径、阻焊开窗规则。不同板厂能力不同,同一套Gerber发给不同厂,有的能做有的做不了。我一般固定用两三家板厂,把他们的工艺参数存成文档,设计时直接对照,导出时就不用反复确认了。
还有一点:Gerber包发出去后,让板厂先做CAM审核,确认没问题再投产。有些板厂会免费提供CAM报告,指出潜在问题,这个服务要用起来。
7. 从导出到投产:一次完整流程的复盘
最后用一个实际案例把整个流程串一遍。前段时间做一个四层控制板,板子不大但孔多,导出时踩了两个坑,正好拿来复盘。
7.1 案例背景与导出过程
板子情况:四层板,顶层底层走信号,中间两层是电源和地。板上有200多个过孔,孔径从0.3mm到1.0mm不等,还有几个槽孔用于固定连接器。
导出步骤按前面说的走:先配Film,顶层、底层、两个内电层、阻焊、丝印、板框各一个Film;然后生成NC Drill,勾选Include Slot Holes;最后Create Artwork,重命名打包。
7.2 踩的两个坑及解决过程
坑一:内电层导出来是空的。原因是Cross Section里内电层定义成了Plane,但Film里加的是ETCH层,Plane层没加进去。解决方法是Film里改加对应的Plane层,重新导出。
坑二:槽孔没导出来。第一次生成NC Drill时没勾"Include Slot Holes",槽孔丢失。板厂反馈后重新生成,勾上选项,槽孔正常输出。
这两个坑都不难解决,但如果不自检直接发板厂,板子就废了。所以导出后的自检环节绝对不能省。
7.3 最终交付的文件清单
这次交付给板厂的Gerber包包含:
- 顶层线路、底层线路、两个内电层
- 顶层阻焊、底层阻焊
- 顶层丝印、底层丝印
- 板框层
- NC Drill文件(含槽孔)
- Drill Drawing钻孔图
- 一份README说明板子层数、板厚、表面处理工艺
板厂收到后CAM审核通过,投产顺利,回来板子一次成功。这套流程走顺了,后面同类板子直接套模板,效率高很多。
导出Gerber这件事,说到底就是细心加经验。工具本身不难,难的是知道哪里容易出错、怎么提前避免。把Film配好、钻孔导全、自检做足,基本就不会翻车。我现在的习惯是每个项目导出后都花十分钟自检,这十分钟比后面返工几天划算得多。