☰
Allegro 17.2 Gerber导出全流程解析与实战避坑指南
2026/10/7 10:31:42 网站建设 项目流程

做 PCB 的老工程师都知道,Allegro 17.2 里把布线、铺铜、DRC 全部跑完,并不代表板子就能直接打样,真正决定板厂接不接单、能不能一次做对的,是最后导出 Gerber 文件这一步。Gerber 是整个 PCB 行业通用的制造数据格式,板厂拿不到一份干净准确的 Gerber,画图阶段做得再漂亮也没用。我这些年用 Allegro 17.2 出过不少版本的生产文件,从 2 层板到厚铜板、HDI 盲埋孔板都碰过,中间踩过的坑,比如负片短路、丝印压盘、钻孔文件和铜层对不齐,都能写成一本书。这篇文章就把 17.2 出 Gerber 的完整流程按我实际操作顺序拆开讲,从光绘参数设置到钻孔文件导出一路到 CAM 复查,适合刚从 AD 或 PADS 转过来的新人,也想给正在为文件被退回头疼的朋友一些参考。

1. 出 Gerber 前,先把数据和铺铜收拾干净

1.1 为什么不能直接发 .brd 源文件给板厂

很多刚接触 Allegro 的人会问:既然板厂有 Allegro,直接把 .brd 发过去让厂家自己导不行吗?我的建议是千万别贪这个省事。第一,板厂的 CAM 工程师手里要同时处理各种来源的设计文件,Allegro 版本跨度从 16.6 到 17.4 都有,你的 .brd 是用 17.2 存的,厂家电脑上未必装了对应版本,就算装了,打开以后封装库、shape、symbol 的指向路径都可能丢。第二,设计源文件里会带上完整的器件位号、网络名、设计规则、内部叠层参数,这些属于公司或个人的设计资产,交给第三方后很难控制扩散范围。第三,也是最直接的,板厂加工需要的是光绘数据和钻孔数据,不是设计源文件。Gerber 是通用的行业语言,RS-274X 几乎任何 CAM 软件都能读,你出一份标准化 Gerber 过去,厂家不用做任何格式转换,风险最小。

再说句实话,自己导出 Gerber 还有一层好处:出图过程中你等于自己做了最后一轮“可制造性检查”。比如某层有细碎铜皮没连到网络、丝印压在焊盘上、钻孔文件里少了盲孔数据,这些问题在 Allegro 里如果不专门看,很多是发现不了的。只有把 Gerber 逐层翻一遍,你才会真正站在板厂的角度审视这块板。

1.2 铺铜和 shape 的状态先确认

在打开 Artwork 面板之前,我建议先把所有铺铜 shape 的状态统一改成 smooth,也就是平滑填充。Allegro 里的动态铜如果在 rough 或 disabled 状态下直接出 Gerber,有的版本会生成异常的光绘数据,可能出现铜皮裂开、孤岛铜或边界不对的情况。实际操作路径是执行菜单 Shape -> Smooth,弹出对画框后选择 All,把整个板上的所有 shape 都更新一遍。

接着再做一次数据库检查,菜单是 Tools -> Database Check,把 Check Shape 和 Check Unconnected Pins 这类选项勾上,然后点 Check。这个动作看起来不起眼,但它能提前发现很多会影响 Gerber 输出的数据库问题。比如某些 shape 丢失了边界、某些 via 焊盘被意外删除、某些走线悬空。数据库检查过了,再往下出 Gerber 才有意义。

还有一种情况是铺铜用的是负片层画法,尤其是内层电源地层。如果你对负片的逻辑不是特别熟,我建议出 Gerber 时统一改用正片。现在的光绘格式完全支持正片输出,正片所见即所得,CAM 里看到什么就是什么,排查问题容易得多。后面我会专门讲负片怎么处理,正片才是省心方案。

1.3 DRC 和未连线报告先跑一轮

在出光绘之前,设计里的 DRC 不能完全是红的,至少不要有 Unconnected Pin(未连接引脚)级别的错误。用 Tools -> Reports,选择 Unconnected Pins Report,生成一份报告,仔细看有没有漏连的网络。有时候某个引脚在图上看着连了线,但由于过孔属性被改成了不连接,实际上根本没接上,这种错误在 Allegro 里非常隐蔽,Gerber 出来后也看不出来,只有上电测试才会炸。

如果报告里确实有未连接引脚,先回到设计里处理好再继续。别想着“就一个脚没连,出 Gerber 回来再改”,Gerber 出来后你要重新对板厂交代很多事,这个回头路的成本远比你想象的更高。等 DRC 干净了,再把文件另存为一个专门用于出厂的版本,比如 brd_prod.brd,别在生产文件里继续乱动。

