从设计到制造:Altium Designer生成Gerber文件的CAM配置实战指南
你有没有遇到过这样的情况——PCB打样回来,发现焊盘被绿油盖住,引脚虚焊;或者板子外形切歪了,缺角漏铜?更离谱的是,内层电源短路,查遍原理图和布局都没问题。最后追根溯源,竟是Gerber输出设置出了岔子。
在硬件开发流程中,从Altium Designer(AD)导出Gerber文件看似只是“一键生成”的收尾动作,实则是一道必须谨慎对待的技术关卡。一个错误的极性、一次遗漏的层映射,轻则返工重做,重则耽误项目周期、烧掉整批板子。
本文不讲理论堆砌,也不复述菜单路径,而是以一名资深PCB工程师的视角,带你深入AD生成Gerber文件时的CAM设置核心逻辑,剖析那些藏在界面背后的细节陷阱,并给出可落地的实战方案。
为什么不能“点完就走”?
很多新手习惯打开File → Fabrication Outputs → Gerber & NC Drill后,一路默认下一步,最后压缩发给厂家。这种做法在简单双面板上可能侥幸过关,但在复杂多层板或高密度设计中极易翻车。
因为AD的输出向导虽然提供了“智能默认”,但它无法判断你的设计意图是否与工厂工艺匹配。比如:
- 阻焊层该用正片还是负片?
- 内电层散热焊盘有没有正确开窗?
- 板框是不是闭合路径?
- 单位格式会不会导致坐标舍入误差?
这些问题都得靠人工干预+精准配置来解决。而这一切的核心,就是CAM(Computer-Aided Manufacturing)输出设置。
CAMtastic模块:连接设计与制造的桥梁
Altium Designer内置的制造输出引擎叫CAMtastic!,它负责将你画好的PCB转换成工厂能读懂的语言——主要是Gerber和Excellon钻孔文件。
别被名字唬住,“CAMtastic”听起来像独立软件,其实它是AD内部的一个处理模块。你可以把它理解为一个“翻译官”:把EDA语言翻译成PCB厂的机器指令。
关键能力一览
| 功能 | 实际意义 |
|---|---|
| 层映射控制 | 指定每一层输出为什么类型的文件(如GTL、GBS等) |
| 单位与精度设置 | 决定坐标准确性,避免因小数截断造成偏移 |
| 极性控制 | 支持正片/负片输出,尤其影响阻焊和内电层 |
| Aperture嵌入 | 把绘图工具表写进文件,防止外部D码丢失 |
| 输出命名自定义 | 便于识别和归档,减少沟通成本 |
这些功能决定了最终交付文件的专业程度。接下来我们拆解最关键的几个环节。
Gerber格式怎么选?RS-274X是唯一选择
先明确一点:必须使用Extended Gerber RS-274X格式,绝不要用老式的RS-274D。
为什么RS-274X是标配?
早期Gerber格式(RS-274D)需要两个文件配合工作:
-.gbr主文件
- 外部.aprAperture表(定义圆形、矩形等图形尺寸)
一旦传输出错,工厂拿到的可能是“无头文件”,根本无法解析。
而RS-274X 是自包含格式,所有Aperture定义都直接嵌入文件内部,结构完整,抗干扰能力强。现在全球99%以上的PCB厂只认这个标准。
✅ 正确做法:在Gerber Setup中勾选“Embed Apertures”
❌ 错误操作:使用RS-274D或未嵌入D码
格式参数设置:别让精度毁了你的设计
在AD的Gerber输出对话框里,你会看到一个关键选项:
Format: [X] : [Y]这表示整数位:小数位的数量。常见的有:
| 设置 | 含义 | 是否推荐 |
|---|---|---|
| 2:4 | 英制,0.0001英寸精度 | 不推荐(精度低) |
| 2:5 | 英制,0.00001英寸 | 可接受 |
| 3:3 | 公制,1mm以下三位小数 | 不足 |
| 4:6 | 公制,最高支持0.000001mm | ✅ 强烈推荐 |
建议统一采用4:6+Metric单位制。原因如下:
- 公制单位(mm)计算更直观,避免英制换算带来的舍入误差;
- 4:6 提供亚微米级分辨率,满足HDI、FPC等高密度板需求;
- 国内主流厂商(嘉立创、捷配、华秋等)均推荐此配置。
同时设置Zero Suppression = Leading(前导零省略),这是行业通用惯例。
层映射:最容易出错的地方
如果说单位是基础,那层映射就是成败的关键。哪怕其他都对,只要某一层映射错了,板子照样报废。
常见层的标准命名规范
| AD中的层名 | 输出文件扩展名 | 极性 | 说明 |
|---|---|---|---|
| Top Layer | .GTL | Positive | 顶层线路 |
| Bottom Layer | .GBL | Positive | 底层线路 |
| Top Solder Mask | .GTS | Negative | 顶层阻焊,开窗即裸铜 |
| Bottom Solder Mask | .GBS | Negative | 同上 |
| Top Paste Mask | .GTP | Positive | 贴片锡膏印刷 |
| Bottom Paste Mask | .GBP | Positive | 同上 |
| Top Silkscreen | .GTO | Positive | 顶层丝印 |
| Bottom Silkscreen | .GBO | Positive | 底层丝印 |
| Mechanical 1 (Board Outline) | .GKO | N/A | 板框轮廓 |
⚠️ 注意:不同厂商可能略有差异,但以上为IPC通用标准,适用于绝大多数情况。
阻焊层为何必须设为“负片”?
这个问题困扰很多人。我们来打个比方:
想象你在做丝网印刷。你想让某些地方露出底色(比如焊盘),其余全涂满绿色油漆。那你做的模板应该是:只有焊盘位置是洞,其他全是实心。
这就是“负片”逻辑——图形以外的部分才是有效区域。
所以在Gerber中,Top Solder Mask 应设置为Negative输出。这样,文件里画出来的部分是“要盖绿油”的地方,没画出来的才是“开窗焊接区”。
如果你误设为Positive,结果就是:所有焊盘都被绿油封死,回流焊时锡膏贴不住,形成大量虚焊!
内电层处理:四层板的灵魂所在
当你做四层及以上板时,Power Plane通常会使用负片设计。这不是为了炫技,而是出于性能考虑:
- 负片可以大幅减小文件体积;
- 散热焊盘(Thermal Relief)更容易实现;
- 大面积铺铜更稳定,减少EMI。
但这也带来了新的挑战:必须确保内电层以Negative方式输出。
如何检查是否正确?
- 在AD中进入Design → Board Layers & Colors
- 确认Internal Plane层类型为“Plane”而非 “Signal”
- 在Gerber Setup中,该层应设置为:
- Map To:Plane
- Polarity:Negative
然后生成Gerber后,用查看器打开,重点观察以下几个位置:
- 过孔周围的“十字花”结构是否存在?
- 电源铜皮是否表现为“空白区域”?
- 孤岛(Isolated Copper)是否被正确隔离?
如果看到的是实心填充的大块铜皮,那很可能是正片输出,存在短路风险!
板框切割:别让外形毁了整块板
板轮廓(Board Outline)决定PCB怎么被铣出来。如果这块出问题,轻则边缘毛刺,重则缺角、变形。
推荐做法
- 使用Mechanical Layer 1绘制封闭多边形作为板框;
- 或使用Keep-Out Layer绘制封闭边界线;
- 禁止使用多个不相连的线段拼接;
- 所有顶点必须精确连接,不能有微小间隙。
然后在CAM设置中,将该层映射为.GKO文件(Gerber Keep-Out)。
💡 小技巧:可以用AD的“Report → Measure Distance”工具检查线条是否真正闭合。
有些工程师喜欢用Top Overlay画框,这是大忌!丝印层和板框毫无关系,工厂不会拿丝印当切割线。
钻孔文件也不能忽视
除了Gerber,你还得输出钻孔文件(NC Drill),通常是Excellon 格式。
关键设置包括:
- 单位:mm(与Gerber一致)
- 格式:2:5(英制)或3:5(公制),建议统一为3:5
- 启用Mirror Plated Holes(如有沉头孔需求)
- 添加G85指令标示槽孔(Slot Hole)
特别提醒:如果有盲埋孔或阶梯钻孔,务必开启Layer Pairs设置,并分层输出钻孔文件,否则工厂无法识别。
自动化配置:企业级设计规范的利器
对于团队协作或量产项目,每次手动设置容易出错。我们可以借助Altium的脚本系统实现自动化。
DelphiScript 示例:统一Gerber输出参数
// Configure_Gerber_Output.dsp procedure SetStandardGerberConfig; var Job : IPCB_FabricationOutputJob; Output : IPCB_GerberOutputFile; i : Integer; begin // 获取当前输出任务 Job := PCBServer.GetCurrentJob as IPCB_FabricationOutputJob; if Job = nil then begin ShowMessage('未找到输出任务!'); Exit; end; // 遍历所有Gerber输出项 for i := 0 to Job.OutputFileCount - 1 do begin Output := Job.GetOutputFile(i); if Supports(Output, IPCB_GerberOutputFile) then begin Output.Unit := eUnitMM; // 毫米单位 Output.Format := eFormat46; // 4:6格式 Output.ZeroSuppression := eLeadingZeroSuppression; // 前导零省略 Output.EmbedApertures := True; // 嵌入D码 Output.PolygonRepresentation := eOutlineAndHatch; // 铺铜轮廓+填充 end; end; ShowMessage('✅ Gerber输出已按标准配置完成!'); end;把这个脚本保存为.dsp文件,导入AD后可通过菜单运行,一键完成全局设置。适合纳入公司设计模板,保证输出一致性。
最后的防线:验证与打包
生成文件不是终点,验证才是。
必须执行的三步验证法
用AD内置查看器打开.gbr文件
- 查看每层是否正常显示
- 特别注意阻焊层是否有开窗使用第三方工具交叉验证(推荐GC-Prevue)
- 导入全部Gerber和钻孔文件
- 叠层比对,确认各层对齐无偏移
- 检查板框是否闭合对照清单逐项核对
- [ ] 所有信号层已输出
- [ ] 阻焊层为Negative
- [ ] 内电层为Plane + Negative
- [ ] 板框来自Mechanical 1或Keep-Out
- [ ] 钻孔文件单位一致
- [ ] 文件命名符合规范
确认无误后,再进行打包:
- 将所有
.gbr和.drl文件放入一个文件夹 - 压缩为
.zip格式 - 附带一份
README.txt,内容示例:
项目名称:IoT_Controller_V2 层数:4层 板厚:1.6mm 表面处理:ENIG 阻抗控制:否 备注:包含槽孔,请注意G85指令写在最后:专业是从细节开始的
掌握Altium Designer生成Gerber文件的全流程,不只是为了“能把文件导出来”,而是建立起一种工程思维:每一个参数背后都有其物理含义,每一次点击都关系到产品命运。
当你能在输出前自信地说:“我确认过阻焊是负片、板框已闭合、单位是4:6公制”,你就已经超越了大多数只会点“Generate”的初级设计师。
这条路没有捷径,唯有实践与反思。下次出Gerber之前,不妨停下来问自己一句:
“我真的检查清楚了吗?”
欢迎在评论区分享你踩过的坑,我们一起避雷前行。