上周把一块板子发去打样,回板后顶层丝印整片糊在焊盘上,丝印还压着过孔;同批另一个板子贴片厂说找不到钢网文件,只有.GTO,问是不是把丝印当钢网发过去了。这两个问题窜在一起,本质上是同一件事:很多人从 KiCad 点击“导出 Gerber”那一刻开始,就默认那一堆后缀文件是“系统自动生成的、工厂肯定看得懂”。事实恰恰相反,.GTL、.GBL、.GTO、.GTP这些后缀对板厂来说只是一张张没有上下文的黑图,是哪一层、正片还是负片、要不要镜像、是不是钢网,全靠后缀名和文件头里的属性去猜。KiCad 导出的 Gerber 层文件,本质上就是把一块 PCB 拆成十几张互不重叠的二维图纸,每一张只描述一件事:这一层的铜在哪、开窗在哪、字在哪、边框在哪。你把这套图纸的编号规则理清了,打样和贴片环节至少能省掉三次来回沟通。这篇内容面向刚上手 KiCad 画板、正在准备第一次打样的人,也面向画了几年板但一直靠“全选导出、工厂自己判断”的老手,把后缀、参数、下游需求、排查这四个部分一次讲透。
1. 先把概念摆正:Gerber 是一叠图纸,不是一个文件
1.1 打样包的构成:谁在描述铜,谁在描述加工
一块双面板交付出去的文件包,至少包含三类东西:Gerber 层文件、钻孔文件、以及描述“元件在哪里”的坐标文件。Gerber 描述的是二维图形,它能表达某层某个位置有一块铜、有一个开窗、有一条线,但它表达不了“这个孔要钻多深”“这个孔是镀铜还是不镀铜”——这些是钻孔文件(Excellon 格式)的工作。它更表达不了“这个元件在 X/Y 多少度”——那是坐标文件的工作。
所以你在 KiCad 的制造输出菜单里看到的三个入口,其实是三条独立的管线:导出 Gerber、导出钻孔文件、导出位置文件。三条管线各管一段,缺一段工厂就得回来问你。我见过有人只导出了 Gerber 就发过去,板厂回邮件说“缺少钻孔文件,无法确认过孔位置”,然后来回折腾一天多。这种返工完全可以避免,因为准备好的文件包应该是一个能自证的集合。
理解这一点之后,后面所有关于后缀的讨论都变得简单:你处理的是一个文件集合,这个集合里每一项都有唯一职责。
1.2 为什么 KiCad 默认后缀跟网上的教程不一样
这是最容易让人蒙的地方。你在网上看到的所有教程都是.GTL、.GBL、.GTS,但你打开 KiCad 导出目录,看到的是项目名-F_Cu.gbr、项目名-B_Cu.gbr、项目名-F_Mask.gbr。两者都对,只是命名体系不同。
.GTL、.GBL这一套是早年某款老牌 EDA 软件定下的“Protel 扩展名”约定,因为历史装机量太大,后来几乎所有板厂的前端 CAM 系统都内置了按这套后缀自动识别层功能的规则表。你发.GTL过去,CAM 软件直接认定这是顶层铜箔;你发-F_Cu.gbr过去,很多工厂的系统识别不了,需要人工点选层映射,人工就会出错。
KiCad 的做法是默认使用自己的一套“层名缩写 + .gbr”的命名,同时提供一个开关让你切换到 Protel 兼容后缀。这个开关在导出 Gerber 对话框里,名字大概是“使用 Protel 文件扩展名”这一类表述(不同大版本措辞会有微调)。勾上之后,导出的文件名立刻变成项目名.GTL、项目名.GBL这种经典样式。
我的做法是:只要这块板是给外面的板厂做,一律勾上 Protel 后缀。原因很现实——你没法确认对方的 CAM 系统版本,而 Protel 后缀是兼容性下界的最大公约数。至于.gbr这套命名,留给自己存档、做版本对比的时候用更舒服,因为文件名自带层含义,一眼就看懂。
1.3 文件头里的“暗号”:为什么 X2 比后缀更可靠
后缀是命名约定,不是标准强制字段。真正让工厂机器能自动判断“这一层是什么”的,是 Gerber X2 扩展格式里的文件属性字段。你可以用一个文本编辑器打开任意一个 Gerber 文件的头部,会看到类似%TF.FileFunction,Copper,L1,Top*%这样的行,它在说:本文件功能是铜箔,位于第 1 层,属于顶面。
这个属性的价值在于它是写在文件里的,不依赖文件名。哪怕你把.GTL改名成abc.gbr,只要这个属性还在,支持 X2 的系统照样能正确识别。反过来,如果你关掉了 X2 扩展,文件里就没这条信息,工厂只能靠后缀猜。
所以 KiCad 导出对话框里那个“使用 X2 扩展格式”的勾选项,我建议默认打开,同时勾上“包含网络属性”。后面那条的作用是把每个焊盘的网络名写进文件,飞针测试和电测比对的时候能直接定位到具体网络,出问题时排查效率差别很大。
提示:极少数老旧 CAM 前端对 X2 属性行解析不干净,会出现“文件读取异常”的报错。真遇到了,先别怀疑自己画错了,把这一个勾去掉重导一次试试,通常就通了。
1.4 一个常被忽略的前提:坐标原点
原点设在哪里,直接影响坐标文件和钻孔文件里的数值。KiCad 里默认的绝对原点是图纸左下角,但实际生产更常用的是把原点设到板框左下角,或者设到某个工艺边上。原因很朴素:坐标文件里的数值要是从板框角开始算,贴片机的操作员一眼就知道元件在板上的相对位置;要是从图纸的某个虚无位置算起,一堆负数坐标看着就头大。
设置方式是在 PCB 编辑器里选“放置”里的原点标记(Drill/Place File Origin),把它放到板框左下角。放完之后重新导出钻孔和位置文件,数值会干净很多。这一步不改变任何几何信息,纯粹是为了下游好读,但省下来的沟通时间是真金白银。
2. KiCad 导出 Gerber 的完整操作与参数取舍
2.1 导出入口与层的勾选逻辑
路径是“文件 → 制造输出 → Gerber”。弹出来的对话框分三块:左侧是层列表和勾选框,中间是格式选项,右侧是输出路径和文件名。
层列表这一块是重灾区。新手常犯的错是全选,把F.Cu、B.Cu、F.SilkS、B.SilkS、F.Mask、B.Mask、F.Paste、B.Paste、Edge.Cuts、F.Fab、B.Fab、Margin、User.Drawings全部勾上导出去。多导几个文件本身不会让板子做坏,但会让工厂的工程审核多花时间,而且F.Fab、Margin这类层对板厂来说是无效信息,混在里面反而干扰判断。
我的勾选习惯是按交付对象分两套:
| 交付对象 | 必勾层 | 建议关闭的层 |
|---|---|---|
| PCB 板厂 | F.Cu、B.Cu(多层板加内层)、F.Mask、B.Mask、F.SilkS、B.SilkS、Edge.Cuts | F.Paste、B.Paste、F.Fab、B.Fab、Margin、User.* |
| SMT 贴片厂 | F.Paste、B.Paste、F.SilkS、B.SilkS、F.Mask、B.Mask、Edge.Cuts | F.Cu、B.Cu(一般不缺,但可不给) |
| 自己存档 | 全勾 | 无 |
贴片厂那套要注意:钢网层(Paste)必须给,但它不是给板厂的。板厂拿到 Paste 层没有意义,因为板厂只做裸板,不做钢网。两家要的东西不重叠,所以打包时要分开建目录,别一股脑丢一个压缩包里。
2.2 精度、单位、格式这三项怎么定
对话框里的精度选项,KiCad 常见的是 4.6、4.5、3.5 这几档。这里的数字含义是“整数位.小数位”。以毫米为单位时,4.6 表示坐标精确到小数点后 6 位,也就是 1 纳米分辨率。
有人会想“精度越高越好”,实际并不成立。Gerber 是二维矢量图形描述,坐标精度越高,文件体积越大,而 PCB 制造的物理极限在 0.05mm 量级,小数点后 6 位里前面 3 位之后的部分纯属冗余。4.6 会导致文件明显变大,某些老 CAM 读取变慢。3.5 又太糙,0.00001mm 的分辨率虽然够用,但个别工厂的解析器对格式字段有硬编码假设,容易出偏差。
我实测下来最稳的是4.6 配毫米单位,这是 KiCad 的默认值,也是大多数工厂 CAM 的默认预期值。它的好处是文件头里会写明%FSLAX46Y46*%,格式声明明确,不存在“前导零省略还是后置零省略”的歧义——这正是老式 Gerber 最容易翻车的地方。
单位必须和图纸一致。如果你的板子是英制画的(比如从别处导入的封装),导出时选毫米,KiCad 会自动换算,不会错。但如果你在别的地方用脚本生成坐标,混用单位就是 25.4 倍的灾难,这个后面排查章节会展开。
2.3 两个影响丝印效果的隐藏选项
这两个选项在对话框下方的复选框里,很多人从来没点开看过。
第一个是“从丝印中减去阻焊开窗”。勾上之后,KiCad 会把丝印层上所有与阻焊开窗重叠的部分挖掉。效果是丝印不会印到裸露的焊盘上。为什么不印到焊盘上是好事?因为焊盘要上锡,丝印是油墨,油墨盖在焊盘上会阻碍焊接,回流后形成虚焊或立碑。工厂的 CAM 通常会自己处理这一步,但你主动做掉,等于少一道人工判断。
第二个是“使用负片清除线宽”这类与清除相关的选项。它的作用是控制丝印被清除区域边缘的过渡。一般来说保持默认即可,除非你发现清除后的丝印边缘有明显的细缝残留。
注意:勾了“从丝印中减去阻焊开窗”之后,导出的丝印层会包含大量多边形挖空,文件复杂度上升。极小概率下,某些老旧 CAM 处理这些挖空会出错,表现为丝印整层消失。第一次跟新工厂合作,可以先不勾,让工厂自己处理,稳定后再开。
2.4 用命令行批量导出,省下重复劳动
图形界面点一次要花十几秒,反复改板反复导就很烦。KiCad 从 7.0 开始提供了命令行工具,可以把导出流程固化成脚本。下面这段是我常用的形式,路径和文件名按自己的项目改:
kicad-cli pcb export gerbers \ --output ./fabrication/gerber/ \ --layers "F.Cu,B.Cu,F.Mask,B.Mask,F.Silkscreen,B.Silkscreen,Edge.Cuts" \ --no-x2 \ --precision 6 \ --subtract-soldermask \ ./myboard.kicad_pcb参数说明:--layers指定要导的层,逗号分隔;--precision 6对应 4.6 精度;--subtract-soldermask就是上面说的丝印减去开窗;--no-x2是关掉 X2 扩展(默认是开的,我一般在批量脚本里保留开启,只在遇到兼容问题时才关)。钻孔文件另有一条命令,kicad-cli pcb export drill,可以指定 Excellon 格式和是否合并 PTH/NPTH。
脚本化的真正好处不是省那十几秒,而是“每次都一样”。手工点选容易出现这次勾了 Paste、下次忘了勾的情况,脚本把选择固化下来,交付一致性有保障。做到第三块板你就会感谢自己当初写了这个脚本。
3. 逐层拆解:每一个后缀到底在描述什么
3.1 铜箔层:.GTL 与 .GBL 是整块板的骨架
.GTL是 Top Layer 的缩写,顶层铜箔;.GBL是 Bottom Layer,底层铜箔。这两层是整块板唯一真正导电的部分,其余所有层都是辅助。板厂拿到这两个文件,才知道要在覆铜板上蚀刻出什么形状的走线,哪里保留铜、哪里腐蚀掉。
多层板会延伸出内层,命名一般是.G1、.G2、.G3,对应第 1、2、3 个内层。这里有个容易搞混的点:内层编号是“内层序号”还是“物理层号”,不同软件不一样。KiCad 的 Protel 后缀导出里,内层从.G1开始按内层顺序编号,不带.GTL那套前后缀语义。所以一块四层板的文件会是.GTL(顶)、.G1(内层1)、.G2(内层2)、.GBL(底)。你交付时最好在压缩包里附一份层叠说明,写明总层数、内层顺序、板厚、铜厚,避免工厂按自己的默认叠构来做。
关于铜箔层有一个必须理解的原理:Gerber 里的铜箔层是正片,也就是画出来的形状就是最终保留的铜。所有覆铜、走线、焊盘都在这层里有实体图形。这一点和阻焊层正好相反,混淆正负片是新手最常见的认知错误。
3.2 阻焊层:.GTS 与 .GBS 描述的是“不要盖油”的地方
.GTS是 Top Solder Mask,顶层阻焊;.GBS是底层阻焊。名字里带 “Mask”,很多人第一反应是“这层画的是要盖绿油的地方”。恰恰相反,Gerber 里的阻焊层画的是开窗,也就是要露出铜、不盖油墨的区域。
为什么这样设计?因为板子上绝大多数面积都要盖阻焊,只有焊盘、测试点、某些需要上锡的区域要露出来。如果按“盖油区域”来画,图形面积巨大且零碎,文件臃肿;按“开窗区域”来画,只有一堆小圆和小方块,干净得多。所以行业统一采用开窗表述。
这个理解直接决定了你检查文件的方式:打开.GTS,你应该看到的是所有贴片焊盘、插件焊盘、测试点的形状,而且通常比铜箔层的焊盘略大一圈——这个大出来的一圈叫阻焊开窗余量,一般单边 0.05mm 到 0.1mm。为什么要有余量?因为蚀刻和对位都有公差,如果开窗和焊盘完全等大,稍微偏一点就会有一部分焊盘被油墨盖住,影响焊接。KiCad 里这个余量在“PCB 编辑器 → 板设置 → 阻焊/助焊余量”里设置,默认值通常在 0.05mm 到 0.1mm 之间。
3.3 钢网层:.GTP 与 .GBP 跟板厂没关系
.GTP是 Top Paste,顶层锡膏层,也叫助焊层、钢网层。这是被误解最深的一层,也是我在标题里想强调的混淆点:.GTP不是丝印,.GTO才是丝印。
钢网层的物理意义是:SMT 贴片时,锡膏通过一张开了孔的不锈钢薄片印到 PCB 上,这张薄片就是钢网,钢网上的孔位就是.GTP文件里画的图形。所以这一层描述的只有贴片焊盘,没有走线、没有过孔、没有任何其他东西。打开.GTP,你应该只看到一个个矩形焊盘图形,位置与.GTL上的贴片焊盘一一对应。
关键点在于:这一层是给贴片厂做钢网用的,板厂完全不需要。有些板厂收到文件包里带.GTP,会回问一句“你们是要我们开钢网吗”,多一轮沟通。更糟的情况是,有人把.GTP当成丝印层发给板厂,板厂按丝印印上去,结果整块板上只有焊盘位置有油墨,丝印字符一个字都没有——这正是我开头提到的那个翻车案例。
3.4 丝印层:.GTO 与 .GBO 是给人看的字
.GTO是 Top Overlay,顶层丝印,也就是板上那些白色字符:元件位号、极性标识、引脚 1 标记、logo、版本号。.GBO是底层丝印。
这两层不参与电气连接,纯粹是给装配、维修、调试的人看的。虽然是“辅助信息”,但信息量一点不小——没有位号,贴片厂排除错料时几乎没法定位;没有极性标识,手工焊二极管方向全靠猜。
底层丝印有一个必然的镜像问题需要说清楚。底层丝印是从板子背面看的,所以导出时它是镜像的。你在 Gerber 查看器里打开.GBO,看到所有字符都是反的,这是正常的,不是错误。工厂制作时按这个镜像图形印在背面,翻过来从正面透视看就是正的。新手第一次看到反字会慌,去改设置把它“改正”,结果做出来的板子背面字全是反的。
3.5 板框层:.GKO 与 .GM1 决定板子被切成的形状
板框层的后缀在不同体系里有.GKO(Keep Out,早期含义偏“禁布区”)、.GM1(Mechanical 1,机械层 1)、.GML几种写法。KiCad 导出的板框来自Edge.Cuts层,勾选 Protel 后缀后通常落到.GM1或.GKO。
这一层的重要性被严重低估。它不只是一条“轮廓线”,它决定三件事:铣刀走哪里把板子从拼板上切下来、板子外形尺寸、以及内部开槽和异形孔的形状。板框必须是闭合的连续线条,任何一处断口都会导致工厂无法确定切割路径,要么回来问你,要么按自己的理解补一条直线把板子切歪。
注意:板框层上不要放任何非轮廓图形。有人把尺寸标注、装配说明、工艺边标记画在
Edge.Cuts上,导出后板框层里混进了线段和文字,工厂的 CAM 会把它们当成切割路径处理,轻则多切几刀,重则外形报废。所有标注放User.Drawings或者F.Fab。
3.6 钻孔文件:.DRL 与 .XLN 描述的是“洞”
钻孔文件不是 Gerber,是 Excellon 格式,后缀常见.DRL、.XLN、.TXT。它记录的是每个孔的坐标、直径、是否镀铜,以及槽孔(长圆形孔)的起止点。
KiCad 导出钻孔时有两个选项值得注意。一是“PTH 与 NPTH 分开输出还是合并”,PTH 是镀铜孔(过孔、插件焊盘),NPTH 是不镀铜孔(安装孔、定位孔)。分开输出两个文件的好处是工厂能明确知道哪些孔不需要金属化,减少误镀;合并成一个是省事,但需要工厂自己按孔径判断。我倾向于分开,多一个文件换来的是零歧义。
二是槽孔的表示方式。Excellon 用 G85 指令表示铣槽,从 A 点铣到 B 点,宽度等于刀具直径。这个指令绝大多数工厂支持,但极少数小厂的老设备不认,会把它当成两个独立的圆孔来钻,做出来是两个洞而不是一个长孔。如果你的板子上有长的定位槽,交付前跟工厂确认一句“G85 槽孔能否处理”,比事后返工便宜得多。
3.7 装配图、坐标文件与 Job 文件
除了上面这些,还有几类文件容易被忽略。
坐标文件(也叫位置文件、贴片文件,后缀常见.pos、.csv、.txt)记录了每个元件的位号、X/Y 坐标、旋转角度、所在层。贴片机的编程就靠它。导出路径是“文件 → 制造输出 → 元件位置文件”,可以选 ASCII 或 CSV、毫米或英寸、单面或双面。
这里有一个巨坑:旋转角度的基准。不同 EDA 软件、不同封装库对“0 度”的定义不一样,有的以元件本体长边为基准,有的以引脚 1 位置为基准。你把坐标文件给贴片厂,对方按自己的库去对,角度差了 90 度,整批元件方向全错。规避方式是交付时附一份“元件位号-封装-角度基准”的对照表,或者干脆让贴片厂用自己的软件从 Gerber 反推。第一次合作的工厂,我一般会要求先打一片首件确认。
钻孔图与钻孔表(.GDD、.GDS之类)是给人看的图纸,不是给机器用的,作用是让工程审核时快速核对孔径分布和数量。有些工厂会要求提供。
Job 文件(.gbrjob)是 KiCad 生成的一个描述文件,内容是把每个 Gerber 文件对应的层功能、板厚、层数、表面处理等元信息列出来。支持它的工厂可以直接读这个文件完成层映射,不用人工点选。这个格式不是所有工厂都认,但带上没坏处,成本为零。
3.8 一张表把全部后缀钉死
| 后缀 | 全称含义 | 描述内容 | 给谁 |
|---|---|---|---|
| .GTL | Top Layer | 顶层铜箔走线与焊盘 | 板厂 |
| .GBL | Bottom Layer | 底层铜箔走线与焊盘 | 板厂 |
| .G1 / .G2 | Inner Layer | 内层铜箔 | 板厂 |
| .GTS | Top Solder Mask | 顶层阻焊开窗(负片概念) | 板厂 |
| .GBS | Bottom Solder Mask | 底层阻焊开窗 | 板厂 |
| .GTP | Top Paste | 顶层钢网开孔 | 贴片厂 |
| .GBP | Bottom Paste | 底层钢网开孔 | 贴片厂 |
| .GTO | Top Overlay | 顶层丝印字符 | 板厂 |
| .GBO | Bottom Overlay | 底层丝印字符(镜像) | 板厂 |
| .GKO / .GM1 | Keep Out / Mechanical | 板框与开槽轮廓 | 板厂 |
| .DRL / .XLN | Excellon Drill | 钻孔坐标与孔径 | 板厂 |
| .pos / .csv | Placement | 元件坐标与角度 | 贴片厂 |
| .gbrjob | Job File | 层功能与叠层元信息 | 板厂(可选) |
记住一条判据就够了:带 P 的是钢网,带 O 的是丝印,带 S 的是阻焊,带 T 是顶,带 B 是底,带 L 是铜箔。
4. 不同下游要什么:文件包怎么打才不返工
4.1 板厂的最小可用集合
板厂需要的核心是“铜在哪、开窗在哪、板子多大、洞在哪”。所以最小集合是:铜箔层(全部)、阻焊层、丝印层、板框层、钻孔文件。丝印严格说不是必须的,但没有丝印的板子没法装配,所以实际都带。
交付格式上,压缩包命名带上项目名、版本号、日期,例如某项目_V1.2_20240115_四层板.zip。包内建一个gerber目录放所有层文件,一个drill目录放钻孔文件。同时在包根目录放一个纯文本的说明文件,写清楚:板子尺寸、层数、板厚、铜厚、表面处理方式、阻焊颜色、丝印颜色、最小线宽线距、最小孔径。这些东西写在邮件正文里容易丢,写在包里的文件反而稳定。
提示:不要用中文文件名和中文目录名。部分工厂的上传系统和 CAM 软件对非 ASCII 路径会出问题,表现为文件上传失败或读取乱码。全部用英文、数字、下划线,路径层级不要太深。
4.2 贴片厂需要的是另一套
贴片厂的关注点和板厂完全不同:它要知道每个元件在哪、朝哪个方向、焊盘多大。所以需要:钢网层(Paste)、丝印层、阻焊层(用于确认开窗)、坐标文件、元件清单(BOM)。
BOM 里最关键是位号、数量、规格型号、封装。位号和坐标文件里的位号必须一一对应,任何一个多出来或缺失,贴片厂都要停下来问你。我习惯在导出坐标文件后,用表格软件做一次位号交叉核对,把 BOM 的位号列和坐标文件的位号列排序后对比,看是否完全一致。这一步花两分钟,能省掉一整天的邮件往返。
首件确认也是必须的。就算前面都做对了,封装库里的角度基准和工厂的不一致,也会导致整批元件转 90 度。打一片首件,拍张照确认方向,成本远低于返工。
4.3 自己留档该存什么
留档的价值在于版本回溯。我的习惯是把整个 KiCad 工程目录和导出的两个文件包(板厂包、贴片包)按版本号一起归档,同时存一份 Gerber 查看器的截图,标注出该版本的关键改动。
为什么不只存工程文件?因为工程文件是“可编辑的源”,而 Gerber 是“实际生产的快照”。三个月后你改了三处走线,想确认当时那批板到底是什么样,看 Gerber 比看工程文件并回滚版本可靠得多。而且不同版本的 KiCad 打开老工程,渲染结果可能有细微差异,Gerber 没有这个问题。
5. 最容易踩的坑与排查清单
5.1 高发问题速查
| 现象 | 最可能原因 | 排查动作 |
|---|---|---|
| 板上只有焊盘位置有油墨,无字符 | 把 .GTP 当丝印发出去了 | 检查文件后缀是 GTO 还是 GTP |
| 底层字符在正面看是正的,翻过来是反的 | 底层丝印未镜像或误改镜像 | 正常应镜像,从背面看为正 |
| 板子做出来尺寸偏大 25.4 倍或偏小 | 单位混用,毫米/英寸搞错 | 检查 Gerber 文件头%MOMM*%或%MOIN*% |
| 焊盘被油墨盖住一圈 | 阻焊开窗余量为 0 或负值 | 检查板设置里的阻焊余量,正常 0.05~0.1mm |
| 板框位置多了一条直线切口 | Edge.Cuts 层混入非轮廓图形 | 清空该层的标注线、文字、尺寸 |
| 长槽做成了两个圆孔 | 工厂不支持 G85 槽孔指令 | 提前确认,或改成一排连孔 |
| 内层走线错位 | 内层编号顺序与叠层说明不符 | 压缩包里附图说明每层对应关系 |
| 文件读取报错,工厂打不开 | X2 属性行不被老 CAM 支持 | 关闭 X2 扩展重新导出 |
5.2 三个典型翻车场景的复盘
第一个场景是丝印与钢网互换。某同学第一次打样,看到.GTP里有规整的方块图形,误以为是“贴片元件的丝印框”,就把.GTP和.GTS一起发给了板厂,.GTO反而没发。板厂按.GTP里的图形做丝印,做出来整块板上只有焊盘位置的白块,元件位号全无。复盘结论很朴素:.GTP描述的是钢网开孔,形状和焊盘一样,看着像“方框”是因为贴片焊盘本来就是矩形。判断方法很简单——打开.GTO看有没有字符,有字符的那层才是丝印。
第二个场景是阻焊层被理解为“盖油层”。有人为了让某块区域不盖油,在阻焊层里画了一个实心矩形,导出后发现这个区域确实露铜了,就觉得“画对了”。但同一个逻辑下,他为了让另一块区域盖油,在阻焊层里又画了一个矩形,结果那块区域也被开窗露铜了。原因就是阻焊层只表达“开窗”,不表达“盖油”。要让某处盖油,正确做法是什么都不画。这个认知纠正一次,后面所有阻焊相关的操作都不会再错。
第三个场景是钻孔文件与 Gerber 的原点不一致。导出 Gerber 时原点在图纸左下,导出钻孔时原点被改到了某个过孔上,结果钻孔文件里的坐标整体偏移,做出来的板子孔位全部错位。这个问题的隐蔽性在于两个文件单独看都正常,只有叠在一起才暴露。规避方法是导出前把原点统一设到板框左下角的原点标记,导完之后用 Gerber 查看器把钻孔层叠到铜箔层上,肉眼确认孔在焊盘正中心。
5.3 出图前的自检流程
我现在每次打样前都走这五步,从没出过层相关的错误。
第一步,导完之后先把所有文件的体积过一遍。某个文件是 0 字节或者只有几百字节,说明这层是空的,要么本来就该空(比如单面板的.GBL),要么是没勾对。第二步,用 Gerber 查看器把所有层叠在一起看总览,重点看丝印有没有压焊盘、钻孔有没有落在焊盘外、板框是不是闭合矩形。第三步,单独看.GTS和.GBS,确认开窗区域只在焊盘和测试点上,没有意外的大面积开窗。第四步,确认.GTP与.GTL里的贴片焊盘位置完全重合,这一条决定钢网开得对不对。第五步,把钻孔层和铜箔层叠加,逐一看过孔和插件孔是否居中。
这五步加起来不到十分钟。跟返工一次板子要等一周相比,这十分钟的性价比没有对手。
最后分享一个我自己用着很顺的小习惯:在 KiCad 的板设置里把“阻焊余量”和“助焊余量”这两个值写在图纸的User.Drawings层上,导出时这层不发给工厂,但自己每次打开工程都能看到当前参数。曾经有一次我从别的工程复制了一块板过来,把余量带成了 0,就是靠这行字在出图前发现的。