很多人拿到一块老产品的Gerber文件,想在原来的基础上改版、修 bug、或者做参考设计提取,第一反应都是找“Gerber 转 PCB”的工具。网上能搜到一堆乱七八糟的小软件,真用起来不是报错就是层对不上,折腾半天一无所获。我自己在实际项目中处理过不少这类需求,包括帮工厂逆向修板、把客户的 Gerber 还原成 Altium 工程,踩过不少坑,也总结出了一套在工业场景下真正能落地的流程。这篇就把完整的思路、操作步骤、限制条件和替代方案一次性讲清楚。
1. 先把丑话说前面:Gerber 转 PCB 到底能做到什么程度
在动手之前,必须先把预期管理做好。Gerber 文件本质上是制造数据,它只描述了每一层“哪里有铜、哪里是空”的图形,不包含元器件、网络连接关系、原理图符号、封装库这些设计层面的信息。所以“Gerber 转PCB”这个操作,在工业界更准确的说法应该是**“将光绘文件逆向重建为可编辑的 PCB Layout 文件”**。
打个比方:Gerber 文件相当于一张打印好的照片,而 PCB 工程文件相当于这张照片的 Photoshop 源文件。从照片可以重新描出轮廓、复原颜色分布,但永远无法自动还原出“每个图层的图层结构、原始智能对象”。同样,从 Gerber 可以完美重建每一层铜箔的几何形状、焊盘的尺寸位置、钻孔的位置大小,但器件的位号、网络连线、元件属性、原理图逻辑关系这些是还原不出来的。
那这个转换还有什么价值?在实际工业场景里,它的核心价值集中在这几块:
- 改版需求:客户只提供了 Gerber,但需要在原来的板子上加一个电阻、改一条走线、调整某个焊盘尺寸,重新投板前必须有一个可编辑的 PCB 文件。
- 设计复用:手头有一块功能验证过的成熟板子,想把它的布线布局复用到新项目里,直接抄 Gerber 比照着网表重新画要快得多。
- 制造文件检查:拿到工厂返回的 Gerber,想转回 PCB 里对照原设计排查差异,确认为什么实物和设计稿对不上。
- 老产品维护:历史项目只剩光绘文件,原设计文件早就丢了,需要在新工具里维护升级。
明确了能做到什么、不能做到什么,后面选择方案、控制预期才有意义。想真正“完整恢复”一个带网络表、带原理图的设计,那是从零反向抄板的事,涉及到网表提取、逻辑推断、原理图重绘,工作量完全是另一个量级,不在这次讨论范围内。
2. 核心原理:读懂 Gerber 层的编码规则是成功的第一步
很多新手卡在“转换不了”或者“转出来乱七八糟”,根本原因不是工具不行,而是没搞懂 Gerber 的文件结构。工业场景下最常见的 Gerber 格式是 RS-274X,也就是扩展 Gerber,它把每层的光绘数据独立保存在一个文件里,扩展名可能是 .GTL、.GBL、.GTO、.GBO、.GTS、.GBS 这些,不同 EDA 软件生成的命名规则略有差异。
要把 Gerber 正确导入到 PCB 编辑器里,必须做对两件事:分清层的含义和正确匹配钻孔文件。
2.1 标准层命名对应的物理结构
以最常见的 4 层板为例,分别对应这些层文件:
| 文件扩展名 | 含义 | EDA 中对应层 |
|---|---|---|
| .GTL | Top Layer(顶层布线层) | Top Layer |
| .GBL | Bottom Layer(底层布线层) | Bottom Layer |
| .GTO | Top Overlay(顶层丝印) | Top Overlay |
| .GBO | Bottom Overlay(底层丝印) | Bottom Overlay |
| .GTS | Top Solder Mask(顶层阻焊开窗) | Top Paste(阻焊层在AD里用Paste层映射) |
| .GBS | Bottom Solder Mask(底层阻焊开窗) | Bottom Paste |
| .GTP | Top Paste(顶层锡膏层,用于SMT钢网) | Top Paste |
| .GBP | Bottom Paste(底层锡膏层) | Bottom Paste |
| .G1/.G2/.G3 | 内层信号/电源层 | Internal Plane 1/2/3 |
| .GD1/.GD2 | 内层电源/地层负片 | Internal Plane 层 |
注意,阻焊层和锡膏层的映射关系,是新手最容易搞混的。在 Altium Designer 里,Solder Mask(阻焊)和 Paste(锡膏)是两套不同的层。Gerber 里的 GTS/GBS 是阻焊开窗层,它应该被导入到 AD 的 Solder Mask 层;GTP/GBP 是锡膏层,导入到 Paste 层。如果导入错误,转出来的 PCB 在出 Gerber 时会完全对不上。
2.2 钻孔文件必须单独处理
Gerber 只是各层的二维图形,孔的信息(位置、大小、是否金属化)在钻孔文件里,通常是一个 .TXT 或 .DRL 文件,使用 Excellon 格式。这个文件也要导入,否则 PCB 上只有焊盘和走线,没有孔,等于废了。
判断钻孔文件是否金属化,需要结合孔位所在位置来判断:
- 孔的坐标落在焊盘中心,说明是元件插件的金属化孔。
- 孔的坐标在走线/铜箔区域但没有焊盘,通常也是金属化过孔。
- 孔的坐标孤零零的、不在任何铜箔图形范围内,大概率是非金属化安装孔。
这个判断在导入完成后需要结合图形人工检查一遍,工具不会替你自动区分。
2.3 关于公英制单位的坑
Gerber 文件里单位可以是英寸也可以是毫米,精度也可以不同(通常是 2:4 或 2:5 格式)。导入工具如果单位匹配错误,整体图形会缩放到 25.4 倍或 1/25.4 倍。导入前务必确认每个文件的单位设置,最简单的办法是:用记事本打开 Gerber 文件,看头部注释里的MOIN或MOMM参数,MOIN代表英寸(Inch),MOMM代表毫米(Millimeter)。如果工具支持自动识别,也要在导入后量一下已知尺寸(比如板框长度)验证一下。
3. 实操方案一:用 Altium Designer 的 CAM 编辑器完成手动静默导入(工业场景最常用)
Altium Designer 里的“Gerber 转 PCB”并不是一个一键完成的功能,而是通过 File → Import → 在导入对话框中选择 Gerber 文件,先进入 CAM 编辑器,再通过 CAM 编辑器的“转换”功能将图形复制到 PCB 编辑器中。这个流程我实测很多次,稳定可靠,适合任何层数的板子。
3.1 详细步骤
第一步,新建一个空 PCB 文件。在 AD 中新建 PCB,不需要任何板框,后面会从 Gerber 里导入全部图形,包括板框。
第二步,导入 Gerber 文件。执行File → Import → Gerber,在弹出的对话框中选中需要的 Gerber 文件(可以按住 Ctrl 多选,一次性把所有层都选上)。导入后 AD 会进入 CAM 编辑器界面,这时候所有的铜箔图形都以原始尺寸显示出来了。
第三步,检查并修正层映射。切换到 CAM 编辑器左侧的层管理面板,检查每个导入的层对应的 CAM 层名称和类型。如果 GTS 层被识别成了 Top Layer,需要在导入设置里手动修正。层映射是决定转换质量的核心环节,务必逐层确认。
第四步,执行 CAM 到 PCB 的转换。在 CAM 编辑器里执行File → Export → Export to PCB(部分版本是Tools → Convert → Export to PCB),在弹出的对话框中勾选需要转换的层,设置转换后的目标层对应关系,确认后 AD 会自动把当前打开的 PCB 编辑器切换到前台,图形就已经出现在 PCB 上了。
第五步,导入钻孔文件。回到 CAM 编辑器或直接用File → Import → Drill导入 .TXT 钻孔文件,然后同样执行导出到 PCB 的操作。如果钻孔已经在转换 Gerber 时一并导入过,则跳过此步骤。
第六步,统一设置 PCB 层叠结构。转换后打开 Design → Layer Stack Manager,确认当前是几层板。比如 4 层 Gerber + 内层 G1/G2,需要在层叠管理器里添加两个 Internal Plane 或 Signal 层,确保层数、顺序、厚度参数和原 Gerber 一致。这一步直接影响后续做阻抗计算和叠层设计,不能省略。
第七步,整理和验证。把 PCB 切换到 3D 显示模式,打开所有层,检查图形是否完整、层与层之间是否对齐(可以通过板框或孔位来验证),顺便确认器件焊盘位置是否和钻孔一致。
3.2 转换后的网络表问题
必须明确一点:通过这种方式转换出来的 PCB 文件里,没有任何网络信息。焊盘之间不会显示飞线,所有元件走线都是孤立的图形。你要在上面继续做改版设计,比如加线、加器件,新加的东西不会和原有图形自动产生电气连接规则。
如果只是在原有铜箔上删除、加宽、改走线形状,问题不大,图形层面的操作没问题;但如果要新增器件、重新布线、做 DRC 检查,就必须手动建立网络:
- 手工给焊盘分配网络:双击焊盘或走线,在属性面板里设置 Net 名称。
- 使用“智能粘贴”或“网络桥”功能:AD 有 Tools → Convert → Create Netlist From Connected Copper 这种功能可以把连续的铜箔自动识别为一个网络并命名,大幅减少手工工作量。
3.3 需要注意的全局设置
导入时有好几个坑,单独说:
- 不要勾选“导入为单一对象”,否则所有铜箔会被合并成一个超大的 Polygon,后续编辑没法操作。
- 确保导入精度设置正确,一般选择 1 mil 或 0.01 mm 就足够。
- 统一字体和线宽:丝印字符在 Gerber 里是线条矢量,导入后会变成一段段线,不再是文本对象。想要重新编辑文字,只能删除原线重打文字。
这些细节直接决定了转换出来的文件是否“可用”,而不是仅仅“能打开”。
4. 实操方案二:使用 CAM350 进行预处理后再导入(适合复杂多层板)
如果板子层数多、文件结构复杂,直接导入 AD 容易出问题,比如层乱、钻孔错位、内层负片显示异常。这种时候我一般会先用 CAM350 做一道预处理,把 Gerber 检查、修整、分层确认都做干净,再输出一个干净的 OD B++ 或重新输出的 Gerber 给 AD 导入。
4.1 CAM350 的完整检查流程
CAM350 的 File → Import → AutoImport 会自动识别所有层文件和钻孔文件,并按扩展名归类。导入后要做几个关键的检查:
- 用 Info → Report 查看每层的图形数量、范围,确认范围是否在各层间一致。
- 用 Utilities → Netlist Extract 提取网络连接关系,CAM350 可以从图形形状计算出哪些焊盘和走线是连通的,输出一个网表。这个网表虽然不包含元器件的逻辑信息,但可以作为校验依据。
- 用 Analysis → Design Rule Check 做基本的间距检查,确认原设计没有明显的安全距离违规。
4.2 负片层的特殊处理
多层板的内电层,很多设计是用负片输出的。负片的意思很反直觉:Gerber 文件里画了线的区域在成品板上反而是无铜的区域(隔离带),空白区域才是铜。直接导入到 AD 的 Positive(正片)层会导致铜箔完全反相,走线变成挖空的沟,电源平面变成一堆孤岛。
处理办法有两种:
- 在 CAM350 里做极性转换,把负片转换成实际上铜的正片图形,再输出给 AD。
- 在 AD 的层叠管理器里把对应层设置为 Negative(负片)模式,导入后 AD 按负片逻辑渲染铜箔。
实操中我建议优先用方式一,因为负片模式下的 DRC、编辑操作有很多限制,正片图形更灵活,后续改版也更顺手。
4.3 CAM350 处理完成后如何交接
处理完毕的 CAM350 可以直接 File → Export → Gerber 重新输出一套干净、标准、极性正确的 Gerber,然后回到上一节 AD 的导入流程。也可以用 CAM350 直接 File → Export → ODB++ 格式,AD 支持导入 ODB++ 文件(File → Import → ODB++),ODB++ 包含了层叠信息和钻孔信息,导入过程更自动化,出错概率更小。
ODB++ 是工业界做设计与制造数据交换的另一个通用格式,相比分散的 Gerber 文件,它把各层图、钻孔、层叠参数打包在一个目录里,结构更完整,更适合反向重建。如果客户源文件里同时有 ODB++ 和 Gerber,优先用 ODB++ 做导入会省很多事。
5. 实操方案三:用 KiCad 等免费工具实现低成本转换(适合个人与小型团队)
如果公司没有 Altium 授权,或者只在个人电脑上临时处理一次,KiCad 是完全可以胜任 Gerber 导入的工具,而且它跨平台、免费、开源,授权问题为零。
5.1 KiCad 导入 Gerber 的关键设置
KiCad 的界面里,用文件 → 打开 Gerber 文件进入 Gerber 查看器(Gerber Viewer),它可以直接打开 Gerber 并显示图形。但这个查看器只是预览,要转换成 PCB 文件,需要按下文件 → 转换为 PCB,然后指定导入到当前的 PCB 编辑器,层映射通过外观面板逐层指定。
KiCad 的 PCB 编辑器对层叠管理的逻辑和 AD 不同。在 KiCad 中要先在板框设置或层管理器里预设置好层数(比如 4 层板要启用 Layer 1、Layer 2、Layer 3、Layer 4 和对应的阻焊、丝印层),导入时再把 Gerber 一一对到正确的层。KiCad 的默认板框是在 Edge.Cuts 层,板框 Gerber 如果单独存在,一定要映射到 Edge.Cuts,否则板边框会变成走线图形,制造时无法正确铣边。
5.2 钻孔文件的导入位置
KiCad 导入钻孔文件在文件 → 打开钻孔文件,选择一个 Excellon 钻孔文件,然后同样在查看器里文件 → 转换为 PCB。KiCad 的钻孔层分为 PTH(金属化孔)和 NPTH(非金属化孔),默认会根据钻孔文件的属性自动分配,但通常一个生产用钻孔文件不会区分两类孔,导入后需要手动调整:金属化孔的焊盘会出现在铜箔层,非金属化孔的焊盘只出现在机械层和阻焊层。这个区分在 KiCad 里处理起来比 AD 稍微繁琐一点,但不影响使用。
5.3 免费工具与商业工具的最终差异
用 KiCad 转换完的 PCB 文件和 AD 转换完的在图层上是等效的,都是可用图形。差异体现在后续编辑环节:
- KiCad 支持手动修改走线、加焊盘、铺铜,但交互习惯和 AD 差异较大,老工程师不一定习惯。
- KiCad 没有类似 AD 的“从铜箔提取网络”的直接工具,需要借助插件或脚本,人工维护网络表相对吃力。
- 如果是 Gerber 里面带高精度圆弧、特殊异形焊盘,KiCad 的导入精度经过实测是可以的,只是对特殊 D 码的支持需要验证。
所以:只做改版、修线、加元件焊盘,个人用 KiCad 完全够;如果要做大规模重新布线、配合原理图同步更新,建议用 AD 或 Cadence 系列工具。
6. 从 Gerber 到可编辑 PCB 后的合理化处置与校验清单
转换不是终点,转完之后那堆没有网络、没有封装、图形堆叠的 PCB 文件,必须经过合理化处置才能真正用于后续设计。这部分很多人会忽视,结果在改版时出了一堆低级问题。
6.1 铜箔的合理性检查
导入后的走线可能是一大段零散线段拼接成的,看起来连续,实际在电气连接上并不连通(因为没网络)。要确保它们真正连通,需要:
- 使用 AD 的
Tools → Convert → Create Netlist From Connected Copper生成网络,它会根据图形空间连通性自动给连着的铜箔分配同一个网络名。 - 检查提取出的网络数量和走线数量是否合理。比如一块普通电源板,网络数几十个是正常的;如果一个网络提取出来包含了几百个形状,说明它可能是整块的 GND 或电源平面。
- 手动检查焊盘和走线的连接:Gerber 图形里焊盘和走线可能只是视觉上重叠,实际评估 EDA 是否认为它们连通,取决于铜箔层级和连接关系。转换后建议逐区域抽查局部放大,尤其关注过孔与走线、焊盘与铺铜的连接。
6.2 板框处理
Gerber 里如果包含板框(通常在最外层的 Outline 或 Board Outline 层,或者放在机械层文件里),导入后需要把它复制到 PCB 的机械层(Mechanical 1 或 Keep-Out)层,并在层叠管理器里设定为板框层。如果原 Gerber 没有单独的板框层,可以通过外形尺寸从顶层或底层的铜箔边界推断出来,手工绘制一个矩形或异形边框。
注意点:板框必须是封闭的、无重合线段、无多余小碎线,否则出 Gerber 时铣边路径会出错。建议在 PCB 编辑器里执行一次Design → Board Shape → Define from selected objects来验证板框是否可被正确识别。
6.3 DRC 基础校验
转换后的 PCB 可以跑一次基础的 DRC,检查:
- 安全间距(Clearance):铜箔之间是否满足最小间距要求。
- 孔到孔距离:过孔之间、过孔与焊盘之间是否有足够的间距。
- 最小线宽:走线线宽是否满足制造要求。
- 未连接引脚:因为网络信息缺失,此项检查实际上无意义,可以忽略或关闭。
这时候 DRC 的意义不在于检查电路逻辑,而是检查几何层面的制造可行性,属于“图纸体检”的范畴。
6.4 输出制造文件验证闭环
完成合理化处置后,强烈建议直接从这个 PCB 文件导出一次全新的 Gerber,和原始的 Gerber 做一次对比。用 CAM350 或 AD 的层比较功能,检查每个铜箔层的形状差异,差异通常会有以下几点:
- 由于网络归并和图形重建导致的微小的边界差异。
- 自动补全导致新增了一些原来没有的细碎图形。
- 板框、孔位标记等机械层图形差异。
理论上,板上铜箔的几何形状应该和原始 Gerber 高度一致,允许微小误差,但不能有整块铜皮消失或大面积形状变化。这一步做完了,才能放心把这个 PCB 文件当作基础去做后续改版。
这个验证习惯也适用于日常的 PCB 设计——任何最终发出去打样的 Gerber,都值得从工程文件重新输出一套再做镜像对比,能拦截绝大多数的制造态错误。
7. 常见问题与排查技巧实录
说几个我实际处理过程中遇过的问题,按出现频率排序,每个都附上定位思路和解决办法。
7.1 层对不齐,顶层焊盘和底层焊盘错位
这个极其常见。原因基本就是导入时单位或精度选错了,导致图形整体缩放或旋转。排查步骤:
- 先拿一块已知尺寸的丝印字符或板框长度做标尺,比如板框应该是 100mm,测出来变成 3.94inch,那就是单位错误。
- 如果缩放的倍数是 25.4,那基本就是单位识别问题,重新导入并把单位改成毫米。
- 层与层之间相对位置差了零点几毫米,一般是光绘格式的坐标精度设置不一致,比如顶层是 2:4 精度(0.01mm),底层是 2:3 精度(0.001mm),导入时精度识别有偏差。统一精度重新导入即可。
7.2 内层电源层变成一排排平行的线没有完整铜面
这是负片/正片极性搞反的典型表现。电源层负片原稿里,间隔相等的细线是隔离带,空白处才是铜皮。导入成正片后,图形显示成一堆线和空白区,完全颠倒。解决方式参照 4.2 节的处理办法,先转极性再导入。
还有另一种情况:原设计内层本来就不是完整平面,而是分割成多个电源岛的分割电源层,这时显示出来是一块块独立的铜区域,属于正常现象,不必惊慌。
7.3 钻孔文件导入后孔位和焊盘对不上
最常见原因是钻孔文件与 Gerber 文件不是同一版本。工厂发回来的 Gerber 可能包含多次改版的数据,钻孔文件更新过但光绘文件还是上一版。处理办法:
- 在 CAM350 里同时叠加显示钻孔层和铜箔层,核对偏位量。
- 如果只是整体偏位(比如全部孔偏移 0.2mm 同一方向),可以在 AD 里全选孔位整体平移修正。
- 如果是局部偏位,那就是不同版本的修改差异,需要以铜箔层为准,逐个检查核对。
7.4 导入后看到大量重复重叠的走线
这是因为原 Gerber 在导出时,同一网络被拆成了多条线段,而转换时没有做合并处理。这种不影响电气连接,但在 DRC 时会有大量冗余报错。批量处理方式:在 AD 里框选铜箔区域 → 执行Tools → Teardrops → Remove All或使用Tools → Convert → Explode Polygon to Primitives再尝试合并。更粗暴的做法是删除该区域的走线,再用铺铜或重新走线的方式重建连通性。
7.5 丝印文字无法编辑、无法修改内容
Gerber 中的文字已经变成了矢量线段,无法像文本对象那样直接修改内容。唯一的办法就是删掉原线段,用 AD 的文本工具在相应位置重新放置文字。需要注意:
- 重新放置的文字字体、线宽、高度要和原来保持一致,避免影响装配识别的视觉效果。
- 如果原文字是镜像放置在底层的,新建文本时要勾选 Mirror 选项,否则底层丝印反了。
7.6 导入 KiCad 后铺铜区域无法填充
Gerber 里的实心铜皮(比如整个 GND 层)在 KiCad 导入后可能显示为一大片轮廓线,没有实际填充。这是因为 Gerber 格式里铜皮区域是用轮廓 + 填充指令表达的,KiCad 查看器对这类填充的支持在某些版本有 bug。解决办法:
- 升级到最新版 KiCad,老版本的填充解析确实有缺陷。
- 在 AD 里用
Tools → Convert → Explode Polygon把填充区域转换为完整图形,再输出 Gerber 给 KiCad 导入。 - 或者在 KiCad 中选中这个轮廓,用
填充区域功能手动重新填充。
8. 不同 EDA 环境的选型建议与方案对比
总结了这么多,做个简单的横向对比,方便你根据实际情况选择方案。
| 方案 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| Altium Designer 直接导入 | 公司有 AD 授权、需要后续改版 | 流程统一、层映射直观、后期编辑方便 | 授权成本高、负片处理稍麻烦 |
| CAM350 预处理 → ODB++ → AD | 多层板、复杂文件、批量生产文件 | 文件质量可控、可先验证 DRC | 需要额外掌握 CAM350 操作 |
| KiCad 免费转换 | 个人、小团队、预算有限 | 免费开源、跨平台 | 网络提取能力弱、后期编辑效率偏低 |
| PADS / Allegro 方案 | 公司使用 PADS/Cadence 生态 | 与后续流程无缝衔接 | 导入逻辑更繁琐、对 Gerber D 码支持并不总是完 |
如果是做研发的公司,我建议直接上 AD 方案,一次投入换来的编辑效率是值得的;如果是偶尔外协处理,KiCad 免费流程完全够用,没必要花钱买软件。
9. 从工业角度聊聊这个流程的边界与后续扩展
需要反复强调的是,Gerber 转 PCB 这个流程再怎么优化,也恢复不了以下信息:
- 原理图逻辑关系:为什么这个电阻放在这、为什么那条走线走这个路径,只能从图形反推猜测,无法自动重建。
- 元件规格参数:焊盘画的是封装形状,但具体用的是什么型号、什么封装对应的物料,需要对照 BOM 才能确定。
- 设计规则约束:原设计设定的线宽、间距、过孔参数,只能通过测量还原,不一定能反映设计意图。
所以工业场景里,Gerber 转 PCB 只会作为一个辅助手段存在。更主流、更可靠的逆向流程其实是:Gerber → 网表提取 → 原理图识别 → 由工程师手工重建原理图和 PCB。这份工作通常由专业的 PCB 逆向公司或资深 Layout 工程师完成,耗时以人天计,和本文讲的“几小时就能转出可编辑 PCB”不在一个层次。
如果你的后续工作流只是“在原来板上改个标记、加个测试点、挪个安装孔”,本文这套流程完全够用;如果要做的是功能升级、电路重构,那更靠谱的做法是直接画新板,把原 Gerber 作为版图参考,重新布局布线,比费劲还原再改要快得多。
最后说句实在话:我处理过很多老项目的光绘归档,很多时候客户手里真的只剩一层 Gerber,原设计文件、原理图、BOM 全都找不到了。这种情况下,能把 Gerber 快速转换成可编辑 PCB 再抢救出几块改版板子,经常就能把一个停产的硬件救活。这套流程熟练以后,导入一块 4 层板加验证大概需要一小时左右,省下的时间和沟通成本非常可观。