ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Allegro 17.4 Gerber导出实战:从Artwork设置到报错排查全流程

Allegro 17.4 Gerber导出实战:从Artwork设置到报错排查全流程 上周四晚上十点同事给我发来一张截图板厂拒收Gerber理由是文件里“Undefined aperture”一堆。他用的就是Cadence Allegro 17.4明明菜单路径都按教程走了怎么还会缺D码这个问题我太熟了。Allegro 17.4的布线体验和规则管理确实稳但它的光绘输出Gerber导出流程信息密度高、坑还特别多新手第一次独立出片几乎没有不翻车的。这篇文章我按自己的实际操作顺序把从设计状态检查、Artwork参数逐项设置、钻孔文件生成到常见报错排查和发板前自检的完整流程写出来正好也回应一下最近总有人私信问到的Allegro 17.4出Gerber问题。1. 出光绘前绕不开的几件事设计状态、单位、数据库完整性1.1 铜皮优先级与动态铜皮的“平滑”状态很多刚接触17.4的人会搜“铜皮优先级”以为它跟出Gerber有关系。二者确实有一点关系但不直接。铜皮优先级shape priority决定的是同一层不同网络铜皮重叠时谁压谁它影响的是设计阶段的效果真正导致光绘异常的是另一件事动态铜皮没有刷新成平滑状态。我见过最典型的翻车现场是板子已经布完线动态铜皮因为多次调整边界停留在“未填充/轮廓”状态直接出Gerber后板厂收到的铜皮层只有几条空空的边界线中间全是空铜。这不是Allegro默认设置错而是你没触发重新填充。我每次出片前都会点一遍Shape菜单里的Update命令或者在命令行敲update_shapes把全部动态铜皮重新计算一遍同时确认Shape Fill设置的是Solid实心而不是Outlined或者X-hatch。这一步花不了一分钟能避免整层铜丢失的大事故。另外还有一个细节如果板子上既有动态铜皮又有静态铜皮建议统一成同一种类型或者至少确认静态铜皮没有被动态铜皮挡掉。我习惯把所有铜皮都改成动态再按需求设置优先级这样后期调整和出光绘都比较可控。1.2 板框、原点与单位板厂判断文件的第一依据板框Board Geometry/Outline在Gerber流程里经常被当成“反正板厂能看出来”的东西实际恰恰相反。板厂开料、拼板、做外形全靠这个层。我建Film时一定会单独建一个OUTLINE光绘把Board Geometry/Outline和Design Outline都放进去并且用线宽明确、闭合完整的line/arc去画框不要用0线宽的线后面排查D码时我会再讲这个坑。单位问题我建议出片前和板厂确认一次。Allegro有个很容易踩的规则光绘单位和钻孔单位默认跟随设计文件但如果你中途切换过单位mil和mm之间来回切或者手工改过某个参数很容易出现光绘是mil、钻孔是mm的情况。我自己栽过一次孔位整体偏了40mil板厂电话过来问查了半天才发现是钻孔文件用的单位跟光绘不一致。所以我的固定做法是设计从头到尾用mil出Gerber用mil出NC Drill也用mil除非板厂明确要求公制。再有就是原点。Artwork控制面板里有一组X/Y Offset默认是0我建议保持0。如果非要移动坐标原点来对齐板厂拼板基准也要在文件说明里写清楚否则板厂拿到的Gerber所有坐标都带着偏移拼板对不齐。1.3 数据库完整性DBDoctor不是免责工具Allegro长期编辑后数据库里会积累一些“奇怪”的东西比如删铜皮残留的void边界、旧shape symbol记录、重复的板框线条。这些在设计界面看不出来但出光绘时它们会变成莫名其妙的报错。我出片前的固定动作是先跑一遍Database Check。17.4里路径是File - Database Check命令行直接敲dbcheck也能打开也就是大家常说的DBDoctor。跑完之后如果有错误它一般会提示你Update动态形状或者修复符号。修复完记得再存一次盘。另外一个实用命令是recycle在命令行敲一下把数据库压缩整理。这两个动作不保证解决所有光绘问题但能滤掉大量“好像是偶然出现”的报错属于低成本高收益的预防手段。也许有人觉得这步多余但在我接触的案例里至少有三分之一的“Undefined aperture”在dbcheck加recycle之后就消失了。后面的排查章节里我会再展开。2. Artwork参数面板逐项拆解真正的Gerber生成环节2.1 格式选型RS274X是保守且正确的答案在Allegro 17.4里通过Manufacture - Artwork打开Artwork Control Form点Parameters标签。第一栏Device type选择光绘格式。17.4支持Gerber 6x00、RS274X、RS274X X2等几种。Gerber 6x00是上古格式D码要单独走D-code文件多一个文件就多一次漏传的风险不推荐。RS274X把光圈D码直接内嵌进文件里是当前板厂兼容性最好的格式。RS274X X2多了一层元数据部分老板厂、老CAM版本不一定能完整解析。所以我的默认选择一直是Gerber RS274X。下面的Integer places和Decimal places在单位mil时我习惯设3和5也就是3位整数、5位小数。这个精度已经能表达0.01mil级别的坐标Gerber体积也不会失控。如果你的板厂要求别的精度比如2:5直接在参数里改然后重新出片就行。这块没有“唯一的正确答案”核心是出片前跟板厂确认好别等文件被打回来再改。2.2 Film列表怎么建一层一个胶片少了谁都不行Artwork Control Form左边显示的是当前会输出哪些Film。Allegro不像Altium Designer在Outjob里一键勾选它是让你自己构建每一层光绘的内容。这个差别很劝退从AD转过来的朋友但理解了逻辑之后反而不容易漏层。一个常规双面板至少需要这些FilmTOP、BOTTOM、SILK_TOP、SILK_BOT、SOLDER_TOP、SOLDER_BOT、PASTE_TOP、PASTE_BOT、OUTLINE。四层板再加内层GND、VCC。每一层要指定包含的Class/Subclass以及是在正片还是负片下输出。我按习惯给一个精简版的Film内容参考光绘名称包含内容Class/Subclass正片/负片TOPETCH/TOP、PIN/TOP、VIA CLASS/TOP正片GNDETCH/GND、PIN/GND、VIA CLASS/GND负片或正片见4.2VCCETCH/VCC、PIN/VCC、VIA CLASS/VCC负片或正片BOTTOMETCH/BOTTOM、PIN/BOTTOM、VIA CLASS/BOTTOM正片SILK_TOPBOARD GEOMETRY/SILKSCREEN_TOP、REF DES/SILKSCREEN_TOP正片SILK_BOTBOARD GEOMETRY/SILKSCREEN_BOTTOM、REF DES/SILKSCREEN_BOTTOM正片SOLDER_TOPPIN/SOLDERMASK_TOP、VIA CLASS/SOLDERMASK_TOP、BOARD GEOMETRY/SOLDERMASK_TOP正片SOLDER_BOTPIN/SOLDERMASK_BOTTOM、VIA CLASS/SOLDERMASK_BOTTOM、BOARD GEOMETRY/SOLDERMASK_BOTTOM正片PASTE_TOPPIN/PASTEMASK_TOP、VIA CLASS/PASTEMASK_TOP正片PASTE_BOTPIN/PASTEMASK_BOTTOM、VIA CLASS/PASTEMASK_BOTTOM正片OUTLINEBOARD GEOMETRY/OUTLINE、DESIGN_OUTLINE正片这里有两个容易忽略的点。一是SOLDER层里Vias要不要勾。如果你不想让过孔开窗露铜就不要把VIA CLASS/SOLDERMASK_TOP勾进SOLDER_TOP如果希望散热或测试方便就勾上。二是OUTLINE层务必要勾很多板厂退回文件的理由就是“没有板框层”。至于PASTE层那是SMT钢网用的样板手焊时可以不出批量板必须出。2.3 输出目录、命名与线宽兜底Allegro出Gerber前最好在工程目录下建一个干净的输出文件夹比如gerber_out把旧文件清掉避免新旧文件混在一起发给板厂。文件名我建议直接用业界通用后缀板厂一看就知道是什么层TOP.GTL、BOTTOM.GBL、SILK_TOP.GTO、SILK_BOT.GBO、SOLDER_TOP.GTS、SOLDER_BOT.GBS、PASTE_TOP.GTP、OUTLINE.GKO、GND.G1、VCC.G2钻孔文件用DRILL.TXT或者DRILL.DRL。还有一个参数容易被忽略Undefined line width。Allegro里有些对象线宽是0比如某些参考丝印、板框线、DXF导入的线条。光绘文件里0线宽对象经常无法正确解释板厂那边表现为“缺D码”或“对象丢失”。我在参数里通常把Undefined line width设成6mil给这些对象一个兜底线宽绝大多数警告就能消掉。这不是万能药第4章我会专门讲报错排查。Film列表确认无误后点右下角Create ArtworkAllegro会按列表依次生成所有层光绘并在日志里打印每层的结果。看到日志里有警告别急着发板先回到数据库里查清楚。提示不同板厂对Gerber后缀有细微差异比如有的用.GTL有的用.art下单前看一眼板厂官网规范按对方要求改名最省心。3. 钻孔文件、钻孔符号图与配套说明别让板厂猜你的叠层3.1 NC Drill参数坐标精度和单位必须跟光绘一致Gerber画的是铜箔图形孔的位置要单独用钻孔文件告诉板厂。Allegro里路径是Manufacture - NC - NC Drill。弹出的NC Drill窗口里Parameters标签页可以设置Excellon格式的精度和单位。我习惯把钻孔文件精度设为3位整数、5位小数单位跟光绘一致用mil理由跟第2.1节一样减少小数点取舍带来的坐标误差。很多板厂能接受Enhanced Excellon格式它比标准Excellon多了一些头信息槽孔和椭圆孔的表达也更完整。这里特别提醒钻孔文件的版本必须和Gerber一致。如果你出完Gerber又改了一个过孔记得重新跑一遍NC Drill。改孔不改Gerber或者改Gerber不重新生成钻孔都是发板事故的经典来源。我见过一个项目铜皮和焊盘都对只有孔位差了半个焊盘板厂拼板后整批报废最后查出来就是NC文件没重新出。3.2 NC Legend钻孔符号图板厂确认孔径的图纸钻孔符号图Drill Legend是板厂核对孔径的重要参考。Allegro里通过Manufacture - NC - NC Legend生成生成后是一个带表格的图形里面列出每个孔径对应的符号、数量。这个图需要放在版图里某个空余位置保存后随Design文件一起归档。如果你的板子面积很小板框外放不下这张图也可以放在板内比如放在DRILL层、且不跟焊盘重叠的区域。我记得第一次出片时忘了一件事生成了NC Drill忘了生成NC Legend以为钻孔文件就够了。其实板厂能在CAM软件里自己核对孔径但工程审查的人还是喜欢看符号图省得来回问。所以我之后的流程都是NC Drill和NC Legend一起出并把Legend放在一层专门的DRILL_LEGEND光绘里或者并入DRILL_DRAWING胶片。3.3 槽孔、背钻与金属化属性说明普通圆孔在Excellon文件里就是坐标加直径但槽孔椭圆孔、腰形孔会以特殊G代码或M指令表达。出完NC Drill后我建议用文本编辑器打开看一眼确认槽孔的坐标段确实存在。如果发现槽孔没进去多半是Padstack里Slot参数没定义好或者Allegro的格式设置不支持某种槽孔类型这时候就要回头改Padstack。背钻back drill属于高阶工艺17.4可以在Pin/Via属性里设置背钻深度但出片时通常需要单独的背钻文件做高速板时再跟板厂单独要模板。另外我还习惯在发板压缩包里附一个stackup.txt写明板厚、铜厚、层叠顺序、阻抗线的层间距要求、阻焊颜色和表面处理工艺。这些不是Gerber文件本身但是板厂工程评审时最常问的问题提前写清楚能省好几轮邮件。4. 常见错误排查实录从报错信息倒推根因4.1 “Undefined aperture / 缺D码”最经典的翻车现场前两章里我提过0线宽和DBDoctor这些其实都跟“缺D码”有关。RS274X格式本身会把D码内嵌所以正常情况下板厂不该缺D码。但Allegro里某些对象没有合适的光圈描述时报错就产生了。我之前排查过这样一个案例同事的板子所有层都能出Gerber但板厂打开文件后报“Undefined aperture referenced”定位点在板框附近。我让他先回到Allegro用Show Element去点板框发现板框线全是0线宽的line。把线宽改成6mil、重新出OUTLINE光绘后问题立刻消失。这属于最简单的缺D码。另一种常见来源是用户画外形或者画板内禁布区时用了自定义的Shape Symbol这个Symbol在Allegro数据库里有Flash定义但RS274X导出时无法正确关联。处理办法是不要在原位置叠一个形状而是把禁布区用标准Board Geometry/Outline线画或者用Z-copy复制的板框。总之出光绘前把所有非标准shape symbol尽量替换成标准图形能少掉一大批怪问题。如果报错信息里有具体坐标标准排查链路是先看坐标在哪个层再放大到那个区域逐个选中元素看它的Class/Subclass和线宽。不要一上来就怀疑软件坏了Allegro大多数报错都能在数据库里找到元凶。4.2 内层变成一大块实心铜或者热焊盘消失四层板内层GND/VCC最常见的问题是明明设计的是负片电源平面出完Gerber后在CAM里看整层是一块实心铜热焊盘位置也没有十字花。这通常不是Allegro坏了而是两层原因叠加。第一个原因Film的Plot mode选错了。内层如果按负片平面设计Artwork里这个Film应该用Negative输出你选成Positive等于把整个平面区域当成实心铜出出来。第二个原因Padstack里的Thermal relief没定义或者Constraint Manager里的Plane Connect策略没设成Orthogonal/Direct with thermal relief。这样就算负片输出焊盘周围也没有隔离间隙。我在17.4里的处理原则是如果内层是完全的平面层电源/地用负片并勾上Thermal relief如果内层是走线分割层有信号线一律用正片输出把平面铜当作普通正片铜皮来设计。判断依据很简单打开这一层看它到底是“整片铜加掏空区”还是“铜箔碎片加走线”。前者用负片后者用正片。4.3 丝印文字丢失、乱码或者线条忽粗忽细丝印问题也是高频。一个原因是字体不兼容Allegro默认的stroke字体出Gerber没问题但如果你从DXF或者其他EDA导入过TrueType字体、或者用了非标准字体板厂的CAM系统里可能显示不出来变成乱码或者直接缺字。我的建议是板上的文字统一用Allegro自带字体顶层丝印别用极细的线宽一般丝印线宽设到4mil以上字高别小于25mil具体按板厂能力不然打出来糊成一团。另一个原因跟第2.3节一样0线宽。丝印层某些文字的笔画线宽是0Allegro用Undefined line width兜底后能正常出。如果改了兜底线宽后丝印还是有问题就检查是不是文字带旋转角度或镜像导致某些CAM解析异常在Allegro里把文字重新对齐一次就行。4.4 板厂说“没有板框/外形层”这个我前面反复提过但还是值得单独列一条。很多设计师画完板子后板框确实在Board Geometry/Outline里但他出Film时只勾了ETCH、SILK、SOLDER这三种Class完全没把OUTLINE加进任何一层板厂打开Gerber自然是找不到外形。更隐蔽的情况是板框由好几段线和弧组成一部分画在Board Geometry/Outline另一部分画在Design Outline甚至Manufacturing Tags。出片时你只勾了其中一部分Gerber里板框缺了一角板厂照样无法开料。我会在OUTLINE胶片里把Board Geometry/Outline和Design Outline这两个常用层都勾上并在出片后在CAM350里确认板框是闭合的完整轮廓。4.5 铜皮只有轮廓没有填充动态铜皮如果没刷新或者Shape Fill类型被改成Outlined、X-hatchGerber里就只能看到轮廓线。前面1.1节说过刷新方法这里补充一个检查点用Show Element选中铜皮看它的Fill Type。如果是Outlined改成Solid再Update。某些情况下还需要检查铜皮是否处于“void opened”状态我通常直接把这块铜皮删掉重铺往往比重塑边界更快。下表把这些问题整理成速查表发板前对照检查一遍能省掉很大一部分客诉报错/现象常见根因优先处理方式Undefined aperture / 缺D码0线宽对象、非标准Shape symbol设Undefined line width兜底替换非标准Symboldbcheck加recycle内层整块实心铜Film选成Positive输出Thermal relief缺失负片层选Negative在Padstack Editor里补Thermal relief丝印丢字/乱码非Allegro字体0线宽统一改为stroke字体设兜底线宽板厂找不到板框Film缺OUTLINE层板框在多个subclass里新建OUTLINE Film把常用Outline subclass都勾上铜皮只有轮廓动态铜皮未UpdateFill Type为Outlinedupdate_shapes把Fill Type改回Solid5. 光绘生成后的自检清单把板厂从“捉Bug的人”变回“生产方”5.1 用CAM350或谷雨快速预检Gerber不是出完就能直接发的。我强烈建议在发板前把Gerber压缩包解压后用CAM工具打开看一眼。国内很多人在用谷雨国外用户常用CAM350两个我都用过预检逻辑一样。我会按这个顺序看先把所有层叠在一起检查层间是否对齐再单独打开TOP、BOTTOM看线路和焊盘是否完整然后打开SOLDER_TOP和SOLDER_BOT检查不应该开窗的地方有没有意外开窗特别是过孔然后把钻孔层叠加到线路层上数一下孔位和焊盘是否一一对应最后单独看OUTLINE层确认板框闭合、原点和设计一致。这套动作听起来多实际上十分钟足够。真正出现问题时它比板厂客诉邮件来得快得多、也省心得多。我身边每位被板厂退过板的朋友最后都会养成这个习惯。5.2 打包与命名规范减少来回沟通的无形成本给板厂发Gerber的时候我习惯在压缩包里包含三类东西光绘文件本身、钻孔文件、stackup.txt说明。光绘文件命名严格用前面说的GTL/GBL/GTS/GTO等后缀不要用中文名不要用自定义缩写。我知道同一个人在不同项目里常常随手起名但板厂CAM工程师每天处理几十个项目命名规范能直接降低他们看漏的可能。这里给一个我常用的归档目录示意project_20241028/ ├── gerber/ │ ├── TOP.GTL │ ├── GND.G1 │ ├── VCC.G2 │ ├── BOTTOM.GBL │ ├── SILK_TOP.GTO │ ├── SILK_BOT.GBO │ ├── SOLDER_TOP.GTS │ ├── SOLDER_BOT.GBS │ ├── PASTE_TOP.GTP │ ├── OUTLINE.GKO │ ├── DRILL.DRL │ └── DRILL_LEGEND.GDR └── stackup.txt如果板厂要求测试点文件还可以再附一个IPC-D-356文件高频板、背钻板按板厂模板加文件。总之少让板厂问一句项目就快一步。5.3 17.4的效率技巧快捷键、Skill与参数模板熟悉之后出Gerber的步骤是可以半自动化的。17.4的快捷键设置在个人env文件里通常在用户目录下的pcbenv文件夹别名alias功能很实用。我习惯把常用命令映射到功能键比如alias F8 artwork alias F9 nc_drill alias F10 nc_legend alias F11 dbcheck这样就不用每次去菜单里点找半天。设置完重启Allegro就生效。注意env文件改错了可能导致启动异常修改前先备份一份。Skill是另一个提效方向。市面上的Allegro Skill工具包像很多人问的电路精灵在17.4上如果兼容基本都能用里面常带一键检查、一键出Gerber的脚本。我个人建议可以用但别完全依赖。脚本帮你勾选好Film、生成文件之后你仍然要把结果导进CAM350自己过一遍。自动化解决的是效率自检解决的是确定性两者不能互相替代。如果你经常做差不多层叠的板子还可以把Artwork里的Film列表和参数整理成一个自己的模板。有的Skill脚本支持导入导出配置如果不支持就把每层对应的Class/Subclass抄到一个笔记里新项目照着建。这么做的意义在于出Gerber不是设计里最有创造力的部分把它变成肌肉记忆之后你的精力才能真正花在电路本身。其实出Gerber这件事熟练之后也就是十分钟的活。我最想提醒的只有一个点任何自动化和快捷键都省不了最后那遍自检。我的习惯是每次发板前把Gerber拖进CAM350里假装自己是板厂工程部的人从头到尾看一遍这个动作已经救了我至少三次。希望这篇17.4的实战记录能让你少走几晚加班路。
返回列表