
做过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如果整个板子都是英制单位画的那就用Englishmil。千万不要混用混用是后续所有孔位异常的第一大来源。坐标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类型PTHPlated和NPTHNon-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我们基本都用AbsoluteG90相对坐标模式很少用个别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 在封装里定义标准SlotOval和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.0Slot 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.0mmG90表示绝对坐标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或outlineNC 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细节藏在文件导出之后但真正决定一块板子好不好用的往往就是这些“看不见”的地方。