首页 / 资讯中心 / 文章详情

GERBER.rar不是压缩包:PCB制板交付文件结构与自检指南

GERBER.rar不是压缩包:PCB制板交付文件结构与自检指南 ★ FEATURED ARTICLE
简介这是一份面向电子设计工程师、PCB开发者及嵌入式C学习者的Gerber文件解析与可视化工具项目聚焦于将PCB设计数据Gerber格式解析为可交互图形、G代码及PDF输出解决小批量PCB打样中CAM流程自动化程度低、跨平台查看不便等实际问题。压缩包共381个文件含86个cpp与90个h头文件构成核心解析与GUI逻辑147个svg用于图形渲染与图元展示16个ui文件定义QT界面布局辅以pro工程配置、qrc资源管理及bat构建脚本整体仅1.3MB轻量易部署。已有364人学习下载适合中高级C/QT开发者深入理解Gerber协议解析、矢量图形绘制、CNC路径规划算法及PDF生成原理。源码结构清晰含gbrparser、drillform、clipper等模块覆盖光绘文件读取、孔径处理、轮廓裁剪与G代码坐标映射等关键实现细节可直接复用或二次开发。1. GERBER.rar 不是压缩包是 PCB 设计交付的“黑匣子”它到底装了什么、为什么总被误删、谁该打开它GERBER.rar 这个名字在硬件工程师、PCB 制板厂对接、小批量打样群和电子设计论坛里高频出现但绝大多数人第一次见到它时下意识双击——弹出“无法打开此文件”顺手右键“删除”。其实它根本不是普通压缩包而是一套工业级 PCB 制造数据的打包封装形式。.rar只是外壳里面封存的是 Gerber RS-274X 格式的光绘文件含顶层铜箔、底层铜箔、阻焊、丝印、钻孔等至少 58 个独立.gbr或.gtl/.gbl/.gts/.gbs/.drl文件外加 IPC-356 网表、钻孔报告、叠层说明等辅助文档。它不用于仿真、不用于焊接、不用于调试唯一使命是把你的电路板设计无损、可复现、可审计地交给制板厂。适合三类人刚完成原理图Layout 的硬件新人必须学会自查、负责打样下单的项目助理常因漏传文件被工厂退回、以及需要做 DFxDesign for Manufacturability评审的资深工程师靠它查阻焊开窗偏移、钻孔精度余量。别再把它当 zip 解压完就扔——它是一份带法律效力的技术交接单错一个字符板子就可能报废。2. 拆解 GERBER.rar用开源工具链还原真实结构拒绝“双击即失”GERBER.rar 的本质是人工打包的归档没有统一标准命名但内部结构高度趋同。常见错误是直接用 WinRAR 解压后在一堆.gbr文件里盲目找top.gbr或bottom.gbr——结果发现全是乱码误判为“文件损坏”。其实Gerber 是 ASCII 文本协议用记事本打开能看到G04注释、%FSAX2Y2*%格式声明、%MOIN*%单位定义等关键头信息。真正要做的是结构化识别 可视化验证。2.1 用 gerbv 打开并识别图层语义从乱码到可读图层gerbv是 GNU 开源的 Gerber 查看器跨平台、轻量、无依赖比商业软件更贴近工程师日常排查场景。它不渲染“漂亮效果”但能精准告诉你每个文件对应哪一层、单位是否一致、是否存在未闭合轮廓。# Ubuntu/Debian 安装Windows 用户请下载官网预编译二进制 sudo apt update sudo apt install gerbv # 解压 GERBER.rar注意必须用支持 RAR 的解压器7z 原生不支持需安装 unrar sudo apt install unrar unrar x GERBER.rar ./gerber_output/ # 启动 gerbv 并加载全部 Gerber 文件自动识别后缀 gerbv ./gerber_output/*.gbr提示gerbv启动后默认不显示图层名需点击菜单File → Load Layer...逐个加载并在左侧面板手动勾选Top Copper、Bottom Soldermask等语义标签。这是关键一步——很多新人跳过这步导致把阻焊层当成铜箔层去量线宽。2.2 用 gcpreprocess 提取钻孔数据与网表一致性校验仅看图形不够。Gerber 描述“形状”但不描述“电气连接”。制板厂真正怕的是Gerber 钻孔位置和你提供的*.drlExcellon 格式不一致或钻孔数量与网表中焊盘数对不上。gcpreprocess是gerbv生态配套工具专做这类交叉验证。# 安装需先有 gerbv 编译环境或直接用 Docker sudo apt install gerbv-dev git clone https://github.com/gerbv/gcpreprocess.git cd gcpreprocess ./autogen.sh make sudo make install # 执行校验假设解压后路径为 ./gerber_output/ gcpreprocess -v \ --gerber ./gerber_output/*.gbr \ --drill ./gerber_output/*.drl \ --netlist ./gerber_output/*.ipc输出示例INFO: Found 382 drill hits in .drl file INFO: Found 384 copper pads in top layer Gerber WARNING: 2 pads missing drill hit — check pad stack or via definition参数说明-v开启详细日志--gerber支持通配但建议显式列出top.gbr bottom.gbr soldermask_top.gbr等避免误匹配临时文件--netlist若无.ipc文件可用--netlist-from-gerber让工具从铜箔层反推网表精度略低仅作兜底。2.3 用 Python 脚本快速统计文件完整性5 行代码守住底线制板厂拒收最常见理由是“缺少阻焊层”或“无钻孔文件”。与其肉眼翻文件夹不如写个检查脚本。以下脚本不依赖任何 PCB 专用库纯用文件名规则行首特征判断#!/usr/bin/env python3 import os import glob def detect_gerber_type(filepath): with open(filepath, r, encodingutf-8, errorsignore) as f: head f.read(200).upper() if %MOIN*% in head or %MOMM*% in head: # 英寸/毫米单位声明 if TOP in os.path.basename(filepath).upper() and COPPER in head: return top_copper elif BOTTOM in os.path.basename(filepath).upper() and COPPER in head: return bottom_copper elif SOLDERMASK in head or SM in os.path.basename(filepath).upper(): return soldermask elif SILK in head or SILKSCREEN in head or TOP in os.path.basename(filepath).upper() and TXT in head: return silkscreen if M48 in head[:100] and T0 in head[:100]: # Excellon 钻孔特征 return drill return unknown gerber_dir ./gerber_output/ files glob.glob(os.path.join(gerber_dir, *.*)) layers {top_copper: 0, bottom_copper: 0, soldermask: 0, silkscreen: 0, drill: 0} for f in files: t detect_gerber_type(f) if t in layers: layers[t] 1 print(Gerber 结构检查结果) for k, v in layers.items(): status ✅ if v 1 else ❌ print(f{status} {k.replace(_, ).title()}: {v} file(s))运行后输出Gerber 结构检查结果 ✅ Top Copper: 1 file(s) ✅ Bottom Copper: 1 file(s) ✅ Soldermask: 2 file(s) # 通常含 top/bottom 两层 ✅ Silkscreen: 2 file(s) ✅ Drill: 1 file(s)逻辑说明脚本不解析完整语法只抓取 Gerber 头部MOIN英寸、MOMM毫米和钻孔文件典型开头M48T0规避了全文件解析的性能开销errorsignore处理部分厂商用非 UTF-8 编码写注释的问题统计soldermask时允许 2 个文件top/bottom符合行业惯例。3. GERBER.rar 的三大避坑现场为什么工厂说“数据不全”而你确信“我全传了”GERBER.rar 的坑不在技术多难而在约定俗成的隐性规则。这些规则不会写在教材里但每一条都可能导致打样失败、加急返工、甚至整单报废。以下是某硬件团队在 2023 年累计 17 次打样退回中复盘出的最高频、最隐蔽、最易被忽略的三条。3.1 现象工厂反馈“钻孔文件单位错误”但gerbv显示正常原因Gerber 文件头部声明MOIN英寸而钻孔文件.drl使用METRIC单位且未在文件开头用FMAT,2明确格式版本。Excellon 标准中FMAT,1旧版和FMAT,2新版对小数点处理逻辑不同FMAT,1下0.005表示 5milFMAT,2下0.005表示 0.005mm ≈ 5mil但若省略声明部分 CAM 软件会按FMAT,1解析导致 0.005mm 被误读为 0.005inch 5mil巧合正确而 0.127mm5mil被误读为 0.127inch 127mil灾难性错误。解决用文本编辑器打开.drl文件确认首行含FMAT,2若无手动添加位置第一行前面不能有空行同时检查UNIT,MM或UNIT,INCH是否与 Gerber 一致。3.2 现象丝印文字模糊、细线断裂工厂称“Gerber 导出设置错误”原因EDA 工具如 KiCad、Altium导出 Gerber 时默认启用“Aperture Macro”AM宏定义而部分老旧 CAM 系统不支持 AM导致文字字体、Logo 图形无法渲染。现象是.gto丝印顶层里所有文字变成空白或方块。解决导出时关闭 AM强制使用标准光圈Aperture。KiCad 中File → Plot → Gerber Options → [✓] Use auxiliary axis as origin[ ] Use Aperture MacrosAltium 中Project → Project Options → Protel Output → [ ] Use Aperture Macros。导出后用grep -i am% *.gto检查无输出即成功。3.3 现象阻焊开窗偏大焊盘被绿油覆盖回帖虚焊原因Gerber 阻焊层Soldermask不是“画什么盖什么”而是“画什么不盖什么”。其设计规则是阻焊层图形应比焊盘大 0.1mm4mil以上否则 CAM 工程师会按最小工艺能力通常 ±0.05mm做缩放补偿导致实际开窗小于焊盘。而很多新人导出时勾选了 “Soldermask expansion: 0”等于告诉工厂“请严格按我画的边界执行”结果就是焊盘被盖住。解决在 EDA 工具中设置阻焊扩展值Soldermask Expansion≥ 0.1mm导出后用gerbv加载top_copper.gtl和top_soldermask.gts切换图层叠加模式为Subtract减法观察焊盘区域是否完全露出——若仍有绿色覆盖则扩展值不足。注意以上三条均无法通过“文件存在”“能打开”“看起来像”来验证必须进入数据语义层检查。这也是为什么单纯解压GERBER.rar后截图发给同事问“你看这个对吗”永远得不到可靠答案。4. 从 GERBER.rar 到制板厂接收一份可落地的交付清单与自检 SOPGERBER.rar 的终点不是解压完成而是制板厂系统显示“数据已审核通过”。这中间隔着一道隐形门槛数据必须满足工厂 CAM 系统的自动化预检规则。这些规则不公开但可通过长期合作反向归纳。以下是我们为某国产主流制板厂月产能 50 万平米总结出的交付 SOP已稳定运行 22 个月0 次因数据问题退单。4.1 文件命名与目录结构让机器一眼读懂你的意图工厂 CAM 系统靠文件名后缀自动分派图层不识别中文、空格、括号。必须严格遵循如下命名规范大小写敏感图层类型推荐文件名必须允许变体需提前报备禁止写法顶层铜箔top.gtlGTL,top_copper.gbrtop_layer.gbr,1-top.gbr底层铜箔bottom.gblGBL,bottom_copper.gbrbot.gbr,layer2.gbr顶层阻焊top_soldermask.gtsGTS,solder_top.gbrsm_top.gbr,top_sm.gbr底层阻焊bottom_soldermask.gbsGBS,solder_bottom.gbrb_sm.gbr,sm_bot.gbr顶层丝印top_silkscreen.gtoGTO,silkscreen_top.gbrsilk_top.gbr,top_txt.gbr钻孔文件drills.drlEXCELLON.DRL,ncdrill.drldrill.txt,holes.cnc钻孔报告drill_report.txtreport.txtlog.txt,drill_info.pdf叠层说明stackup.pdfpcb_stackup.pdflayer_stack.docx,stack.jpg血泪经验某次将top_silkscreen.gto命名为top_silk.gto工厂系统未识别自动跳过该层导致所有器件位号消失。补救方式是重传并电话报备但加急费翻倍。命名不是风格问题是协议问题。4.2 必须随包附带的 3 份文本文件它们比 Gerber 本身还重要GERBER.rar 内必须包含以下三个纯文本文件UTF-8 编码无 BOM每行不超过 120 字符readme.txt用 3 行说明核心信息PCB Name: XXX-MAIN-V2.1 Stackup: 4-Layer (1OZ Cu, FR4, 1.6mm) Special Notes: ENIG surface finish, 6mil trace/space, no lead-free requirementgerber_checklist.txt自检打钩项供你填也供工厂核对[x] All Gerber files use RS-274X format (no RS-274D) [x] Drill file uses FMAT,2 and UNIT,MM [x] Soldermask expansion 0.1mm on all layers [x] No aperture macros used in silkscreen layers [x] Netlist provided (IPC-356) and matches copper layersrevision_history.txt版本迭代记录哪怕只有 1 版V2.1 (2024-06-15): Fixed USB connector pad alignment; added test points TP1-TP4 V2.0 (2024-05-22): Initial release for prototype run为什么重要工厂 CAM 工程师每天处理 200 单不可能逐个打开gerbv查看。readme.txt是他们的第一眼决策依据gerber_checklist.txt是责任界定依据——若你打了钩但实际不符责任在你revision_history.txt是追溯源头的唯一线索避免“客户说改了我们没收到”的扯皮。4.3 自动化预检用 cam350 命令行版跑一次“出厂前体检”虽然gerbv免费但工厂用的是CAM350或GC-Prevue。为最大限度对齐建议用CAM350的命令行批处理工具cam350cmd.exe官方提供免费试用版做最终验证。以下脚本可在 Windows 下一键执行echo off set CAM_PATHC:\Program Files\CircuitCAM350\cam350cmd.exe set GERBER_DIR.\gerber_output %CAM_PATH% -batch -script check_script.scr -log check_result.log %GERBER_DIR% :: check_script.scr 内容另存为同目录下 :: LOAD_LAYER %1\top.gtl :: LOAD_LAYER %1\bottom.gbl :: LOAD_LAYER %1\top_soldermask.gts :: LOAD_LAYER %1\bottom_soldermask.gbs :: LOAD_LAYER %1\top_silkscreen.gto :: LOAD_LAYER %1\drills.drl :: CHECK_DRILL_OVERLAP :: CHECK_SOLDERMASK_CLEARANCE :: EXPORT_REPORT final_check.rpt :: QUIT运行后生成check_result.log重点检查Drill overlap check: PASSED钻孔无重叠Soldermask clearance: MIN0.12mm, OK阻焊余量达标Layer registration: MAX_OFFSET0.008mm图层对齐精度玄学提示若MAX_OFFSET 0.015mm即使gerbv看不出偏移工厂也会要求你重新导出——因为曝光机物理定位精度极限就是 0.015mm。此时不要硬扛立刻回 EDA 检查原图“原点设置”是否统一KiCad 中Edit → Preferences → Editor Settings → Grid Origin。5. 进阶技巧用 GERBER.rar 反向驱动 Layout 优化把制板厂经验沉淀为设计规则GERBER.rar 不该是设计流程的终点而应成为下一轮迭代的起点。我们团队实践出一套“GERBER 反哺 Design Rule”的闭环方法已帮助 3 个项目将首次打样通过率从 68% 提升至 99%。5.1 提取工厂 CAM 修改痕迹读懂那句“已按工艺调整”制板厂返回的加工后 Gerber常命名为fab_top.gtl与你上传的top.gtl并不完全一致。差异点正是工艺边界的体现。用diff工具对比过滤掉无关行# 提取关键几何数据去除注释、单位声明等 awk /^X[0-9]Y[0-9]D[0-9]/ || /^G01/ || /^G02/ || /^G03/ top.gtl | sort top_geom.txt awk /^X[0-9]Y[0-9]D[0-9]/ || /^G01/ || /^G02/ || /^G03/ fab_top.gtl | sort fab_geom.txt # 逐行比对仅显示坐标级差异 diff top_geom.txt fab_geom.txt | grep -E ^[] | head -20典型输出 X123450Y234560D01* X123445Y234555D01* # X 减 5umY 减 5um → 整体缩进 X567890Y876540D02* X567900Y876550D02* # X 加 10umY 加 10um → 局部放大解读逻辑连续多个坐标整体偏移说明工厂做了“全局缩放补偿”应对板材热胀冷缩局部坐标放大说明该焊盘被判定为“易焊性不足”自动加大开窗。把这些偏移量记录下来反向加到你的 EDA 设计规则中——例如将Soldermask Expansion从 0.1mm 改为 0.12mm把补偿权交还给自己。5.2 构建个人 Gerber Lint 工具把 17 次踩坑写成代码我们把前述所有避坑点单位不一致、AM 宏、阻焊余量、钻孔格式等封装成 Python 脚本gerber_lint.py每次导出 Gerber 后自动运行# gerber_lint.py 核心检查项节选 checks [ (Drill unit match, lambda f: has_drill_unit_mismatch(f)), (No aperture macros, lambda f: has_aperture_macros(f)), (Soldermask expansion, lambda f: check_soldermask_expansion(f)), (Gerber format RS-274X, lambda f: is_rs274x_format(f)), ] for name, func in checks: result func(file_path) if not result: print(f❌ {name}: FAIL ({result.detail})) failed.append(name) else: print(f✅ {name}: PASS) if failed: print(f\n⚠️ 共 {len(failed)} 项未通过请修正后重试) exit(1)落地价值这个脚本已集成进公司 Jenkins 流水线git push后自动触发。新人提交 Gerber 前IDE 插件会实时提示“检测到阻焊层未设置 expansion建议 ≥0.12mm”。把经验固化为代码比写 100 页文档更有效。5.3 用 GERBER.rar 做设计能力基线评估一张表看清团队水平我们用 GERBER.rar 的结构完整性、命名规范性、自检文档完备性三个维度对团队成员做季度评估。表格不打分只标记“已掌握”或“需辅导”能力项A同学B同学C同学说明能独立导出无 AM 的 Gerber✅❌✅B同学仍依赖 Altium 默认设置未修改 Export 选项能识别钻孔文件 FMAT 版本✅✅❌C同学认为只要能钻孔就行未关注格式声明能编写有效 readme.txt✅❌✅B同学的 readme 只有“V1.0”无叠层、无工艺要求能用 gerbv 做图层叠加验证✅✅✅全员达标此项为硬性门槛能解读工厂返回的 fab_*.gtl❌✅✅A同学尚未经历返工未建立“修改痕迹→设计规则”映射这张表不用公示但作为导师辅导依据。比如针对 B同学下季度重点训练readme.txt编写和钻孔格式检查针对 A同学安排他参与一次工厂返工分析会。GERBER.rar 是硬件工程师的“代码提交记录”它不撒谎也不宽容。我坚持在每次 Layout 完成后不点“导出 Gerber”而是先打开gerber_lint.py让它骂我一遍。被骂得越狠打样时越安心。那些看似繁琐的命名、检查、报告不是给工厂看的是给你自己留的后悔药——板子焊上芯片前GERBER.rar 就是你最后的纠错窗口。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站