
1. 为什么别人的Gerber一次通过你总要返工如果你在PCB设计行业待过一两年一定见过这样的场景画板子的时候风生水起一到导出Gerber文件就原形毕露。发给板厂之后要么被问“缺层”要么被告知“丝印和阻焊没对齐”最惨的是钻孔文件跑偏整个板子报废。我一直觉得出Gerber这件事属于那种“看起来很简单、做起来全是坑”的活。Cadence Allegro作为业内主流的PCB设计工具它的光绘输出机制足够强大但正因为选项多、参数细反而让很多工程师摸不着头脑。这篇博文主要解决三类人的问题刚接触Allegro不久、准备第一次投板的新手被板厂反复追问Gerber问题、急需一套标准流程的老手以及那些想用Allegro快速导出高质量光绘文件、希望减少来回沟通成本的人。我会把从检查设计到输出钻孔文件的完整流程拆开来讲包括参数为什么要这样设、哪些坑我最常踩、以及怎么用CAM350快速验证。说白了就是希望你看完这篇之后能形成一套自己的“肌肉记忆”每次出板都顺顺当当。我先把话说在前面Gerber文件本身并不复杂它就是把PCB的每一层拆成独立的图形文件给板厂当“图纸”用。复杂的是Allegro里那一堆Artwork选项、精度设置、光圈处理以及钻孔文件的单独导出机制。只要你理解了背后的逻辑这些选项就不再是拦路虎而是你手里最顺手的工具。2. 导出前必做的5项检查先别急着打开Artwork面板2.1 检查设计规则和未布线区域别让板厂替你发现错误很多人打开Artwork面板之前根本不跑一遍DRC直接就Generate结果Gerber到了板厂那里一堆问题。我在实际工作中有一条铁律出光绘之前先耐住性子跑一遍完整的DRC并重点确认下面几项。第一未布线的网络Unrouted Nets必须清零。虽然Allegro的DRC会提示但有时候你会看到“动态铜皮已覆盖”就以为连上了实际上网络连接被错误地断开或“假连接”这在光绘文件里是看不出来的板厂更不可能替你去查网络连接关系。第二检查是否有孤立铜皮Isolated Shape。孤立铜皮在出Gerber时通常不会报错但它在生产端可能造成电镀不均匀严重的时候整块板子翘曲。我习惯在Shape全局动态铺铜状态下跑一遍“Isolated Shape Check”有就删掉或加过孔连接。第三确认板上没有未定义的封装或锁定状态异常的CellAllegro里如果封装引用了错误的库文件导出的焊盘可能直接消失。另一个容易忽略的是检查板框和布线层。你的Outline必须闭合、无重复线段否则板厂做外形时无法识别。很多新手在Classic Board Outline上画了多段线看起来是一个方形但线段端点没有连接上板厂读Gerber时会发现外形不闭合。我一般会在Artwork前先打开“Manufacturing/Outline”层看一眼再用“Dimension”检查尺寸标注确保板框信息完整。2.2 列一张层清单哪些层必须出、哪些层可以合并Allegro的Artwork面板默认会列出当前设计里所有“Film”也就是你要输出的光绘层。这里最容易犯的错误是只勾选了自己看得见的几层比如TOP和BOTTOM而丝印、阻焊、助焊层全部漏掉。板厂拿到你的Gerber之后要么帮你脑补要么退回让你补文件。我的做法是做一个标准层清单每次照单检查。通常一个双面板需要这些光绘文件TOP层布线层BOTTOM层布线层SILK_TOP / SILK_BOTTOM丝印层SOLDER_TOP / SOLDER_BOTTOM阻焊层PASTEMASK_TOP / PASTEMASK_BOTTOM助焊层用于贴片钢网DRILL钻孔文件单独导出如果是四层及以上还要加内层电源地平面以及可能的Negative Layer负片层。注意Allegro很多默认模板会把“Board Geometry/Outline”自动加进每一层Film这样板框信息就重复了。虽然不影响生产但会让文件变乱。我一般只把Outline加在Silkscreen和一些必要层中。除了层清单还要注意一个细节Allegro的Artwork面板里每个Film可以包括多个Subclass。比如丝印层除了“Board Geometry/Silkscreen Top”还应该把“Ref Des/Silkscreen Top”和“Device Type/Silkscreen Top”一起勾选上。否则你导出的丝印层缺少元件位号字符这个问题极其常见。2.3 先看一眼Artwork面板确认当前精度和坐标模式Artwork面板里的Format和精度决定了光绘文件中坐标数据的小数位数。如果有人把精度设置成4.2也就是整数4位、小数2位那么在英寸单位下理论分辨率只有0.01英寸约0.254mm这个误差对于高密度板卡来说完全是灾难。我见过很多案例板厂反馈孔位偏移、走线错位最后发现就是精度设置问题。我常用的组合是“整数5位小数3位”5.3或者“整数4位小数4位”4.4单位用英寸坐标类型选Absolute绝对坐标。其中4.4格式在业界兼容性最好大多数厂商和CAM工具都认5.3格式更稳妥但文件体积稍大。实际中我一般固定用4.4除非板子非常大或者你担心边缘精度否则没必要升到5.3。如果你从别人手里接手一个PCB先打开Artwork面板看一眼这些设置再决定要不要改。3. 光绘参数设置详解单位、精度与光圈背后的逻辑3.1 单位、精度、零抑制这三个参数决定板厂能不能看懂你的文件Allegro的Artwork面板有一项“Film Control”它们里面的Setup有很多选项Device type、Format、Output units、Suppress、Coordinate type等。这些英文术语看起来很绕实际逐个拆开并不难。首先是Device type一般默认是Gerber RS-274-X这是目前最主流的光绘格式。它把光圈Aperture信息直接嵌入到光绘文件里不依赖单独的D码文件兼容性很好。如果你有特殊需求可以选Gerber X2它支持嵌入层名和属性但部分老厂可能不支持投板前要确认。我个人默认坚持RS-274-X名字简单可靠性高。然后是Format和Output units。Format是“整数位小数位”的组合之前说过建议4.4或5.3。Output units建议与你的设计单位保持一致。如果你的PCB板框、约束规则全部是mil那输出单位就用Inches如果一开始就是毫米就统一用Millimeters。千万不要设计是mil、输出是mm这样尺寸换算容易出幺蛾子尤其当你板子上有很多4位小数的坐标时误差会被放大。最后是Suppress零抑制。这个选项控制坐标数据里的前导零和尾随零怎么处理。常见的选择有Leading zeros省掉坐标中的前导零比如0.125英寸输出成.125Trailing zeros省去尾随零None完全保留我一般选“Leading zeros”因为文件体积小一些而且板厂CAM软件解析没问题。但也有工程师喜欢“None”图个直观。只要不选成“Suppress trailing zeros”并且和板厂习惯冲突问题不大。如果你投的板厂有指定要求照他们说明来。3.2 光圈Aperture不用单独管但你要会检查老式Gerber格式RS-274-D是把光圈定义放在一个单独的D码文件里很多人导出时要手动指定Aperture文件搞得很头疼。而RS-274-X把这个包袱甩掉了——光圈定义直接内嵌到每个光绘文件中。所以在Allegro里你几乎不需要专门去“做光圈”。但有个时刻你应该主动看光圈当你发现某些焊盘在Gerber里显示为“空心圆”或“变成线框”时多半是光圈匹配出了问题。在Allegro里Artwork面板的“Aperture”标签可以查看当前光圈表。如果设计中有Flash焊盘、热焊盘这些特殊形状RS-274-X会自动生成相应光圈。我遇到过一次插件孔焊盘在光绘预览里变成细线的情况后来发现是那个封装焊盘用的是Rectangular矩形而光圈表里没有对应的Flash定义。解决办法是检查封装库的焊盘定义或者把“Use aperture rotation”选项开启。这种问题在CAM350里一眼就能看到所以我后面会专门讲怎么检查。其实更常见的坑是“Undefined line width”设为0。Allegro里有些线宽为0的图形比如某些辅助线或Outline光绘输出时如果Undefined line width为0CAM软件可能直接忽略或显示异常。我习惯把这个值设为6或10mil让这些“零线宽”图形有一个默认宽度避免文件读出来是空的。3.3 内层负片怎么设Positive还是Negative要分清楚如果你的PCB有电源层或地层并且你决定用负片Negative方式出图那在Artwork里要为这些层单独设置Film极性。这个操作逻辑很容易让人迷糊我尽量说大白话。在Allegro画板阶段你看到的电源层铜皮是正的或者说是有铜的区域。如果用正片方式出Gerber那么“铜皮区域有图形”和屏幕上看到的是一致的。如果用负片方式那么“光绘文件里的图形区域无铜区域”也就是反的。负片的优势是文件小、出图快但对于复杂的内层分割正片更直观也更容易检查。在Artwork面板里双击某个Film会弹出“Edit Film”对话框里面有一项“Mirror”和“Positive/Negative”的选择。如果你在PCB上设置该层为负片在Film里也要对应选择Negative否则出来的铜皮完全是反的这个错误非常致命。我的习惯是一般内层电源/地平面用负片信号层用正片。但如果你不熟悉负片的检查方式全程正片其实更安全代价只是文件大一点。3.4 钻孔文件的参数设置不能照抄光绘钻孔文件Drill File在Allegro里是单独导出的路径是Manufacturing - NC - NC Drill。很多人习惯性打开NC Drill对话框直接点确定结果板厂拿到手的钻孔表格式不对或者单位不对。NC Drill里的参数单位和精度必须和光绘文件保持一致。比如光绘是4.4英寸钻孔文件也应该4.4英寸。如果你光绘用mm、钻孔用inch孔位坐标就会整体偏移。我一般在NC Drill对话框里面选择Output file名字改成标准的“XXX-TOP.drl”或“XXX-NC.drill”Format4.4Coordinate typeAbsoluteExcellon formatCombined或者Separate按板厂要求勾选“Enhanced Excellon format”Tool sequenceAscending按钻孔尺寸排序这些看起来琐碎但非常影响投板效率。还有一个重点如果你板子上有非金属化孔NPTH一定要在NC Drill里正确识别。Allegro会为PTH和NPTH生成不同的钻孔符号如果你定义封装的时候没区分NPTH会被当成PTH处理板厂做出来就麻烦了。4. 分步实操10分钟完成Gerber加钻孔文件导出4.1 第一步配置Film控制面板保存成模板Allegro的Artwork窗口可以直接从菜单Manufacturing - Artwork打开。打开之后你会看到“Film Control”窗口里面有一个列表默认会有一组名字。很多人从这里开始手动加层、删层每次都很痛苦。我的建议是第一次配置好之后用窗口下的“Save”按钮把当前的Film设置保存成Artwork文件比如main.art以后每次出图直接加载改改版号就行。配置时我习惯按这样的顺序操作第一步先在上方的“Film:”区域把“Film name”命名成你要输出的层名。比如TOP、BOTTOM、SILK_TOP、SOLDER_TOP这种一目了然的命名。然后点击“Add”添加该Film接着在左边“Available Subclasses”里勾选对应的Subclass。以SILK_TOP为例我至少勾选Board Geometry/Silkscreen_TopRef Des/Silkscreen_TopDevice Type/Silkscreen_Top如果有这个子类Board Geometry/Outline一般加在这里第二步对于ETCH层比如TOP只勾选ETCH/TOP。注意不要不小心勾了ETCH/TOP和ETCH/BOTTOM否则两层线混在一张光绘里板厂直接懵。第三步设置每一层的极性。双击Film名称在弹出的对话框中把“Positive”或“Negative”选对。信号层选Positive负片内层选Negative。第四步在“Undefined line width”里填写6~10mil并在“Shape bounding box”里设置为板框尺寸范围或者尽量大一些。若“Shape bounding box”设置得太小铜皮会被裁剪掉这也是一个经典翻车点。4.2 第二步生成光绘文件留意日志和警告配置好Film之后回到“Film Control”窗口点击“Select All”或者勾选你要输出的Film再点“Generate Photoplot”。Allegro会在下方的报表窗口输出一堆日志。很多人点完就关掉窗口我劝你不要急着关。那堆日志里最关键的信息是每个Film生成的文件名、路径以及可能出现的警告。比如“Warning: Shape with no bounding box”或“Warning: undefined line width”之类都是信号。你必须在投板前解决这些警告否则文件就是带病出征。生成之后记得去输出目录看一眼。常见默认路径是设计文件目录下的artwork子文件夹。如果你希望文件整理得清晰一点可以在Artwork窗口里修改“Photoplot output directory”我习惯每个项目单独建立“gerber”目录光绘和钻孔全部输出进去。4.3 第三步生成钻孔文件和钻孔符号图在Allegro菜单选择Manufacturing - NC - NC Drill弹出NC Drill窗口。在这里设置单位、格式、以及Enhanced Excellon等参数。我建议输出前先点“Drill Customization”确认刀具表Tooling List中的孔径与封装一致。点击“Generate Drill File”后Allegro会生成钻孔文件同时还会生成一个钻孔符号图Drill Legend通常在Manufacturing/Drill Legend子类里。这个Drill Legend不是必须的光绘层但强烈建议你也把它输出成一个光绘文件或者PDF。板厂可以通过它快速确认孔的类型、数量和符号省得来回问。如果你板子上有铣槽、异形孔还需要用Manufacturing - NC - NC Route来生成NC Route文件。NC Route和NC Drill是分开的很多人忘记导路由文件导致板厂漏做铣槽这个也需要注意。NC Route的参数设置和NC Drill一致单位、格式都要统一。4.4 第四步用CAM350快速验证别把问题留给板厂这是我自己最依赖的一步。导出Gerber之后不要直接给板厂先丢到CAM350或者免费的GerbView工具里看一眼。我基本每次都会打开CAM350的File - Import - Auto Import选择你的Gerber文件夹它会把所有光绘文件自动导入然后你就能看到整块板子的渲染结果。我最常用的检查项有几个图层是否齐全颜色对不对有没有叠错层丝印是否清晰是否压焊盘太严重阻焊是否覆盖所有需要开窗的焊盘钻孔文件是否对齐焊盘中心内层负片是否反了Outline是否完整闭合尺寸标注是否合理有些工程师嫌麻烦觉得板厂会帮他检查。但你要明白板厂每天处理几十个设计他们只按文件加工不会主动分析你的设计意图。你把CAM350检查这一步当成自己设计的“最后一道防线”。我见过太多“压焊盘丝印导致立碑”“负片反了导致电源短路”的案例只要在CAM350里多看一眼这些低级错误全都能拦住。5. 常见问题速查板厂最常反馈的几种Gerber异常5.1 层缺失或内容不完整八成是Film配置漏勾了板厂反馈“缺少Top silkscreen”或者“只有外形没有走线”多半是你在Artwork面板中没把对应Subclass勾进Film。我处理过很多次类似的求援最后发现都是“Ref Des/Silkscreen_Top”没勾上导致位号字符全部丢失。还有一次是SOLDER_TOP层只勾了“BOARD GEOMETRY/SOLDERMASK_TOP”漏掉了“PIN/SOLDERMASK_TOP”和“VIA/SOLDERMASK_TOP”阻焊开窗出不来板厂拿到手的Gerber看起来所有焊盘都被绿油盖住。这种问题最好用CAM350逐层检查。如果发现某一层只有板框线没有其他内容马上回去看这个Film到底加了哪些Subclass。还有一个技巧导出后生成一个PDF版本的装配图和CAM350的Gerber图叠在一起对比。这招能快速发现丝印位置错乱、镜像翻转等问题。5.2 丝印和阻焊“对不上”先查镜像和正负片设置有时候你导出的丝印文字在CAM350里是反的比如U1的位号变成镜像了。这通常是“Mirror”选项被意外勾选。在Allegro的Artwork窗口Film的属性里有一项“Mirror”如果不小心对一个底层Film勾了Mirror整个底层丝印就会镜像翻转。同理底层走线如果被设置为Mirror也会全部水平翻转。解决思路是检查底层Film的Mirror属性正常底层的Artwork Film不需要Mirror只有当你在做顶层和底层合并时才有可能需要。除非你非常清楚自己在干什么否则所有Film都不要勾Mirror。5.3 板厂说文件尺寸不对多半是单位和精度混用了单位不一致很难通过视觉效果看出来只有用CAM350的测量工具去量板框尺寸才会暴露出差异。一个典型案例是设计用mm但Artwork里输出单位选择了Inches精度4.4结果整个板子的坐标数值虽然都是“对”的但单位换算后板厂读出来尺寸比设计值小了25.4倍。这种错误让板厂无法施工返工周期极长。我建议在导出前打开NC Drill和Artwork窗口把单位、精度这四项抄下来对比一遍保持一致。尤其从一个模板项目拷贝到另一个项目时模板里的旧设置很容易带过来。在项目最开始建库时就把单位固定好中途不要去切换。5.4 钻孔文件“偏孔”先查Excellon格式和坐标原点钻孔文件偏孔另一只可能的原因就是“坐标原点”没设置好。Allegro里默认的钻孔坐标原点是当前图纸的绝对原点但如果你在画板时移动过原点比如用Setup - Change Drawing Origin把原点改到了板子左下角而Artwork的光绘原点又用的是系统原点那两者就会错位。我习惯在输出前把光绘和钻孔的原点统一设置到一个固定的坐标点比如板框左下角。这样CAM350导入后光绘与钻孔就能重叠。具体操作是在Artwork窗口设置“Film origin”同时在NC Drill窗口设置“Drill origin”。两个原点保持一致问题就解决了。还有一个很容易忽略的点Excellon格式中的“Tool list”排序方式。如果你输出Combined格式Allegro会把所有孔径和坐标放在同一个文件里顺序按Tool排。如果使用Separate格式会拆成多个文件。有的板厂接收系统默认按Tool升序解析如果你生成的是降序板厂解析时就会错乱。我在实际中一直固定用Ascending这个习惯帮我少绕了很多弯。5.5 快速排查表直接对着处理问题现象可能原因解决建议光绘文件缺层Film里漏勾Subclass回到Artwork面板逐层检查勾选丝印字符缺失或变框线宽为0Undefined line width设0统一将Undefined line width设为6mil或更大焊盘显示为线框光圈Flash未匹配用RS-274-X格式检查封装焊盘定义底层文字镜像底层Film勾选Mirror取消该Film的Mirror属性负片内层铜皮反了Film极性与设计极性不一致双击Film确认Positive/Negative设置光绘和钻孔错位原点不一致统一Artwork原点与NC Drill原点钻孔文件缺少NPTH封装孔属性未定义检查封装中孔的Plating属性板子尺寸不对单位或精度设置不一致统一单位与Format精度外形不闭合Outline线段未闭合检查Board Geometry/Outline铜皮被裁剪Shape bounding box设置太小放大Shape bounding box范围6. 最后的一些习惯和心得文章写到这儿技术流程基本全部覆盖了。我再分享几个自己踩过不少坑后总结下来的工作习惯希望对你有参考价值。第一个习惯是“项目模板化”。不是只保存原理图库和封装库还要保存一套已经配置好的Artwork文件、NC Drill文件甚至包括CAM350里的检查脚本。这样每次新建项目直接套模板顶多改改板名和版本号出Gerber的时间能压缩到几分钟之内。我见过不少工程师每次都在Artwork面板里手动加层、手动设参数效率低而且容易漏。第二个习惯是“存档版本化”。每一版Gerber导出之后在文件夹里明确标记版本号和时间比如“Gerber_R1_20240915”。因为板厂的小批量试产和大批量投板往往隔很久如果你没有一个清晰的版本标记时间一长根本分不清哪一份才是最新的。这不只是帮自己也是帮板厂减少误会。第三个习惯是“投板前问板厂一句”。不同板厂对Gerber格式、钻孔文件命名、是否有特殊要求的理解不完全一样。有的厂要求RS-274-X有的厂只接受X2有的厂要求提供DXF外形图有的厂不需要。你在投产前五分钟问一下对方常用格式和命名规范就能避免很多低级返工。不要想当然地认为所有板厂都一样。最后想说的是Allegro这套工具虽然选项多但只要你理解了每个参数“为什么存在”它其实非常稳定可靠。你可以把导出Gerber看成是设计工作的“最终签字环节”多用一点时间检查多跑一遍CAM350你的设计在生产线上的成功率就会高一大截。出Gerber这个技能不要求多高深但一定要稳。稳到每一版文件拿出去板厂不用问你任何问题那就是真正合格了。