ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GerberView投板前Gerber与钻孔文件逐层复核指南

GerberView投板前Gerber与钻孔文件逐层复核指南

简介:面向 Ubuntu/Linux 桌面环境、需要快速查看 Gerber 文件的 PCB 设计工程师与硬件学习者,这套开源工具提供轻量的本地预览方案,可减少对商业 CAM 软件或在线转换服务的依赖,适合检查光绘层、核对板框与阻焊/丝印等输出。压缩包共 7 个文件,主体为 3 个 .so 动态库,并配有可执行主程序、Shell 启动脚本及辅助数据/配置文件,整体约 1015KB,体积小巧,便于在实验机或开发环境中试用。目前已有 637 人学习下载,在 Linux 下查看 Gerber 的场景中具备一定参考价值。借助动态库与脚本的组合,读者可了解该开源查看器的模块划分与运行依赖,也可把它作为二次开发、集成到自有 PCB 工具链或排错分析的起点;对于想在 Ubuntu 上完成 Gerber 预览与文件完整性检查的读者,这份资源兼具直接使用与学习借鉴意义。

1. 先把 Gerber 当制造数据看:GerberView 能替你省掉哪几次返工

GerberView 这个开源软件,解决的是投板前把 Gerber 和钻孔文件看穿:层有没有少、孔有没有偏、阻焊开窗有没有连,而不是替代画板工具。它适合硬件工程师、PCB 审核人员、打样前做最后确认的开发者,也适合想读源码理解 Gerber 渲染逻辑的人。Gerber 文件一旦带着单位、层映射或极性错误进工厂,后面再解释都晚了;先用它把制造数据逐层过一遍,往往比在群里发截图靠谱。

2. 让 GerberView 正确读图:RS-274X、钻孔文件和层映射

GerberView 打开的是制造文件,不是工程源文件。很多“打开不对”的问题,根子不在查看器,而在输入端:单位是 mil 还是 mm、坐标格式有没有前导零省略、阻焊层是正像还是负像、钻孔文件跟铜层是不是同一个原点。先把这些看懂,再谈颜色和测量,顺序不能反。

2.1 Gerber 文件不是一张图片

RS-274X 是一套带坐标、光圈、极性和属性的矢量描述。查看器要做的是解析它,而不是像看图那样直接缩放。常见的翻车是:文件明明有几十 KB,打开却一片空白,或者整板缩成一个小点,这时候先别怀疑 GerberView 的渲染,先看文件头和状态栏。

字段/指令含义读错后的表现
MOMM/MOIN单位是毫米还是英寸整板尺寸出现 25.4 倍偏差
FSLAX36Y36坐标格式、整数/小数位、前导零策略图形挤在原点附近或跑出视野
AD光圈定义,决定线宽和焊盘尺寸线宽异常、焊盘忽大忽小
LPD/LPC正极性/负极性绘制该挖的铜没挖,或铜面被掏空
TF.FileFunctionX2 属性里的层功能层映射只能靠文件名猜

我一般会先只开外形层,再一层一层加。外形能闭合,说明坐标和单位大概率没大问题;外形都不对,先回头查文件头,不要在视图里硬拖硬缩放。GerberView 这类开源查看器通常会把单位、坐标范围、层名放在状态区或层控制面板里,先把这些读数看一遍,比反复点“适应窗口”有效。

2.2 钻孔文件与层映射:最容易把孔画错的地方

钻孔文件常见的是 Excellon 格式,里面会定义刀具号、孔径、孔位,有的还带槽孔和镀通孔/非镀通孔区分。它和铜层不是同一套文件,原点也可能不同。实际项目里,铜层看起来没问题、一上钻孔就整体偏 2.54 mm 的情况并不少见,原因往往是钻孔文件用了另一个原点,或者导出时镜像了 Y 轴。

先做一次文件粗分类,不要只看扩展名。很多包里的.gbr、.ger、.drl、.xln混在一起,扩展名只能当线索,不能当结论。

# 只看文件名,先做一次粗分类;gerber 是习惯目录名,按实际路径替换 find gerber -maxdepth 1 -type f -printf '%f\n' | sort

-maxdepth 1避免把备份目录里的旧文件一起列出来,-printf '%f\n'只打印文件名。分类之后,再抽几个文件看头部,比逐个双击靠谱。

# 文件头比扩展名可靠:先看前 8 行,找单位、层属性和刀具定义 for f in gerber/*; do echo "===== $f" head -n 8 "$f" done

