做PCB设计这几年,我见过太多画板子画得漂亮、一到出Gerber就翻车的案例。Gerber文件说白了就是把设计转换成工厂能直接用来生产的光绘数据,这一步如果搞不定,前面所有布线、仿真、DRC的功夫可能全都白费。Allegro作为Cadence家族的主力PCB设计工具,出Gerber的流程和AD、Pads差异不小,尤其是Artwork控制表单、钻孔文件(NC Drill)这两块,第一次用的人十有八九会卡住。
这篇文章就围绕Allegro的Gerber输出全流程来写,从前期准备、参数设置、实操步骤到问题排查,把我平时项目里踩过的坑和验证过的标准做法都整理出来。无论你是刚学Allegro的新人,还是从AD或Pads转过来、正在搜“allegro转pads”“allegro导出dxf”这类问题的朋友,都可以把这篇当一份能直接照做的作业模板。光绘、丝印、阻焊、钻孔、外形,每一类输出文件我都会交代清楚配置思路。
1. 为什么Gerber输出是PCB设计的“最后一公里”
1.1 大多数人都在这一关掉链子
原理图有ERC,布局布线有DRC,设计阶段哪怕出了问题,基本都能在设计环境里被拦下来。但Gerber文件一旦输出,设计工具就“放手”了,后面无论是工厂端的CAM软件还是光绘机,都只认数据不认人。我看到太多工程师在Allegro界面里看一切正常,结果把Gerber导到CAM350里一打开,要么缺铜皮、要么钻孔偏移、要么丝印叠得乱七八糟。
这里面的核心原因,是Allegro的Gerber输出本质上是一个“分层拍照”的过程。它不像AD那样每层对应一个输出文件那么直观,而是通过Artwork控制表单来定义“底片(Film)”,每个Film可以包含多个显示图层的组合,还能设置正片、负片属性。这个机制很强大,但也意味着你必须先理解底片的概念,否则很容易漏层、叠错层,或者把动态铜皮输出成只剩轮廓的状态。
另一个高频翻车点是钻孔文件。Gerber文件本身只描述铜箔、丝印、阻焊这些平面图形,孔的物理位置和直径大小是另一套数据,也就是NC Drill钻孔文件。Allegro输出了Gerber却忘了钻孔文件,或者钻孔格式和Gerber精度设置不一致,这类问题我见过不止一次。工厂拿到数据后,如果钻孔文件和Gerber对不上,轻则反复确认,重则直接报废一批板子。
所以我的建议是,把Gerber输出当成一个独立的“交付环节”来对待,而不是点几个按钮的机械操作。交付的是一套能被工厂完整解析、生产、装配的“图纸语言”,多花十分钟核对,能省掉后面几天的沟通成本。
1.2 输出前必须完成的检查清单
先放一张我每次出Gerber前都会过的检查清单。不是走形式,每一条背后都有对应的真实教训。
| 检查项 | 具体怎么做 | 翻车后果 |
|---|---|---|
| 板框完整性 | 检查Board Outline是否闭合,有没有多余线段 | 工厂无法正确成形,板子外形直接错 |
| DRC状态 | 至少保证关键网络无未解决DRC | 短路、间距异常会在生产中暴露 |
| 网络连通性 | 用Reports检查所有网络是否全部连上 | 开路板子直接报废 |
| 丝印整理 | 位号是否缩进板框、是否互相重叠 | 丝印看不清,贴片对位困难 |
| 铜皮/铺铜状态 | 动态铜皮是否填充更新为最新 | 出Gerber时铜皮缺失或只剩轮廓 |
| 钻孔对位 | 孔符号、钻孔图信息是否完整 | 工厂无法识别孔位置,需反复确认 |
这条清单看着简单,但每一条我都实打实吃过亏。拿动态铜皮举例,Allegro界面上显示是正常的,但如果你改动过布线或者规则,动态Shape没有重新填充,一生成Artwork就会报错或输出异常。这类问题不是靠目视检查能发现的,必须在输出前主动更新Shape数据。
还有人喜欢把板框从DXF导入,省是省了,但导入后的线条可能不在同一个图层上,也可能单位没换算对。Allegro里的图层概念比CAD严格得多,导入DXF后一定要花时间整理图层和单位,不然到出Gerber那步,板框经常莫名消失或跑到十万八千里外。这也是为什么我在正式讲输出步骤之前,先强调一遍“设计数据本身要干净”。
2. 出Gerber前要先搞懂这三个概念
2.1 Artwork控制表单到底在管什么
Allegro里出光绘的核心入口是Artwork控制表单。很多人第一次打开这个表单会懵,因为它里面不是简简单单的“层选一下”,而是要定义一堆Film。每个Film相当于一张虚拟底片,你可以把设计里的多个图层卷到一个Film里,比如把Etch、Pin、Via Class合并成一个Top光绘。
为什么要这么设计?因为制造端的光绘文件需要把同一层信息聚合在一起,比如顶层铜箔,它既包含布线走线,也包含器件焊盘和过孔焊盘,如果分开输出三个文件,工厂反而难处理。Allegro把“逻辑图层”和“输出Film”分开,给了工程师更强的控制力,代价就是学习曲线稍微陡一点。
常规的Artwork设置里,还有一个容易被忽略的选项叫“Undefined line width”(未定义线宽)。Gerber格式要求所有图形都必须有确定线宽,但设计里可能存在零宽度线条或者特殊图形,如果不给一个兜底值,输出时这些内容会被丢掉或者报错。我习惯设成0.15mm或者6mil,具体根据板子的最小线宽来定,至少保证不会因为线宽为零导致数据丢失。
2.2 钻孔文件的参数认知
钻孔文件在Allegro里不是和Gerber一起出的,而是走另一套NC输出流程。最常用的是Excellon格式,它记录每个钻孔的坐标和直径,本质是给钻孔机看的数控代码。很多人把它和钻孔图(Drill Drawing)搞混,实际上工厂需要的是两类东西:NC Drill数据文件,以及带孔符号、刀径表的钻孔图。
NC Drill文件的核心参数包括整数位和小数位精度、单位、是否压缩前导零等。比如设计单位是mm,输出格式选3:3,意思就是整数3位、小数3位,精度到0.001mm。如果设计单位是inch,一般用2:4,精度到0.0001英寸。这个精度必须和Gerber保持一致,否则工厂对位时会出现零点几毫米的偏差。
还有一点,如果你板子里有异形孔、长圆孔或铣削槽,单纯出NC Drill不够,还要走NC Route,输出铣削路径数据。我见过有人只出了NC Drill就交差了,结果工厂追问“槽怎么加工”,来回折腾好几个工作日。
2.3 单位、精度、格式:三个容易埋雷的设置
单位不一致是跨工具协作的重灾区。Allegro默认支持mm和mil两种单位,但同一个项目里,原理图、PCB、DXF导入文件可能来源不同,单位一旦混乱,所有坐标都会错位。我们项目里有个不成文的规定:从项目启动第一天就锁定单位,沟通、命名、标注全用同一个单位,绝不在中途切换。
精度设置同样关键。Gerber的X、Y坐标保留几位小数,直接决定了光绘机的对位精度。精度设得太低,圆弧、焊盘边缘会出现台阶感,加工出来容易有毛刺;设得太高,文件体积变大,部分老式光绘机还不支持。对于绝大多数PCB,mm单位下用3:3已经足够,高密度板子建议3:4,但不能低于3:2。
格式方面,现在主流工厂都认RS-274X,也就是我们常说的Extended Gerber。它把光圈(Aperture)定义内嵌在文件里,不再依赖单独的Aperture表,极大减少了传输出错的概率。老的RS-274D还需要额外传D码表,现在基本被淘汰了。我强烈建议所有项目统一用RS-274X,别再跟工厂问“要不要加光圈表”这种问题。
3. 实操全流程:一步步输出Gerber与钻孔文件
下面这组流程我按Allegro 17.2/17.4的菜单路径来写,其他版本菜单名称略有出入,但核心表单和设置逻辑是一样的。
3.1 配置Artwork Film
第一步,打开Manufacture菜单下的Artwork控制表单。如果这个菜单项找不到,直接在Command栏敲artwork也能呼出。打开后第一件事不是急着建Film,而是先点右边General Parameters区域的Parameters按钮,把全局参数确认一遍。
全局参数里最关键的是Output Format,选RS274X。接着确认Output Units和Precision,比如mm单位、3:3精度。还要检查Suppress Unconnected Pads选项,这个选项一般用于负片层,正片不用勾。下面说Film层配置。
新建Film的方式是右键点击表单左侧的Film列表,添加一个新Film,比如命名成TOP。然后在右侧Available Films里勾选TOP Film需要包含的图层。以常见的双面板为例,各层Film的典型配置可以参照下表:
| Film名称 | 包含图层 | 极性 |
|---|---|---|
| TOP | ETCH/TOP、PIN/TOP、VIA CLASS/TOP | 正片 |
| BOTTOM | ETCH/BOTTOM、PIN/BOTTOM、VIA CLASS/BOTTOM | 正片 |
| SOLDERMASK_TOP | SOLDERMASK/TOP、BOARD GEOMETRY/OUTLINE | 正片 |
| SOLDERMASK_BOTTOM | SOLDERMASK/BOTTOM、BOARD GEOMETRY/OUTLINE | 正片 |
| PASTEMASK_TOP | PASTEMASK/TOP | 正片 |
| PASTEMASK_BOTTOM | PASTEMASK/BOTTOM | 正片 |
| SILKSCREEN_TOP | SILKSCREEN/TOP、REF DES/SILKSCREEN_TOP、BOARD GEOMETRY/OUTLINE | 正片 |
| SILKSCREEN_BOTTOM | SILKSCREEN/BOTTOM、REF DES/SILKSCREEN_BOTTOM、BOARD GEOMETRY/OUTLINE | 正片 |
| OUTLINE | BOARD GEOMETRY/OUTLINE、DIMENSION | 正片 |
具体图层名称和你建封装、建板框时用的Class和Subclass有关,不同公司规范会不一样。关键原则是:铜层Film要把Etch、Pin、Via三类都包含进去,否则焊盘和过孔会缺失;丝印Film要包含位号文字对应的Text层;阻焊层输出之前要和工厂确认是正片还是负片,默认走正片就行。
建好Film后,一定要把每个Film的Undefined Line Width设置好,我前面说了,一般给0.15mm。然后逐个检查Plot Mode是不是Positive,如果你做的是负片内电层,才需要单独设置Negative。检查完毕,保存表单,这一步就完成了。
3.2 生成光绘文件
Film配置好之后,回到Artwork控制表单主界面。点击左侧Film列表下方的Select All按钮,把所有Film选中。设置输出路径,建议按单板建一个专属文件夹,里面按“Gerber”“Drill”“PDF”等子目录分类,别把所有文件堆在一起。
点击Generate按钮,Allegro会在后台逐个生成光绘。如果配置有误,日志窗口会报错,最常见的是“Film not found”和“Shape boundary not found”。前者说明Film里图层名配错了,后者说明铜皮Shape没填充好。按我之前说的,先执行Update Shapes刷新一下,再重新生成。
还有个小细节需要养成习惯:生成完光绘后,回原图看一眼。Allegro出Gerber不会自动退出操作状态,但有时候会改变部分显示设置。有些老版本在生成过程中会把所有层显示关掉,你看着黑屏以为是死机了,其实只是显示问题。遇到这种情况按所有层显示的快捷键或者重新打开Color/Drawing Visibility面板即可。
3.3 设置并生成NC Drill钻孔文件
钻孔文件是另一条线,但必须在同一个“交付包”里。点击Manufacture菜单下的NC子菜单,先打开NC Parameters表单,或者按上面的顺序在NC Drill对话框里直接点Parameters按钮。
质量控制点如下:
- Format格式:选Excellon格式,大多数工厂都支持,具体选Standard还是Enhanced,按工厂要求;没特别要求就选Enhanced。
- Numeric Format:按单位设置精度,mm用3:3,inch用2:4。
- Output File:设置文件名和输出目录,和Gerber/Brill目录分开。
- Zero Suppression:建议关闭自动压缩,即选None或者根据工厂要求设置。压缩前导零能减小文件体积,但也会引入坐标理解偏差,除非工厂明确要求,否则别自找麻烦。
参数确认后,点Manufacture -> NC -> NC Drill,选择要输出的钻孔文件。Allegro会生成一个.drl或.tap后缀的文件,里面是每个孔的坐标和直径。如果你的板子上有异形槽,继续执行Manufacture -> NC -> NC Route,把铣削路径也导出来。
这里特别提醒:NC Drill生成之前,如果板子上有盲埋孔,要确认孔的类型和层对关系。常规通孔只要一组NC Drill数据,但盲埋孔要按孔所在的层叠结构分别输出,不然工厂不知道这些孔从哪层钻到哪层。遇到复杂叠层时,我会先在钻孔文件里核对孔类型列表,确保每类孔都对应正确的层对。
3.4 生成钻孔图与刀径表
很多工程师只记得出NC Drill数据,却忘了钻孔图,但工厂拿到一块板子时,需要看到孔的分布位置和对应的符号表。Allegro里通过Manufacture -> NC -> NC Legend生成钻孔图例。
执行NC Legend后,需要选择一个放置钻孔图例的图层。我习惯放到Manufacturing类的NC_LEGEND子层,然后用Move命令把它挪到板框外合适的空位上。钻孔图一旦放下去,就会生成一个孔符号表,包含每种孔径、对应的符号、数量、电镀状态等关键信息。这个钻孔图最好再导出一份PDF,作为交付包的附件。
如果NC Legend没有正常生成,最常见原因是板框外没有足够的放置空间,或者当前显示的子层没有打开。先把所有层打开,把图例放进去,后续再单独出PDF。
钻孔图上还有一个容易忽略的信息是“镀通孔”与“非镀通孔”的区分。NC Drill文件只记录孔的机械属性,电镀状态由钻孔图上的标注说明。多检查一眼,能避免工厂把你该镀铜的孔做成非镀通孔。
3.5 IPC网表输出(可选但推荐)
如果你准备让工厂做飞针测试,或者后续需要做可测试性分析,强烈建议一并导出IPC-D-356网表。在Allegro里走File -> Export菜单,找到IPC-D-356选项,设置输出路径后生成。这个文件记录的是所有网络的连接关系、元件焊盘坐标和孔的网络归属,工厂拿到它可以和Gerber做网络对比,很多开路短路问题在加工前就能被查出来。
我个人的标准交付包通常包含这些内容:Gerber光绘文件、NC Drill钻孔文件、NC Route铣削文件(如果有异形孔)、钻孔图PDF、IPC网表、以及一份板厂生产要求的说明文档。把这些准备齐全后,发给任何一家工厂都能快速进入生产评审。
4. 常见问题与排查技巧实录
4.1 光绘缺线、缺铜,铜皮只剩轮廓
这是Allegro用户问得最多的问题之一,热搜词里也挂着“allegro铜皮只有轮廓”。出现这个情况,绝大多数是动态铜皮没有填充刷新。你在屏幕上看Shape是实的,但Artwork输出时读到的可能只是Shape边界。解决方案也很简单:在输出前执行一次Shape填充刷新,老版本叫Update Shapes,新版本里也保留了类似功能,把设计里所有动态Shape重新生成一遍。
如果刷新之后还是只剩轮廓,那要检查Film的极性设置。负片模式下Shape显示逻辑和正片相反,很多人把正片的Film误设成了Negative,导致铜皮区域被“抠掉”。记住,你做的这种常规信号层一律用Positive,负片只用于内电层分割。
还有一个隐蔽问题是Shape边界有微小的自相交或断点,这在屏幕上几乎看不出来,但在Gerber生成时会报“Shape boundary not found”。排查时把Shape边界以矢量形式放大检查,或者重建Shape,通常能解决。
4.2 钻孔文件与Gerber对不上
钻孔文件本身坐标没错,但对不上Gerber,十有八九是单位和精度不一致。比如Gerber用了3:3的mm精度,NC Drill用了2:4英寸精度,两边坐标本身都对,但格式不同导致工厂CAM导入时自动按各自的单位处理,一叠加就错位。
这类问题最好的排查方法,是把Gerber和NC Drill同时导入CAM350,然后在同一坐标系下开启叠加显示。正常情况下焊盘中心要和钻孔符号的中心重合,偏差大于0.05mm就要警惕。我每次做完这套检查才会正式发板,能拦截掉超过八成的人为失误。
还有一类问题是孔位偏移但形状对,这种往往是Allegro里的原点没有和Gerber的原点统一。设计文件的原点设置、Artwork的Film Offset设置、NC Drill的原点设置,三处必须保持一致。我习惯把原点统一放在板框左下角,所有输出都用同一个原点,能省很多心智负担。
4.3 丝印层输出异常或文字丢失
丝印层在Gerber里最常见的坑是文字没显示出来,或者文字挤压在一起。首先要确认Film里包含的是哪一个Text层,Allegro的位号文字默认在REF DES/SILKSCREEN_TOP,但很多人习惯手动画一些公司LOGO或警示文字在BOARD GEOMETRY/SILKSCREEN_TOP。如果你Film只勾了其中一个层,另一部分就会丢。
其次检查字体类型。Allegro支持矢量字体和TrueType字体,出Gerber时矢量字体是最稳的,因为TrueType字体输出后容易产生大量短线段或乱码。尤其涉及中文时,很多工厂对TrueType的中文支持不友好,我最稳妥的做法是:所有板上文字一律用矢量字体/Stroke类型,中文先转成线宽图形再输出。
还有个小技巧:Gerber输出前,用Color/Drawing Visibility单独看一下丝印层,把被大铜皮盖住或者被板框切掉一半的位号挪开。Gerber里不会给你自动排忧解难,所有显示问题都会原样传到工厂。
4.4 板框在Gerber中缺失
板框丢失通常分两种情况。一种是板框线条根本不在BOARD GEOMETRY/OUTLINE层,比如从DXF导入时线条被放到了别的Class或Subclass。这种问题要回到图层管理里,把板框线条重新移动或复制到标准Outlin层,再重新生成Film。
另一种情况是板框线条的线宽为零,导出时被Undefined Line Width设定兜底,但如果兜底值设成了0,板框就会整个消失。所以我之前强调,Undefined Line Width一定要设一个非零的保险值。同时,出Gerber前用软件自带的功能检查板框闭合,没有闭合的半开放线条在光绘里很容易出现缺口。
如果你习惯板框用DIMENSION层标注尺寸信息,建议单独把DIMENSION层加到OUTLINE Film里。制造端经常需要看板材外形尺寸标注,这能省掉工厂一遍遍打电话问“板子长宽到底是多少”的时间。
4.5 交付前最后的核对方法
文件全部生成后,我在发板前会做一个“三件套”核对。所谓三件套,就是Gerber、钻孔文件、钻孔图这三类数据互相印证:Gerber里焊盘的形状数量要和钻孔文件里的孔数量对应,钻孔图的符号表要和NC Drill里的孔径种类一致。这个核对如果只靠肉眼在Allegro里看,效率太低,我建议直接导入到CAM350或者类似CAM工具里做比对。
在CAM工具里,我会逐层查看,重点关注阻焊开窗是否覆盖焊盘、丝印是否压到焊盘、铜皮和板框边缘间距是否足够。这些在Allegro设计里可能已经通过DRC查过,但换到制造视角再看一遍,总能发现一些设计规则之外的实际问题。比如阻焊开窗太小,工厂加工偏差一起来,焊盘边缘就容易露出阻焊料。
确定无误后,再打包成ZIP,附带一页PDF版的钻孔图和装配图。整套文件命名要清晰,比如“板名_Layer_版本号_日期”,别用类似“final2”这种让人猜的名字。工厂收到规范的交付包,往往也会更愿意认真配合你的生产。
根据我个人这几年出Gerber的经验,最大的心得其实就一句话:把交付文件当成给工厂的“施工图”来敬畏,而不是把出Gerber当成设计完成后的收尾彩蛋。每次多花十分钟做一次CAM层面的交叉验证,你能省下的是整个项目周期里反复确认、返工、报废的时间成本。这套流程我已经在无数项目里验证过,按这个顺序走,你的板子至少不会在“最后一公里”出幺蛾子。