1. 这不是“查错”,而是硬件量产前的最后一道闸门:Gerber对比的本质与实战价值
你手里的PCB设计稿,在AD20里看起来天衣无缝,DRC跑完绿灯全亮,3D预览连焊盘弧度都精准得像手术刀切出来的一样——但等板子回来一上电,芯片不启动、信号抖得像心电图、甚至某个区域直接发烫冒烟。这时候翻出原始Gerber文件和工厂回传的生产资料一对比,才发现:顶层丝印层(GTO)里一个关键测试点标注被意外删掉了;内层电源平面(G2)在CAM350里叠加上去后,发现某处铜皮挖空区域比设计宽了0.15mm,刚好卡在最小安全间距临界值上;更隐蔽的是,钻孔文件(TXT)里第47号孔的孔径标注从0.3mm写成了0.35mm,而工厂按此加工,导致BGA封装的0.3mm焊球根本压不实。这些都不是设计软件能报出来的错误,它们藏在Gerber文件的二进制结构里,藏在不同软件对RS-274X标准的解析差异中,藏在工程师交接时那句“文件已发,没问题”的轻描淡写背后。
这就是我们今天要聊的“改版后检查硬件PCB生产资料的方法”——它不是教你怎么用CAM350点开两个文件然后肉眼扫一遍,而是一套有逻辑、有层次、有验证闭环的工程化动作。核心关键词Gerber,不是文件格式本身,而是整个PCB制造信息的载体;CAM350,不是个老旧的看图工具,而是你手上最锋利的“显微镜”和“尺子”;PCB,不是电路板的缩写,而是设计意图、制造能力、检验标准三者博弈后的物理实体;硬件,不是泛泛而谈的电子设备,而是由成千上万个微米级铜线、孔壁、阻焊定义的可靠系统;生产资料,不是一堆打包发给工厂的.zip文件,而是你对最终产品功能、寿命、良率签字画押的法律凭证。
这套方法,适合三类人:刚转正的硬件工程师,还在靠“老板说没问题就发出去”的阶段;做了五年板子却总在试产阶段反复改版的老手,想把问题前置到文件发出前;还有负责量产导入的FAE或质量工程师,需要一套可复现、可追溯、能写进SOP的检查流程。它不依赖昂贵的EDA许可证,不强制你学Python写脚本,也不要求你背下IPC-2221所有条款——它只依赖你对Gerber本质的理解、对CAM350底层操作的熟练度,以及一种近乎偏执的“这地方会不会出问题”的直觉。而这种直觉,恰恰来自一次又一次在CAM350里放大、叠加、测量、比对后留下的肌肉记忆。
2. 为什么必须“改版后”检查?——拆解Gerber文件的脆弱性与制造链的断点风险
很多人以为,只要在AD20里导出Gerber时勾选了“Generate Gerber Files”,再点一下“Export”,文件就天然正确。这是最大的认知陷阱。Gerber文件不是设计数据的“快照”,而是一次有损的、受多重因素影响的“翻译”。这个翻译过程,就是所有隐患的温床。
2.1 AD导出Gerber的三大隐性失真源
第一重失真,来自单位与精度的 silently 转换。AD系列软件默认导出为inch单位,精度设为5:5(整数位5位,小数位5位)。但很多国产PCB厂的CAM系统默认以mm为单位处理。当你导出一个0.127mm(即5mil)的线宽,在inch单位下是0.005000,四舍五入到5:5精度后仍是0.00500;可当工厂系统将其转为mm时,0.00500inch × 25.4 = 0.127mm,看似完美。但若你设计中用了0.126mm(4.96mil),AD导出为0.00496inch,5:5精度下存储为0.00496;工厂转mm后得0.125984mm,四舍五入取0.126mm——没问题。可如果工厂CAM系统内部计算用的是double浮点,而你的设计里恰好有一段0.1255mm的线,AD导出0.004942inch,5:5精度截断为0.00494inch,转mm后为0.125476mm,最终被判定为0.125mm。这0.0005mm的误差单看无意义,但在高频RF走线或高精度ADC参考路径上,累积效应会让相位偏移超出容忍范围。我去年帮一家医疗客户排查一个12位ADC采集漂移问题,最终定位到就是顶层阻焊层(GTS)里一个0.125mm宽的隔离带,因单位转换失真被蚀刻成了0.124mm,导致邻近地平面耦合增强,引入了额外的15mV共模噪声。
第二重失真,来自层叠顺序与文件命名的语义鸿沟。AD导出时,你可以自定义Gerber文件名,比如把顶层铜层命名为Top_Copper.gbr,但工厂的CAM系统只认标准后缀:.gbl(Bottom Layer)、.gtl(Top Layer)、.gts(Top Soldermask)。如果你在AD里导出时没勾选“Use standard extensions”,或者手动改了后缀,工厂系统可能把你的Top_Copper.gbr当成钻孔文件来处理——因为它的内容结构符合Gerber语法,但层属性完全错乱。更隐蔽的是,AD20在导出时,默认将“Mechanical 1”层映射为板框(Board Outline),但如果你在Mech1里画了文字标注,而工厂的CAM系统把Mech1也当板框处理,就会在锣槽时把文字区域一起铣掉。我们曾遇到一个案例:客户在Mech1层写了“TEST_ONLY”四个字,工厂按板框加工,结果整块PCB边缘被铣出四个凹坑,板子直接报废。
第三重失真,来自对象类型与填充算法的兼容性裂痕。AD在导出实心铜皮(Solid Fill)时,会生成大量短小的线段(Line Primitive)来逼近形状;而Allegro或Pads导出时,更倾向用多边形(Polygon)或区域填充(Region Fill)。CAM350读取AD导出的实心铜皮时,会忠实还原所有短线段,导致文件体积暴涨,且在做DRC检查时,短线段之间的微小间隙(<0.001mm)会被识别为“未连接”,触发误报。但如果你用CAM350的“Convert to Polygon”功能强行合并,又可能丢失原始设计意图——比如某处故意留的散热缝隙,被合并后变成实心铜皮,热仿真结果完全失效。这就像把一幅水墨画扫描成像素图再用矢量软件重绘,细节永远在转换中流失。
2.2 工厂端的“二次创作”:为什么回传的Gerber不是你的原稿?
你发给工厂的Gerber,只是制造指令的“草稿”。工厂的CAM工程师拿到后,要做三件事:一是工艺适配,比如你的设计线宽是4mil,但工厂最小线宽能力是4.5mil,他们会在不改变电气连接的前提下,整体加粗0.25mil;二是DFM修正,比如你在BGA区域画了0.1mm的阻焊开窗,但工厂标准是0.12mm,他们会自动扩大;三是数据校验与修复,比如发现你的钻孔文件里有个孔坐标超出了板框,他们会自动裁剪或报错让你确认。这些操作,工厂通常不会主动告诉你,只在最终输出的“Production Ready Gerber”里体现。所以,你对比的,不是“你的文件 vs 你的文件”,而是“你的设计意图 vs 工厂理解后的制造实现”。
这就引出了“改版后检查”的核心逻辑:它不是在找你自己的错,而是在验证工厂是否准确理解了你的意图,并在能力范围内做出了最优妥协。比如,你设计了一个0.3mm的过孔,用于高速差分对的地回流。工厂回传的Gerber里,这个孔变成了0.32mm。表面看是变大了,但你要立刻打开CAM350,用“Layer Stackup”功能,把顶层铜层(GTL)、内层1(G1)、内层2(G2)、底层铜层(GBL)全部叠在一起,用“Measure Distance”工具量一下这个孔在各层的pad直径。如果顶层pad是0.55mm,内层1是0.60mm,内层2是0.60mm,底层是0.55mm,说明工厂做了“阶梯式扩孔”(Step Drill),这是为了保证激光钻孔时各层铜箔都能被完整穿透,是合理的工艺补偿。但如果所有层pad都是0.65mm,且周围没有其他过孔,那就可能是工厂误判了你的设计规则,把单点过孔当成了需要加强的电源孔,这会导致差分阻抗突变。
2.3 “改版”二字的真正重量:一次变更,十处风险点
标题里的“改版后”,绝不是指“版本号从v1.0升到v1.1”这么简单。它意味着:任何一次对原理图、PCB布局、规则约束的修改,都必须触发完整的Gerber对比流程。我们曾统计过100个量产失败案例,其中67%的问题根源,都出现在“小改版”之后——比如只改了一个电阻值,却忘了更新对应的BOM和装配图;比如只挪动了一个晶振位置,却没检查其下方的内层地平面是否被切割;比如只优化了一段电源走线,却导致相邻的RF走线长度变化了0.3mm,引发相位偏移。
一次典型的“小改版”风险链是这样的:你在AD20里把USB接口的ESD保护器件从D1换成D2,只改了原理图符号和封装。导出Gerber时,你只重新导出了顶层铜层(GTL)和顶层丝印(GTO),觉得其他层没动。但D2的封装比D1多了一个散热焊盘(Thermal Pad),这个焊盘在底层铜层(GBL)上需要对应一个更大的铺铜区域。而你没导出GBL,工厂用的还是旧版GBL文件,结果新器件的散热焊盘在底层没有铺铜,热阻超标,工作半小时后器件失效。这种问题,只有在“改版后”把全套Gerber(包括你认为没动的层)和工厂回传的全套生产资料,用CAM350做全层叠加对比,才能发现。
所以,“改版后检查”不是一道工序,而是一种工程纪律。它要求你建立一个简单的checklist:每次提交Gerber前,问自己三个问题:① 这次修改是否涉及任何层的铜皮、阻焊、丝印、板框?② 是否有新增或删除的机械层(Mechanical Layers)?③ 是否有钻孔、槽孔、V-Cut等非电气特征的变更?只要有一个“是”,就必须执行全流程对比。
3. CAM350不是看图软件,而是你的“PCB显微镜”:核心功能深度拆解与实操参数设定
把CAM350当成一个Gerber查看器,是你能犯的最低级错误。它真正的价值,在于把抽象的光绘数据,转化为可测量、可分析、可验证的物理世界模型。要驾驭它,必须理解三个核心模块:Layer Management(层管理)、Measurement & Analysis(测量与分析)、Scripting & Automation(脚本与自动化)。下面,我带你一层层拆开,告诉你每个按钮背后的工程逻辑。
3.1 Layer Management:构建你的“数字孪生”世界
CAM350的层管理,远不止是“打开/关闭”那么简单。它决定了你看到的,是设计的幻象,还是制造的真实。
首先,层类型(Layer Type)的设定,是精度的基石。当你导入一个Gerber文件,CAM350会自动识别其后缀并分配默认层类型,比如.gtl→Top Copper。但这个自动识别经常出错。比如,你导出的阻焊层文件名是Top_Soldermask.gbr,CAM350可能把它识别为“Unknown”,并默认放在“Miscellaneous”层。这时,你必须手动右键该层 → “Layer Properties” → 在“Layer Type”下拉菜单里,选择“Soldermask Top”。为什么重要?因为层类型决定了CAM350如何渲染和计算。如果你把阻焊层设为“Copper Top”,它会用铜色渲染,且在做“Net Check”时,会错误地把它当成导电层参与网络连通性分析,导致大量误报。
其次,层叠顺序(Stack Order)不是视觉排序,而是物理堆叠。在“Layer Stackup”窗口里,你可以拖动层来调整顺序。正确的顺序,必须严格匹配你的PCB实际结构:Top Silkscreen(GTO)→ Top Soldermask(GTS)→ Top Copper(GTL)→ Substrate → Inner Layer 1(G1)→ ... → Bottom Copper(GBL)→ Bottom Soldermask(GBS)→ Bottom Silkscreen(GBO)。为什么?因为当你启用“Overlay Mode”(叠加模式)时,CAM350会按照这个顺序,从上到下逐层渲染。如果顺序错了,比如把GTS(阻焊)放在GTL(铜)上面,你会看到阻焊完全覆盖铜线,这不符合物理现实——阻焊是涂在铜线上的,铜线应该透出来。这种错位,会让你无法准确判断阻焊开窗是否足够大,是否覆盖了焊盘边缘。
第三,层对齐(Layer Alignment)是对比的前提。不同层的Gerber文件,坐标原点可能不一致。AD导出时,通常以板框左下角为原点;但工厂回传的文件,可能以某个基准孔为原点。如果不校准,你叠加两层后,会发现所有图形都偏移了几毫米。校准方法很简单:在“Tools” → “Align Layers”里,选择两个层(比如GTL和GBL),然后在两层上各自点击同一个物理基准点(如一个定位孔的中心),CAM350会自动计算偏移量并校正。我习惯选三个点:一个板角孔、一个中间定位孔、一个BGA区域的基准孔,三点校准比单点更可靠,能消除旋转误差。
3.2 Measurement & Analysis:从“看得到”到“测得准”
CAM350的测量工具,是你的“数字卡尺”。但用法不对,量出来的就是废数据。
Distance Tool(距离测量):这是最常用,也最容易用错的工具。默认模式是“Point to Point”,你点两点,它显示直线距离。但PCB上,我们关心的往往是“沿铜线的最短路径”或“到最近障碍物的安全距离”。这时,要切换到“Edge to Edge”模式。比如,检查一个0.2mm线宽的差分对,到旁边一个电源过孔的距离。用Point to Point,你可能量的是过孔中心到线中心,得到0.3mm;但用Edge to Edge,它会自动找到线边缘和过孔边缘的最短距离,这才是真正的电气间距。我见过太多人,因为没切模式,量出的“安全距离”是0.3mm,实际Edge to Edge只有0.18mm,低于IPC-2221规定的0.2mm最小间距,导致高压击穿。
Area Tool(面积测量):别只用来量焊盘大小。它的真正价值,在于验证铜皮挖空(Copper Cutout)的精确性。比如,你在AD20里为一个高Q值电感挖了一个2mm×2mm的矩形空洞。导入CAM350后,用Area Tool框选这个区域,它会显示精确面积。但更重要的是,右键这个区域 → “Properties”,查看它的“Bounding Box”(包围盒)尺寸。如果显示是2.002mm × 1.998mm,说明导出时有微小失真,但可接受;如果显示是2.05mm × 1.95mm,那就要警惕了——这可能是AD导出时的填充算法问题,或是工厂做了DFM修正。这时,你需要导出这个区域的DXF,用AutoCAD打开,确认原始设计尺寸。
Net Check(网络检查):这不是DRC,而是“跨层连通性验证”。在“Tools” → “Net Check”里,选择一个网络名(比如“GND”),CAM350会自动搜索所有层上属于这个网络的铜皮、过孔、焊盘,并用同一种颜色高亮。然后,它会检查这些高亮区域之间,是否通过过孔(Via)或金属化槽(Plated Slot)物理连接。如果发现某块顶层GND铜皮,和内层GND铜皮之间,没有过孔连接,它会标红报警。这能快速发现“孤岛铜皮”(Isolated Copper)问题——你设计时以为它连着地,但导出时某个过孔被意外删除了。我建议,每次对比,至少抽查3个关键网络:GND、VCC_3V3、和一个高速信号(如CLK)。
3.3 Scripting & Automation:让重复劳动归零的M97脚本实战
CAM350的M97脚本,是工程师从“手动操作员”升级为“流程设计师”的分水岭。它不是编程,而是用简单的命令序列,把你的检查逻辑固化下来。
一个最实用的脚本,是“一键全层对比报告”。你不需要写复杂代码,只需组合几个内置命令:
; M97 Script: Full Layer Compare Report ; Author: Hardware Engineer ; Date: 2024-06-15 ; Step 1: Load Design Gerber (Your files) LOAD_LAYER "GTL" "design_top.gbr" LOAD_LAYER "GBL" "design_bottom.gbr" LOAD_LAYER "G1" "design_inner1.gbr" LOAD_LAYER "G2" "design_inner2.gbr" LOAD_LAYER "GTS" "design_top_soldermask.gbr" LOAD_LAYER "GBS" "design_bottom_soldermask.gbr" LOAD_LAYER "GTO" "design_top_silkscreen.gbr" LOAD_LAYER "GBO" "design_bottom_silkscreen.gbr" ; Step 2: Load Factory Gerber (Their files) LOAD_LAYER "GTL_F" "factory_top.gbr" LOAD_LAYER "GBL_F" "factory_bottom.gbr" ; ... load all factory layers with _F suffix ; Step 3: Align all layers using 3 points ALIGN_LAYERS "GTL" "GTL_F" "100,100" "200,200" "300,300" ALIGN_LAYERS "GBL" "GBL_F" "100,100" "200,200" "300,300" ; ... align all pairs ; Step 4: Generate difference map for critical layers DIFFERENCE_MAP "GTL" "GTL_F" "GTL_DIFF" DIFFERENCE_MAP "GBL" "GBL_F" "GBL_DIFF" DIFFERENCE_MAP "GTS" "GTS_F" "GTS_DIFF" ; Step 5: Export report EXPORT_REPORT "Compare_Report.txt" "GTL_DIFF, GBL_DIFF, GTS_DIFF"把这个脚本保存为compare_full.m97,然后在CAM350里,“File” → “Run Script”,选择它。几秒钟后,它会自动完成所有层的加载、对齐、差异计算,并生成一个文本报告,列出所有差异点的坐标和层名。你再也不用手动切换层、手动对齐、手动截图——所有重复劳动,都被这个不到20行的脚本消灭了。
提示:M97脚本的威力,在于它的“可复现性”。同一个脚本,今天用在v1.0板子上,明天用在v1.1板子上,检查逻辑完全一致。这避免了人为疏忽,也让你的检查过程,可以写进公司SOP,成为可审计的质量证据。
4. 实战全流程:从AD导出到工厂回传,每一步的检查清单与避坑指南
现在,我们把前面所有的理论,揉进一个真实的、可立即执行的检查流程。这个流程,我称之为“三阶九步法”,它覆盖了从设计端到制造端的全链路,每一步都有明确的操作、检查项和“踩坑”记录。
4.1 第一阶:设计端自查(AD导出前)
这一步,决定你发给工厂的“原料”是否干净。90%的Gerber问题,其根源都在这里。
Step 1:导出前的AD环境核对
- 打开AD20 → “Design” → “Board Options”,确认“Units”是“Imperial”(inch),且“Precision”是“5:5”。这是行业通用标准,也是工厂CAM系统的默认期望。如果你用“Metric”单位,必须在导出对话框里,明确勾选“Use Metric Units”,并告知工厂。
- 检查“Layer Stack Manager”,确认所有层的厚度、介电常数设置,与你选择的板材(如FR-4, Rogers)一致。虽然这不影响Gerber文件内容,但它决定了你在AD里做的阻抗仿真是否可信,而阻抗仿真结果,会作为你向工厂提出特殊工艺要求(如控制线宽/间距)的依据。
- 关键避坑:不要用“Auto”命名。在“File” → “Fabrication Outputs” → “Gerber Files”里,取消勾选“Use Protel Filename Extensions”。手动为每一层指定标准后缀:
GTL.gbr,GBL.gbr,G1.gbr,G2.gbr,GTS.gbr,GBS.gbr,GTO.gbr,GBO.gbr,GML.gbr(Mechanical Layer,板框),TXT.gbr(钻孔)。工厂的自动化系统,只认这些后缀。
Step 2:导出时的参数精调
- 在Gerber导出对话框里,“General”页签,务必勾选:
- “Include Unrouted Net”:确保所有网络,包括未布线的飞线,都包含在Gerber里。这是验证网络连通性的基础。
- “Plot All Layers”:不要只导出你认为“改了”的层。哪怕只改了一个丝印,也要全层导出。因为AD的Gerber导出引擎,有时会因缓存问题,漏导某些层。
- 在“Advanced”页签,重点设置:
- “Minimum Track Width”:设为0.001inch(25.4um)。这是告诉AD,小于这个宽度的线段,一律忽略。避免导出大量无意义的短线段,导致文件臃肿和CAM350加载缓慢。
- “Remove Zero Length Lines”:勾选。自动清理设计中可能存在的、长度为零的无效线段。
- 关键避坑:钻孔文件(NC Drill)的导出,必须单独进行。“File” → “Fabrication Outputs” → “NC Drill Files”。在对话框里,“Drill Drawing”页签,选择“Gerber X2”格式,而非老式的Excellon。X2格式包含了更多元数据,如孔类型(PTH/NPTH)、孔公差,工厂CAM系统解析更准确。
Step 3:导出后的AD内检
- 导出完成后,不要立刻打包发给工厂。在AD里,打开“View” → “Board in 3D”。旋转板子,仔细检查:
- 所有焊盘(Pad)是否都有对应的阻焊开窗(Soldermask Opening)?特别是BGA底部的焊盘,如果阻焊层没开窗,锡膏无法附着,焊接必失败。
- 所有丝印(Silkscreen)是否都位于阻焊层(Soldermask)之外?如果丝印画在阻焊上,印刷时油墨会附着在阻焊上,导致字迹模糊或脱落。
- 板框(Board Outline)是否闭合?用“Edit” → “Select” → “All Primitives”,然后按“Ctrl+M”测量板框周长。如果周长为0,说明板框是开放的曲线,工厂无法识别。
4.2 第二阶:工厂端对接(文件传输与确认)
这一步,是设计与制造的握手环节。很多问题,源于沟通不畅。
Step 4:文件包的结构化打包
- 不要把Gerber文件、钻孔文件、装配图、BOM混在一个文件夹里。创建一个清晰的目录结构:
Project_Name_v1.1/ ├── Gerber/ │ ├── GTL.gbr │ ├── GBL.gbr │ └── ... ├── Drill/ │ ├── NC_Drill.txt │ └── NC_Drill_Report.txt ├── Docs/ │ ├── Assembly_Drawing.pdf │ └── BOM.xlsx └── README.txt - 在
README.txt里,用最简明的语言,写清楚:- 板材要求:FR-4, Tg150, 1.6mm厚。
- 阻抗要求:TOP层差分对50Ω±10%,需提供TDR报告。
- 特殊工艺:所有BGA焊盘需做ENIG表面处理;V-Cut槽宽0.5mm,深度0.3mm。
- 关键避坑:不要用WinRAR或7-Zip的“加密压缩”。工厂的自动化接收系统,无法解密。用标准ZIP即可。
Step 5:与工厂CAM工程师的首次通话
- 不要只发邮件。打一个电话,和对方的CAM工程师直接沟通。核心沟通点:
- 确认他们收到的文件,与你发送的完全一致(MD5校验码)。
- 询问他们对你的设计,是否有DFM方面的疑问或建议。比如:“我们设计了一个0.1mm的细间距走线,贵司的最小线宽能力是多少?是否需要我们做加粗?”
- 明确“Production Ready Gerber”的交付时间。通常,工厂会在收到文件后1-2个工作日内,回传一份“Review Gerber”,供你确认。
Step 6:工厂回传文件的初步筛查
- 收到工厂回传的ZIP包,先解压,用Windows资源管理器,按文件大小排序。Gerber文件中,铜层(GTL/GBL)和阻焊层(GTS/GBS)通常最大,丝印层(GTO/GBO)最小。如果发现某个铜层文件只有几十KB,而其他层都是几MB,那基本可以断定,这个文件是空的或损坏的,立刻联系工厂重发。
- 用记事本打开钻孔文件(TXT),滚动到底部,看最后一行是不是
M30(程序结束符)。如果没有,说明文件不完整。
4.3 第三阶:CAM350终极对比(核心战场)
这是整个流程的决战时刻。所有前面的工作,都是为这一刻服务。
Step 7:全层导入与智能对齐
- 启动CAM350,新建一个Project。
- “File” → “Import” → “Gerber”,一次性选中你导出的所有Gerber文件(10个左右)。CAM350会自动按后缀分配层类型。
- 同样方法,导入工厂回传的所有Gerber文件,但为它们的层名添加
_F后缀,如GTL_F。 - 进入“Tools” → “Align Layers”。选择
GTL和GTL_F,在板子的三个角,各点一个相同的定位孔中心。CAM350会自动计算并应用平移、旋转、缩放参数。重复此操作,对齐所有层对。 - 关键避坑:对齐后,不要立刻开始对比。先用“Zoom”工具,放大到一个BGA区域,用“Toggle Overlay”(Ctrl+O)开关叠加模式,肉眼快速扫一遍。如果发现两层图形有明显错位(>0.01mm),说明对齐失败,需要重新选点。
Step 8:差异地图(Difference Map)的精准狙击
- “Tools” → “Difference Map”。选择
GTL(你的)和GTL_F(工厂的),设置“Tolerance”为0.001inch(25.4um)。这个容差值,是PCB制造的典型公差。大于此值的差异,才值得你关注。 - CAM350会生成一个新层
GTL_DIFF,里面所有红色区域,都是两层之间的差异点。 - 此时,不要急于下结论。右键
GTL_DIFF层 → “Properties”,查看它的“Layer Type”。如果它是“Unknown”,手动改为“Copper Top”。否则,后续的测量工具无法正确工作。 - 用“Zoom”工具,放大到每一个红色差异点。常见类型有:
- Type A:合理DFM修正。比如,一个0.1mm的孤立焊盘,在
GTL_DIFF里显示为一个红色圆环。放大看,发现工厂把这个焊盘的直径从0.1mm扩大到了0.12mm。这是为了保证蚀刻时焊盘不被吃掉,是标准做法。 - Type B:设计意图丢失。比如,一个0.3mm的测试点,在
GTL_DIFF里显示为一个红色方块。放大看,发现工厂的版本里,这个测试点完全消失了。这说明工厂的CAM工程师,在做DFM时,误判它为“冗余图形”,给删掉了。这是必须反馈并修正的严重问题。 - Type C:制造缺陷预警。比如,一个0.2mm的细线,在
GTL_DIFF里显示为一段红色虚线。放大看,发现工厂版本里,这段线被蚀刻成了锯齿状,边缘毛刺严重。这预示着蚀刻参数可能不稳定,需要工厂提供首件样品确认。
- Type A:合理DFM修正。比如,一个0.1mm的孤立焊盘,在
Step 9:关键网络与特征的交叉验证
- 完成所有层的Difference Map后,进入最后的“交叉验证”。
- 选择一个关键网络,如“VCC_5V”。在“Tools” → “Net Check”里,输入网络名。CAM350会高亮所有层上属于这个网络的铜皮。
- 切换到
GTL_F层,用“Net Check”再查一次。对比两次高亮区域的形状、大小、连接点。如果发现工厂版本里,某处铜皮被意外切断,或某个过孔缺失,立即截图记录。 - 对于机械特征,如V-Cut槽。在
GML_F(工厂的板框层)上,用“Area Tool”测量槽的宽度和深度。再切换到GTS_F(工厂的顶层阻焊层),确认V-Cut槽区域,阻焊是否被完全移除(应为白色,表示无阻焊)。如果阻焊没移除,切割时会烧焦阻焊,产生碳化残留,影响后续装配。
注意:整个对比过程,我习惯用一个Excel表格实时记录。表头包括:序号、层名、差异坐标(X,Y)、差异类型(A/B/C)、截图编号、处理状态(待确认/已反馈/已修正)。这个表格,就是你和工厂沟通的唯一依据,也是你未来做设计Review的宝贵资产。
5. 常见问题速查表与独家避坑心得:那些手册里不会写的真相
在无数个深夜,对着CAM350里闪烁的红色差异点,我总结出了一份“血泪清单”。它不讲原理,只告诉你:遇到这个问题,该怎么救,为什么这么救。
| 问题现象 | 根本原因 | 快速解决方案 | 我的独家心得 |
|---|---|---|---|
| CAM350导入Gerber后,所有图形显示为“空心”轮廓,没有实心填充 | AD导出时,勾选了“Use Aperture Macro”(光圈宏),而CAM350的默认设置不支持解析。 | 在CAM350里,“File” → “Setup” → “User Preferences”,找到“Gerber”选项卡,勾选“Enable Aperture Macro Support”。重启软件。 | 这个选项默认关闭,是因为老版本CAM350解析宏会崩溃。但现代AD导出的Gerber,几乎都用宏。不勾选,你看到的永远是“骨架”,不是“血肉”。 |
| 用Difference Map对比两层,结果全是红色,无法分辨有效差异 | 两层的坐标原点偏差太大,超出了Difference Map的默认容差范围。 | 先用“Align Layers”做粗略对齐(选一个板角孔),然后再运行Difference Map。容差值从0.001inch临时提高到0.01inch,先找出大的偏移,再逐步缩小容差精调。 | Difference Map不是万能的。它假设两层已经基本对齐。如果偏差超过0.1mm,它会把整个图形都标红,就像一张全红的底片,毫无信息量。 |
| 工厂回传的钻孔文件(TXT)里,孔的数量比你AD里定义的少1个 | AD导出钻孔时,勾选了“Exclude Holes from Un-Routed Nets”,而那个缺失的孔,恰好属于一个未布线的网络(比如一个预留的测试点)。 | 在AD的NC Drill导出对话框里,取消勾选“Exclude Holes from Un-Routed Nets”。重新导出。 | 这个选项的本意是“排除未连接的孔”,但它的逻辑是“排除未连接到任何网络的孔”。一个独立的测试点,虽然没连网络,但它是有意为之的,必须保留。 |
| CAM350里,用Distance Tool量一个焊盘到板边的距离,结果是负数 | 你量的是焊盘中心到板边线的垂直距离,而板边线是一个闭合多边形。当焊盘在板内时,距离为正;当焊盘中心在板外(比如被误放),距离为负。 | 立刻用“Edit” → “Move”工具,把焊盘 |