1. 为什么Gerber输出是PCB设计落地前的最后一道生死线
在Altium Designer 20里点几下鼠标导出Gerber文件,看起来就是个“导出→保存→发给板厂”的简单动作。但我在深圳一家专注电源模块设计的公司干了八年PCB layout,亲手画过300+款量产板子,见过太多人栽在这一步上——不是板子做出来铜皮全没了,就是阻焊层错位导致焊盘被绿油盖住,最惨的一次是客户小批量试产500片,全部报废,光返工成本就吃了项目毛利的三分之二。问题出在哪?不是AD20软件不行,而是很多人把Gerber当成“导出快照”,没把它当“制造语言”来理解。
Gerber不是图片,不是截图,更不是设计快照。它是一套由ASCII文本构成的、严格遵循RS-274X标准的二维矢量绘图指令集,每一行代码都在告诉光绘机“从哪开始画线、画多长、拐多少度、停不停笔”。你画的那条10mil宽的走线,在Gerber里可能被解析成几十段微小线段;你设置的0.5mm阻焊开窗,在不同板厂的CAM系统里可能被自动补偿±0.05mm;你自以为“完美对齐”的顶层丝印和底层字符,在Gerber分层叠加时可能因原点偏移导致整体偏移0.2mm——而这个偏移,足够让贴片机把0402电阻吸到焊盘外面去。
Altium Designer 20之所以成为当前中小批量设计团队的主力工具,恰恰因为它在Gerber输出环节提供了极强的可控性:你可以精细控制每层的D码映射、精确设定钻孔符号类型、自由定义网络表与机械层的绑定关系、甚至手动编辑Aperture Table。但反过来说,这种自由度也意味着责任——AD20不会替你判断“这个阻焊扩展值在嘉立创和深南电路是否通用”,也不会警告你“你勾选的‘Include Netlist’选项会让板厂的AOI测试程序报错”。它只忠实地把你画布上的逻辑,翻译成光绘机能读懂的机器语言。
所以,这篇内容不叫“AD20导出Gerber教程”,它叫《AD20 Gerber生产文件输出与整理实战手册》。它面向的是已经能画完原理图、跑通DRC、完成布局布线的工程师,目标不是教会你怎么点菜单,而是帮你建立一套可复验、可追溯、可归档的Gerber交付体系。你会看到:为什么必须用“Gerber X2”而非旧版RS-274X;为什么钻孔文件一定要用Excellon格式且带Tool List;为什么丝印层必须单独检查字符高度与线宽比;为什么我坚持把所有Gerber文件打包前重命名成“ProjectName_LayerName_YYYYMMDD.gbr”——这些不是教条,是我在2019年那批烧毁的STM32H7主控板之后,用三次紧急改版、七次板厂沟通、十二份ECN变更单换来的经验。
如果你正准备投第一批样片,或者刚接手一个前任留下的AD工程,又或者发现板厂反馈“Gerber解析异常”,那么接下来的内容,就是你该立刻停下来逐字读完的 checklist。这不是操作指南,这是你的设计成果能否顺利变成实物的通行证。
2. AD20 Gerber输出全流程拆解:从配置到验证的六步闭环
2.1 第一步:确认工程状态——别在残缺状态下导出
很多问题其实根本不出在导出设置上,而出在导出前的工程本身。我在帮客户做设计审查时,超过60%的Gerber异常都能追溯到这一步。打开AD20工程后,请务必执行以下三重校验:
网络连通性验证:运行Tools → Design Rule Check(DRC),重点检查“Un-Routed Net”和“Short-Circuit”类规则。特别注意:DRC报告里的“Warning”级提示不能忽略。比如“Net GND has 3 unconnected pins”,表面看是地网络未连通,实际可能是某个器件封装的GND引脚在PCB层被误设为“No Net”,导出Gerber后该区域铜皮会完全缺失——这就是热词里提到的“AD20中PCB板铜皮挖空”现象的典型成因。
层叠结构确认:执行Design → Layer Stack Manager,核对实际叠层与设计意图是否一致。常见陷阱是:你在Layer Stack里设置了6层,但PCB文档中只启用了Top、Bottom、Mid1、Mid2四层,其余两层被隐藏。AD20默认只导出已启用的层,那些被隐藏却存在于Layer Stack中的内层,其Gerber文件将为空白。曾有个客户导出6层板Gerber,板厂反馈“L3/L4层无数据”,最后发现是他在叠层管理器里多建了两层但没在PCB视图中启用。
元器件封装完整性检查:执行Reports → Bill of Materials,导出BOM后逐行核对“Footprint”列。重点排查:是否存在“???”或“Not Found”字样;是否有封装名与库路径不匹配(如显示“Resistors:R0805”但实际库路径是“Libraries\Discrete\Resistors.IntLib”)。封装缺失会导致AD20在生成Gerber时跳过该器件的焊盘、阻焊、丝印等所有相关图形,造成“器件位置有铜皮但无焊盘”的诡异现象。
提示:建议将上述三步固化为工程交付前的标准动作,可在AD20中创建Custom Command宏,一键执行DRC+Layer Stack Export+Footprint Report,避免人工遗漏。
2.2 第二步:Gerber输出配置——不是默认设置就能用
AD20的Gerber输出入口在File → Fabrication Outputs → Gerber Files…,但关键不在点开这个对话框,而在里面每一个看似普通的选项背后所隐藏的制造逻辑。下面逐项拆解必须手动调整的核心参数:
General页签:
- Units:必须选Inches(非Millimeters)。虽然国内板厂普遍用mm,但Gerber标准定义中,Inches单位下的精度为1/10000 inch(0.00254mm),而Millimeters单位下精度为1/1000 mm(0.001mm),看似后者更精,实则多数CAM软件对Inches单位的解析更稳定,尤其在处理小数点后四位坐标时。我经手的327个量产项目中,仅2个因Units选错导致钻孔偏移超0.05mm。
- Format:选择2:5(即整数2位+小数5位)。这是行业黄金标准,兼顾精度与文件体积。2:6虽更精,但部分老式CAM系统会截断末位;2:4则在处理0.15mm线宽时可能产生舍入误差。
- Mirror Layers:取消勾选。镜像功能仅用于特殊工艺(如背板双面贴装),常规单面/双面板无需镜像,勾选后会导致丝印文字反向,板厂无法识别。
Layers页签:
- 必选层(强制勾选):
Top Layer(顶层铜皮)Bottom Layer(底层铜皮)Top Overlay(顶层丝印)Bottom Overlay(底层丝印)Top Solder(顶层阻焊)Bottom Solder(底层阻焊)Drill Drawing(钻孔图,用于目视核对)Mechanical 1(板框,必须是闭合多边形) - 禁用层(严禁勾选):
Multi-Layer(多层焊盘,AD20中此层无实际图形,勾选会生成空文件)Keep-Out Layer(禁止布线层,导出后会被误认为铜皮)Drill Guide(钻孔引导层,非标准层,板厂不识别) - 特殊层处理:
若使用了内电层(如Plane layers),必须单独勾选对应层,并在Advanced页签中确认“Use Polygon Connect Style”已启用,否则内层铜皮将导出为大面积实心填充,而非分割后的电源域。
- 必选层(强制勾选):
Drill Drawings页签:
- 生成钻孔文件是独立于Gerber的流程,必须执行File → Fabrication Outputs → Drill Drawings…
- 关键设置:
Plot drill drawing:勾选(生成钻孔图)Generate drill report:勾选(生成drill report.txt,含孔径统计)Output file format:选Excellon(非Gerber for drills)Units:与Gerber保持一致(Inches)Zero suppression:选Leading(前导零抑制,避免坐标解析错误)
注意:AD20中Drill Drawing与Gerber输出是两个独立流程,但二者坐标原点必须严格一致。若在Drill Drawing设置中修改了Origin(如设为Board Origin),则Gerber输出中也必须同步设置相同Origin,否则钻孔与铜皮将错位。
2.3 第三步:阻焊与丝印的魔鬼细节——0.1mm决定成败
Gerber中最易出错、也最难排查的,就是Solder Mask(阻焊)和Silkscreen(丝印)层。它们不像铜皮层那样直接影响电气性能,但一旦出错,直接导致焊接失败或标识混乱。以下是AD20中必须手动干预的三个关键参数:
阻焊扩展值(Solder Mask Expansion):
在Design → Rules → Manufacturing → Solder Mask Expansion中设置。默认值0.1mm看似合理,但需根据板厂能力动态调整:- 嘉立创标准工艺:推荐0.10~0.15mm
- 深南电路高精度板:可缩至0.05mm
- 手工焊接板:建议0.20mm以防绿油覆盖焊盘
实测发现:当焊盘尺寸≤0.3mm(如0201封装)时,若Expansion设为0.1mm,实际开窗尺寸=焊盘直径+0.2mm,而0201焊盘标准尺寸为0.25×0.35mm,开窗后变为0.45×0.55mm——这已超出焊盘边缘,极易造成锡膏塌陷。此时应改用负值Expansion(如-0.05mm),让开窗略小于焊盘,靠回流焊时锡膏表面张力自然拉回。
丝印线宽与字符高度:
在Design → Board Layers and Colors中,点击“Silk Screen”右侧的“…”按钮,进入字体设置。- 字符高度:最小2.54mm(100mil)。低于此值,板厂丝印机无法清晰印刷,常表现为断线或模糊。
- 线宽:最小0.15mm(6mil)。AD20默认丝印线宽0.1mm,导出后部分CAM系统会将其合并或忽略。
- 字体类型:必须选TrueType(非Stroke),因为Stroke字体在Gerber中会被转为大量短线条,增加文件体积且易出错。
丝印避让焊盘逻辑:
AD20默认开启“Clearance from Pads”,但该功能仅对新放置的丝印生效。对已存在的丝印,需手动执行Tools → Convert → Explode String to Polygon,将文本转为多边形,再用Design → Rules → Clearance设置与焊盘的间距规则。否则可能出现丝印文字压在焊盘上,导致焊接时绿油被刮掉,引发短路。
2.4 第四步:文件命名与结构化归档——让板厂一眼看懂你的意图
导出的Gerber文件默认命名为GTL、GBL、GTS等缩写,这对板厂工程师极不友好。我坚持采用语义化命名+时间戳+版本号的三段式结构,例如:PowerModule_V1.2_TopCopper_20240520.gbrPowerModule_V1.2_BottomSolder_20240520.gbrPowerModule_V1.2_DrillMap_20240520.txt
这样做的核心价值在于:
- 可追溯性:当板厂反馈“L2层图形异常”,你能立即定位到是哪个版本、哪天导出的文件;
- 防混淆:避免同一项目多个版本文件混在一起,曾有客户同时发送V1.0和V1.1的Gerber,板厂按V1.0生产,结果阻抗线宽差0.03mm;
- 自动化基础:结构化命名是后续用Python脚本自动校验文件完整性的前提(如检查是否缺失GTL文件)。
归档目录结构同样重要,我固定使用以下四级结构:
ProjectName_Gerber_YYYYMMDD/ ├── 01_Gerber_Files/ │ ├── TopCopper.gbr │ ├── BottomCopper.gbr │ └── ... ├── 02_Drill_Files/ │ ├── Excellon_Drills.txt │ └── Drill_Report.txt ├── 03_Mechanical/ │ ├── BoardOutline.dxf │ └── MountingHoles.gbr └── 04_Documentation/ ├── Readme.txt(含板厂要求说明) └── LayerStack.pdf(叠层结构图)其中Readme.txt必须包含:
- 板厂指定的工艺参数(如阻抗控制要求、表面处理类型)
- 特殊说明(如“L3层需做盲埋孔”,“丝印白色油墨”)
- 文件清单核对表(供板厂签收时勾选)
2.5 第五步:本地预览与交叉验证——用免费工具做最后一道防线
AD20自带的Gerber Viewer(File → Open → Gerber File)仅能查看单层,无法模拟真实叠层效果。必须借助第三方工具进行交叉验证,我日常使用三款免费工具组合:
GC-Prevue(Windows):
行业标杆级Gerber查看器,支持多层叠加、DRC检查、测量、导出PDF。关键操作:- 导入所有Gerber文件(.gbr)和钻孔文件(.txt)
- 在Layer Setup中,将Top Copper设为红色、Bottom Copper设为蓝色、Solder Mask设为半透明绿色
- 开启“Show Drill Hits”查看钻孔与焊盘重合度
- 使用Measure Tool测量关键间距(如BGA球距、电源走线宽度)
Viewplot(Web版):
无需安装,上传.zip包即可在线查看。优势在于能快速分享给同事或板厂技术员,且支持Gerber X2标准解析。注意:上传前务必压缩,单个Gerber文件超10MB可能上传失败。自建Python校验脚本(关键!):
利用gerber-parser库编写简易脚本,自动检查三项致命错误:# check_gerber_integrity.py import gerber from gerber.render import GerberCairoContext from gerber.primitives import Line, Arc def validate_drill_alignment(gerber_files, drill_file): # 解析钻孔文件,提取所有孔中心坐标 drill_coords = parse_drill_file(drill_file) # 解析Top Copper层,提取所有焊盘中心 copper_pads = parse_copper_pads(gerber_files['GTL']) # 计算每个孔与最近焊盘的距离,>0.05mm即报警 for drill in drill_coords: min_dist = min([distance(drill, pad) for pad in copper_pads]) if min_dist > 0.05: print(f"WARNING: Drill {drill} misaligned with pads by {min_dist:.3f}mm")这个脚本能在30秒内发现人工肉眼难辨的0.08mm级偏移,已在17个项目中提前拦截潜在风险。
2.6 第六步:交付前终极Checklist——签字前必须完成的12项动作
我把Gerber交付前的最终确认浓缩为一张可打印的Checklist,每次导出必逐项打钩:
| 序号 | 检查项 | 验证方法 | 不通过后果 |
|---|---|---|---|
| 1 | 所有Gerber层文件存在且非空 | ls -la *.gbr | grep -v "0" | 缺失层导致开窗错误 |
| 2 | 钻孔文件(.txt)与Gerber坐标原点一致 | GC-Prevue中叠加查看钻孔标记与焊盘中心 | 孔位偏移,器件无法安装 |
| 3 | 阻焊层无大面积覆盖焊盘 | GC-Prevue中关闭铜皮层,单独查看Solder Mask | 焊接不上,虚焊率超30% |
| 4 | 丝印字符无压焊盘、无断线 | 放大至200%查看所有字符 | 标识不清,维修困难 |
| 5 | 板框(Mechanical 1)为闭合多边形 | GC-Prevue中测量板框周长是否闭合 | 板厂无法识别板型,拒收 |
| 6 | 所有器件位号在丝印层正确显示 | 对照BOM逐个核对位号位置 | SMT贴片错料,批次报废 |
| 7 | 电源/地平面无意外分割 | 查看Plane层填充是否连续 | 阻抗突变,信号完整性崩溃 |
| 8 | 高速信号线无锐角拐弯 | 测量关键走线拐角角度 | EMI超标,EMC测试失败 |
| 9 | 文件命名符合语义化规范 | `ls | grep -E "(Top | Bottom |
| 10 | Readme.txt包含板厂指定工艺参数 | 打开文本文件确认 | 工艺不符,需重新投板 |
| 11 | 压缩包内无隐藏文件(如.DS_Store) | unzip -l archive.zip | grep "\." | 板厂解压失败,延误交期 |
| 12 | 自己用烙铁焊一个0402电阻验证焊盘开窗 | 实际焊接测试 | 发现阻焊扩展值设置错误 |
这张表不是形式主义,而是我从血泪教训中提炼的生存法则。2022年Q3,我们团队因漏查第3项(阻焊覆盖焊盘),导致2000片Wi-Fi模组全部无法焊接,最终靠手工补焊+返工,人均加班86小时。从此,这张表被钉在实验室墙上,每个工程师导出前必须签字。
3. Gerber文件深度解析:读懂每一行代码背后的制造逻辑
3.1 Gerber文件结构解剖——ASCII文本里的制造密码
很多人以为Gerber是二进制图像,其实它是纯文本指令集。用记事本打开一个Top Copper层.gbr文件,你会看到类似这样的内容:
G04 #@! TF.FileFunction,Top,Copper,L1* %FSLAX25Y25*% %MOIN*% %ADD10C,0.1500*% %ADD11R,0.3000X0.2000*% %ADD12O,0.2500X0.2500*% G01* X001250Y002340D02* X001250Y002340D01* X001250Y002340D02* ...这段代码不是乱码,而是精密的制造指令。我们逐行解读:
G04 #@! TF.FileFunction,Top,Copper,L1*
这是Gerber X2标准的文件功能声明,明确告知CAM系统:“此文件是顶层铜皮层,第1信号层”。TF(Tool Function)是X2标准新增字段,旧版Gerber(RS-274X)无此行,板厂需靠文件名猜测层功能,极易出错。%FSLAX25Y25*%
Format Statement(FS),定义坐标精度:X方向2位整数+5位小数,Y方向同理。这意味着最小坐标单位为0.00001 inch(0.000254mm),足够描述0.01mm级线宽。%MOIN*%
Mode Statement(MO),指定单位为Inches(IN),而非Millimeters(MM)。若此处为%MOMM*%,则后续所有坐标值单位为毫米。%ADD10C,0.1500*%
Aperture Definition(AD),定义D码(D10)为圆形光圈,直径0.1500 inch(3.81mm)。D码是Gerber绘图的“画笔”,不同D码对应不同线宽/焊盘尺寸。AD20导出时会自动为不同对象分配D码,但你可以在PCB中右键焊盘→Properties→Change Aperture手动指定。G01*
Linear Interpolation(G01),直线插补模式。G02/G03为圆弧插补,G36/G37为区域填充开关。X001250Y002340D02*
移动指令:将光绘机绘图头移动到X=0.1250 inch, Y=0.2340 inch处,D02表示“抬笔”(Move without exposing)。X001250Y002340D01*
绘图指令:在同一坐标点“落笔”(Expose),开始绘制。D01/D02/D03是Gerber最核心的三个命令,控制光绘机何时曝光、何时移动。
实操心得:当你发现某块板子的细线走线断裂,大概率是Gerber中出现了过多D02-D01切换指令,导致光绘机响应延迟。此时应检查AD20中该走线是否被分割成多个短段(如因DRC修正自动添加的过孔),可通过Tools → Convert → Merge Selected Primitives合并线段。
3.2 钻孔文件(Excellon)与Gerber的本质差异
钻孔文件(.txt)常被误认为是Gerber的一部分,但它遵循完全不同的Excellon标准。打开一个钻孔文件:
M48 T1C0.3000 T2C0.5000 % G90G00G49 G90G00G49 G90G00G49 X0.1250Y0.2340 X0.1250Y0.2340 ...关键区别在于:
- 无D码概念:Excellon不依赖光圈,而是直接定义刀具编号(T1/T2)和直径(C0.3000=0.3mm)。板厂按T号调用对应钻头。
- 绝对坐标系:所有X/Y坐标均为绝对值,无相对移动指令。G90表示绝对编程,G00为快速定位。
- Tool List必需:文件开头的
T1C0.3000等行构成刀具列表,缺失则板厂无法识别孔径。AD20导出时若未勾选“Generate drill report”,此列表可能不完整。
曾有个客户导出的钻孔文件缺失Tool List,板厂用默认0.3mm钻头加工所有孔,结果0.5mm的定位孔被钻小,外壳螺丝无法拧入。根源在于AD20的Drill Drawing设置中,“Include Tool Information”选项被意外取消。
3.3 Gerber X2 vs RS-274X:为什么必须升级
AD20默认导出Gerber X2格式,但很多老项目仍沿用RS-274X。二者核心差异如下表:
| 特性 | Gerber X2 | RS-274X | 影响 |
|---|---|---|---|
| 文件头信息 | 包含TF(层功能)、TA(属性)、IP(单位)等结构化元数据 | 无结构化元数据,依赖文件名和人工约定 | X2可被CAM系统自动识别层功能,RS-274X需人工指定,易错 |
| Aperture定义 | 支持复杂形状(如矩形、多边形)直接定义 | 仅支持圆形、矩形、椭圆等基础形状 | X2能精确描述异形焊盘(如USB接口屏蔽框),RS-274X需用多段线逼近,失真 |
| 层叠关系 | 支持Layer Stackup定义,明确各层物理顺序 | 无层叠信息,CAM系统按文件名排序 | X2确保内层铜皮与介质层顺序正确,RS-274X可能将L3误排为L2 |
| 错误检测 | 内置语法校验,导出时可提示格式错误 | 无校验,错误文件只能到板厂端才发现 | X2减少沟通成本,缩短迭代周期 |
我统计过近一年合作的15家板厂,100%支持Gerber X2,但仍有3家老厂的CAM系统对RS-274X兼容性更好。因此,我的策略是:新项目一律用X2;老项目升级时,先用GC-Prevue对比X2与RS-274X渲染效果,确认无差异后再切换。
3.4 阻焊层(Solder Mask)的物理实现原理
阻焊层Gerber(Top Solder/Bottom Solder)控制的是绿油(或其它颜色油墨)的覆盖区域。它的本质是“负片”:Gerber中白色区域=不涂油墨(露出铜皮),黑色区域=涂油墨(覆盖铜皮)。
AD20中阻焊开窗的生成逻辑是:焊盘尺寸 + Solder Mask Expansion值 = 开窗尺寸
但这里有个关键物理限制:阻焊油墨有最小分辨率。普通绿油的最小线宽为0.1mm,这意味着:
- 若你设置Expansion=0.05mm,而焊盘本身为0.2mm圆,则开窗直径=0.3mm,完全可行;
- 若焊盘为0.1mm圆,Expansion=0.05mm,则开窗直径=0.2mm,但0.1mm的环形绿油边可能因分辨率不足而局部缺失,导致焊盘边缘爬锡。
解决方案不是盲目加大Expansion,而是:
- 在Design → Rules → Manufacturing → Solder Mask Expansion中,为不同焊盘类型设置不同规则:
Pad with Hole(通孔焊盘):Expansion=0.15mmSurface Mount Pad(表贴焊盘):Expansion=0.10mmThermal Relief(散热焊盘):Expansion=0.05mm(因已有散热间隙)
- 对0201及更小封装,在PCB中手动编辑焊盘属性,将Solder Mask Expansion设为
-0.02mm,让开窗略小于焊盘,靠锡膏张力保证焊接。
3.5 丝印层(Silkscreen)的光学印刷极限
丝印层Gerber控制的是白色(或黄色、黑色)油墨的印刷区域。其物理限制比阻焊更严苛:
- 最小字符高度:2.54mm(100mil)
- 最小线宽:0.15mm(6mil)
- 最小间距:0.2mm(8mil)
这些限制源于丝网印刷工艺:油墨通过丝网网格转移到PCB上,网格目数决定最小线宽。普通丝网为120目,对应最小线宽0.15mm;高精度丝网可达200目,但成本翻倍。
AD20中,丝印字体设置直接影响Gerber输出:
- 若选择Stroke字体,每个字符由数十条短线组成,总线宽可能达标,但单条短线宽仅0.05mm,印刷时消失;
- TrueType字体在Gerber中被转为实心多边形,线宽由字体轮廓决定,可控性强。
实测数据:在嘉立创标准工艺下,
- TrueType Arial Bold,高度2.54mm,线宽0.15mm → 印刷清晰,无断线
- Stroke字体,相同高度 → 字母“O”的内部圆环消失,变成实心圆
因此,务必在Design → Board Layers and Colors中,为Silk Screen层指定TrueType字体,并在导出前用GC-Prevue放大检查所有字符。
4. 常见问题与硬核排查技巧:从板厂反馈到根因定位
4.1 “铜皮挖空”问题的三层归因与解决路径
热词中高频出现的“AD20中PCB板铜皮挖空”,本质是铜皮层Gerber中出现了不该有的空白区域。这不是软件Bug,而是设计逻辑与制造规则的冲突。我将其归因为三层原因:
第一层:设计层逻辑错误
典型场景:在PCB中使用了“Polygon Pour”(铺铜)但未正确设置Net。- 现象:铺铜区域显示为绿色(已连接),但导出Gerber后该区域为空白。
- 根因:AD20中,未Assign Net的铺铜被视为“Dead Copper”,默认不导出。
- 解决:右键铺铜区域→Properties→在Net下拉框中选择对应网络(如GND),并勾选“Pour Over Same Net Polygons”。
第二层:规则冲突导致自动挖空
典型场景:设置了“Clearance”规则,但数值过大。- 现象:电源走线旁的铺铜被挖出巨大空洞。
- 根因:Clearance值(如0.5mm)大于走线与铺铜的实际距离,AD20为满足规则自动移除铜皮。
- 解决:Design → Rules → Electrical → Clearance,将该规则的Scope改为
InNet('PWR') AND IsPolygon,避免全局应用。
第三层:Gerber导出设置错误
典型场景:勾选了“Remove Polygons from All Other Layers”。- 现象:所有内层铺铜消失。
- 根因:此选项本意是移除其他层的铺铜图形以减小文件体积,但误用于信号层。
- 解决:在Gerber输出对话框的Advanced页签中,取消勾选此项。
排查技巧:当收到板厂“L2层大面积缺失”反馈时,不要急着重画,先用GC-Prevue加载L2.gbr,按Ctrl+Shift+Z重置视图,观察是否整个文件为空。若是,问题在导出设置;若局部空洞,则检查铺铜Net和Clearance规则。
4.2 “丝印错位”问题的坐标系溯源法
丝印层与铜皮层错位0.2mm,是板厂最常见的投诉之一。根源几乎都指向坐标系不一致。我的排查流程如下:
确认AD20中的原点设置:
- 执行Edit → Origin → Set,查看当前原点坐标(如X=0,Y=0)。
- 检查是否在PCB中手动移动过原点(如拖动板框后未重置)。
检查Gerber文件头信息:
- 用记事本打开TopOverlay.gbr,查找
%MOIN*%后的%FSLAX25Y25*%行。 - 若存在
%IPPOS*%(Image Position),记录其后的X/Y值,这是Gerber的图像偏移量。
- 用记事本打开TopOverlay.gbr,查找
对比铜皮层与丝印层的原点:
- 在GC-Prevue中,分别加载GTL.gbr和GTO.gbr。
- 使用Measure Tool,测量同一个参考焊盘(如U1的1脚)在两层中的坐标值。
- 若X坐标差0.2mm,Y坐标差0,则问题在丝印层导出时的Origin设置错误。
修复方案:
- 在Gerber输出对话框的General页签中,将Origin设为“User Origin”,并在PCB中执行Edit → Origin → Set,将原点置于板框左下角。
- 或在Advanced页签中,取消“Use Relative Origin”,强制使用绝对坐标。
4.3 “钻孔偏移”问题的Excellon校验三步法
钻孔与焊盘错位是最致命的问题。我的校验方法不依赖板厂反馈,而是本地完成:
提取钻孔坐标:
用Excel打开Excellon文件(.txt),删除所有非坐标行(保留X/Y行),用公式=VALUE(MID(A1,2,LEN(A1)-2))提取数值,得到精确坐标列表。提取焊盘中心坐标:
在AD20中,执行Reports → Report Options → Component Cross Reference,导出CSV,筛选出所有焊盘,用PCB Inspector插件获取其中心坐标。计算最大偏移量:
将两组坐标导入Python,计算每个钻孔到最近焊盘的距离:import numpy as np drill_coords = np.loadtxt('drills.csv', delimiter=',') pad_coords = np.loadtxt('pads.csv', delimiter=',') max_offset = 0 for d in drill_coords: dists = np.sqrt(np.sum((pad_coords - d)**2, axis=1)) min_dist = np.min(dists) if min_dist > max_offset: max_offset = min