做PCB设计这些年,我一直觉得“出Gerber”这件事属于典型的“看起来简单、做起来全是细节”的活儿。菜单点几下确实能生成文件,但真要保证板厂拿到文件后一次就能正确解读,路径设置、光圈表匹配、钻孔表对应这些环节只要有一个地方偷懒,最后都会变成生产端的沟通成本和改版时间。尤其是用Allegro 17.2的工程师,界面里可调参数一大堆,很多人第一次独自操作时根本分不清哪些该动、哪些不该动。这篇文章我就把整个流程按实际操作的先后顺序完整拆一遍,从最开始的工作目录与路径设置,到Artwork底片逐层定义,再到NC Drill钻孔数据与钻孔表的生成,最后是文件自检和常见报错的排查思路。内容适合刚接触Allegro、准备第一次投板的新手,也适合已经出过几次板但想系统梳理流程、减少返工的工程师。
1. 输出环境配置:路径、单位和光圈表的优先级
1.1 原点与单位:先统一基准,后面才不用返工
我见过不少新手一上来就直接打开Artwork面板开始加底片,结果生成的Gerber坐标东一块西一块,板厂对位的时候完全对不上。问题的根源往往不在Artwork本身,而在最基础的设计参数没有定好。
打开Setup → Design Parameters,在Design页签下先确认User Units。Allegro 17.2支持Mils、Inch、Millimeter、Micron四种单位,绝大多数板厂和CAM工程师默认用Mils沟通线宽、线距、孔径这些参数,所以我个人建议设计阶段就用Mils,输出Gerber时也保持英制。道理很简单:你跟板厂确认“0.15mm线宽”和“6mil线宽”虽然数值等价,但不同工具之间转换时一旦发生舍入误差,做出来的板子就和设计意图对不上了。
精度设置同样要提前确认。Design Parameters里的Size页签下有个Accuracy选项,通常设置成3.5或2.5。这里的含义是整数部分3位、小数部分5位,基本能覆盖常规PCB的坐标范围和小数精度。如果设计的板子尺寸很大,超过999.99999个单位,那我建议改成4.5,但一般消费级板卡用3.5就足够,板厂CAM软件也普遍支持这个精度。
还有一个容易被忽略但实际很重要的是绘图原点。Gerber文件和钻孔文件的坐标基准必须完全一致,否则板子上的孔和走线会整体错位。最稳妥的做法是用Setup → Change Drawing Origin,把原点放在板框左下角,或者放在板框某个明确的定位角上。这样我们导出的所有文件都基于同一个世界坐标,后续做拼板、加工艺边时坐标关系也一目了然。
1.2 Photoplot输出目录的指定方式(路径设置的核心)
路径设置是很多人搞不清楚的第一个点。Allegro的Gerber输出工具叫Artwork Control Form(也有人叫底片控制面板),进入方式有两种:Manufacture → Artwork,或者在命令行输入artwork。17.2版本两种方式都可以,关键是面板打开后别急着添加Film,先把输出目录定下来。
在Artwork Control Form左上角有个Device Setup按钮,点开后可以看到Photoplot Output Directory字段,这里就是指定Gerber文件输出路径的地方。默认情况下它会指向当前工作目录,但实际投板时我们通常希望所有制造文件集中放在一个独立文件夹里,方便压缩打包。我一般会在工程目录下新建gerber_out文件夹,然后把路径填进去。
这里有一个非常实在的建议:路径里不要带中文、不要带空格、不要用特殊符号。有些板厂的CAM系统对中文路径支持不好,读取文件时直接乱码或找不到文件。我每次都会把工程目录改成类似E:\Project\STM32_Control_Board这种纯英文结构,Gerber输出路径设为下一级E:\Project\STM32_Control_Board\gerber_out。这个习惯看起来不起眼,但能帮你挡掉很多不必要的沟通麻烦。
另外,Artwork Control Form下方还有个Film files相关的输出选项,可以把所有底片一次性批量生成。如果只是调试单张底片,可以不开批量;但到了最终交付阶段,我建议把所有层一次性全部勾选并生成,这样能确保所有文件来自同一次设计快照,不会出现某层是旧版本、某层是新版本的低级错误。
1.3 光圈表更新:看似老古董,实则是线宽命脉
说到光圈表,很多新入行的工程师可能连这个名字都没听过,觉得这像照相制版时代的产物,跟自己没关系。但在Allegro 17.2里,Aperture依然是Gerber文件正确呈现线宽、焊盘形状的关键机制。
我们画板时用的走线、焊盘、铜皮,在输出Gerber时都会通过一个光圈编号映射到对应的形状和尺寸。如果光圈表里的定义与设计数据不一致,CAM软件打开Gerber后可能看到焊盘消失、线宽变细、铜皮变形这些奇怪现象。打开Artwork Control Form后,切换到Apertures页签,里面有一个Edit Aperture Wheel按钮,点进去可以查看当前的光圈列表。正常情况下不需要手动逐个编辑,Allegro会在输出时根据设计数据自动匹配光圈,前提是我们勾选了正确的选项。
实际操作时,我建议在生成前把Apertures页签里的Auto和Enforce相关选项仔细检查一遍,确认Aperture文件能正确自动生成。如果你的设计里有自定义形状的焊盘或特殊线宽,一定要在光圈表里手动补充对应尺寸的光圈,否则输出的Gerber文件里这部分图形可能丢失或被替换成默认形状。这一点在后续排查“为什么生成的Gerber和PCB显示不一致”时是最高频的原因之一。
2. Artwork参数面板逐项拆解:怎么定义每一张底片
2.1 底片名称怎么建,层映射才不混乱
当输出环境配置好之后,就该在Artwork Control Form里逐个建立底片了。这个词“Film”其实就是我们常说的“层”或者“底片”,一张底片对应一个Gerber文件。
点开Artwork Control Form后,左侧是当前定义的底片列表,右侧是可以添加到底片上的层信息。底片命名直接关系到板厂员工能不能快速识别文件属性,所以我建议使用行业通用命名规则,而不是随便起名。下面这张表是我个人常用的命名对照,基本可以直接抄作业:
| 输出对象 | 建议文件名 | 对应含义 |
|---|---|---|
| 顶层走线层 | TOP.GTL | Top Layer |
| 底层走线层 | BOTTOM.GBL | Bottom Layer |
| 顶层阻焊 | TOP.GTS | Top Solder Mask |
| 底层阻焊 | BOTTOM.GBS | Bottom Solder Mask |
| 顶层丝印 | TOP.GTO | Top Silkscreen |
| 底层丝印 | BOTTOM.GBO | Bottom Silkscreen |
| 助焊层/钢网 | TOP.GTP / BOTTOM.GBP | Paste Mask |
| 板框层 | BOARD.GKO | Outline / Keepout |
| 钻孔层 | DRILL.GBR | Drill Drawing |
当然,不同板厂对后缀可能有一些细微偏好,命名只是方便沟通,不是硬性标准。但保持文件名与层含义一一对应,能让你在几个月后重新翻出工程发板时,依然一眼认出每一份文件是干什么的。
2.2 层选择顺序与正负片设置
建立了底片名称之后,要在右侧栏中选择这张底片实际包含哪些Subclasses。比如TOP.GTL这张底片,至少要包含ETCH/TOP、BOARD GEOMETRY/OUTLINE、BOARD GEOMETRY/PHOTOPLOT_OUTLINE(如果有的话)。注意,如果你把BOARD GEOMETRY/OUTLINE漏掉了,生成的Gerber文件就没有板框,板厂无法判断板子外形;如果把所有层的Etch都加进去,那顶层和底层的走线就会叠在一张图里,直接报废。
我的操作习惯是:每张底片除了包含本层图形之外,都把板框层加上去。这样做的好处是每张Gerber都能独立看到板子边界,CAM工程师对位时方便很多。至于V-cut、工艺边、定位孔这些信息,如果板厂有特殊要求,再按他们的规范额外添加层即可。
接下来是正负片的选择。Artwork Control Form的Film Layer Setting区域,在定义每张底片时会有Positive和Negative选项。负片的意思是该层默认全黑(或全铜),只把被挖掉的部分显示出来;正片就是常规的“画什么有什么”。对电源层和地层而言,如果铜皮面积很大,用负片可以显著减小Gerber数据量,这是老式CAM时代的优化手段。但现在硬件性能早就不是瓶颈了,而且负片在全板检查时看起来不直观,CAM工程师也容易漏看问题。所以我的建议是:除非公司有明确规范要求用负片,否则一律用正片。正片的可读性和可检查性是最好的,也能最大程度避免因负片层叠设置错误导致的整层短路。
还有一个细节是Flip选项。如果你在建底片时需要把某一层镜像显示,比如从顶层视角看底层丝印,可以用Flip处理。但Gerber文件里通常不用做这一步,板厂CAM会自己处理视图方向。这里不要画蛇添足,保持原样输出最安全。
2.3 Undefined line width未定义线宽的隐患
Allegro 17.2的Artwork面板里,每张底片下方都有一个Undefined line width字段。很多人不懂这个字段是干嘛的,直接填0或者不管它,结果生成的Gerber里某些线条突然消失了。
这个字段解释起来很简单:PCB设计里允许存在宽度未定义的线条。比如你画一条线时,线宽默认值是0,这类宽度为0的线在输出Gerber时就需要一个兜底宽度。如果Undefined line width设为0,那这些线在生成的Gerber里就是宽度为0的线,CAM软件可能直接不显示;如果设为5mil,那所有未定义宽度的线都会按5mil输出。
针对这个问题,我的建议是先在PCB里用Tools → Database Check查一遍是否存在0宽度线,尽量在设计阶段就把线宽定好,不要依赖兜底参数。如果确实有未定义宽度的线,比如某些特殊的标注线、辅助线,可以把它统一成某个合理的非零值。实际投板文件里出现大量0宽度线,板厂要么默认忽略,要么给你截图让你确认,一来一回时间就浪费了。
3. 钻孔数据与钻孔表:先钻孔后输出的组合拳
3.1 在出钻孔前先跑一次完整的DRC
很多人认为Gerber输出和DRC没什么关系,钻孔文件更不用管,直接点NC Drill就行了。但实际上,钻孔文件是用于驱动CNC钻孔机的数据,它依赖当前设计中的过孔、焊盘和元件封装信息。如果设计里有未连接的焊盘、虚设的过孔、或者间距违规,钻孔文件本身生成时通常不会报错,但板厂在扫描时会发现孔位和焊盘对不上,这时你已经被动了。
所以我每次正式出钻孔文件之前,都会先执行Display → DRC Browser或直接跑一版在线DRC,重点看以下几类错误:间距违规、孔到铜的最小距离、孔到板边的距离、盲埋孔的通路定义。尤其是盲埋孔,如果层压结构定义不全,NC Drill输出时会把盲孔当通孔处理,或者直接漏掉某一组孔,这种错误在Gerber预览时很难发现,到板厂那里就会变成整板报废。
跑完DRC再输出钻孔,最大的收益是能把“设计问题”和“输出问题”分开排查。不然到时候出了问题,你根本不知道是该改设计还是该改导出参数。
3.2 NC Drill参数设置与钻孔层选择
Allegro 17.2里的钻孔输出入口是Manufacture → NC → NC Drill,但真正决定数据格式的地方是Manufacture → NC → NC Parameters。先打开参数设置面板,把输出格式确定下来,再去执行输出,否则每次都要弹一堆确认框。
NC Parameters里需要关注的关键项主要有这几个:
- 输出类型:选择
Excellon格式。这是行业最通用的钻孔文件格式,板厂CNC设备基本都支持。还有一个Sieb & Meyer格式,比较老,除非板厂指定,否则不用考虑。 - 单位:建议和Gerber保持一致,用英制Inch。很多工厂默认使用英制解析Excellon文件,你用公制也不是不行,但务必在工艺说明里写清楚。
- 精度:选
3.5格式,和Gerber的精度设定保持一致,避免孔位坐标被四舍五入导致偏差。 - 前导零抑制:这是新手最容易懵的参数。Excellon文件通常用前导零抑制(Leading zero suppression),也就是小数点前面的零省略,比如坐标0.1250会写成.1250。也可以选后导零抑制或全保留,但只要不是板厂特殊要求,前导零抑制是绝大多数工厂的默认配置。如果你改了抑制方式,一定要在文件名的后缀或发送给板厂的邮件里标明,否则解析出来的坐标可能整体偏移10倍。
参数设置完成后,回到Manufacture → NC → NC Drill。此时会弹出选择钻孔层的对话框,如果设计中只有通孔,通常直接选择Top到Bottom即可;如果设计中有盲孔和埋孔,那就要根据层压结构分段输出多个钻孔文件,比如L1-L2一组、L2-L5一组,每组单独生成一个.tap或.drl文件。
输出目录同样可以在这里指定,我会在工程目录下建一个nc_drill文件夹,和Gerber文件分开存放。这样做的好处是压缩交付包时每个子目录意义明确,不会二十个文件堆在一个文件夹里分不清谁是谁。
3.3 钻孔表(Drill Legend)的生成方式
NC Drill生成的是数控机床用的坐标数据,人眼根本没法直接看懂。这时候就需要钻孔表,也就是Drill Legend,来把每个孔径、数量、电镀属性用表格形式呈现在PCB图上。
在Allegro 17.2中,生成钻孔表的路径是Manufacture → NC → NC Legend。点击后会弹出一个对话框,要求选择钻孔表的放置层、字体样式和输出路径。通常情况下,我会把钻孔表放在Board Geometry层或者Manufacturing层上,文字高度设置成50-60mil左右,保证打印出来后能看清。
生成后,图面上会多出一个表格,里面按照孔径从小到大排列了所有孔的尺寸、数量、公差、电镀或者非电镀属性。这个表格不是装饰品,它实际上是钻孔图例文件,和NC Drill输出的孔位坐标一一对应。板厂拿到文件后,会拿它来核对刀径表。
这里有一个非常实用的操作细节:常规设计中钻通孔的电镀孔(PTH)和非电镀孔(NPTH)最好分开表达。Allegro默认会在钻孔表里区分这两种属性,但前提是设计阶段过孔和机械孔的属性定义正确。如果所有孔都默认成PTH,而板子上其实有几个定位螺钉孔不需要电镀,板厂按你的钻孔表做出成品后,孔壁会带铜,安装时反而可能短路。所以在生成钻孔表之前,务必回去检查机械孔的Plating属性。
3.4 钻孔文件与钻孔表的配套核对
生成完NC Drill和NC Legend之后,很多人就直接打包发板了。我建议花两分钟做一个简单的配套核对,这一步能排除大量低级问题。
先把生成的nc_drill文件夹打开,结合图纸上的钻孔表,数一下孔径种类是否匹配。比如表上有10种孔径,但NC Drill生成的刀具列表只有8种,说明有两种孔没有被正确输出,大概率是钻孔层选择遗漏或孔的属性定义异常。再检查一下是否有PTH和NPTH的分离信息,部分板厂要求电镀孔和钻孔文件分成两个文件,如果你的设计里同时有这两类孔,最好提前确认对方要求。
另外,如果板子尺寸比较大,且采用了拼板设计,钻孔文件和Gerber文件中的拼板坐标必须取自同一个原点。我个人的操作是统一以单板板框左下角为原点,拼板时用Copy功能做阵列复制,而不是在CAM里重新对位。这样保证所有制造文件的坐标系完全一致,不需要额外的换算说明。
4. 生成后的验证与常见报错处理:把错误拦在交给板厂之前
4.1 用Artwork自身做一次“空跑”检查
Artwork Control Form底部的Create Artwork按钮就是实际生成Gerber的按钮,但它不只是一个“开始导出”的开关。如果你在生成前把所有底片全选,点击后Allegro会按顺序处理每一张底片,并在日志窗口输出每一层的处理信息。
很多人忽略了这个日志,认为没有红色报错就是没问题。但Allegro的警告信息有些是灰白色的,比如WARNING: Aperture undefined...这种,虽然在批量处理里不中断流程,但它明确告诉你某些图形元素缺少光圈映射,最终表现就是线宽丢失或焊盘形状不对。所以我每次批量生成后,都会把日志从头到尾翻一遍,看到WARNING就停下来定位是哪张底片、哪个元素,先把问题解决再重新生成。这个习惯帮我发现过好几次莫名其妙的细线消失问题,希望你们也能养成。
除了看日志,Artwork面板还有一项叫Artwork Check的功能,算是Allegro自带的基础验证工具。它可以检查底片定义中是否存在无效的层、短缺的光圈、无法解析的图形。把这项检查跑一遍,至少能排除掉“底片里什么都没加”这类低级错误。
4.2 第三方Gerber预览工具复核
Allegro界面上显示的是一回事,实际产生的Gerber文件长什么样又是另一回事。我强烈建议在最终交付前,用第三方CAM工具把生成的Gerber和钻孔文件打开看一眼。常用的工具包括CAM350、GerbView、以及一些在线Gerber预览网站。
我自己一般用CAM350打开,因为它加载Gerber和Excellon钻孔文件的速度快,而且能把所有层叠在一起做对位检查。重点检查以下内容:
- 板框是否完整,各层是否对齐。
- 顶层走线和顶层阻焊开窗的位置是否一致。
- 丝印是否有文字缺失或乱码。
- 钻孔文件加载后,孔位是否落在焊盘中心。
如果第三方工具打开时出现文件缺失、层加载失败、钻孔格式解析错误,说明之前的输出路径、参数设置或文件命名有问题,这时候回头排查成本还很低。等文件进了板厂生产系统再发现,来回折腾的时间就不好估算了。
4.3 常见报错与处理方法对照表
在Allegro 17.2的Gerber输出过程中,有那么几个报错和警告我几乎每次带新人时都会见到,这里直接整理成对照表,方便你遇到问题时快速定位:
| 报错/警告信息 | 常见原因 | 处理思路 |
|---|---|---|
| WARNING: Undefined line width | 设计中存在0宽度线,未定义光圈 | 检查并修改设计线宽,或设置兜底宽度 |
| WARNING: Aperture undefined | 自定义焊盘或特殊图形缺少对应光圈 | 在Aperture Wheel中补建光圈,或简化图形 |
| ERROR: No valid film selected | 未添加底片或底片未选择任何层 | 回到Films页签,重新定义底片内容 |
| Missing character / line | 丝印层有非法字符或字体缺失 | 检查元件位号字体设置,改用标准字体 |
| NC Drill parse error | 钻孔格式设置与CAM工具不匹配 | 核对前导零抑制、单位和精度设置 |
| Artwork output file exists | 同名文件已存在 | 确认覆盖或重新命名底片文件 |
对比表只是排查起点,真正动手处理时还是要回到对应面板逐项检查。遇到报错不要慌,先确认报错发生在哪一步,是Artwork阶段还是NC Drill阶段,然后按阶段去翻对应的参数设置。
4.4 交付板厂前的最小文件清单
最后一步是整理交付文件。很多小团队或独立工程师发板时只发一两个Gerber压缩包,结果板厂还要邮件来回确认很多信息。成熟的交付包至少应该包含这几类文件:
- Gerber文件:所有层的底片文件,建议放在
gerber_out文件夹里。 - 钻孔文件:NC Drill生成的Excellon文件,建议放在
nc_drill文件夹里。 - 钻孔表:NC Legend输出的图例文件,也可以直接截图或打印成PDF放进工艺说明。
- IPC-356网表:用于板厂做飞针测试的网络连接关系文件。在Allegro中通过
File → Export → IPC-356生成。 - 制造说明:一份简单的TXT或PDF,写清板材型号、板厚、铜厚、表面工艺、阻焊颜色等要求。
我个人的习惯是把这些内容全部打包成一个以“工程名_版本号_日期”命名的压缩包,压缩包内保持目录清晰。这样做的好处是,即使三个月后板厂找你说这批板子要做返单,你依然能快速定位到当初的完整制造数据和工艺要求,不会翻遍整个电脑才找到一份孤零零的Gerber文件。
在实际操作中我还发现,每次新建工程时提前把Gerber输出目录和NC Drill目录这些基础路径结构搭建好,比画完板再回头整理要省太多精力。出Gerber这件事本身并不难,真正难的是养成一套稳定、可复现、可追溯的输出习惯。当把流程内化成肌肉记忆之后,投板就会变成一件安心的事,而不是每次交付前的心理负担。