从设计到制造:Allegro导出Gerber文件的实战全解析
你有没有遇到过这样的情况?PCB板明明在Allegro里看得很完美,走线干净、铺铜均匀、丝印清晰,结果打样回来却发现焊盘被阻焊盖住了,或者底层丝印反了,甚至内层电源短路——而工厂说:“我们是按你给的Gerber做的。”
问题出在哪?
往往就出在“导出Gerber”这一步。
别小看这个看似简单的收尾操作。它不是点几下鼠标就完事的任务,而是决定你的设计能否准确无损地转化为物理电路的关键环节。特别是在高密度、多层、高速信号的设计中,一个参数设置错误,轻则贴片失败,重则整板报废。
今天我们就来彻底拆解Cadence Allegro如何正确导出Gerber文件,不讲虚的,只讲工程师真正需要知道的实战细节。
Gerber到底是什么?为什么这么重要?
在进入操作前,先搞清楚一件事:Gerber不是一种“格式”,而是一套制造语言。
你现在看到的PCB图,是Allegro内部的数据结构。但PCB厂的CAM系统看不懂.brd文件。你需要把每一层的图形信息翻译成它们能理解的“图纸”——这就是Gerber(RS-274X)的作用。
简单来说:
- 每一层铜箔 → 一个.gbr文件
- 阻焊开窗 → 一个.gbr
- 丝印文字 → 一个.gbr
- 钻孔指令 → 一个.drl(Excellon格式)
这些文件打包发给工厂,他们用CAM软件打开后,就能还原出你要做的板子。
所以,你导出的Gerber,就是你在对工厂说:“照这个做。”
如果你说得不清楚、有歧义,做出来的自然不是你想要的。
出错重灾区:90%的问题都源于这几个地方
在我参与过的几十次打样中,发现绝大多数生产问题都可以追溯到Gerber输出阶段。最常见的坑有:
- 阻焊层没开窗或开窗过大→ 贴片时锡膏连在一起
- 负片层没设Negative模式→ 内电层大面积缺失,导致短路
- 底层丝印没镜像→ 印出来是反的,根本看不清
- 钻孔原点和Gerber不一致→ 孔偏移,器件装不上
- 缺少Aperture表→ 工厂打开后全是乱码线条
这些问题听起来低级,但在高压赶进度时,很容易踩坑。
那怎么才能一次做对?我们一步步来看。
实战全流程:手把手教你用Allegro导出标准Gerber
第一步:准备就绪,锁定设计
在动Artwork之前,请确保:
- 所有DRC已清空
- 版本已冻结(建议另存为_REVx_FINAL.brd)
- 叠层结构确认无误(尤其是内电层分配)
这是底线。不要一边改布局一边导出,否则你会分不清哪个文件对应哪个版本。
第二步:进入 Artwork Control Form
路径:Manufacture → Artwork
你会看到一个叫Artwork Control Form的窗口。这是整个Gerber输出的核心控制台。
创建 Film Group(输出层组)
点击Add添加新的Film,每个Film代表你要输出的一层图像。
命名建议直观明确,比如:
-TOP_COPPER
-BOT_SOLDERMASK
-INNER4_GND_NEG
这样别人一看就知道是什么。
小技巧:可以按“Top / Bottom / Inner / Mask”分类建立多个Group,便于管理。
第三步:统一全局参数(关键!)
点击Parameters...设置通用选项,这决定了所有Gerber的基本属性。
务必设置如下:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Device Type | GERBER_RS274X | 必须选这个,支持嵌入光圈 |
| Format | 2:6 | 整数2位,小数6位,精度足够 |
| Units | Inches | 国内大多数工厂默认用inch |
| Offset | 0,0(Absolute) | 原点取板框左下角,与钻孔一致 |
| Leading/Trailing Zeros | Suppress Leading | 更简洁,避免兼容性问题 |
✅重点勾选:
👉Embedded Apertures (Flash Only)—— 把光圈表直接写进Gerber,防止.aperture文件丢失!
如果不勾这项,生成的Gerber可能无法独立打开,工厂还得问你要配套文件,耽误时间。
第四步:逐层添加Layer映射(最容易错的地方)
选择某个Film后,点击Add Layers,开始关联实际设计层。
以下是常见映射关系(请根据你的叠层调整):
| 输出层 | Allegro中的层名 | 注意事项 |
|---|---|---|
| TOP Copper | Etch.Top | 正常输出 |
| BOTTOM Copper | Etch.Bottom | 正常输出 |
| TOP Soldermask | Package Geometry/Soldermask_Top | 确保测试点、连接器引脚避让 |
| BOTTOM Soldermask | Package Geometry/Soldermask_Bot | 同上 |
| TOP Silkscreen | Package Geometry/Silkscreen_Top | 移除调试标记等非必要内容 |
| BOTTOM Silkscreen | Package Geometry/Silkscreen_Bot | ⚠️ 必须启用Mirror! |
| TOP Paste Mask | Package Geometry/PasteMask_Top | SMT钢网用 |
| INNER4 (GND) | Etch.Inner4 | ⚠️ 若为负片,必须勾选Negative |
🔥 特别提醒:对于内电层(如GND、VCC),如果使用的是负片设计(即整层是铜,挖空表示隔离),一定要在Film设置中勾选
Negative!
否则Allegro会当成正片处理,导致输出的是“孤立焊盘”而不是“保留区域”,最终造成大面积断路或短路。
验证方法:导出后用GC-Prevue查看,正常的负片应显示为连续铜皮,只有过孔和散热焊盘处有圆形开窗。
第五步:特殊选项配置
在Options标签页中,启用以下关键功能:
- ✅Include non-plated holes:包含非金属化孔信息
- ✅Generate step and repeat array:如有拼板,需展开阵列
- ✅Mirror plot:仅用于Bottom Silkscreen,实现镜像输出
- ✅Transform/Text:允许文本旋转与缩放
底层丝印为什么要镜像?因为它是印在板子底面的,当你把板子正面朝上放置时,底部的文字是从背面透过来看的,所以必须反着印。
别忘了钻孔文件:NC Drill怎么导?
路径:Manufacture → NC → NC Parameters
这里要和Gerber保持一致!
设置要点:
Output Unit: Inches Number Format: 2:5 (建议不低于2:5) Tool Origin: 与Gerber相同(通常是设计原点) Route Path: 指定输出目录 File Type: Excellon点击Create生成.drl文件,同时会输出.tool记录刀具列表。
✅强烈建议勾选:Generate NCDRILL_LEGEND.DRL—— 自动生成钻孔图说明文件,标注每种孔径的数量和用途,方便工厂核对。
💡 经验之谈:很多工厂反馈“孔太多分不清”,加个Legend图能极大提升沟通效率。
高阶玩法:Tcl脚本自动化批量导出
如果你经常做类似项目,手动点几十次很累。可以用Tcl脚本实现一键导出。
以下是一个实用的脚本模板:
# allegro_gerber_export.tcl set design_name "smart_gateway" set output_dir "D:/output/gerber_${design_name}_rev1.2" # 创建目录 if {![file isdirectory $output_dir]} { exec mkdir $output_dir } # 设置全局参数 allegro::artwork set device GERBER_RS274X allegro::artwork set format 2:6 allegro::artwork set units inches allegro::artwork set offset 0 0 allegro::artwork set embedded_apertures 1 # 定义层映射表 set layer_map [list \ "TOP_COPPER" "Etch.Top" \ "BOT_COPPER" "Etch.Bottom" \ "L3_SIGNAL" "Etch.Inner3" \ "L4_POWER_NEG" "Etch.Inner4" \ "TOP_SOLDERMASK" "Soldermask_Top" \ "BOT_SOLDERMASK" "Soldermask_Bot" \ "TOP_SILK" "Silkscreen_Top" \ "BOT_SILK" "Silkscreen_Bot" \ "TOP_PASTE" "PasteMask_Top" \ ] # 循环创建并导出 foreach {film layers} $layer_map { allegro::artwork create_film $film allegro::artwork add_layer $film $layers # 对负片单独处理 if {[string match "*NEG*" $film]} { allegro::artwork set_negative $film 1 } # 对底层丝印镜像 if {[string match "BOT_*" $film] && [string match "*SILK*" $film]} { allegro::artwork set_mirror $film 1 } allegro::artwork write_film $film "$output_dir/${design_name}_${film}.gbr" } puts "✅ All Gerber files exported to: $output_dir"📌 使用方式:
1. 将脚本保存为.tcl文件
2. 在Allegro命令行输入:source D:/path/to/allegro_gerber_export.tcl
3. 自动执行导出
⚠️ 提示:脚本不能替代人工检查!仍需后续用CAM工具验证。
导出之后做什么?三步验证法保万无一失
文件导出来了,不代表万事大吉。接下来才是最关键的一步:验证。
推荐流程:
1. 用 GC-Prevue 或 CAM350 打开检查
免费工具推荐: GC-Prevue (功能强大,支持主流格式)
检查项:
- 各层是否齐全?
- 叠层对齐是否准确?(特别是机械孔定位)
- 阻焊开窗是否与焊盘匹配?(不能太大也不能太小)
- 文字方向是否正确?(Bottom层是否已镜像)
- 负片层是否有异常空洞?
2. 检查钻孔文件与Gerber原点是否一致
在GC-Prevue中同时加载.gbr和.drl,查看孔位是否精准落在焊盘中心。如果有偏移,回去检查Offset设置。
3. 生成README说明文档
打包前写个简单的README.txt,包含:
- 项目名称、版本号
- 板子尺寸、层数
- 表面工艺(喷锡/沉金/OSP)
- 是否有盲埋孔
- 特殊要求(如阻抗控制、压接孔等)
这不仅帮工厂快速理解需求,也为你自己留下可追溯记录。
典型问题速查表(收藏备用)
| 现象 | 原因 | 解决方案 |
|---|---|---|
| 阻焊盖住焊盘 | Soldermask Expansion 设太小或负值 | 在Allegro中适当增加扩张值(通常+0.1mm) |
| 内层大面积断路 | 内电层未设Negative模式 | 回到Artwork,勾选Negative |
| 底层丝印反向模糊 | 未启用Mirror Plot | 在Bottom Silk Film中开启Mirror |
| 钻孔整体偏移 | Gerber与NC Drill原点不同 | 统一设置Offset为同一坐标 |
| 文件打不开提示缺Aperture | 未嵌入光圈表 | 勾选Embedded Apertures或补传.aperture文件 |
| 钢网漏印QFN中心焊盘 | Paste Mask未包含Thermal Pad | 检查封装定义,确保Paste层有对应区域 |
成熟团队都在用的最佳实践
建立标准化输出模板
- 保存一套经过验证的.artwork配置文件
- 新项目直接导入,减少重复劳动双人交叉审核机制
- A导出 → B用独立电脑+CAM工具复核
- 发现问题当场修正,避免后期扯皮版本命名规范化
ProjectX_REV1.2_20250405_Gerber.zip支持DFM闭环优化
- 收集工厂返回的比对报告
- 分析常见偏差,反哺设计规范(如统一阻焊扩张值)关键项目做预审
- 对于航天、医疗、车载类高可靠产品
- 提交Gerber前邀请PCB厂进行线上联合评审
写在最后:从“能用”到“专业”的距离
掌握Allegro导出Gerber文件的细节,表面上看只是完成了一个流程节点,实际上反映的是一个硬件工程师的职业素养。
真正的高手,不只是会画板子,更懂得如何让设计安全落地。
当你能把每一个Gerber都做到“零返工”,当你交给工厂的资料能让对方说“这份很规范”,你就已经超越了大多数人。
这条路没有捷径,唯有在一次次打样中积累经验,在一个个坑里学会敬畏细节。
如果你正在准备第一次量产,不妨花半小时认真走一遍上面的流程。也许就是这一点点坚持,帮你省下了几千块的打样费,和整整一周的时间成本。
如果你有更好的做法或踩过的坑,欢迎在评论区分享交流。我们一起把硬件这条路走得更稳一点。