head -n 8不用看完整文件,通常足够看到%TF.FileFunction、MOMM、MOIN,或者 Excellon 的M48、METRIC、T1C...。如果文件名带top、bottom,但文件头写的是Legend,那就以文件头为准;如果文件头也没有属性,就用外形、基准孔和已知器件间距做交叉确认。

业务层常见文件特征必须核对
板框/外形Profile、Outline、Edge是否闭合、原点是否统一
顶层铜Copper,L1,Top极性、线宽、是否镜像
底层铜Copper,L2,Bot从顶面看是否镜像正确
阻焊层Soldermask,Top/Bot正负像、开窗是否连片
丝印层Legend,Top/Bot是否压到焊盘或开窗
钻孔M48、T01C...单位、PTH/NPTH、原点

层映射这一步,我的习惯是先定一张“层清单”:外形、顶层铜、底层铜、顶层阻焊、底层阻焊、顶层丝印、底层丝印、钻孔,少一层都要写清楚原因。不要一边看一边猜,猜到最后往往会漏掉非镀通孔或槽孔。

2.3 从源码包到可执行文件:构建、启动和首屏检查

如果拿到的是源码包,先看结构再构建,不要一上来就执行编译命令。常见开源桌面工具多用 CMake 组织,但这不是绝对;如果发布页已经有可执行包,优先跑预编译包,源码构建留给排错和改代码。

# 1. 解包后先看结构,确认构建系统 tar -tf GerberView-*.tar.gz | sed -n '1,40p' # 2. 如果根目录或一级目录里有 CMakeLists.txt,就单独建构建目录 mkdir -p GerberView-build && cd GerberView-build cmake ../GerberView -DCMAKE_BUILD_TYPE=Release cmake --build . --parallel # 3. 可执行文件名不一定叫 GerberView,先找出来 find . -maxdepth 3 -type f -perm -111 -print

tar -tf只列包内文件,不改动磁盘;CMAKE_BUILD_TYPE=Release对大板渲染更友好,调试崩溃时再切Debug;--parallel用多核编译,但内存小的机器不要开太大。find -perm -111是找可执行文件,不假设名字。第一次启动后先做三件事:打开外形层、适配窗口、量一条已知尺寸。外形闭合、尺寸对得上,再继续看铜和孔。

3. 把视图调成可判读状态:层叠、颜色、测量和版本对比

GerberView 这类查看器最容易出现的问题是“看到了,但没看对”。颜色太花、层叠顺序不对、测量吸附打开,都会让判断失真。视图不是越漂亮越好,而是要让异常一眼能看出来:孔有没有落在焊盘里、阻焊开窗有没有压到线、丝印有没有上焊盘。

3.1 先定单位和原点,再谈测量

测量之前先定单位和原点。单位不对,所有数字都不可信;原点不对,局部尺寸可能对,整板位置却是偏的。我的顺序是:先开外形层,适配窗口,量板框长边;再找一个已知间距的基准,比如连接器引脚间距或基准孔中心距;两者都能对上,才开始看细节。

现象优先检查处理
整板尺寸像大了 25.4 倍毫米/英寸单位切换单位后重新打开
图形挤在左下角坐标格式、前导零策略按文件头设置,不要手动拖
局部尺寸差 2.54 mm原点或基准点以外形/基准孔重新对齐
测量值每次差一点栅格吸附、捕捉模式关闭吸附后再量边缘

有一个细节很容易被忽略:测量线宽时,某些查看器会吸附到线中心或焊盘中心,量出来的不是边缘到边缘。做制造复核时,我一般会关掉吸附,放大到能看清像素边缘再量;如果 GerberView 当前版本没有这个开关,就用坐标读数配合外形基准做交叉验证。测量值只用于复核,最终判定还是要回到 CAM 或 DFM 报告。

3.2 层叠顺序与颜色:阻焊、丝印、铜层怎么排

颜色不是审美问题,是判读效率问题。我的习惯是:外形用高对比色放最上层,钻孔用亮色,顶层铜和底层铜用冷暖两色分开,阻焊层半透明,丝印低对比。这样一眼能看出孔是否落在焊盘里、阻焊开窗是否盖住铜线。

层建议颜色透明度原因
板框/外形白色或亮黄不透明先确认边界和原点
顶层铜红色半透明与底层铜区分
底层铜蓝色半透明从顶面看时注意镜像
阻焊开窗绿色高透明看开窗,不看整片色块
钻孔亮白或洋红不透明孔位和孔径要突出
丝印灰色低透明避免抢铜层和开窗的注意力