2. Artwork 光绘设置:参数选对,后面省心

2.1 光绘格式优先选 RS-274X

Allegro 17.2 的 Artwork 面板里能选的光绘格式主要有 RS-274X、RS-274D、X2(也写作 274X2),以及少数场景下的 IPC-2581。现在的主流已经非常统一,选 RS-274X 基本不会错。它把光圈表(aperture table)直接嵌进 Gerber 文件内,CAM 软件打开时不需要再单独加载光圈文件,也不容易出现因缺少 .app 文件导致图形整个错位的情况。

X2 格式虽然支持嵌入更多属性和图形信息,很多高端板厂也支持,但你要是碰上小厂或者老版本 CAM,就可能有兼容性问题。我的习惯是,除非客户和板厂都明确要求 X2,否则一律用 RS-274X。没必要为了“新”找额外的沟通成本,板厂能最快打开、最不容易出错的格式,才是生产上最稳的格式。

2.2 打开 Manufacture 下的 Artwork 面板

Allegro 17.2 的光绘设置入口在 Manufacture -> Artwork,弹出的窗口分两个页签,一个是 Film Control,另一个是 Parameters。我一般先在 Parameters 页把设备单位和格式确定好,再去 Film Control 里建层。Parameters 页里最关键的是 Format 设置,它决定输出的 Gerber 坐标精度。单位是英寸的时候,我建议整数位给 3、小数位给 5,写成 3.5,这样坐标能精确到 0.00001 英寸,板子尺寸在 999 英寸以内的设计都能正常表达。如果你习惯用毫米制,那整数位至少要给到 5,小数位给到 3,别低于这个精度。

坐标精度越往后越小,Gerber 文件体积会略微变大,但对现在电脑来说完全不是问题。真正怕的是某些教程里直接让你写成 3.3,结果板子一超过 999mil 或者 99.9mm 就爆了。所以每次设置格式时先看一眼板子外形尺寸,再决定整数位,这一点比什么都重要。

2.3 Film Control 页面里的关键选项

切到 Film Control 页,左侧是 film 列表,右侧是每一层对应的 subclass 列表。我建议每个输出文件都单独定义一个 film,不要把所有层堆在一个文件里。比如顶层走线就叫 TOP,底层走线叫 BOTTOM,顶层阻焊叫 TOP_MASK,底层阻焊叫 BOTTOM_MASK。名称简单清楚,板厂拿过去不用猜。

选中一个 film 后,右侧把属于这一层的 subclass 勾上。比如 TOP 这个 film,我会勾上 Board Geometry/Outline 来带一个板框参考,再把 Etch/Top 勾上。注意不要勾多余的 subclass,很多工程师图省事直接往 TOP 里丢了一堆机械层内容,结果 Gerber 打开后出现莫名其妙的线条。

Film Options 里有三个选项很关键:Fill Pads、Suppress Unconnected Pads、Undefined Line Width。Fill Pads 意思是把焊盘内部填充为实体,保证在正片情况下焊盘是一个完整圆形或异形图形;Suppress Unconnected Pads 是抑制未连接焊盘,内层走线层的过孔焊盘如果没连走线,可以选择不显示,这样光绘能更干净;Undefined Line Width 要填一个不为零的默认线宽,一般给 5mil,否则某些零线宽的图形在 Gerber 里会以 undefined width 出现,板厂 CAM 软件读取时可能直接忽略或按自己的默认值处理,最终导致线条丢失。

最后还要记得设置 Plot Mode。如果是常规正片出图,Plot Mode 选 Positive,这个不用犹豫。只有当你决定内层用负片时才选 Negative。关于负片的坑,我后面会专门说。

3. 按层输出 Gerber:每层一张图,别混一起

3.1 常见层叠和光绘文件命名对照

建 film 的时候,多层的文件别少于下面这张表,除非设计里确实没有对应层。

光绘文件建议命名包含的主要内容备注
TOP.art顶层铜、板框正片
INNER1.art内层 1 铜正片或负片
INNER2.art内层 2 铜正片或负片
BOTTOM.art底层铜、板框正片
TOP_MASK.art顶层阻焊开窗必须和顶层铜匹配
BOTTOM_MASK.art底层阻焊开窗必须和底层铜匹配
TOP_PASTE.art顶层钢网开孔有SMT器件才需要
BOTTOM_PASTE.art底层钢网开孔有SMT器件才需要
TOP_SILK.art顶层丝印注意避开焊盘
BOTTOM_SILK.art底层丝印从底层看时注意镜像
OUTLINE.art板框可用 Board Geometry/Outline 或 Mechanical/Outline
DRILL.art钻孔图例NC Legend 生成

