做过Allegro设计的工程师基本都经历过这种场景:光绘文件检查了三轮,铜箔、丝印、阻焊全部确认无误,结果板厂一封邮件过来——“钻孔文件缺少NC Route,槽孔无法加工,请重新提供”。我身边已经不止一个人在这种环节上栽过跟头。Cadence Allegro 17.4输出Gerber钻孔文件本身并不复杂,但里面牵扯到的参数、格式约定、槽孔处理逻辑,才是真正决定交付是否一次通过的关键。这篇东西我就把自己在17.4上跑通整个流程的实操做法、踩坑记录和核对方法完整写出来,尤其是槽孔部分,很多人在这里反复折腾,我希望你看完能少走几趟弯路。
先说清楚这篇文章适合谁:正在用Allegro做PCB设计、需要自己整理交付文件的设计工程师,以及刚转到Cadence平台、对NC Drill和NC Route还不太熟的硬件工程师。如果你手里已经有一套图纸等着送去打样,照着下面的步骤走一遍,正常情况五到十分钟就能把圆孔和槽孔的钻孔文件全部导出并完成自检。
1. 为什么钻孔文件是交付环节里最容易翻车的一步
很多设计者会把大量精力花在光绘文件的设置上,Artwork层的颜色、线宽、Flash symbol都调得很仔细,但到了钻孔文件这里就默认“点一下输出就行”。实际上PCB制造流程中,钻孔文件是独立于光绘的一整套数据,它描述的是“哪里打孔、打多大的孔、是金属化孔还是非金属化孔、哪些地方要铣削开槽”。光绘文件负责图形,钻孔文件负责物理成型,两套数据必须严格对应。
从CAM工程师的角度看,他们每天接收的钻孔文件五花八门,最常见的返工原因集中在三类:一是单位或者坐标精度设置不对,导致所有孔位整体偏移或者孔径错误;二是钻孔文件里没有包含槽孔信息,或者槽孔变成了一串密集圆孔,厂家根本没法按图加工;三是钻孔符号和焊盘中心对不上,做出来的板子过孔偏位,贴片对不准。这些问题的根源大多不是Allegro本身难用,而是我们对Allegro输出钻孔文件的机制理解不够。
Allegro 17.4这个版本相比之前的16.6,钻孔相关的操作界面和Padstack设置有了不少调整。最直观的感受是Padstack Editor中对异形孔的编辑能力加强了,Oval Slot、Rectangle Slot这些槽孔类型可以在封装编辑器里直接定义,不需要像老版本那样绕来绕去用多个钻孔拼。另外17.4的NC Drill和NC Route模块对输出路径、文件命名、参数保存的逻辑也做了整合,习惯以后效率确实比16.6高不少。搜热词的时候我看到很多人问“cadence和allegro的区别”,这里顺便提一句,Cadence是公司名也是产品线总称,Allegro是PCB设计工具套件,我们常说的PCB Editor就是其中一个核心模块,很多人直接简称Allegro。
但工具再顺手,不搞清楚输出文件的结构还是容易翻车。Allegro输出钻孔相关文件时,通常会产生三到四类文件:NC Drill生成的.drl钻带文件、.tct刀具表文件、Drill Legend生成的钻孔图例,以及涉及槽孔时NC Route生成的铣削路径文件。这些东西各管一摊,少了任何一个,板厂都可能卡住你的单子。
2. 动手前的准备:钻孔表、单位与格式约定
2.1 先和板厂对齐单位与坐标格式
这一步看似多余,但恰恰是决定“一次过”还是“反复改”的关键。不同板厂的CAM系统对Excellon格式的兼容性有差异,尤其是一些中小型工厂,如果你的文件中使用了过于冷门的坐标格式,他们的工程可能无法正确解析。
我在自己项目里通常这样处理:打开Manufacture -> NC -> NC Parameters,先把Output unit确定下来。这里有个原则:板子上主要走线间距、焊盘尺寸如果是公制设计,钻孔文件建议也用公制(Millimeter);如果整个板子都是英制单位画的,那就用English(mil)。千万不要混用,混用是后续所有孔位异常的第一大来源。
坐标Format我一般选3.5(即整数部分3位、小数部分5位),这个精度对应几个微米级别,做常规消费类、工控类板子绰绰有余。如果你的板子尺寸特别大,坐标值超过3位整数,那就需要把整数位放宽,比如用4.5或者4.6。我不会无脑选特别多的小数位,因为文件体积会变大,而且一些工厂老旧的CAM系统反而容易在解析时出问题。
2.2 检查钻孔符号表与焊盘里的钻孔定义
导出钻孔文件之前,最好先在PCB Editor里把钻孔符号表整体过一遍。操作路径是Manufacture -> NC -> Drill Legend,先生成一次钻孔图例,看看板子上所有孔径的分布情况。这一步能帮你提前发现孔径种类是否异常,比如某些非标孔、过小的微孔,以及有些PTH孔和NPTH孔的设置是否符合预期。
同时要检查每个Padstack的钻孔定义。选中封装焊盘,右键进入Padstack Editor,查看Drill/Slot hole这一项。需要注意的不仅是孔径大小,还有Plating类型:PTH(Plated)和NPTH(Non-Plated)在钻孔文件里的标记方式不同,如果属性标错,板厂会默认按通孔金属化处理或者反之,最终成品完全不对。
2.3 输出路径与文件命名规则
17.4里可以给NC输出单独指定一个目录。我的习惯是在项目文件夹下建一个Artwork文件夹,内部再分Gerber和NC两个子目录,这样光绘和钻孔文件分开存放,不会出现同名文件互相覆盖的情况。
文件命名也建议带上板号和版本信息,比如BCM_V1.2_TOP.gbx这种风格,钻孔文件就用BCM_V1.2.drl。虽然Allegro默认会用.brd文件名生成.drl文件,但如果你在同一目录下输出了多个版本,没有明确前缀的话很容易搞混。送厂前把文件夹压缩成一个压缩包,里面同时放好光绘、钻孔文件和钻孔图例PDF,这是最省心的交付方式。
3. 核心流程:NC Drill导出圆孔钻孔文件
3.1 NC Parameters逐项设置解析
进入Manufacture -> NC -> NC Parameters,这个对话框里的设置直接决定最终钻孔文件的“可读性”。很多初学者一股脑全默认,等到板厂反馈“文件打不开”或者“坐标解析错误”才回头找原因。
首先是Excellon format选项组,里面有几个关键子项:Coordinate type我们基本都用Absolute(G90),相对坐标模式很少用,个别CAM工程师看到G91还会误判;Zero suppression这里建议选None,也就是不抑制前导零和后导零。这么说吧,选Leading zero suppression能让文件小一些,但是部分CAM系统对坐标高位缺省的处理方式不一样,容易整体偏移。None模式下每个坐标值都会带完整的位数,通用性最强,文件大一点点完全无所谓。
Enhanced Excellon format这一项我没勾选。它对应的是G85自动换刀和G55这种扩展指令,支持它的CAM系统不多,勾了反而容易让一些工厂软件解析报错。普通消费级和工控级板子完全不需要这个功能。
Format后面的下拉选项里,2.5、3.5、3.6这些数值前面已经提过,我的建议是:板长宽在100mm以内,用3.3足够;100mm以上用3.5;如果你要严格做阻抗板、对孔位精度要求极其苛刻,可以用3.6。但要注意,Format精度设置得越高,要求Gerber文件里光绘输出的精度也要同步匹配,否则钻孔和焊盘之间还是会存在微小错位。
Output file这一项需要指定文件名和路径。Allegro默认会生成一个和.brd同名、后缀为.drl的文件。我会手动把它改成板上明显的辨识名称。当然如果你按前面说的,输出之前已经创建好专门的NC目录,这里直接浏览到该目录即可。
3.2 执行NC Drill输出
参数设置确认后,进入Manufacture -> NC -> NC Drill。这一步要从下面的列表里勾选需要输出的层对。普通双面板和四层板,如果只有通孔,通常只需一个Drill文件,选中TOP和BOTTOM对应的通孔层对就行。六层以上的板子,如果有盲埋孔,就需要在这里勾选对应的L1-2、L2-5、L5-6这类层对,Allegro会自动为每一组层对生成单独的钻带文件。
勾选完成后,注意检查Tool list区域。Allegro会调用nc_tools.txt这个刀具表,自动根据板子上的孔径整理出刀号列表。如果你在此之前手动编辑过刀具表,这里要确认刀号和孔径的对应关系没有冲突。正常情况下,我都是让Allegro自动生成,不手改。
点击Drill按钮后,软件会执行输出并在日志窗口打印每一步操作。完成之后到输出目录检查一下:.drl文件一定有,.tct刀具表文件也一定会有。.tct里面记录的是每个T代码对应的刀具直径和类型,这个文件板厂CAM系统通常需要用来匹配刀库,缺少的话厂家会找你要。
3.3 钻孔图例和报告
输出完钻孔文件后,建议顺手生成一次钻孔图例。路径还是Manufacture -> NC -> Drill Legend,它会生成一个包含所有孔径符号、刀具信息、孔数统计的表格图层。将这个图层加入到光绘输出中的SilkScreen层级,或者直接导出一份PDF随文件一起发给板厂。
钻孔图例的价值在于:无论你自己后期核对,还是板厂工程审核,都能快速看到“板子上有哪几种孔、每种孔有多少个、是PTH还是NPTH”。如果你发现图例上的孔数和实际封装数量对应不上,那说明封装里某个焊盘的钻孔定义有问题,需要回到原理图或者封装库排查,而不是继续往下走。
4. 槽孔处理:NC Route与outline的配合
4.1 槽孔的本质:铣削工艺而不是钻孔工艺
普通圆孔用的是钻头直接钻出来,但长条形的槽孔、异形孔(比如USB座的定位孔、某些屏蔽架的卡口)就不是钻头能直接搞定的。工厂通常采用数控铣床沿着图形轮廓铣削出来,对应到Allegro里面就是NC Route的职责。
理解了“铣削”和“钻孔”是两种工艺,你就能理解为什么单独出圆孔钻带文件还不够。很多人直接在布线上画了一个长条形Keepout,然后输出钻孔文件,这样板厂根本看不到槽孔数据。因为NC Drill只认标准圆孔的Padstack定义,outline上的图形它不会自动处理。正确做法是让Allegro把槽信息导出成NC Route路径文件,或者把槽设计成非圆形的Slot Pad,在Padstack属性里声明出来。
4.2 在封装里定义标准Slot:Oval和Rectangle
如果你的槽孔是规则的长圆孔或者矩形孔,最规范的方式是在Padstack Editor里定义。具体操作:双击焊盘进入Padstack Editor,在左侧树状列表中找到Drill/Slot hole一栏。默认的Hole type是Circle,把它改成Oval Slot或者Rectangle Slot,然后在下方的Slot Parameters区域填写槽孔的长和宽。
这里有个容易忽视的点:Slot length指的是槽的总长度,Slot width指的是槽的宽度,也就是铣刀直径。举个例子,一个宽度1.0mm、长度2.54mm的矩形定位孔,Slot width填1.0,Slot length填2.54。长宽两个值必须给出明确数字,不能只给一个宽度然后指望Allegro自动推断长度,那样生成的钻带数据会缺失尺寸。
定义好后,这个Padstack在PCB Editor里刷新一下封装,就能看到焊盘图形上的槽形钻孔符号。Allegro 17.4对这类数据的显示支持比老版本好很多,在Artwork和钻孔文件里都能正确表达。如果你用的是早期版本,可能遇到槽孔符号显示异常的情况,这时候可以升级到17.4或者通过设置View选项来强制刷新。
4.3 异形槽:OuterLine加NC Route
对于L型、U型、弧形槽这些标准Slot无法覆盖的异形孔,就要绕道NC Route流程了。做法分几步:
第一步,在Board Geometry下的Outline层或者新建一个Mill层,用Add -> Rectangle、Add -> Arc等绘图工具把槽的外形精确画出来。这一步的关键是图形必须是闭合的,并且线条要连续完整,不能有断点或者重叠线段。最好用Shape或者闭合的Polyline,而不是几个Open Segment拼凑。
第二步,确认图形的坐标位置和板框相对关系准确无误。很多槽孔在后期装配时是用于外壳卡扣或连接器固定的,如果位置偏差半毫米,结构上就装不上。在画异形槽之前,先量好结构图纸上的尺寸再落笔。
第三步,进入Manufacture -> NC -> NC Route。这个模块负责把outline层上的闭合图形转换为数控铣床用的刀具路径。在NC Route Parameters里,首先要确认单位制和前面NC Drill一致;然后选择Route Tool,也就是铣刀直径。Allegro会根据你设计的槽宽,自动计算出一道或两道铣削路径。槽宽如果比铣刀直径大,会生成多圈路径;相等则生成单路径。
第四步,设置好参数后,点击Route按钮,生成.rou后缀(有的版本是.drl)的铣削文件。该文件同样包含在发送给板厂的钻孔文件包中。需要注意,NC Route生成的路径只是铣刀中心路径,实际铣削时刀具有半径补偿,Allegro会按照你选的刀具直径自动处理补偿量,这块不需要你在设计里干预。
4.4 槽孔设计的DFM细节
跟槽孔打了这么多年交道,说几个板厂大概率不会第一时间提醒你、但实际影响加工的细节。
槽孔宽度不要低于板厂铣刀最小规格。很多PCB工厂常用铣刀直径最小是0.8mm或者1.0mm,如果你把槽宽设计成0.5mm,工厂可能需要换用更小的铣刀,加工成本直线上升,甚至部分工厂会直接反馈无法加工。设计阶段就确认合作板厂的加工能力区间是最省事的。
槽孔末端尽量做成圆角。标准Slot本身是圆头,这个问题不大。但异形槽如果你画成带尖角的矩形,铣刀有直径,内角没法铣出理想的直角,最终成品会留下一个圆角过渡。板厂工程会问你能不能接受,如果结构上允许,设计时就主动把尖角改成半径0.2mm到0.3mm的圆角,省掉沟通成本。
金属化槽和非金属化槽的处理逻辑不同。金属化槽需要在孔壁上沉铜,流程更复杂,Allegro里要确保Padstack的Plating属性是Plated;非金属化槽则是纯铣削,属性设为Non-Plated。有些设计者图省事,把所有槽孔都画在outline层上交给NC Route,结果金属化槽的孔壁沉铜要求根本没体现出来,做出来的板子直接报废。
5. 验证与送厂前检查:避免“图都对,文件错”
5.1 用文本方式检查钻带文件头部信息
输出文件后,第一件事不是急着发,而是用记事本或者Notepad++打开.drl文件,检查头部指令。一个正常的Excellon文件应该包含类似这样的内容:
M48 ; HEADER ; FILE: BCM_V1.2.drl T01C1000 T02C0600 T03C0350 % G90 G05 M71 T01 X012345Y067890 ... M30看到M48表示进入钻孔模式,T01C1000表示1号刀具直径1.0mm,G90表示绝对坐标,M71表示公制单位,M30表示文件结束。如果单位那行是G70,那就是英制,你要确认自己的设计是否真的想用英制输出。文件末尾一定要有M30,没有的话说明文件不完整。
.tct文件同样可以用文本打开,里面会列出每个T代码对应的刀具直径大小。对照.drl文件里的T代码,确认没有多余的工具定义或者缺失。
5.2 用CAM350或AD做叠层核对
文件本身语法没问题,不代表孔位图形正确。最稳妥的验证方式是把Gerber光绘文件和钻孔文件导入到第三方CAM软件中叠层比对。CAM350是行业里常用的选择,免费工具方面,KiCad的Gerber查看器也可以做基础校验。网上还有人问“gerber转ad17”和“ad17导入gerber”这类操作,其实Altium Designer本身也支持导入Gerber和钻孔文件,同样可以用来做导入核对,但步骤上会比CAM350繁琐一些。
导入时注意设置正确的单位和格式,如果导入后所有孔位相对于焊盘整体偏移,多半是导入对话框中的单位或者精度和输出时不一致;如果出现一堆超出板框的乱点,可能是零抑制方式没配对。
5.3 常见问题速查
| 现象 | 原因 | 处理办法 |
|---|---|---|
| 工厂反馈钻孔文件打不开 | Excellon格式里启用了Enhanced模式或零抑制 | 关闭Enhanced,零抑制设为None重新导出 |
| 孔位整体偏移超出焊盘 | 输出单位和光绘单位不一致 | 统一为公制或英制后重新生成 |
| 槽孔在CAM里看不到 | 漏了NC Route文件 | 在outline层画槽并执行NC Route导出 |
| 槽孔变成一串圆孔 | 设计时用多个Pad拼槽 | 改为Slotted Pad或outline+NC Route方案 |
| 孔径看起来比设计值大 | 英制公制混用 | 检查Output unit设置并确认.tct刀具表信息 |
| 盲埋孔层对丢失 | NC Drill中未勾选对应层对 | 重新在NC Drill中勾选全部需要的层对 |
6. 送厂前最后的经验补充
做这行久了,我有一个习惯——所有钻孔相关文件在发送之前,都用文本方式人工扫一遍头部和尾部,确认单位、格式、文件结束符没有异常。这个动作只需要两三分钟,却能拦截掉大部分低级错误。另一个建议是把钻孔图例PDF和NC文件、Drill文件、Route文件全部放在同一个压缩包,并在邮件或下单备注里写清楚“本板包含槽孔,请按NC Route文件加工”。不要觉得多此一举,工厂每天处理几十个订单,清晰的交付说明能大幅降低工程询问概率。
另外提醒一下版本选择。我遇到过不少从16.6直接跳到17.4的人,在槽孔设置界面找了半天找不到Oval Slot在哪,其实是因为17.4的Padstack Editor把Hole type和Slot Parameters这几个项的位置做了调整。如果你对老版本路径更熟,第一次用17.4可以打开Help里的文档,搜索“Slot Hole”查看当前版本的界面说明,几分钟就能适应。
最后,关于槽孔还有一个容易踩的坑就是设计层面:开槽会切断板上的参考平面,如果槽刚好走在高速信号下方,阻抗不连续和回流路径割裂的问题就会冒出来。画槽之前先看一下周围有没有高速走线和敏感电源层,必要时在槽边增加回流过孔来补偿。这些DFM细节藏在文件导出之后,但真正决定一块板子好不好用的,往往就是这些“看不见”的地方。