Gerber文件是一种指示光绘机绘制的脚本文件,用于制造PCB电路板,下面介绍Gerber文件的格式,并分析嘉立创的立创EDA(EasyEDA)导出的Gerber文件格式的特征。
文件组成
一般来说,EDA输出的制造文件包含以下内容:
- Routing(丝印层):如果是两层以上板,将分为上、下或中间走线层
- Silkscreen(丝印层):多层板有上、下两层,如果底层没有丝印,则不用出;
- Plane(电源、地平面层):只是针对多层板而言(以负片输出);
- Paste Mask(SMD贴片层):主要针对PCB板上的SMD元件。如果板全部放置的是Dip(通孔)元件,这一层就不用输出Gerber文件了。在将SMD元件贴PCB板上以前,必须在每一个SMD焊盘上先涂上锡膏,在涂锡用的钢网就一定需要这个Paste Mask文件,菲林胶片才可以加工出来。Paste Mask层的Gerber输出最重要的一点要清楚,即这个层主要针对SMD元件,同时将这个层与下面即将介绍的Solder Mask作一比较,弄清两者的不同作用,因为从菲林胶片图中看这两个胶片图很相似。
- Solder Mask(主焊层);主要用途是保证被选项(比如元件脚焊盘和某些特殊的铜皮等)在PCB板上不被绿油覆盖而直接以铜皮的形式出现在板上,凡是需要焊接与贴的对象都一定要选择,简单地讲,在设计中如果希望某对象以裸铜的形式出现在板上,那么在输出主焊层就可以把它选上。对于主焊层Gerber,输出选项Pads(焊盘)一定需要选择,但是主焊层的Pads(元件脚焊盘)跟PastMask中不一样,它包括了SMD和Dip两种焊盘,而PastMask却只包含SMD焊盘。
- NC Drill(NC钻孔层):对于有通孔的PCB板设计,NC Drill输出文件必不可少的,没有这个文件就没法给PCB板钻孔。
- Drill Drawing(钻孔参考图层):钻孔参考图是为钻孔提供的一个数据参考图。输出该层时要注意在进行选项设置时,有钻孔的对象一般都需要选上,因为它的输出主要就是针对钻孔对象,比如Pads(焊盘)与Vias(过孔)等。
文件扩展名
Gerber文件是一个文本文件,没有强制规定的后缀名,但是一般约定如下:
扩展名 | 描述 |
---|---|
.APR | 光圈文件 Aperture Data |
.EXTREP | 额外文件(比如中心点位置) |
.REP | 光圈表文件 |
.RUL | 规则表 |
.GKO | Keep Out Layer 禁止布线层(可做板子外形) outline |
.GTO | Top Overlay 顶层丝印 silkscreen |
.GBO | Bottom Overlay 底层丝印 silkscreen |
.GPT | Top Pad Master 顶层主焊盘 Parts |
.GPB | Bottom Pad Master 底层主焊盘 Parts |
.GTS | Top Solder 顶层阻焊(也叫防锡层,负片) solder mask |
.GBS | Bottom Solder 底层阻焊(也叫防锡层,负片) solder mask |
.GTL | Top Layer 顶层走线 signal |
.GBL | Bottom Layer 底层走线 signal |
.GTP | Top Paste 顶层表贴(做钢网用) |
.GBP | Bottom Paste 底层表贴(做钢网用) |
.G1 | MidLayer1 内部走线层1 |
.G2 | MidLayer2 内部走线层2 |
.G3 | MidLayer3 内部走线层3 |
.G4 | MidLayer4 内部走线层4 |
.GP1 | Internal Plane1 内平面1(负片) |
.GP2 | Internal Plane2 内平面2(负片) |
.GM1 | Mechanical1 机械层1 |
.GM2 | Mechanical2 机械层2 |
.GM3 | Mechanical3 机械层3 |
.GM4 | Mechanical4 机械层4 |
.GD1 | Drill Drawing 钻孔数据 |
.DRL | Drill Data 钻孔数据 |
.TXT | Drill Position 钻孔位置 |
.DRR | Drill Tool size 钻孔尺寸 |
.LDP | Drill Report 钻孔报告 |
格式特征
首先来看使用立创EDA导出的一个四层板的Gerber文件列表:
Gerber_DrillDrawingLayer.GDD
Drill_NPTH_Through.DRL
Drill_PTH_Through.DRL
Drill_PTH_Through_Via.DRL
Gerber_BoardOutlineLayer.GKO
Gerber_DocumentLayer.GDL
Gerber_TopLayer.GTL
Gerber_TopPasteMaskLayer.GTP
Gerber_TopSilkscreenLayer.GTO
Gerber_TopSolderMaskLayer.GTS
Gerber_InnerLayer1.GP1
Gerber_InnerLayer2.G2
Gerber_BottomLayer.GBL
Gerber_BottomSilkscreenLayer.GBO
Gerber_BottomSolderMaskLayer.GBS
FlyingProbeTesting.json
How-to-order-PCB.txt
使用KiCad中的JLC-Plugin导出的zip文件列表:
ProjectName-NPTH.drl
ProjectName-NPTH-drl_map.gbr
ProjectName-PTH.drl
ProjectName-PTH-drl_map.gbr
ProjectName-Edge_Cuts.gm1
ProjectName-F_Cu.gtl
ProjectName-F_Mask.gts
ProjectName-F_Paste.gtp
ProjectName-F_Silkscreen.gto
ProjectName-GND_Cu.g2
ProjectName-POWER_Cu.g3
ProjectName-B_Cu.gbl
ProjectName-B_Mask.gbs
ProjectName-B_Paste.gbp
ProjectName-B_Silkscreen.gbo
可以看到基本是可以对上的:
- 钻孔文件需要
NPTH
(非镀通孔,不可导电的机械通孔)和PTH
(镀通孔)两类,实践证明只需要DRL
文件就行了 - 板子外形文件,立创EDA导出的是
GKO
而非gm1
(机械层1),实践证明使用gm1
文件也可以 - 底层最少都需要
GBL
(底层走线),GBO
(底层丝印),GBS
(底层阻焊)文件,立创EDA导出的文件中少了用于制造钢网的GBP
文件,顶层文件夹类似 - 中间铜层需要
Gx
或者GPx
(其中x为第x层,GP为负片);
文件名而言,立创EDA的文件名皆以Gerber_
或者Drill_
开头,满足以下正则表达式替换规则:
# 钻孔
[".*\-NPTH\.drl"]="s/.*\-NPTH\.drl$/Drill_NPTH_Through.DRL/"
[".*\-PTH\.drl"]="s/.*\-PTH\.drl$/Drill_PTH_Through.DRL/"
# 机械层
[".*\.gm([0-9]+)$"]="s/.*\.gm([0-9]+)$/Gerber_MechanicalLayer\1.GM\1/"
# 顶层
[".*\.gtl"]="s/.*\.gtl$/Gerber_TopLayer.GTL/"
[".*\.gtp"]="s/.*\.gtp$/Gerber_TopPasteMaskLayer.GTP/"
[".*\.gto"]="s/.*\.gto$/Gerber_TopSilkscreenLayer.GTO/"
[".*\.gts"]="s/.*\.gts$/Gerber_TopSolderMaskLayer.GTS/"
# 中间层
[".*\.gp([0-9]+)$"]="s/.*\.gp([0-9]+)$/Gerber_InnerLayer\1.GP\1/"
[".*\.g([0-9]+)$"]="s/.*\.g([0-9]+)$/Gerber_InnerLayer\1.G\1/"
# 底层
[".*\.gbl"]="s/.*\.gbl$/Gerber_BottomLayer.GBL/"
[".*\.gbo"]="s/.*\.gbo$/Gerber_BottomSilkscreenLayer.GBO/"
[".*\.gbs"]="s/.*\.gbs$/Gerber_BottomSolderMaskLayer.GBS/"
内容而言,KiCad和立创EDA的文件头不一样,分为Gerber类型的文件头和Drill钻孔类型两种特征的文件头。
立创EDA的Gerber类型的文件头特征形如:
G04 Layer: BottomLayer*
G04 EasyEDA Pro v2.2.32.3, 2024-12-16 11:18:35*
G04 Gerber Generator version 0.3*
G04 Scale: 100 percent, Rotated: No, Reflected: No*
G04 Dimensions in millimeters*
G04 Leading zeros omitted, absolute positions, 3 integers and 5 decimals*
其中需要关注的是Layer
字段,值与文件名中的层名相同,如Gerber_BottomLayer.GBL
的Layer
字段为BottomLayer
。
立创EDA的Drill类型的文件头特征形如:
;TYPE=PLATED
;Layer: PTH_Through
;EasyEDA Pro v2.2.32.3, 2024-12-16 11:18:35
;Gerber Generator version 0.3
其中需要关注的是TYPE
和Layer
字段,其中TYPE
有PLATED
(植锡)和NON_PLATED
(不植锡)两种,分别对应了PTH
(镀通孔)和NPTH
(非镀通孔),Layer
字段同上。
我写了一个Bash脚本KiCad2EasyEDAGerbe,可以自动修改KiCad导出的Gerber文件,使其模仿EasyEDA导出的Gerber文件特征。
参考
本文采用知识共享署名4.0国际许可协议(CC BY 4.0)进行许可