做PCB设计这几年,我吃过最亏的一次,就是因为Gerber文件少导了一层,板厂返工,我连续两晚上熬夜做重新投板说明。那次之后我才真正意识到,画板只是前半场,能把Gerber文件正确导出、让别人顺利帮你把板子做出来,才算完整闭环。今天这篇就以AD16为载体,把Gerber文件导出的全流程、常见坑和排查思路一次讲透,不搞那种“点这里再点那里”的流水账,我会把每一步背后的原因、容易踩的雷、以及板厂视角的真实需求都掰开揉碎讲清楚。
无论你是刚接触PCB设计的新手,还是从AD低版本老用户转过来,这篇文章都适合你。AD16虽然已经是几年前的版本,但国内很多公司、学校、外包项目仍然在用,而且它的Gerber导出逻辑和后续AD20、AD21、AD24一脉相承,把一份吃透,换版本也就是几分钟的适应成本。
1. 板厂眼中的Gerber:他们到底用你的文件做什么
先花点时间搞清楚一个底层问题:板厂拿到你的文件之后,是怎么把它变成一块真实PCB的?很多人导Gerber只是机械地执行操作,根本不理解自己在做什么,所以出了问题也不知道从哪查起。
1.1 一份完整制板资料包的构成
Gerber文件在行业里其实是RS-274X格式的图像文件,它描述的是每一层“长什么样”——铜层哪里有线、哪里空白,阻焊层哪里开窗、哪里覆盖,丝印层哪里有字、哪里有框。它不包含元件信息,也不包含网络连接关系,纯粹是图形。
所以一份能直接投产的资料包,至少包含下面这些内容:
- 各铜层Gerber文件:顶层、底层,如果多层板还有内层,每层一个文件。
- 阻焊层Gerber文件:Top Solder、Bottom Solder,决定哪里裸露铜箔上锡。
- 丝印层Gerber文件:Top Overlay、Bottom Overlay,印元件的位号和边框。
- 钻孔文件:NC Drill格式(也叫Excellon),告诉钻孔机每个孔的位置、孔径、是否金属化。
- 有些板厂还会要求你提供板框层、助焊层、背面丝印、开槽文件等。
这中间最容易出问题的就是“文件缺失”和“层对应错位”。我见过有人只导了铜层没导钻孔文件,也有人把顶层丝印当成了底层丝印发过去。板厂工程师看到文件后先做“读盘”检查,发现异常就会打回来,这一来一回,一天时间就没了。
1.2 为什么AD16导出的文件经常被打回
我身边用AD16的朋友,文件被打回的原因高度集中,我大致统计过,排在前几位的无非是:
- 钻孔文件没有同步生成,或者钻孔文件与Gerber文件的原点不一致,导致孔位整体偏移。
- 光圈文件没有内嵌,板厂读Gerber时找不到对应的D码表,图形错乱。
- 单位选择混乱,有人内层用毫米导出,外层用英寸导出,板厂一拼层,整块板比例全乱。
- 板框层在Gerber里重复叠加,或者根本没有板框,板厂不知道外形边界在哪里。
这些问题在导出面板里都有关联选项,但默认值不一定适合所有工厂。所以我的第一个建议是:和板厂确认他们的制板要求,最好让对方给一份“导出规范”文档,多数正规板厂都有。没有的话,就按我下面写的这套标准流程来。
2. 导Gerber之前,花十分钟做完这几项自检
很多人一上来就点File -> Fabrication Outputs -> Gerber Files,结果导出来的东西错误百出。我习惯在导出窗口打开之前,先花十分钟把工程从头到尾过一遍,这十分钟能省下后面一整天的返工时间。
2.1 从DRC报告里挑出“致命”和“可忽略”
先运行Design -> Board Check,打开DRC设置面板,选择Run Design Rule Check。AD16的DRC项目非常多,但你在投板之前真正需要关心的是下面几类:
- 安全间距类:Clearance Constraint,铜箔之间、焊盘之间是否太近。间距不足在制造端会导致腐蚀不净、短路,这是“致命”项。
- 线宽类:Width Constraint,走线宽度是否小于制造能力。一般板厂最小线宽能做到0.15mm,但最好留余量,至少0.2mm以上,除非你用的是特殊工艺。
- 钻孔尺寸类:Hole Size Constraint,孔径太小,钻头会断。机械钻孔一般要求成品孔径不小于0.2mm,激光微孔另说。
- 未连接线类:Un-Routed Net Constraint,有飞线残留。如果板子上还有飞线,导出的Gerber看上去是通的,但实际电气连接是断的,这个绝对要清零。
- 丝印重叠类:Silk To Solder Clearance等,丝印压到焊盘会导致阻焊开窗后字符残缺,虽然不影响电气性能,但会影响装配和成品美观。
跑完DRC之后,切记把报告导出来存成文件,保留记录。如果报告里出现了你确定可以忽略的项,比如某个封装自带的内底片间距告警,也要在发板邮件里注明原因,让板厂知道你有意为之,不是漏检。这个习惯在后续追溯问题时非常有用。
2.2 原点、单位与层叠设计:先统一意见,再动手导出
DRC跑完之后,下一步是确认原点、单位和层叠。
原点设置建议放在板框左下角,而且不要随手改。AD16默认的原点通常是绝对原点,但你可以在Edit -> Origin -> Set里自行设置。为什么这个重要?因为钻孔文件里的坐标也是基于同一个原点生成的。如果你画板时原点在左上角,导出Gerber时又用默认设置重新对了一次原点,层与层之间可能出现整体偏移。板厂一般会帮你自动对齐,但保险起见,所有输出文件都应该建立在同一个原点体系下。
单位这件事,我的建议是:导出时统一用英制或者统一用公制,不要在Gerber里混。AD16的Gerber Setup里General选项卡可以设置单位,常用的是Inch和Millimeter。我会把整块PCB的图纸单位固定为mm,然后Gerber导出也选Millimeter,钻孔文件同样选Millimeter。如果遇到板厂要求必须提供英制,那就全部转成英制,别混着来。
层叠设计方面,如果你用的是两层板,就是Top Layer和Bottom Layer;四层板还需要内层信号层或电源层。导出前在Layer Stack Manager里确认每一层的类型是Signal还是Plane,这会影响你该在Gerber面板勾选哪些层。内电层如果是负片设计,导出时要用负片选项,很多新手在这里栽跟头。
2.3 画布只能挪动一点点?先把板内外对象理清楚
经常有人在网上搜“为什么AD16的PCB画布只能挪动一点点”,这个问题背后大多数情况不是软件坏了,而是你的PCB文档里有大量远离板框的对象。比如你在画板过程中放置的某个过孔、一段走线或一个机械尺寸标注,被放在了离板框很远的地方。当你按V+F(适合视图)时,AD会尝试把所有内容缩进视野里,于是整板看起来特别小,拖动画布时位移幅度也显得特别小,甚至“只能挪动一点点”。
解决思路其实很直接:把板框外的散落对象清干净。操作上,我一般先按Ctrl+A全选,然后打开PCB List面板,在Filter里选择所有非板框对象,根据坐标范围把超出板框以外的一批对象删掉。如果你担心误删,可以把对象暂时移到板框内再做后续操作。
这一步不光是让画布好操作,更直接影响Gerber质量。因为板框外的零散图形一旦被导进Gerber,板厂的CAM工程师读文件时耗时会增加,甚至可能出现“加料”情况——板框外多了一条莫名其妙的走线,板厂可能会按你的图形做出来,装壳时才发现冲突。
3. AD16导出Gerber与钻孔文件的完整操作
原点和单位都确认好、DRC报告干净了,下面正式进入AD16的Gerber导出流程。我按自己日常项目的操作路径,从打开Gerber Setup面板到最终打包发走,完整过一遍。
3.1 Gerber Setup面板的逐项选择
AD16中,路径是File -> Fabrication Outputs -> Gerber Files,会弹出Gerber Setup对话框。这个对话框有多个选项卡,很多人一进去就懵,我一个个说。
General选项卡,首先确认Units为Millimeter,Format选择2:5。这里的2:5指的是坐标精确到小数点后5位,也就是0.00001mm,实际精度完全足够。如果板厂特殊要求2:4也可以用,但2:5兼容性更好一些。
Layers选项卡是核心。你需要在这里选择输出哪些层。我的选择习惯是:勾选Top Layer、Bottom Layer、Top Overlay、Bottom Overlay、Top Solder、Bottom Solder,以及板框层,一般对应Keep-Out Layer或者Mechanical 1。四层板还需要勾选对应的内层和Plane层。
这里要注意“Include unconnected mid-layer pads”这个选项,它控制是否输出孤立焊盘。如果你勾选了,那些没连线的中间层焊盘也会出现在Gerber里;不勾选,最终做出来的焊盘可能没有钻孔后的底盘。我通常保持默认或按板厂要求来,但这个选项对多层板很重要,别随手关掉。
Apertures选项卡,务必勾选Embedded apertures,也就是内嵌光圈。如果不嵌,配套的D码文件得单独发,板厂万一漏读,整个图形尺寸就乱了。选Before或Split,一般选Before就够了。
Advanced选项卡里有一些关于Plotter Type和Film Side的选项,AD16这里默认值多数情况下不用动。但有一个Special Characters选项,如果你板上有特殊字符,比如直径符号、角度符号,建议勾上,否则字符可能丢失或变成问号。
设置完成后,点OK生成Gerber文件,AD会生成一个CAM文件并自动打开,这时你可以预览各层图形。先别急着发,必须逐一检查。
3.2 NC Drill钻孔文件的一并导出
很多人以为Gerber文件里包含了钻孔信息,这是不对的。钻孔信息必须单独导出,路径是File -> Fabrication Outputs -> NC Drill Files。
在NC Drill Setup对话框中,同样确认Units为Millimeter和Format为2:5。Drill Drawing选项卡里的默认设置可以先不动,但有一点必须检查:如果你板上有非圆形孔,比如椭圆孔或方孔,一定要确认输出中包含这些非圆形孔的数据。AD16通常需要额外勾选相关选项,不同版本位置略有差异,你在Drill Drawing的Layer Pairs设置里能看到。
生成钻孔文件后,AD会生成一个.NC钻孔文件以及对应的钻孔位图文件。我建议把钻孔位图也保留下来,它能直观地展示每一个孔的位置和孔径,发板时附在压缩包里,方便板厂做参照。
还有一个细节,钻孔文件中的“Tool参数表”会列出所有孔径的钻头使用情况。我每次导出后都会打开这个文件确认一下孔径数值有没有异常,比如直径小数点错位导致孔径看起来离谱。
3.3 输出归档与命名习惯
AD导出时会按默认路径生成一堆文件,同一层的数据往往同时有.GTL、.GBL、.GTO、.GBO、.GTS、.GBS等扩展名。这些命名还算直观:T代表Top、B代表Bottom、L是铜层、O是Overlay、S是Solder。但不同软件解释不一,所以我发板前会做一次统一归档:
- 文件夹名用“项目名_版本_日期”,比如PumpCtrl_V1.2_20250116。
- 所有Gerber文件和钻孔文件放同一个目录,并附带一份ReadMe.txt说明层对应关系和相对原点信息。
- 如果压缩发邮件,一定用ZIP格式,并在邮件正文写清楚版本号、层数、板材厚度要求等。
这个习惯帮我挡掉过很多次低级失误。版本号尤其重要——同一周内你改了三次板,每次发给板厂的版本如果没区分,板厂拿错文件生产,那才是真正的灾难。我见过有人直接用默认文件名发件,最后生产出来的板子根本不是最新版,只能报废重打。
4. 导出中常见的高频坑:我替你一个个踩过了
AD16用久了,你会发现导出报错总共就那么几种。但每一种在未排查之前都很“妖”。我把遇到过的典型案例逐一写出来,并给出定位思路。
4.1 弧线变成折线、圆孔变成多边形
有次我导出一块板,板框有一个R0.5mm的圆角,结果板厂反馈说圆角变成了多边形,像是被切割过一样。问题出在Gerber精度设置上。
RS-274X格式本质上是用多条直线段逼近圆弧,坐标精度决定了圆弧被细分的程度。如果你在General选项卡里选的Format是2:3,也就是只有3位小数精度,圆弧的拟合粗糙,大弧看起来就会变成折线。我那次就是格式选成了2:3,后来改成2:5就没有问题了。
圆孔变成多边形的原因也类似,只要精度设置足够,CAM软件就能还原出光滑的圆弧。所以,一旦在你的CAM预览里发现圆弧不圆,先回Gerber Setup把Format改到2:5,重新导出。这是最简单的修复路径。
4.2 负片层与正片层的显影差异
多层板设计中,电源层和地层可以选择正片或负片。所谓负片,就是“不铜的区域被曝光,有铜的区域不曝光”。AD16中,内电层默认是负片,比如你在Layer Stack Manager里把内层类型设为Plane,默认就是Negative Plane。
导出Gerber时,如果这层用负片但导出设置却按正片输出,做出来的板子上会出现大面积“反白”现象——原本有铜的地方没铜,没铜的地方却全是铜。这个错误的排查有一定难度,光看Gerber预览不容易发现,因为小范围内图形看起来是连续的。
我的经验是:在Design -> Layer Stack Manager里看清楚每一层的Layer Type,是Signal还是Plane。如果是Plane,Gerber Setup的Layers选项卡中那一层也要对应选成Negative Plane。如果你对正负片概念还不熟悉,尽量把内层用信号层加铺铜的方式来设计,减少踩雷概率。
4.3 差分线手动布线与等长调整的实战经验
热搜词里有人问“如何在AD16软件设计的PCB中手动布差分线”,我顺便展开说一下。AD16里布差分线最顺的路径是:
- 先在Design -> Differential Pairs Editor里定义差分对,比如USB+ / USB-,并指定对应的焊盘网络。
- 然后在PCB Rules and Constraints Editor中,找到Differential Pairs Routing规则,设置这个差分对的线宽、线距,以及最小/最大耦合长度。
- 布线的操作命令是Place -> Differential Pair(或者工具栏上对应的图标),在交互式布线的状态下,走线时两对线会以等间距并行的方式一起拉出。
但如果你的版本或项目里这套交互式功能不好用,退而求其次可以手动布单端线,然后逐个调整两条线的长度差。方法是把两条线分别作为普通走线画好,然后用View -> Board Insight或者Tools -> Length Tuning工具做等长调整。
我个人还是建议优先学习交互式差分线,因为如果按普通走线画,即便长度差等长,耦合间距也很难保证,最终高速信号质量大概率不达标。等长调整有一个经验公式:1mil线长差对应约0.16ps的时延差,一般USB 2.0要求差分对内时延差不超过5ps,也就是说长度差控制在30mil以内问题不大。
5. 导完不等于完事,用CAM工具做一次反向读盘
Gerber文件导出后,很多人直接压缩发板,从未自己“读盘”验证过。这就像你写了一封邮件,不检查直接发送。正确做法是:用一个独立于AD的CAM工具打开导出的文件,从制造端视角审视一遍。
5.1 Gerbv与CAM365的预览要点
免费且好用的工具中,Gerbv是开源界的标准选择,虽然界面朴素但足够了。CAM365是商业软件,有免费查看模式,界面现代,检查多层对齐很方便。我一般用CAM365做日常检查,因为它会把所有层叠在一起显示,层间错位看得非常清楚。
检查的时候重点看以下几点:
- 板框是否完整闭合,能不能形成一个封闭区域。
- 顶层和底层铜是否都出现,阻焊开窗位置是否和焊盘吻合。
- 丝印有没有出现乱码或者重叠到焊盘上。
- 钻孔文件导入后,孔是否落在焊盘中心。特别是接插件焊盘,如果孔位偏心严重,装配时引脚会顶歪。
- 各层是否都以同一原点为基准,如果某层明显偏移,说明原点设置或输出设置有误。
记得在网上还看到有人问“ad24导出gerber文件”和“ad20导出gerber文件”,其实无论AD哪个版本,用CAM工具检查的这个环节都不能省。版本不同只是界面和菜单位置变化,验证逻辑是一样的。
5.2 在线检查工具与板厂的“最后确认”
除了本地CAM工具,现在许多板厂网站都提供在线Gerber检查服务。你把ZIP压缩包传上去,系统自动解析,能识别出是否缺层、是否缺钻孔文件、板框是否闭合等基础问题。这项服务很好用,但不能完全替代人工判断,因为在线工具对正负片逻辑、内层连接这类“语义问题”是识别不出来的。
还有一种更稳妥的确认方式:直接把做好的CAM预览截图发给你对接的板厂工程师,请对方在工程确认单上写明“已确认层数和孔径”。正式生产中,这个过程就是双方互相确认,能最大程度避免“你认为你发了什么,对方实际收到什么”的错位。
我每次发板前都会压缩包里的ReadMe写清楚:层数、板厚、铜厚、表面工艺、阻焊颜色、丝印颜色、最小线宽线距、最小孔径,以及单片或拼版数量。板厂的工程确认单会基于这些参数来下生产指令,写不全容易产生理解偏差。
6. 从AD16换到AD20/AD21/AD24,导出逻辑的变与不变
AD16作为一款经典版本,虽然功能稳定,但终究年岁不小。很多人的工作环境已经迁移到AD20、AD21甚至AD24,所以我想专门留一节来说版本升级这件事。
6.1 新版本界面变化与兼容性
AD20之后的界面整体从深色变成了更现代的浅色主题,但菜单结构没有伤筋动骨。Gerber导出路径依然是File -> Fabrication Outputs -> Gerber Files,弹出来的设置面板虽然外观微调,但核心选项卡基本一致。AD21和AD24的差异更小,基本上就是增加了一些板级仿真和3D可视化功能,对二维Gerber导出来说没有颠覆性的变化。
我个人的建议是:不要为了“追新”而追新,如果你的AD16文件只是简单的两层板,AD16导出完全够用。但如果你要处理高多层板、HDI板或对阻抗控制有严格要求的项目,新版本在层叠管理和阻抗计算上的确更智能,导出数据也更稳健。
6.2 迁移期的工作流建议
从AD16迁移到新版本,最大的痛点不是操作,而是文件兼容性和历史库。AD16的工程文件可以直接在新版本中打开,但打开后要注意检查目标文件的版层类型、规则设置有没有发生隐性变化。我遇到过AD16的四层板在AD20中打开后,内电层的Negative Plane设置被重置为正片,差点导致生产错误。
跨版本迁移时的稳妥做法是:
- 打开旧文件后,第一时间打开Layer Stack Manager核对每一层类型和厚度。
- 把DRC全部重新跑一遍,不要把旧报告里的“无误”直接带到新版。
- 核对你的输出配置文件(Output Job文件),因为不同版本的OutJob兼容性并不完美,最好按新版格式重建一份。
说到底,Gerber导出不是高深技术,真正拉开差距的是你对数据链路的理解深度。文件从PCB编辑器走到制造端,中间任何一次转译出现偏差,代价都是真金白银和交付周期。把这一套流程固化成自己的习惯,你投板前的焦虑感会少一大半。
我在实际项目中还有一个很喜欢的小技巧:发板前把Gerber压缩包解压到全新文件夹,用记事本打开其中任意一个Gerber文件,滚动到文件末尾,看是否有“END OF FILE”之类的结束标记。很多CAM工具就是靠这个标记判断文件是否完整的,如果你发现文件没有正常结束,多半是导出中途出了问题,重新导一遍再检查。这个细节比较冷门,但救过我至少两回。