板子画完、DRC 跑完、电源平面也铺好了,眼看着要点发出去了,板厂回一句"外形没闭合,请重新提供光绘"——这种事我遇到过不止一次。在 Allegro 里做光绘文件导出,真正难的地方从来不是点哪个按钮,而是你必须清楚:设计数据库里的ETCH/TOP、PIN/SOLDERMASK_TOP、BOARD GEOMETRY/OUTLINE这些内部层名,最终会被翻译成板厂 CAM 工程师手里那张图纸上的哪一笔。翻译错了或者漏翻译了,你在软件里看到的那块漂亮板子,到了工厂就可能是另一块板。
这篇内容面向所有用 Cadence Allegro 出图的人:刚上手、第一次独立把板子送出去的新人,以及做了几年但一直靠"抄前辈的 film 设置"、说不清每一格参数为什么这么填的老手。我会把光绘导出的完整链路拆开讲——从 Film 的层配置、Artwork 参数窗口里那几行关键数字,到 NC Drill 的对齐、板框和阻焊的处理,再到交付前怎么自查、打样回来出了偏差怎么往回倒推。所有参数都会给出常用值和理由,你可以直接照着填,也可以拿它去跟板厂对质。
1. 一套能下单的"光绘文件"到底由哪些东西组成
很多人的认知里,"导光绘"就等于在 Artwork 窗口里点一下 Create Artwork,然后拿到一摞.art文件。这个理解只对了三分之一。板厂拿到你的资料后,要完成三件事:做出图形、钻出孔、铣出外形。这三件事对应的是三组不同的文件,各自有各自的参数体系,彼此还必须严格对齐。任何一个环节的单位或精度跟另外两个对不上,板子做出来就是废的。
1.1 Gerber、钻孔、铣槽、网络表:四类交付物各管什么
先把交付物清单列清楚,这是后面所有设置的落脚点。
| 交付物 | 生成方式 | 管什么 | 是否必备 |
|---|---|---|---|
| Gerber(RS-274X) | Manufacture → Artwork,每层一个文件 | 线路、阻焊、钢网、丝印、外形等所有图形 | 必备 |
| 钻孔文件(Excellon) | Manufacture → NC → NC Drill | 所有圆孔的孔径、位置、镀通属性 | 必备 |
| 铣槽文件(NC Route) | Manufacture → NC → NC Route | 异形槽、板边铣削路径 | 有槽孔/异形边才需要 |
| IPC-D-356 网络表 | Manufacture → Testprep | 飞针测试用的网络点位 | 批量生产、测试要求高时提供 |
这里面最容易出问题的是前两项之间的格式耦合。Gerber 和钻孔文件是两套完全独立的输出引擎,Artwork 窗口里你选了英制 2:5,NC Parameters 里如果顺手留了个公制 3:3,板厂把两份文件叠在一起的时候,焊盘和孔就会整体错开——错开量还不是固定的,随坐标线性放大,板子越大偏得越离谱。
注意:导出前先把设计单位定下来,中途不要改。
Setup → Design Parameters → Design里的 User Units 一旦从 mil 切到 mm,所有 Film 和 NC 参数都得重新核一遍,这是最容易被忽略的连带影响。
1.2 "我导出了 Gerber"和"板厂能直接开工"之间的距离
还有一个常见的认知误区:认为.art文件生成成功、日志里没有报错,就等于资料没问题。Allegro 的 photoplot 日志只报告它能检测到的错误,比如光圈超出限制、零宽度线、找不到的 subclass。至于"板框有没有闭合""丝印有没有压到焊盘""阻焊开窗够不够大"这些工艺层面的问题,它一个字都不会提。
所以实际操作里,光绘导出的后半程永远是"人工复核"。行业里通行的做法是:导出后把所有层丢进一个 Gerber 查看器(比如常用的免费查看工具,或者公司里的 CAM350),逐层叠加看一遍,重点看外形闭合情况、钻孔与焊盘对位、阻焊开窗形态。这一步花十分钟,能省掉一次打样周期。
2. Film 的层配置:把设计数据库里的层名翻译成板厂认的图纸
Artwork Control Form 里的 Film 列表,本质上是一份"翻译字典"。左边是你设计库里的层,右边是板厂要的那张图。这份字典配一次可以长期复用,但配错一次,后面每一版都跟着错。
2.1 一张层对照表:设计里的 subclass 到板厂图纸
下面这张表是我自己项目里常用的最小集,四层板和六层板都适用,正片工艺。你可以直接对着它核对现有 Film 设置。
| Film 名称 | 需要加入的 subclass | 说明 |
|---|---|---|
| TOP | ETCH/TOP、PIN/TOP、VIA CLASS/TOP | 顶层线路,含走线、焊盘、过孔盘 |
| BOTTOM | ETCH/BOTTOM、PIN/BOTTOM、VIA CLASS/BOTTOM | 底层线路 |
| SOLDERMASK_TOP | PIN/SOLDERMASK_TOP、VIA CLASS/SOLDERMASK_TOP、PACKAGE GEOMETRY/SOLDERMASK_TOP | 顶层阻焊开窗 |
| SOLDERMASK_BOTTOM | 同上,切换到 BOTTOM | 底层阻焊开窗 |
| PASTEMASK_TOP | PIN/PASTEMASK_TOP、PACKAGE GEOMETRY/PASTEMASK_TOP | 顶层钢网,无贴片工艺可省略 |
| SILKSCREEN_TOP | BOARD GEOMETRY/SILKSCREEN_TOP、PACKAGE GEOMETRY/SILKSCREEN_TOP、REF DES/SILKSCREEN_TOP | 顶层字符,必须带位号 |
| SILKSCREEN_BOTTOM | 同上,切换到 BOTTOM | 底层字符 |
| OUTLINE | BOARD GEOMETRY/OUTLINE | 板框,单独一层,别混进别的 Film |
内层电源和地平面如果是负片工艺,还要额外处理ANTI ETCH和THERMAL相关 subclass,这个后面单独讲。
2.2 正片还是负片:什么时候才真的需要 Negative
Allegro 的每张 Film 都可以独立设置 Plot Mode 为 Positive 或 Negative。早些年用负片做内层平面非常流行,因为 Gerber 文件小、生成快。但现在主流做法是能正片就正片。
原因很实在:负片意味着"你画的是孔洞,其余全是铜"。板厂 CAM 工程师需要额外做一次反相处理,反相过程中任何一处不该有的线、任何一个漏掉的 anti-etch,都会变成实际的短路或开路,而且这类问题在 Gerber 查看器里看着"挺正常",很难肉眼发现。设计师这边也一样,负片层的视觉效果和正片相反,改完板子自己都容易看糊。除非你们的叠层和工艺已经固定成负片流程、且有成熟的复核规范,否则强烈建议全部走正片,Shape用动态铜填充,输出体积大一点但心里踏实。
2.3 命名习惯和加层顺序:让 CAM 工程师少打两次电话
Film 的名字不是随便起的,它直接决定了输出文件名。行业里比较通用的命名是全部大写加下划线,比如TOP、SOLDERMASK_TOP,也有些团队用GTL、GTS、GTO这类 Protel 时代沿用的后缀。这两种都行,关键是整份资料保持一致,并且让你的说明文档能对上号。
加层的顺序也有讲究。Allegro 的 Film 列表是按添加顺序排列的,把线路层放在最前面、阻焊钢网中间、丝印外形最后,生成文件时的日志更易读。另外提醒一句:BOARD GEOMETRY/OUTLINE只加到 OUTLINE 这一张 Film 里就够了。有些团队喜欢在每一层都带一圈外形线做对位参考,这需要板厂主动删除,一旦漏删,外形线就会变成阻焊层上的一条开窗或者丝印上的一条粗线。
3. Artwork 参数窗口:单位、精度、容差这三件事决定成败
Film 配好只是把料备齐了,真正决定"能不能被正确解析"的是 Artwork Control Form 里的 General Parameters。这个窗口里的每一个输入框,背后都对应着 CAM 端的一次解析动作。
3.1 Device Type 与 Format:RS-274X 和 2:5 / 3:5 的来历
Device Type 一律选 Gerber RS274X。原因在于 RS-274X 是"自带光圈表"的格式——每一层的圆盘、方盘、椭圆盘尺寸都写在文件内部,CAM 软件打开就能直接还原。早期还有一种 Gerber 6x00 格式,它需要额外配套一个光圈描述文件(aperture report),文件一多就容易丢,丢了之后钻孔和焊盘对不上,所以现在已经基本淘汰。
Format(整数位:小数位)决定的是坐标能表达多少位小数,也就是理论分辨率。常见搭配是:
- 英制:2:5,最大可表达 99.99999 英寸,分辨率 0.00001 英寸(约 0.00025mm)
- 公制:3:5,最大可表达 999.99999 毫米,分辨率 0.00001mm
这两种都能满足绝大多数板子的需求。要注意的是这个 Format 是跟着输出单位走的:如果设计单位是 mil,就选 2:5;如果设计单位是 mm,就选 3:5。混着填的后果就是前面提到的整体缩放 25.4 倍。至于 Offset,除非你的板子在 Allegro 数据库里离原点特别远(比如 X 坐标已经上万 mil),否则保持 0:0 就行;有些老版本的 CAM 软件对超大坐标支持不好,这种情况下可以用相对原点或者给一个负偏移,但一定要在说明文档里写清楚。
3.2 Undefined Line Width 与 Suppress Unconnected Pads:两个必须手动设的选项
这两个选项几乎是新手翻车的重灾区。
Undefined Line Width:设计里如果存在线宽为 0 的线段(比如某些以 0 宽度画的轮廓线),Allegro 不知道要画多粗,就会在这里取值。常规填 5(mil)或者 0.127(mm),对应 0.127mm 的线宽。这个值不能填 0,否则输出可能出现无法加工的细线;也不要填太大,否则原本是示意性的轮廓线会变成一条粗线,尤其在丝印层上很致命。
Suppress Unconnected Pads:勾上之后,Allegro 会把这层里没有连接网络的孤立焊盘直接不输出。这个选项主要对正片的内层和走线层有意义。内层平面用正片填充的时候,一些过孔在某一层其实没有电气连接,如果不勾选,这些焊盘会原样出现在该层铜箔上,形成无意义的孤立铜块,既影响阻抗也浪费铜。建议内层正片层全部勾选,表层通常不需要(表层焊盘基本都有连接)。
至于Full Contact Thermal Reliefs,勾上表示热风焊盘按全连接处理,一般不动它;Vector Based Pad Behavior和绘图相关的选项,除非做的是高频或特殊阻抗板,默认值即可。
3.3 生成后的 art_param.txt:出事时唯一能自证的东西
点完 Create Artwork,输出目录里除了那一摞图形文件,还会多出两个不起眼的文本文件:一个是参数记录,逐层记下了这次导出用的格式、单位、偏移、容差;另一个是 photoplot 日志,记录了生成过程中的告警和错误。
这两个文件的价值在于排错。当板厂说"你这层精度不对",你可以直接打开参数记录文件核对;当某层图形缺失,日志里通常会留一行提示。我自己的习惯是把这两个文件连同 Gerber 一起打包发出去,CAM 工程师有疑问可以自己查,省一轮来回沟通。
4. 钻孔文件:NC Drill 和 NC Route 的参数必须和 Gerber 严格对齐
钻孔是另一套完全独立的输出流程,菜单位于 Manufacture → NC 下面。它和 Gerber 之间唯一的纽带就是"单位 + 格式",这个纽带一旦断了,前面的所有工作都白做。
4.1 NC Parameters 里的格式、单位与 Excellon 头信息
打开 NC Parameters,要确认的几项:
- Output Units:必须和 Artwork 的 Output Units 完全一致,英制就都英制,公制就都公制。
- Format:钻孔文件常用 2:4 或 2:5。注意它和 Gerber 的 Format 不必数值相同,但单位必须相同,否则坐标的绝对值就会错。稳妥做法是两边都用同样的位数,减少沟通成本。
- Enhanced Excellon format:建议勾选。勾上之后文件头部会写明单位、格式、刀具表,CAM 软件能自动识别,不勾的话有些老软件需要人工指定单位,很容易被猜错。
- 前导零/后导零抑制:跟随板厂的通用约定即可,关键是头部信息要能自解释。
输出文件通常以项目的 brd 文件名加.drl后缀命名。生成后同样会有一个参数记录文件和一个日志文件,用于回溯。
4.2 槽孔、盲埋孔与镀通/非镀通的分文件处理
几类特殊孔要单独说:
椭圆孔和异形槽:这类孔在 NC Drill 里是出不来的,因为钻孔引擎只处理圆形刀具。正确的做法是在BOARD GEOMETRY/NCROUTE(或团队约定的铣槽层)上用线画出槽的路径,然后用 Manufacture → NC → NC Route 输出独立的铣槽文件,并在说明文档里注明"该文件为槽孔路径,请按线宽铣削"。
镀通孔与非镀通孔:安装孔、定位孔通常是非镀通的,电气过孔是镀通的。如果两者混在一个文件里,板厂按全镀通处理,安装孔内壁就会挂铜,装配时可能出现短路。规范做法是分开输出,并在文件名或说明里标清楚。
盲埋孔:必须按孔跨越的层分别输出,并且要在说明文档里写清每一组孔的起止层,光靠文件名板厂是猜不出来的。
4.3 钻孔表要不要放进光绘
钻孔表(Drill Legend,菜单在 Manufacture → NC → Drill Legend)生成的是一个"孔径—数量—刀具号"的表格图形,通常放在MANUFACTURING/NCLEGEND这个 subclass 上。
我的建议是不要放进交付的光绘里。板厂是直接从钻孔文件读刀具信息的,钻孔表对他们没有意义,反而会多一层图形干扰。它的价值在于给你自己看——检查孔径种类是不是太多、有没有奇怪的孔径、孔数对不对。如果确实要随板提供,就单独做一张 Film,不要混进 DRILL 或者丝印层里。
5. 板边、阻焊、钢网、字符:四类最容易被漏掉的外围层
线路层和钻孔是主角,但真正让板子"不能用"的往往是配角。这四类层每一类都有各自的坑,而且都是那种导出时不报错、打样回来才炸的类型。
5.1 板框必须闭合,而且必须放在正确的层
板框是板厂铣外形和拼板的依据,要求有两个:放在BOARD GEOMETRY/OUTLINE,首尾闭合、无自交。
常见错误是把板框画在DESIGN_OUTLINE或者随便一个PACKAGE GEOMETRY层上。Allegro 里很多层都允许你画线,画上去也看不出问题,但 Film 里如果没包含那一层,板厂拿到的外形就是空的,只能按 Gerber 文件的最大范围去切,做出来尺寸要么大一圈要么小一圈。
判断闭合的方法:在设计里用 Display 命令高亮 Outline 层,放大到每个角看有没有断口;或者干脆在 CAM 查看器里看,闭合的轮廓围出来是一整片,有断口的会出现明显缺口。
5.2 阻焊开窗差 2mil,可能就是连锡和露铜的区别
阻焊开窗的尺寸不是在 Film 里设的,而是在焊盘定义(padstack)里设的——SOLDERMASK_TOP相对于焊盘通常单边放大 2mil 到 4mil(0.05mm 到 0.1mm)。密脚器件、细间距 QFN 用 2mil 比较稳,普通通孔器件放到 4mil 也没问题。
导出时要确认的是:阻焊层的 Film 里有没有加入PACKAGE GEOMETRY/SOLDERMASK_TOP。有些设计会在封装里额外画阻焊图形,如果 Film 里没包含这个 subclass,这些图形就丢了,表现出来就是某几个器件焊盘不开窗,锡膏根本印不上去。
反过来的情况也常见:开窗过大,相邻焊盘之间的阻焊桥被吃掉,回流焊时容易连锡。这些问题在 Allegro 里都看不出来,需要在 CAM 查看器里把线路层和阻焊层叠加,看阻焊桥的剩余宽度。
5.3 丝印的取舍:位号压焊盘该不该挪
丝印层的 Film 里必须包含REF DES/SILKSCREEN_TOP,这是位号的来源。BOARD GEOMETRY/SILKSCREEN_TOP管的是板级的丝印文字和图形,PACKAGE GEOMETRY/SILKSCREEN_TOP管的是器件轮廓和极性标记。
丝印最大的坑是"压焊盘"。位号或者器件轮廓压到焊盘上,丝印油墨会印在焊盘表面,影响可焊性。严格来说应该在导出前用 Allegro 的检查工具或者人工扫一遍,把压盘的位号挪开或者缩小。
另外提醒两点经验值:丝印线宽建议不小于 5mil(0.127mm),字符高度建议不小于 25mil(0.6mm),低于这个尺寸印刷出来基本糊成一团;如果某块区域实在挤不下,宁可删掉那个位号也不要压盘,因为几乎所有板厂都会主动删掉压盘的丝印,删完之后你的板子上就没有位号了,装配和维修都难受。
6. 从检查到打包:一条能跑通的实操链路
前面讲的是"每一项该设成什么样",这一节把它们串成一条完整的时间线。如果你的项目比较急,可以直接按这个顺序走。
6.1 导出前的五项自查
这五件事每次导出前花五分钟做一遍,能挡掉八成返工:
- 单位统一:设计单位、Artwork Output Units、NC Output Units 三者一致。
- 板框闭合:
BOARD GEOMETRY/OUTLINE首尾相接,无重叠自交。 - Film 齐全:线路、阻焊、丝印、外形都有对应 Film,没有遗漏;内层正片层勾上 Suppress Unconnected Pads。
- 丝印检查:位号没有压到焊盘,极性标记齐全。
- 孤立对象清理:板外的孤立走线、孤立过孔、游离的丝印线,能在设计里删掉的就删掉,别指望板厂帮你清。
6.2 导出后的目录长什么样
Export 完成后,输出目录通常会是这样(文件名示意):
PCB_PROJ/ ├── PCB_PROJ.brd # 原始设计文件 ├── TOP.art # 顶层线路 ├── BOTTOM.art # 底层线路 ├── SOLDERMASK_TOP.art # 顶层阻焊 ├── SOLDERMASK_BOTTOM.art ├── PASTEMASK_TOP.art # 顶层钢网 ├── SILKSCREEN_TOP.art # 顶层字符 ├── SILKSCREEN_BOTTOM.art ├── OUTLINE.art # 板框外形 ├── PCB_PROJ.drl # 钻孔文件 ├── art_param.txt # 光绘参数记录 ├── photoplot.log # 光绘生成日志 └── nc_param.txt # 钻孔参数记录拿到这堆文件后,先做一件事:用文本编辑器打开任意一个.art文件,看开头有没有参数定义块、结尾有没有结束指令(M02)。RS-274X 是纯文本格式,前面一段是光圈定义和单位声明,中间是坐标指令,最后以M02收尾。如果文件开头就是一堆坐标、没有任何参数块,说明你选的格式不对,输出的是老式格式,需要退回重新配置。
6.3 用 Script 录制把整套配置复用到下一个项目
Film 配置和参数设置是保存在 brd 文件里的,换一个项目就得重新配一遍,这是纯体力活。我的解决办法是用 Allegro 自带的脚本录制功能:File → Script → Start,起个名字,然后把整套 Artwork 配置、NC 参数设置、生成动作完整做一遍,再Stop。生成的脚本文件保存下来,下次新项目直接File → Script → Play跑一遍,几秒钟就把一套标准配置灌进去了。
配合一个快捷键会更顺手。在你个人环境目录下的 env 文件里加一行:
funckey q artwork之后按q就能直接拉起 Artwork 窗口,不用每次去菜单里翻。
6.4 交付打包:一个 ZIP 加一份说明
打包这件事看着简单,实际上是沟通成本的关键。我习惯把一个项目的交付整理成"一个压缩包 + 一份纯文本说明":
- 压缩包里放所有 Gerber、钻孔、铣槽文件,文件名保持和 Film 名一致;
- 说明文档里写清楚:层数、叠层顺序、板厚、铜厚、表面处理工艺、最小线宽和最小孔径、阻抗要求、槽孔和特殊孔的处理说明、Gerber 和钻孔各自的单位和格式。
尤其是最后一句话——把单位和格式写进说明文档。板厂一天处理几百个订单,他们不会去猜你的格式,一位 CAM 工程师猜错一次,你的板子就废一批。
7. 打样回来才发现的偏差:六个典型现象和排查链路
最后这一节是我自己踩过的坑,按"现象—排查—根因"的顺序整理,遇到问题可以顺着往回倒推。
7.1 整块板尺寸差了 25.4 倍
这是最经典、也最容易识别的错误。25.4 正好是英寸和毫米的换算系数,所以出现这个倍数关系,一定是单位不匹配。
排查路径:先看 Artwork 的 Output Units,再看 NC Parameters 的 Output Units,最后问板厂那边的 CAM 导入设置里把单位设成了什么。三处只要有任意两处不一致,就会出现这个现象。补救办法是重新导出,不要试图让板厂"缩放一下就完了",因为缩放过程中原点位置可能会偏移,板子上所有孔位都会跟着动。
7.2 钻孔和焊盘对不齐,孔越靠板边偏得越多
如果偏差量随着坐标线性放大,说明是格式/精度问题。检查 Artwork 的 Format 和 NC Drill 的 Format 是不是位数不一致——比如一边是 2:5、一边是 2:4,CAM 软件按其中一方的格式去解析另一方的坐标,就会出现这种"原点附近还行、越远越偏"的症状。
如果偏差量是固定的(整体平移),那多半是原点不一致。检查 Artwork 里的 Drawing Origin 设的是绝对还是相对,以及有没有填 Offset。
7.3 内层出现孤立铜块,或者负片层莫名其妙的短路
内层孤立焊盘,检查Suppress Unconnected Pads有没有勾。如果确定勾了还有孤立铜,那就去看看是不是有孤立过孔或者孤岛铜皮本身没清理。
负片层的短路问题,绝大多数出在 anti-etch 上。负片是"除我之外全是铜",任何一处没画 anti-etch 的地方,都会变成实实在在的铜,把本不该连的网络连起来。这也是我前面建议全部走正片的原因——正片逻辑直观,你能看见的就是实际存在的。
7.4 外形被切掉一角,或者槽孔根本没做出来
外形问题先看板框闭合和所属层。闭合的轮廓被切一角,通常是板框上有一个自交的折角,CAM 软件按自交点的路径去铣,就把角切掉了。
槽孔没做出来,基本都是路径问题——槽是在 NC Drill 里画成椭圆孔了,而钻孔引擎只认圆刀。重新在铣槽层画路径,用 NC Route 单独输出一次。
7.5 阻焊层开窗过大或过小
开窗过小表现为焊盘只露出一小圈,锡膏印不上去或者上锡不良;开窗过大表现为相邻焊盘之间的阻焊桥消失,回流后连锡。
这两类问题都要回到 padstack 里核对SOLDERMASK_TOP的尺寸。另外还要确认阻焊 Film 里包含了PACKAGE GEOMETRY/SOLDERMASK_TOP,有些封装在这一层补画了阻焊图形,漏掉的话表现就是个别焊盘没开窗。
7.6 位号全部消失
位号在成品板上一个都找不到,通常是两个原因之一:一是导出时丝印 Film 里漏了REF DES/SILKSCREEN_TOP;二是位号虽然导出了,但全部压在焊盘上,被板厂按惯例删掉了。
前者在设计里用 Display 命令单独点亮 REF DES 层,看会不会和 Film 里配的 subclass 对上;后者在导出前就要处理,把压盘的位号挪开。这也是为什么我一直强调丝印检查要放在导出之前做——等板子回来再发现,就只能返工重做了。
我自己现在的习惯是,导出光绘之后不急着打包,先用免费查看器把所有层叠着扫一遍,重点看三个地方:外形闭合、钻孔与焊盘对位、阻焊开窗形态。这三处看完没问题,剩下的通常都是小问题。另外每一版资料我都会保留导出目录不删,等板子回来对不上账的时候,art_param.txt和photoplot.log就是唯一的证据链,能直接告诉你是哪一版、哪一项参数出了问题。