具体操作上,我会先隐藏所有层,只留外形;再依次加顶层铜、底层铜、钻孔、阻焊、丝印。每加一层都问一句:这层应该出现在哪里,现在有没有出现在不该出现的地方。阻焊层尤其要小心,不同 CAD 导出的阻焊可能是开窗正像,也可能是负像,不能只凭颜色判断“绿色就是盖油”。

3.3 测量、间距和版本对比:别把查看器当 CAM

GerberView 能测量,但它的定位是查看和复核,不是完整的 CAM 分析。线宽、间距、环宽这些关键值,我会在查看器里做初筛,再用 CAM 工具或脚本做二次确认。初筛的价值是快:改了一版之后,先看最可疑的区域有没有变化,再决定要不要跑完整报告。

版本对比时,不要两版用不同缩放比例并排看。我的做法是固定同一个外形基准,同一缩放级别,先叠加再闪烁切换;如果查看器没有叠加功能,就导出同一包围盒、同一分辨率的 PNG,做图像差分。差分图能提示“这里变了”,但不能直接当制造依据,最终还是要回到原始 Gerber 和钻孔文件。

对比项看什么常见误判
线宽最细线是否变细吸附到中心线,量小
间距铜到铜、铜到孔只看屏幕像素,不看实际单位
环宽焊盘边缘到钻孔边缘把孔径当半径
阻焊开窗开窗是否压线、连片正负像看反
丝印是否上焊盘颜色太淡漏看

环形焊盘我一般会单独算:环宽 =(焊盘直径 - 钻孔直径)/ 2,不靠肉眼估。GerberView 里量到焊盘和孔径后,拿计算器过一遍,比盯着屏幕稳。版本对比也一样,先看外形和基准孔有没有动,再看铜和阻焊;外形都变了,先确认是不是导出原点改了,不要急着怀疑设计。

4. 把“我看过了”变成证据:导出、清单和批量复核

投板前说“我看过了”没有用,要留下能复查的证据:这一版有哪些文件、每层对应什么、关键尺寸是多少、和上一版差在哪里。GerberView 负责看,清单和哈希负责锁版本,截图和 PDF 负责沟通,三者不要混用。

4.1 截图、PDF 和制造说明各自负责什么

截图适合在聊天里快速指出问题,PDF 适合评审存档,真正的制造依据仍然是原始 Gerber 和钻孔文件。导出截图时不要只截局部,至少带一张整板图、一张问题区域放大图,并在文件名里写清层名和版本。PDF 导出要注意分辨率和背景色,透明背景在别人的阅读器里可能变成黑底,细线直接消失。

输出用途注意
PNG 截图沟通、标注问题固定缩放,带层名和版本
PDF评审、存档白底、足够 DPI、不要透明叠加
原始 Gerber制造不要用截图替代
文件清单版本锁定文件名、哈希、层映射一起留

我的习惯是每版 Gerber 建一个review目录,里面放整板截图、问题区域截图、文件清单和一份短说明。说明不用长,写清“这版改了什么、哪一层没动、还有什么风险”就够了。后面再回头查,不用靠记忆。

4.2 用文件清单和哈希锁住版本

Gerber 文件最怕“看起来一样,其实不是同一版”。文件名里带日期也不一定可靠,最稳的是生成哈希清单。下面这段命令不依赖 GerberView,任何系统有find、sha256sum就能跑。

# 把待检查的 Gerber/钻孔文件统一收进 gerber/,再生成清单 mkdir -p review find gerber -type f \( -iname '*.gbr' -o -iname '*.ger' -o -iname '*.drl' -o -iname '*.xln' \) -print0 \ | sort -z \ | xargs -0 sha256sum > review/gerber.sha256 # 看一眼清单,确认没有漏层 wc -l review/gerber.sha256 cut -d' ' -f3- review/gerber.sha256

-print0和xargs -0是为了处理带空格的文件名;sort -z保证清单顺序稳定;sha256sum生成内容哈希,文件改名也能看出内容有没有变。cut -d' ' -f3-只打印文件名,方便肉眼核对层数。每次重新导出 Gerber 后都重新生成一遍,不要拿旧清单配新文件。

4.3 和 CAM/DFM 工具对接时看什么

