又到了项目交板的节点,群里照例有人开始问:Allegro光绘怎么设置?film为什么要配那么多层?为什么我导出的Gerber板厂说打不开?作为一个从四层板一路画到十六层板的老工程师,说实话,光绘本身不难,难的是每次新项目都重新点一遍Artwork Control Form,重复劳动不仅烦,还特别容易漏层、选错参数、导出文件对不上。今天我把这套8层板的Gerber输出方案、模板复用思路和常见错误排查完整整理出来,给正在跟Cadence Allegro搏斗的朋友做个参考。
1. 为什么需要一套能复用的光绘设置
1.1 手动重设光绘,到底在浪费什么
很多人第一次接触Allegro出光绘,都是跟着教程一步步点:Manufacturing -> Artwork,然后新建film、勾subclass、设置参数,最后Create Artwork。第一次做确实能跑通,但问题在于第二个项目还要再来一遍。8层板的光绘文件往往有20个左右,每个film都要手动命名、手动添加subclass、手动确认正负片属性,这个过程中只要手一抖漏勾一个SOLDERMASK_TOP,板厂那边就等着退单。
我见过不少同事犯过这种错:明明叠层结构完全一样,就是因为换了个新工程,Artwork里所有配置都要从零开始,结果导出后发现TOP层的丝印没出来,或者内电层打成负片后焊盘反了。这些错误本质不是不会配,而是配置过程太依赖手工,出错概率高得离谱。更麻烦的是,排查的时候你还得一个个film重新打开看,浪费时间不说,交期压力下还容易慌。
所以我把这个问题的核心归结为一点:光绘设置不该是每个项目的“新任务”,而应该是一套可复制的“配置资产”。把合理的默认参数、film清单、命名规则固化下来,新项目来了直接套用,只做少量叠层或特殊层面的调整,这才是成熟的出图流程。
1.2 哪些设置值得固化,哪些必须重新来
搞清楚哪些参数能复用、哪些不能复用,比闷头操作更重要。我按实际经验分个类:
| 类型 | 参数/内容 | 说明 |
|---|---|---|
| 值得固化 | 输出格式(RS-274X)、坐标类型(Absolute)、整数/小数位(3.3)、Undefined line width | 这些是通用参数,基本所有板子都能用同一套 |
| 值得固化 | 光绘film清单、命名规则、层与subclass对应关系 | 叠层结构相同的板子可以直接复用,比如8层板1-2-1叠层 |
| 值得固化 | 常规辅助层:SOLDERMASK、PASTEMASK、SILKSCREEN、OUTLINE、DRILL | 只要不是特殊工艺,这些层每个板子都要出,内容高度一致 |
| 必须重来 | 叠层结构和每个内层对应的网络/平面分割 | 换了叠层或改版,film列表必须调整 |
| 必须重来 | 板框、拼板方式、原点位置 | 每块板都不一样,光绘只能跟随当前图纸 |
| 必须重来 | 钻孔文件(NC Drill、NC Route)的钻孔种类和孔位 | 孔表跟着设计走,不能沿用旧文件 |
| 看情况 | 负片还是正片输出 | 这个和公司的制造工艺偏好绑定,一旦定了流程就可以固化 |
简单说,通用参数和辅助层配置是“模板的核心”,而真正跟设计强相关的内容,比如内层信号层、电源分割层、钻孔信息,只能作为模板的输入条件,每次单独确认。理解了这一点,下面的复用方案才有意义。
1.3 三种复用方案,怎么选
目前我实际用过的方案有三条路,每条适用场景不太一样。
第一条是参数导入导出法。Allegro自带File -> Export -> Parameters功能,Artwork、NC参数、用户偏好这些都能导成一个参数文件,新板子再用File -> Import -> Parameters把配置灌进去。这个方案最轻量,适合同一个叠层结构反复用的团队,也是我下面重点写的做法。
第二条是空板模板法。把一块配置好Artwork的板子另存为模板,删掉走线、铜皮、丝印这些设计内容,保留叠层、规则和光绘配置。新项目启动时从这个模板开始画,光绘设置天然存在。这个方案适合公司内部标准化程度高的场景,但问题也明显:模板里的叠层和规则已经被固定了,一旦换叠层结构就得动模板,维护成本不低。
第三条是Skill脚本批处理法。用Allegro的Skill接口把Artwork配置和生成过程脚本化,做到真正的一键出图。这个方案上限最高,但对工程师的脚本能力有要求,适合频繁出图、批量改版的工作流。我可以给你思路和示意代码,但完整脚本需要根据你自己公司的技能库定制,后面单独讲。
我的建议是:个人用或小团队,优先掌握参数导入导出法;流程规范的大公司,直接上空板模板加脚本组合拳。反正无论哪条路,核心思路都一样——别把光绘配置当成每个项目的“一次性手工工作”。
2. 8层板光绘输出的核心参数拆解
2.1 输出格式选型:RS-274X为什么是默认答案
Allegro的Artwork Control Form里,Device type可选RS-274-X、ODB++等。RS-274X是Gerber RS-274-D的扩展版,它把D码(Aperture)定义直接嵌到文件头里,不再需要单独传一个Aperture文件给板厂。用一句话说,就是“一个文件把图形和规则都讲清楚了”,板厂拿到就能直接导入,兼容性极好。
ODB++则是更完整的制造数据交换格式,包含了层叠、网络、钻孔、元件位号等全套信息,适合做DFM检查或跟板厂做深度协同。但说实话,国内很多中小板厂对ODB++的支持没有对Gerber那么成熟,遇到不熟悉的厂反而要反复沟通。所以我的默认建议是:常规8层板,老老实实用RS-274X输出Gerber,成熟稳定,别在格式上玩花活。
光绘还有个关键参数是Format里的整数位和小数位。我用毫米单位时固定设置3.3,也就是整数3位、小数3位,精度到了0.001mm,可以覆盖绝大多数PCB设计的坐标范围。如果你用mil单位,建议至少3.3,别用2.5这种低精度,否则走线和钻孔的位置精度都可能出问题,尤其是高密度板。
2.2 Film级参数里的细节,每项都是坑
新建一个film之后,真正决定成败的是下面这些参数:
Undefined line width(未定义线宽)。这个值建议直接设到6mil或8mil。它的作用是兜底——图纸里如果有没有定义线宽的线、圆弧或shape边界,光绘就以这个宽度输出。如果设为0,这些元素会直接丢失,然后板厂莫名其妙问你为什么少了好多线。设置一个合理的默认值,能省掉一大堆排查时间。
Film size limits(幅面限制)。默认值通常够用,但如果你的板子尺寸超过默认幅面,光绘会报错。我习惯把这个值设成比板子大一圈的尺寸,比如板子长宽在200mm以内,我就设X=300mm、Y=300mm,留足余量。反正常见的都是总尺寸限制。
Suppress unconnected pads(抑制未连接焊盘)。这个选项只在负片层起作用。如果是内电层用负片输出,勾选后会把没有连接网络的焊盘、过孔盘抑制掉,让负片更干净。但如果你用正片铺铜方案,这个选项不用勾,勾了反而可能丢掉过孔连接。
Negative(负片)开关。每个film可以单独设置是否负片输出。内电层(电源层、地层)老流程里很喜欢用负片,因为出图简单、文件小。但现在我更推荐正片铺铜方案,配合动态Shape,能在设计阶段就看到铜皮的连接关系,比负片直观得多。
Output units(输出单位)。跟着设计原点走,毫米就毫米,密尔就密尔,但全流程必须统一。我见过一个经典事故:Artwork里用mm,NC Drill里用mil,出来的Gerber和钻孔文件对不齐,板厂一导入就报警。这种低级错误,其实就是单位没统一。
2.3 8层板层面映射关系与正负片选择
8层板常见的叠层是1-2-1,也就是顶层、底层加上两组内层,具体可以是顶层信号、GND、内层信号、电源、内层信号、GND、内层信号、底层信号。这个结构下,Artwork里至少要建下面这些film:
| Film名称 | 主要subclass | 输出方式 | 作用 |
|---|---|---|---|
| TOP | ETCH/TOP | 正片 | 顶层走线、焊盘、过孔 |
| GND02 | ETCH/GND02 | 正片(或负片) | 第二层地平面 |
| SIG03 | ETCH/SIG03 | 正片 | 第三层信号走线 |
| PWR04 | ETCH/PWR04 | 正片(或负片) | 第四层电源平面 |
| SIG05 | ETCH/SIG05 | 正片 | 第五层信号走线 |
| GND06 | ETCH/GND06 | 正片(或负片) | 第六层地平面 |
| SIG07 | ETCH/SIG07 | 正片 | 第七层信号走线 |
| BOTTOM | ETCH/BOTTOM | 正片 | 底层走线、焊盘、过孔 |
这8个只是“电气层”部分,真正发出去还要带上阻焊、助焊、丝印、板框和钻孔图。
| Film名称 | 主要subclass | 作用 |
|---|---|---|
| SOLDERMASK_TOP | SOLDERMASK_TOP、BOARD GEOMETRY/OUTLINE | 顶层开窗,决定哪里上锡哪里不上锡 |
| SOLDERMASK_BOTTOM | SOLDERMASK_BOTTOM、BOARD GEOMETRY/OUTLINE | 底层开窗 |
| PASTEMASK_TOP | PASTEMASK_TOP | 顶层钢网,SMT贴片用 |
| PASTEMASK_BOTTOM | PASTEMASK_BOTTOM | 底层钢网 |
| SILKSCREEN_TOP | BOARD GEOMETRY/SILKSCREEN、REF DES/SILKSCREEN | 顶层丝印,放位号和标识 |
| SILKSCREEN_BOTTOM | BOARD GEOMETRY/SILKSCREEN、REF DES/SILKSCREEN | 底层丝印 |
| OUTLINE | BOARD GEOMETRY/OUTLINE、BOARD GEOMETRY/DIMENSION | 板框和尺寸标注 |
| DRILL | MANUFACTURING/NCDRILL_LEGEND | 钻孔符号图 |
这些都是固定套路,叠层结构不变的情况下完全可以做成模板。唯一要留意的就是每个厂对丝印层要求不一样,有的厂要求把VALUE也放进去,有的厂只留REF DES,这个在模板里预留一个可选项就行。
2.4 钻孔文件和钻孔图,别等到最后才想起来
Gerber文件只是图形,钻孔坐标要靠NC Drill生成。很多初学者光把.art文件发出去,忘了.drl文件,板厂直接没法生产。这里要分两步走。
第一步是设置NC参数。Manufacturing -> NC -> NC Parameters,把Output file选成Excellon格式,单位、整数位和小数位必须和Artwork保持一致,推荐也设成3.3。Enhanced Excellon格式能自动包含更多孔信息,配置允许就勾上。
第二步是生成钻孔文件。Manufacturing -> NC -> NC Drill生成.drl,如果板上有铣槽、不规则孔,还要运行Manufacturing -> NC -> NC Route生成.rou。这里有个容易漏的动作:运行Manufacturing -> NC -> Drill Legend生成钻孔符号表,然后在Artwork里建一个DRILL film,把符号表所在的subclass(通常叫MANUFACTURING/NCDRILL_LEGEND)勾进去。这样板厂拿到DRILL.art和.drl文件,一个看图一个读数据,才能对得上。
3. 一键导出8层板Gerber模板的完整实操
3.1 出Gerber前的检查清单,别急着点生成
每次出光绘前,先花10分钟做一轮检查,能省掉后面好几个小时的返工。我把自己固定的检查流程列一下:
- 跑一次完整DRC,确认没有未解决的短路、间距、未连线的错误。光绘不会因为DRC报错就拒出,但带着错误出图,板厂做出来的板子大概率有问题。
- 检查叠层设置。Setup -> Cross-section里确认8层全部定义好,介质厚度、铜厚、层名和Artwork里引用的subclass一致。这里如果嫌麻烦,最直接的方法是在命令栏输入
stackup report看一下生成报告。 - 统一单位。把所有设置都切到同一种单位(推荐mm),包括Artwork、NC Drill、NC Route。
- 确认原点合理。原点最好放在板框左下角,方便板厂做拼板和对位。实际操作中,我用
x 0 0把原点移到指定位置后再出图。 - 动态Shape更新。如果板上有动态铜皮,执行Display -> Status里的Update to Smooth,确保铜皮状态是最新的,别拿旧状态去出图。
这步做完,再进Artwork Control Form,心里才踏实。
3.2 首次配置:8层板Artwork从头设置
打开Manufacturing -> Artwork,先切到General Parameters页签。Device type选RS-274-X,Format设成3.3,单位设为mm,Film size limits设大一点,Coordinate type选Absolute。Error action我建议选Stop on error,宁可当场卡住也不要带着错误硬出,后面排查成本更高。
然后切到Film Control页签,开始逐个建film。点Add添加film,命名规则我用“名字.art”,比如TOP.art、GND02.art。选中一个film后,在下方subclass列表里勾选对应层面。这里重点提醒:每个film的subclass勾选一定要准确,不要顺手把ETCH/TOP勾到GND02的film里,这种错在复杂板里很难一眼看出来,等板厂反馈说内层图形不对,排查起来相当痛苦。
逐个film建好后,检查一遍film列表的完整度。用前面那张“8层板层面映射表”当对照清单,确认电气层、阻焊、助焊、丝印、板框、钻孔图都在。确认无误后,勾选Select All,点击Create Artwork。Allegro会在工程目录下生成artwork文件夹,所有.art文件都在里面,同时弹出一个日志窗口,这个log一定要翻一遍,里面会记录每个film的生成结果和警告信息,很多潜在问题在里面就有苗头。
3.3 用参数文件把配置固化成模板
这是整个“复用”流程里最关键的一步。第一次配置完Artwork后,别急着关软件,先把参数导出来。
菜单路径是File -> Export -> Parameters,弹窗里会有几类参数可以勾选,Artwork、NC Parameters、Design Parameters这些,我通常勾上Artwork和NC Parameters,然后导出成一个参数文件。这样光绘film清单、通用参数、钻孔参数就都被固化了。
新项目要做同样叠层的板子时,直接用File -> Import -> Parameters把这个参数文件灌进去,Artwork Control Form里的film就全部回来了,基本不用重新配。导入后要做的只是核对一下当前板子的subclass名称是否和模板一致,因为不同板子即使叠层相同,用户定义的层名也可能不一样,一旦有差异,film引用的subclass会失效,Artwork运行时就会报错。
我实际操作中踩过一次记忆很深的坑:模板是从一个旧板子导出的,新板子的内电层被我改名叫GND,但模板里还叫GND02,结果导入后Artwork一直报找不到层面,排查了半天才发现是名字不匹配。所以导入参数文件后的第一件事,就是逐个film确认subclass引用是否存在,别偷懒。
3.4 Skill脚本思路:把一键做到极致
如果你的工作流里出图频率很高,只想按一个快捷键就完成全部出图动作,可以走Skill脚本这条路。思路其实不复杂:Allegro提供了一套Artwork相关的AxLAPI,可以在Skill脚本里读参数、建film、执行生成。我贴个示意性的伪代码,给你一个框架参考:
; 伪代码示意,实际函数名和参数按你的Allegro版本核对 ; 1. 获取当前Artwork参数 Params = axlArtworkGetParams() Params->deviceType = "RS-274-X" Params->format = 3:3 axlArtworkSetParams(Params) ; 2. 检查film列表,没有指定film就添加 when( !axlArtworkIsFilmDefined("TOP.art") axlArtworkAddFilm(...) ) ; 3. 运行Artwork输出 axlArtworkRun()写脚本的坑不在脚本本身,而在于不同版本Allegro对API的支持有差异。我的建议是先在命令行里用skill开发工具逐步试,确认每个函数在当前版本都能正常返回,再封装成完整脚本。脚本里还要加日志输出和错误捕获,比如检查每个film是否成功生成,失败就停止运行并给出提示,比一次性跑完再回头查log高效得多。
如果你不会写Skill,也没关系,至少掌握3.3节的参数导入导出,已经能覆盖80%的复用需求了。
4. 光绘导出常见错误与排查实录
4.1 板厂说打不开Gerber文件,怎么办
这个报错大部分出在格式设置或D码缺失上。首先确认Device type是不是RS-274-X,老版本Gerber 6x00格式还得带Aperture文件,现在很多板厂直接不收了。其次检查输出单位是否统一,如果文件里混了mm和mil的数据,板厂导入软件读出来就是乱的。
还有一个很低级但高频的问题:光绘文件名包含中文或特殊字符。板厂的自动化工具处理这类文件名经常出问题,统一用英文、数字、下划线最稳妥。我在公司内部定的规则是film名里只用大写字母和数字,连空格都不允许。
4.2 焊盘丢失、过孔无盘,问题出在哪
如果顶层焊盘整体消失,先查是不是在Artwork的Film options里误开了负片模式,负片输出会让图形反相,焊盘区域被挖空。再查Suppress unconnected pads,如果该层是正片且勾了这个选项,没连网络的焊盘会被抑制掉,看起来就像“焊盘丢了”。过孔盘丢失还要查一下内电层,尤其用负片方案时,Thermal Relief散热盘没设置好,连接关系在光绘里就会异常。
我之前遇到过一个典型情况:MI层是负片,过孔的地连接盘在CAM350里看是断的,不是没连,而是Thermal Relief的开口角度和宽度设置太小,跟制造公差打架。这个问题在Allegro里肉眼看不到,必须出完光绘后用CAM350或GerbView放大检查。
4.3 钻孔文件与Gerber对不齐,先查这两个参数
钻孔对不齐,90%是单位或小数位不一致。Artwork里用mm 3.3,NC Drill里却用mil或2.5,出来的数据精度不同,导入板厂系统后孔位就会偏。我的做法是固定一套组合:单位mm、整数3位、小数3位,所有环节统一,不允许单个文件单独设置。
另外还容易忽略的是原点。如果你在Artwork里移动了原点,NC Drill里的原点也要跟着一致。最好的办法是出Gerber和出钻孔文件前,在命令栏重新确认一下当前原点坐标,两块数据都从同一个原点出发。
4.4 丝印缺失、板框缺失、文件列表不全
丝印缺失通常是film里的subclass没勾全。SILKSCREEN_TOP这个film至少要有BOARD GEOMETRY/SILKSCREEN和REF DES/SILKSCREEN两个subclass,有些设计还会把DEVICE TYPE放上去,取决于你们公司的标注规范。如果新板子上的位号不见了,先看REF DES/SILKSCREEN有没有勾上,再查是不是位号被放到别的subclass去了。
板框缺失则基本是OUTLINE film没包含BOARD GEOMETRY/OUTLINE。遇到过更隐蔽的情况:板框画在了BOARD GEOMETRY/DIMENSION层,而OUTLINE film里只勾了OUTLINE没勾DIMENSION,于是尺寸标注出来了、板框线没出来。处理方式很直接:把板框线所在的层统一放到BOARD GEOMETRY/OUTLINE,不要图省事画到别的层。
文件列表不全还有一个常见原因:Artwork运行时某个film报错停住了,后续film没有继续生成。所以每次生成完,都要对照film清单检查artwork文件夹里的.art文件数量是否完整。漏一个文件,板厂就不可能把流程走下去。
4.5 排查工具箱:看完日志再动手
最后分享一个排查习惯。Allegro每次运行完Artwork都会弹出日志,上面会列出每个film的生成状态、警告信息、错误号。很多问题的线索都在日志里,不用急着去改设置,先看日志,目标会明确很多。
我自己排查光绘问题的顺序一般是:先翻Artwork日志,确认有没有失败的film;再用CAM350导入所有Gerber文件,肉眼检查各层是否完整、是否对齐;最后逐层看内层铜皮和钻孔符号,重点检查电源层、地平面和过孔连接。这套流程配合上面的参数检查,绝大多数问题都能在5分钟内定位。
做设计和出制造文件其实是一件事的两面,光绘这块优化好了,后面跟板厂沟通的返工成本能降一大截。我个人这些年最大的体会就是:把重复性的配置沉淀成模板和脚本,出图效率提升的幅度远超想象。你现在如果还在一项项手工点Artwork,建议花半天时间把模板建一次,后面每个项目都会感谢这次投入。