免费的Gerber文件查看器gerbv:让每一块PCB在打样前都能被精确验证
【免费下载链接】gerbvMaintained fork of gerbv, carrying mostly bugfixes项目地址: https://gitcode.com/gh_mirrors/ge/gerbv
深夜十一点,板厂客服发来一条消息:"你们的钻孔文件跟铜层对不上,过孔偏了0.2mm,要重做还是先打样?"你盯着邮件附件里那个报错的Excel表格,心里明白:一旦这批板子流片,报废的不仅是几千块钱,还有两个星期的项目周期。这不是段子,而是每一个靠Gerber文件(PCB制造的标准格式,由EDA工具导出的光绘数据)跟板厂交接的硬件工程师都可能撞上的真实场景。
而今天要聊的主角——gerbv,正是一个能让你把这类事故拦在发板之前的免费开源Gerber查看器。它由gEDA开源电子设计社区孵化,如今作为独立项目持续维护,专门用于Gerber文件预览与PCB设计验证。你不需要买几千块的商业CAM软件,不需要装笨重的EDA套件,只需要这个不到10MB的小工具,就能把每一层的图形、孔位、坐标看得清清楚楚。
先搞清楚:它到底能"看懂"哪些文件
很多人误以为Gerber文件只有一种,实际上PCB交付包通常由三类文件组成,而gerbv把这三类全包了:
| 文件类型 | 来源 | gerbv的支持情况 |
|---|---|---|
| Gerber RS-274X | 铜层、阻焊、丝印等光绘图层 | 完整支持(注意RS-274D旧格式不支持) |
| Excellon钻孔文件 | 钻孔、铣削路径 | 完整支持 |
| CSV拾放文件 | 元件贴装坐标 | 完整支持 |
更贴心的是,它识别文件靠的是内容检测而不是扩展名。板厂收到的Altium输出经常带着千奇百怪的后缀甚至没有后缀,gerbv照样能认出来。你甚至可以丢给它一个目录——gerbv ./gerbers/——它会把里面所有能读的文件按字母序全部加载,加载不了的自动跳过。这一步就省掉了你对着文件管理器一个个猜类型的功夫。
上面这张图是Eagle导出的顶层铜层,紫色路径就是实际的布线走向。注意看gerbv连走线的圆角过渡和焊盘形状都还原得一丝不苟。
半小时上手:从源码到第一次渲染
既然叫开源工具,最直接的玩法就是自己编译。项目已经全面迁移到现代CMake,用预设(preset)一条命令就能配置完成。在Linux下只需要gcc、gtk+-2.0、glib-2.0、cmake(3.28以上)和ninja:
git clone https://gitcode.com/gh_mirrors/ge/gerbv cd gerbv cmake --preset linux-gnu-gcc cmake --build --preset linux-gnu-gcc编译产物在build/src/Debug/gerbv,想装到系统里就sudo cmake --install build。如果你用的是macOS,换macos-clang预设;想交叉编译Windows版本,有mingw-w64-gcc和msys2-ucrt64-gcc两个预设等着你——甚至能用NSIS直接打出Windows安装包。
编译完第一次启动,把项目的几个层文件拖进去,你就拥有了一个完全可控的"电子显微镜":
- 图层显隐:右侧列出每个已加载文件,勾选框一键开关图层,还能用Ctrl+小键盘数字盲操作;
- 无级缩放:按
z放大、Shift+z缩小,滚轮也能缩放,按f一键铺满窗口; - 框选放大:选中缩放工具后拖一个框,松手就放大到那个区域,Shift键还能让你以起点为圆心缩放;
- 拖拽平移:按住鼠标中键(滚轮)拖动即可平移画面,跟地图软件一样顺滑。
这是某款DSP芯片的散热焊盘层,342个微型过孔排得整整齐齐。用gerbv放大到每个孔,检查间距是否满足板厂工艺要求,比在EDA里来回切层快得多。
把隐患揪出来:对齐、测量与单位
回到开头那个"钻孔对不上铜层"的悲剧。这类问题在gerbv面前无处遁形,因为它的操作逻辑就是为"找茬"设计的:
对齐图层。加载铜层和钻孔文件后,如果怀疑两者坐标系不一致,在右侧图层列表上右键,从菜单里选"Align layers",分别点选两个层上的同一参考元素(比如同一个定位孔),gerbv会自动算出偏移量把两层对齐。这一步就能立刻看出钻孔文件是整体偏移,还是个别孔位漂移。
测量尺寸。选中测量工具,光标变成十字,用左键拖线,状态栏实时显示两点距离,单位可选英寸或毫米。焊盘直径够不够、线与线之间间距是否达标、过孔到板边的距离是多少——这些板厂最爱卡的指标,你都可以在发板前自己量一遍。
单位检查。gerbv支持自动识别文件里的单位设置,状态栏会显示当前是mil、mm还是inch。很多设计事故的根源就是"导出时单位选错",在gerbv里切换不同层文件对比一下坐标数字的量级,基本就能发现问题。
这不是装饰图,而是真实项目里的曝光测试图案文件在gerbv中的渲染效果。制造端用这类图案校准设备,而你可以用它检验自己的导出流程有没有丢东西。
进阶玩法:命令行批量导出,秒变检查流水线
GUI只是gerbv的一半功力,它的命令行导出能力才是隐藏大杀器。支持的导出格式包括:png、pdf、ps、svg、rs274x、drill、idrill,如果编译时启用了libdxflib还能导出dxf。一条命令就能把多层文件合成一张总览图:
gerbv --export=png -o board.png ./gerbers/拿它配合shell循环,就能搭一条简单的批量检查流水线——每次改动设计后自动把所有层渲染成图片,肉眼扫一遍,或者用脚本做像素级对比,看有没有非预期的变化:
for file in *.gbr; do gerbv -o "${file%.gbr}.png" "$file" done导出时还能通过参数控制渲染细节:-w 1920x1080设定输出像素尺寸,-u mm切换坐标单位,-D 300指定DPI,-a开启抗锯齿。如果只是临时给别人看个大概,--export=pdf输出一份带矢量信息的PDF,比截图专业得多。另外值得一提的是--svg-layers选项,导出SVG时可以把每个可见图层拆成Inkscape的独立SVG层,方便后续在矢量工具里二次加工。
开发者福利:libgerbv把解析能力搬进你的程序
如果你不满足于"看",还想让别的工具也能读Gerber,gerbv的核心代码是分离的——解析、编辑、导出、渲染的能力全部封装在libgerbv这个库里面。项目文档的doc/example-code/目录下提供了从入门到进阶的示例,第一个例子就展示了最核心的读写闭环:
#include <gerbv.h> int main() { /* 创建顶层项目结构 */ gerbv_project_t *mainProject = gerbv_create_project(); /* 解析一个Gerber文件并存入项目 */ gerbv_open_layer_from_filename(mainProject, "example1-input.gbx"); /* 把解析出的图层再导出回RS-274X文件 */ gerbv_export_rs274x_file_from_image("example1-output.gbx", mainProject->file[0]->image, NULL); /* 释放所有内存 */ gerbv_destroy_project(mainProject); return 0; }整个流程逻辑清晰:创建项目 → 打开文件 → 处理图像 → 导出 → 释放。想做Gerber格式转换工具、批量校验脚本,或者给自己的PCB工具链加一个文件预览模块,直接在这个库上面搭就行。编译时pkg-config --cflags libgerbv会自动帮你把编译参数准备好。
为什么你可以信任它的渲染结果
开源工具最怕的就是"看着对,实际错"。gerbv在这方面的底气来自于一套严谨的回归测试机制:项目test/目录里躺着上百个输入文件(来自KiCad、Altium、Eagle、Protel等不同EDA工具的真实输出)和对应的"黄金参考图"。CI流水线会用它重新渲染一遍,然后逐像素比对,任何一处抗锯齿差异、一个坐标偏差都会让测试变红。
更难得的是,测试输入里包含大量"坏文件"——残缺的语法、奇怪的缩写、越界的坐标。这些正是真实世界里的Gerber文件的常态。项目维护者坦言,当年他刚接手时Gerber规范只有60页,如今已经超过200页,而现实中的文件依然千奇百怪。这个fork存在的意义,就是逐个修复这些历史遗留的解析坑,同时把构建系统翻新成现代CMake,让代码在主流编译器下零警告编译。
如果你也想给这个项目添砖加瓦,路径非常清晰:从test/inputs/里添加一个小而美的格式测试用例开始,或者对照规范修一个解析警告,甚至帮忙把渲染前端从GTK-2.0迁移到GTK-3.0——这些都是维护者在README里公开列出的待办事项,随时欢迎新面孔加入。
从今天起,把验证做在打样之前
回到开头那个深夜电话。有了gerbv,正确的流程应该是这样的:设计定稿 → 导出全部制造文件 → 用gerbv ./gerbers/一键加载 → 检查钻孔与铜层对齐 → 抽查关键尺寸 → 批量导出PNG留档 → 确认无误后再发板。整个过程不超过十分钟,而它替你省下的,可能是几千块打样费、两周的等待,以及一次跟客户解释"为什么会交付坏板子"的尴尬。
工具是免费的,但省下来的时间和信任是无价的。源码、示例和文档都在这份公开仓库里,clone下来编译一次,你的PCB验证流程就从今天开始升级。
项目资源速览:
- 源码与构建配置:
src/、CMakeLists.txt、cmake/ - 构建指南:
BUILD.md - 命令行帮助手册:
man/gerbv.1.in - 开发库示例代码:
doc/example-code/ - 回归测试与参考图:
test/inputs/、test/golden/ - 真实工程案例文件:
example/
【免费下载链接】gerbvMaintained fork of gerbv, carrying mostly bugfixes项目地址: https://gitcode.com/gh_mirrors/ge/gerbv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考