简介:面向 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.FileFunction | X2 属性里的层功能 | 层映射只能靠文件名猜 |
我一般会先只开外形层,再一层一层加。外形能闭合,说明坐标和单位大概率没大问题;外形都不对,先回头查文件头,不要在视图里硬拖硬缩放。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" donehead -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 -printtar -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 截图 | 沟通、标注问题 | 固定缩放,带层名和版本 |
| 评审、存档 | 白底、足够 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 冻住,哈希、截图、问题清单都落在同一个目录。后来我每次投板前都强制走一遍这套自检,发现最多的问题不是设计错,而是导出时漏层、单位混用和原点不一致。希望帮到你。
本文还有配套的精品资源,点击获取