我见过有些人把 TOP_MASK 和 TOP_PASTE 混成一个文件,板厂虽然能靠后缀名猜,但这个属于给自己埋雷。阻焊开窗和钢网开孔的要求完全不一样,阻焊是覆盖整板除焊盘外的地方,钢网是仅焊盘位置开口,两个文件混在一起,后期返修和设备识别都会出问题。

3.2 每层 film 的 subclass 选择细节

以 TOP.art 为例,我通常勾选 Etch/Top 和 Board Geometry/Outline。如果板子上有特殊走线在 Assembly_Top,也要补进去。有些人还喜欢把所有层的铜都勾到一个文件里,这不是错误,但对于多层板来说,把内层都压进一个 Gerber,板厂做阻抗、对位、分层检查都很麻烦,不推荐。

阻焊层 TOP_MASK.art 里勾的是 Board Geometry/Soldermask_Top,以及 Etch/Top。这里勾上 Etch/Top 的目的不是要在阻焊 Gerber 里看铜,而是为了让焊盘位置能按照铜层自动开窗。如果你只勾 soldermask 而忘了勾 Etch,生成的阻焊文件可能整片都是油墨,焊盘位置没有开口,板子回来焊盘全被绿油盖住,只能报废。

丝印层也有类似问题。顶层丝印选 Board Geometry/Silkscreen_Top,同时把元件位号、极性和 company logo 所在的 subclass 都带上。不要只勾 Ref Des/Silkscreen_Top 而漏了 Board Geometry/Silkscreen_Top,不然有些手动画上去的标识会莫名其妙消失。底层丝印如果从顶层视角去看,会看到文字左右镜像,这点在 CAM 检查时尤其注意,别误判成设计出了问题。

3.3 一次把所有 film 生成出来

所有 film 建好后,回到 Artwork 面板,在下方的 film 列表里用鼠标框选全部文件,然后点 Create Artwork。Allegro 会按列表顺序逐个生成 .art 文件,默认输出目录通常是设计文件同目录下的 artwork 文件夹。你可以在 Output Directory 里自定义路径,但我建议输出到一个命名为 gerber_out 的新文件夹里,方便和编辑源文件区分。

生成完以后,回到磁盘目录去看一下每个 .art 文件大小。如果某个层文件只有几百字节,而设计里明明有很多走线,大概率是你这个 film 对应的 subclass 没配好,得回 Artwork 面板重新检查。别小看这个文件大小检查,我靠这个办法抓到过好几次图层配置遗漏。

4. 钻孔文件:很多新手栽在这一步

4.1 NC Drill 参数怎么设置

Gerber 只描述板上的铜箔、丝印、阻焊层,孔的信息要另外输出。Allegro 17.2 里钻带文件的入口在 Manufacture -> NC -> NC Drill。打开之后核心要设置的有三项:单位、格式、文件输出位置。

单位建议和光绘保持一致。如果 Gerber 用的是英制,NC Drill 也用英制;Gerber 用公制,NC Drill 也用公制。混用不是不行,但板厂 CAM 工程师要来回换算,多一刀换算就多一分出错风险。格式方面,Excellon 格式默认带前导零还是后导零,不同板厂习惯可能不同。我通常选 Leading Zero Suppression,也就是省略前导零,并在文件里把单位、格式说明写在备注中。如果你不确定,最简单的方法是选 Fixed 模式,也就是不省略任何数据位,虽然文件体积大一点,但绝对不会因为零位处理不同而出错。

Output 文件里一般会生成 .drl(钻孔数据)和相应的 .tap(孔位图)。Allegro 还会生成一个 .log 日志文件,别急着删,如果板厂反馈孔位不对,这个 log 里记录了坐标最大值、格式参数,是排查的重要依据。

4.2 用 NC Legend 生成钻孔图

光有 .drl 还不够,板厂要知道每个孔符号对应多大直径,这需要一张钻孔图例。有人叫它钻孔孔位图,Allegro 里的操作是 Manufacture -> NC -> NC Legend,然后在板上某个空区域点一下,Allegro 会生成一个表,列出所有钻孔符号和对应孔径。

要注意,NC Legend 生成的位置是在设计图面里的,你需要专门为它建一个 film,通常叫 DRILL.art。这个 film 包含 NC Legend 子类所在的 subclass,这样输出 Gerber 时钻孔图例才会跟着出来。不然你虽然生成了图例,但 Gerber 里根本没输出这一层,板厂照样看不到。