GerberView 里看着没问题,不等于 CAM 一定能过。查看器更擅长看层关系、孔位、开窗和丝印,CAM 更擅长算最小线宽、最小间距、阻焊桥和钻孔到铜的间距。两边看的东西不一样,不要互相替代。

对接前我会先确认四件事:外形是否闭合、钻孔文件是否齐全、层映射是否和制造说明一致、有没有非镀通孔或槽孔被漏掉。外形不闭合,后面所有边界判断都不稳;钻孔少一个刀具,工厂可能直接按缺失处理;层映射写错,阻焊和丝印会整层错位。把这些在 GerberView 里过一遍,再去跑 CAM,能省掉不少来回。

5. 避坑与排查:GerberView 黑屏、错层、孔偏时先查什么

GerberView 这类查看器出问题,很多时候不是软件本身,而是输入文件、单位、层映射或导出设置。下面这几条是我在模拟项目里反复遇到的排查顺序,按“现象 → 原因 → 解决”走,比乱点菜单快。

5.1 打开后一片空白,但文件大小正常

现象:文件能加载,画布却空白,缩放也看不到图形。原因:常见是单位或坐标格式不对,图形被放到视野外;也可能是只打开了钻孔文件,或者层被隐藏、极性设置反了。解决:先点“适应全部”,再看状态栏的坐标范围;单独打开外形层,确认是否有闭合轮廓;检查文件头里的MOMM/MOIN和FSLAX,按文件头重设单位与格式。如果外形层也空白,换一个已知正常的 Gerber 对比,排除查看器配置问题。

5.2 孔位整体偏移、镜像或旋转

现象:铜层看起来正常,钻孔整体偏到一边,或者上下镜像。原因:钻孔文件和 Gerber 用了不同原点;导出时勾了镜像;单位混用;Y 轴方向不一致。解决:不要用鼠标手动挪孔位,先以板框或基准孔对齐;看钻孔文件头里的单位和M48定义;确认导出设置里没有“镜像底层”之类的选项。手动挪只能骗过眼睛,骗不过工厂。

5.3 阻焊开窗连成一片

现象:阻焊层显示成大块色斑,开窗边界看不清,或者整板像被盖住。原因:把铜层当阻焊层打开;阻焊正负像理解反了;开窗扩张参数过大;查看器把负像层按正像渲染。解决:先看文件头TF.FileFunction是不是Soldermask;切换正负像显示;单独打开阻焊层,确认开窗是否按焊盘分布。阻焊不是一块实心色,真正要看的是开窗边缘和铜、孔的关系。

5.4 大文件卡顿、缩放撕裂

现象:打开大板后拖动卡顿,缩放时线条断裂或闪烁。原因:所有层同时显示、抗锯齿开得太高、钻孔数量大、用的是 Debug 构建。解决:先隐藏无关层,只留外形、铜和钻孔;关闭平滑/抗锯齿再试;源码构建的话用Release;仍然卡就分区域截图检查,不要强行全层叠加。卡顿本身不是制造问题,但会让人漏看细节。

5.5 导出的 PNG/PDF 和屏幕不一致

现象:屏幕上能看到的细线,导出后消失;阻焊颜色和铜层混在一起。原因:导出分辨率太低、透明背景被压成深色、线宽按屏幕像素而不是实际单位渲染。解决:导出时固定 DPI,改用白底,关闭透明叠加,放大关键区域再导出。导出的图只用于沟通和存档,不要拿它当制造文件;有疑问回到原始 Gerber 复核。

6. 出厂前自检:用 GerberView 做一轮 10 分钟可复现的核对

我现在把 GerberView 当最后一道肉眼复核,不当 CAM。十分钟流程固定成六步,每次投板前都走一遍,哪怕只改了一根线也不跳。

顺序动作通过标准
1打开外形层,适配窗口外形闭合,原点可解释
2加顶层铜、底层铜、钻孔孔落在焊盘内,镜像正确
3加阻焊、丝印开窗不连片,丝印不上焊盘
4量板框、已知间距、最细线与机械图/设计值一致
5和上一版叠加或并排变化点能逐条说清
6生成文件清单和哈希层数齐全,版本可追溯

血泪经验是:不要在同一块板上边看边改源文件,先把这一版 Gerber 冻住,哈希、截图、问题清单都落在同一个目录。后来我每次投板前都强制走一遍这套自检,发现最多的问题不是设计错,而是导出时漏层、单位混用和原点不一致。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进