4.3 盲埋孔和铣槽文件的补充

如果你的板子用了盲孔、埋孔、背钻,NC Drill 的 Output 会把不同孔类型的文件分成多个,比如 Via 文件、Drill 文件。每个文件都要检查一遍,确认盲孔和埋孔各归各类,没有漏。HDI 板的手工和机械钻孔数据不一样,错一个文件,整个叠层可能都对不上。

对于槽孔、异形孔和外形铣边,Allegro 里要输出 NC Route 文件,入口在 Manufacture -> NC -> NC Route。这些铣削数据也要和钻带文件一起发给板厂,不然工厂不知道槽怎么开、外形怎么铣。这里容易犯的错误是只发 .drl 忘了发 .rou,结果板子外形一个没铣。

5. 用 CAM 工具复查 Gerber,别直接打包

5.1 把 Gerber 导进 CAM350 或 ViewMate

Gerber 文件在 Allegro 里生成后,先别急着压缩打包发走,用 CAM 软件打开看一眼是我雷打不动的习惯。CAM350 是老牌工具,ViewMate 更轻量,网上也有很多免费版本。把刚才生成的 .art 文件和 .drl、.rou 都导入进去,如果软件问单位,一定要选成和输出时一致的英制或公制,选错单位后整个板子尺寸会吓人地偏大或偏小。

导入完成后,逐层打开看,重点检查三样东西:第一,每个焊盘是否完整,尤其是内层的热焊盘不是只剩一个十字线;第二,阻焊开窗是否和焊盘位置重合,别出现焊盘在铜上、开窗却跑到旁边去的情况;第三,丝印有没有压在焊盘上,尤其排阻、QFP 这类密集封装,丝印压盘会导致焊接后器件识别困难。

5.2 用 CAM 的 DRC 功能做可制造性检查

CAM350 里有 Analysis -> DRC 之类的功能,可以设置最小线距、最小线宽、孔到铜边距等参数,然后对整个 Gerber 跑一遍检查。这和我们 Allegro 里的 DRC 不完全一样,Allegro 查的是设计规则,CAM 里的 DRC 查的是“一出厂文件能不能加工”。比如有些线在 Allegro 里满足 6mil 间距,但到了阻焊层上开窗距离不够,板厂可能就做不出来。

跑完 DRC 看结果分两类处理:一类是报警但不影响功能,比如丝印上有极小的孤立文字;另一类是真问题,比如铜皮间距不足、钻孔到铜皮太近。真问题就直接回 Allegro 修改,别想着在 Gerber 上补丁,覆盖修改过的 Gerber 永远是不稳定的。

5.3 制作叠层和加工说明文件

Gerber 本身不包含叠层信息,铜箔厚度、基材厚度、阻抗要求、表面处理工艺都需要单独给板厂一份文档。我的做法是在 gerber_out 文件夹里放一个 stackup.txt 或者 PDF,写清楚几点:层叠顺序、每层铜厚、介质厚度、阻抗线宽和对应层、表面工艺是喷锡还是沉金、板材品牌有没有要求、阻焊颜色和丝印颜色。

很多工程师觉得只要 Gerber 正确,这些都不重要。但实际上板厂做阻抗、做层压、做表面处理,完全依赖这份说明。你图纸画得再严谨,不告诉板厂要 1.6mm 板厚和 35um 铜厚,厂家就只能按常规默认工艺做,做出来是不是你要的,只能赌运气。

6. 常见 Gerber 出图问题排查

6.1 板厂打不开文件或图形错位

最常见的 Gerber 打不开原因不是格式选错,而是文件名或路径里有中文、特殊符号。现代 Windows 支持中文路径,但很多板厂使用的 CAM 软件在服务器上运行,字符编码不一定兼容中文名。我吃过几次亏之后,所有 Gerber 输出路径统一改成英文,文件名也只用大写英文字母、下划线和数字。像 TOP.art、BOTTOM_MASK.art 这种命名就很安全。

图形整体错位大概率是原点不一致。如果光绘文件用的是设计绝对坐标,钻孔文件用的却是相对原点的坐标,两边一叠,孔和焊盘全都偏出去。解决办法是在出图前通过 Setup -> Change Drawing Origin 把设计原点移到绝对可靠的左下角或者板框左下角,然后 Artwork 和 NC Drill 都基于同一个原点输出。只要保证两个过程站在原地不动,Gerber 和钻孔多数情况下能自动对位。

6.2 丝印层文字丢失、镜像或压在焊盘上

丝印文字丢失,最常见原因是生成丝印 Gerber 时漏勾了 Ref Des 或 Silkscreen 子类。还有一个隐形杀手是“零线宽”文字,有些导入库里的文字被定义成 line width = 0,Allegro 出 Gerber 时如果不填 Undefined Line Width 的默认值,CAM 那边可能直接忽略。我在 Artwork 参数里把 Undefined Line Width 固定填 5mil,基本能覆盖这种问题。

底层丝印在 CAM 里看到文字左右镜像,先别急着改设计。底层丝印本来就是从底层看过去才正向的,你在 CAM 软件里从顶层视角看,底层的字自然是镜像状态。如果板厂反馈底层的丝印反了,往往是因为板厂习惯从正面看,那你需要在输出底层丝印 Gerber 前先设置成镜像输出。这个设置藏在 Artwork 的 Film Options 里,用的时候确认一下需求,别闷头改。

丝印压在焊盘上这个问题,在 Allegro 里就要提前处理。密集芯片底下、器件位号默认摆放位置经常覆盖在焊盘上,出 Gerber 前用颜色开关把所有丝印层加上,放大看一遍。如果压盘,手工把位号拖到器件外面,拖不出去就分几行摆放,总之不要让丝印跟焊盘重叠。高频板或需要极细间距的焊盘,最好再让板厂确认一下丝印与焊盘的间距要求。

6.3 内层负片打开后短路一大片

用负片出内层板时,CAM350 里经常看到的是大片铜箔被挖掉,却出现很多孤岛连接,看起来像短路。其实负片的意思是“你画的线和形状在光绘中是空白,其余部分全是铜”,所以任何在负片层里的封闭画线如果没处理好,都会让该隔离的区域意外保留铜。新手用负片很容易在电源层的边缘、过孔焊盘周围留下多余图形,导致实际做出来铜连成一片。

我的建议很直接:除非公司内部对负片流程有严格规范,否则内层全部用正片输出。正片虽然生成的文件里 polygon 数据量更大一点,但可读性高,CAM 检查一目了然。Gerber 文件大几十 KB 在这种时代真的不算代价,换来的却是低得多的报废风险。如果你因为阻抗计算、内层等电位要求确实要用负片,那在 CAM350 里重点检查边缘闭合区域和所有电源过孔周围,看到不该亮起来的地方就是问题。

6.4 钻孔文件报文但孔偏、孔少了一类

Excellon 钻孔文件里每一把钻头通常就是一个工具号 T01、T02,孔位坐标按工具号分组。CAM350 导入 .drl 之后,先确认工具数量和你设计里的孔径种类是否一致。如果少了某一种,通常是因为该孔径对应的过孔或引脚被设成了 nondrill,或者 Allegro 里该封装的 Pin 属性没勾上 Plating。这时候回 Allegro 检查封装,改完再重新出钻带。

孔整体偏移则先查原点,再查单位和格式。Excellon 格式里如果整数位设短了,某些坐标会被截断,比如 5000mil 的坐标被记成 0000mil,那整批孔会严重错位。解决办法就是格式化之前留足整数位,CAM 检查时看到某一行孔的位置全部偏向角落,不用怀疑,一定是格式精度不够。

6.5 关于“5层板子”我的额外提醒

搜索相关词里有人提到 5 层板子,这里顺带多说一句。常规 PCB 叠层大多是偶数层,因为铜箔和半固化片的压制结构对称,做奇数层容易出现翘曲、成本反而更高。如果确实需要 5 层结构,往往也是在 6 层板基础上掏空某层,或者在 4 层板基础上增加一个比较薄的信号层。真要出这种非常规叠层,更要在 Gerber 之外把叠层说明写清楚,否则板厂默认压合顺序后,成品性能可能和你的仿真结果完全对不上。一般设计能走偶数层就尽量别用奇数层。

Gerber 出图这件事,看似简单,实际是设计端和制造端之间最后一道关口。很多人画了几个月板子,最后因为一个 Undefined Line Width 没填,或者钻孔格式少写一位整数,就导致打样周期白白多出两三天。我个人现在出图的习惯是固定维护好一套 film 模板,不同工程拷贝过去只改层叠名称,参数永远是同一套验证过的值;每次生成完 Gerber 和钻孔,必须开 CAM350 把每一层过一遍再压缩发送。这套流程走顺了,打样基本不会因为文件原因被退回。希望上面的细节对你有用,下次出 Gerber 前照着过一遍,能帮你少走很多弯路。

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

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

立即咨询