去年一块双面板回板后做整板测试,发现电源模块的安装孔对不上外壳。板厂返修时反馈:光绘文件里的槽孔位置是对的,但锣带(.rou)里根本没有这些槽,生产线只能按钻孔文件把四角打穿,装上去自然对不齐。这个锅最后在我自己头上:出 NC Route 时选漏了层,把槽孔层漏掉,而 Allegro 17.4 并不会在输出记录里提醒你“这里没有槽”。从那以后,我对 .drl 和 .rou 这两个小文件的敬畏程度,不亚于对叠层设计。
严格来说,钻带(.drl)并不属于 Gerber 格式,但它和光绘文件一起构成了板厂需要的完整生产数据集合。这篇文章主要针对 Allegro 17.4 版本,把圆孔钻带文件 .drl 和槽孔锣带文件 .rou 的生成流程讲透,包括为什么要分两个文件、出文件前要确认哪些参数、NC Drill 和 NC Route 每个选项的实际含义,以及最后用 CAM350 回读验证时最容易踩的坑。适合正在用 Allegro 做 PCB、准备投板但还没完全弄懂钻带/锣带细节的工程师,也适合被板厂退回文件后想彻底搞明白原因的朋友。
1. 先把 .drl 和 .rou 的分工搞清楚:板厂拿到文件后到底在做什么
1.1 一台钻机、一台锣机,两类文件的物理基础不一样
PCB 上的孔,机械上分两种加工方式:钻和锣。钻机是一根高速旋转的钻头,垂直往下打,只能打出圆孔;锣机则像一把铣刀,带着刀具在板面上走 X/Y 轨迹,可以切出槽、异形孔、板框轮廓。板厂的 CAM 工程师拿到你的文件后,会把 .drl 文件输入钻孔机,把 .rou 文件输入锣机。两台机器、两套程序、两道工序,所以这两个文件天然就是分开的。
不少人刚接触时有个误区:既然都是“孔位数据”,为什么不能把槽孔也写进 .drl 里让钻机一起打?实际上,钻机在槽孔两端各打一个圆孔是可以的,但打出来的孔中间会残留材料,还要靠锣机走一刀修成完整的槽,等于多一道工序。所以正规流程就是圆孔走钻带,槽孔走锣带,各管各的。
1.2 为什么圆孔和槽孔不能混在一个文件里
除了机器不同,还有一个控制逻辑的问题。.drl 文件的每一行,本质上是一条“钻头在某个坐标打一刀”的指令,配一个刀具号 T01/T02,每把刀对应一个孔径。而 .rou 文件里记录的是“刀具沿着一条路径走”的中心轨迹,配合刀具直径来定义最终切出来的形状。两种文件的坐标解释方式、刀具定义方式、单位格式写法都不一样,硬塞在一起,轻则板厂读不出来,重则把槽孔位置算错。
我在实际项目里见过最典型的一次:同事图省事,把一个 3mm×8mm 的安装长孔画成了三个 3mm 圆孔叠在一起,想让板厂加工时靠三个钻刀痕连成槽。板厂确实做出来了,但槽壁呈现波浪形,螺柱穿进去会卡,最后只能报废。正确做法就是在板子上画真正的槽形轮廓,让 NC Route 输出 .rou 文件。理解了这个分工,后面去看 NC Drill 和 NC Route 的菜单,思路就顺了。
2. 动手出文件前,必须确认的三件事:单位、刀具表、钻孔符号
2.1 单位制:Allegro 数据库单位与输出格式的匹配
Allegro 17.4 里 PCB 设计单位可以是 mil,也可以是 mm。出钻带前一定要去确认当前设计单位,并且让输出格式和设计单位尽量保持一致。比如设计单位是 mm,那么 NC 输出也选 Metric;设计单位是 mil,输出就选 Inch。如果设计用 mm、输出却选了 Inch,Allegro 会做一次单位换算,换算本身没问题,但你在 CAM350 里回读时,一旦选错单位,整板孔位就会整体偏移 25.4 倍,看起来像灾难现场,其实只是单位设置不一致。
提示:单位不匹配是钻带文件最隐蔽的问题。用 CAM350 回读时,钻孔数据叠加在光绘上“差一点点”或“差很多”,先别怀疑坐标,先检查单位和格式。
在 Allegro 17.4 里,出 NC 文件前建议先打开 Setup > Design Parameter Editor,在 Design 页签下看 User Units,记下当前单位。然后在 Manufacturing > NC > NC Parameters 里把对应单位的参数统一下好,再进 NC Drill / NC Route。这套动作几十秒就够,但能省掉后面一小时的排查。
2.2 刀具表:自动选刀与刀径合并的底层逻辑
NC Drill 对话框里有一个 Auto tool select 选项,很多人不清楚它是干什么的。简单说,Allegro 会根据板子上实际用到的钻孔尺寸自动生成一把一把的刀具,输出到 .drl 文件头部。勾选这个选项后,它会自动排除那些“曾经定义过、但板子上已经不存在”的孔尺寸。如果不勾,板子里就算只有一颗残留的旧孔,也会被算成一把刀,板厂就得为这一颗孔单独装一次刀,多花时间还可能报错。
另外要注意的是,Allegro 不会自动帮你合并相近孔径。比如板子上有 0.3mm 和 0.35mm 两种过孔,物理上完全可以统一成 0.35mm 来减少一把刀、降低成本,但 Allegro 只会原样列出两把刀。我一般习惯在投板前用 Tools > Reports 里的孔报告看一遍刀具清单,如果发现相近孔径,就返回原理图或封装,把孔统一掉。尤其是 0402 小封装、高密度板,少一把刀意味着板厂换刀次数减少,交期和价格都可能更好谈。
2.3 钻孔符号:NC Legend 能否画得出来的关键
钻孔符号(Drill Symbol)是 Allegro 里用来在 PCB 图纸上标注“这个位置是什么孔径”的字符标记,通常显示在钻孔层或装配层。它不影响 .drl 文件的生成,但会影响你输出的钻孔图纸(NC Legend)是否完整。NC Legend 生成后,板子上每个孔位会带上一个字母或数字,对应一个孔径表。板厂 CAM 工程师看孔位图纸时,就是靠这张表快速核对。
如果出 NC Legend 时报错或图上没有符号,多半是当前 board 里没生成 Drill Symbol。这时候可以回到 Manufacturing > NC > NC Drill 对话框,在生成钻带的同时让 Allegro 创建默认钻孔符号;之后再用 Manufacturing > NC > NC Legend 把图放到 PCB 上。我的经验是:哪怕最后交板不需要图纸,也应该生成一次 NC Legend 截图存底。后期板厂打电话问你“T03 是多大孔”时,你翻出截图就能直接答。
3. NC Drill 生成 .drl 的完整操作与每一项参数的含义
3.1 NC Drill 对话框逐项设置
在 Allegro 17.4 里,依次点击 Manufacturing > NC > NC Drill,会弹出钻孔输出窗口。这张对话框里每一项都值得认真核对,我按实际填写顺序说明。
- Output file:输出文件名。默认可能叫 drill_1-2.drl 或类似名字,建议改成含版本号的名字,比如 V1.2_drill.drl。板厂每天收大量文件,一个清晰的文件名比写在邮件里更不容易被忽略。
- Drill output type:选择 ASCII / Excellon。这是钻机最通用的格式,基本所有板厂都认。有些工程师会选 NC Drill 格式(Gerber 风格),但我个人不推荐,除非板厂明确要求,否则默认 Excellon 最省事。
- Tool sequence:选择 Ascending。意思是刀具从小到大排列。厂里钻刀从细到粗换刀,按升序输出可以减少换刀次数,也方便机器识别。
- Auto tool select:勾选。这个前面说过,能自动排除未使用刀具。务必保持勾选。
- Excellon format:确保勾选,否则输出的不是标准 Excellon 语法,部分板厂 CAM 软件会报错。
对话框下方还有坐标格式和补零方式的选项,这两个最容易出错,单独放到下一节讲。
3.2 坐标格式与补零方式怎么选
Excellon 文件里的坐标是一条数字,比如 X5625Y3325,它必须配合一个“格式”才能被正确还原成 56.25、33.25。格式里的两个数字分别表示整数位和小数位。例如 3:3 表示“整数 3 位 + 小数 3 位”。Allegro 17.4 里这些参数一般在 NC Parameters 中设置,也可以在 NC Drill 对话框里看到当前值。
不同单位下,推荐用的格式不一样:
| 设计单位 | 推荐格式 | 说明 |
|---|---|---|
| mm(公制) | 3:3 | 精度 0.001mm,满足绝大多数板子 |
| mm(公制) | 2:4 | 精度更高,坐标文件略大,高密度板可用 |
| mil/Inch(英制) | 3:4 | 精度 0.0001inch,约 0.00254mm,常用 |
| mil/Inch(英制) | 3:3 | 精度只有 0.001inch,孔位容易偏移,不推荐 |
格式旁边的“补零”选项更让人懵。所谓 leading zero suppression(前导零压缩),就是把坐标前面的 0 去掉,比如 005.625 写成 5.625;trailing zero suppression(后导零压缩),就是把后面的 0 去掉,比如 5.600 写成 5.6。板厂的读码器必须用同样的规则才能还原。这个没有绝对的对错,完全取决于板厂 CAM 系统的设定。我的做法是:投板前直接在工艺要求里写清楚“Excellon, metric, 3:3, leading zero suppression”,并且让板厂确认。大多数板厂支持两种,但你不写,他们只能猜。
3.3 输出后的文件清单:.drl、.log、.tap 各是什么
点击 Drill 按钮后,你会看到工作路径下多出几个文件。.drl 是核心钻带文件;.log 或 .txt 是输出日志,里面记录了每一把刀的编号、孔径、钻孔数量;部分版本还会生成 .tap 文件或中间文件。很多人只看 .drl 有没有生成,从来不打开 .log。实际上 .log 是快速自检的第一手资料,里面如果有 ERROR 字样,或者孔数与设计差几百,不用 CAM350 回读就知道有问题。
我习惯在生成后立刻打开 .log,重点核对两处:
- 刀具数量是否与设计一致;
- 每种刀具统计的孔数是否与预期相符。
比如板上有 200 个 0.3mm 过孔,日志里写 198,那就说明有 2 颗孔没算进去,多半是封装属性有问题,这时候直接去 PCB 上查,比等板厂反馈快得多。
4. NC Route 生成 .rou 槽孔文件:画法决定输出质量
4.1 槽孔的正确画法:板级槽与焊盘槽的区别
Allegro 17.4 里的槽孔来源主要有两种:一种是在封装(Padstack)里定义的异性焊盘孔,比如长圆形、矩形、U 形;另一种是板级结构槽,直接在 PCB 上画出来的安装槽、走线槽、通风槽。
如果是封装里的槽孔,例如 AC 插座引脚、端子台、继电器焊盘,应该在 Padstack Editor 里把 Drill Shape 设置成 Oval Slot 或 Rectangle,这样放置封装时槽孔会跟着封装走,生成 .rou 时 Allegro 会自动识别。
如果是板级结构槽,推荐画在 Board Geometry 类的 Mill 层或 Slot 层,画完整的闭合轮廓。很多新手在这里踩坑:画槽孔时只用 Line 画了一条中心线,然后觉得宽度由 Route Bit Size 控制就够了。这个思路在 NC Route 输出时并不可靠,因为锣带程序需要知道的是“刀具要沿什么路径走、切削范围到哪里”,一个没有闭合的轮廓容易让 Allegro 输出异常路径。正确做法是把槽孔实际轮廓画出来,比如 1.2mm 宽、6mm 长的槽,就画一个 1.2×6 的闭合矩形或长圆形,再让 NC Route 去生成路径。
4.2 NC Route 参数:Route Bit Size 为什么不能随便填
点击 Manufacturing > NC > NC Route,出来的对话框和 NC Drill 很像,但多了一个关键参数:Route Bit Size(锣刀直径)。这个参数代表锣机实际使用的刀具直径,直接影响槽孔能否加工出来。
Allegro 17.4 里默认值可能是 2mm,如果你的最小槽宽只有 1mm,而你没改这把刀,输出到板厂后,板厂 CAM 一看这个值就知道有问题,会打电话来问“是不是要换刀”,来回沟通浪费半天。更严重的是,如果程序里刀具直径大于槽宽,锣机切出来的槽会比设计宽,或者根本切不出来。
我给你的直接建议:Route Bit Size 设置成小于等于设计中最窄槽宽的前一个刀具规格,比如最小槽宽 1.2mm,设 1.0mm 或 1.2mm 都行;如果槽宽种类多,可以统一一把常用锣刀,让板厂按实际槽宽调整。
对话框里的 Feed rate、Plunge feed、Retract rate、Spindle speed 等参数,生产意义没有想象中那么大,板厂通常会按自己的工艺参数覆盖。但 Allegro 会把它们作为注释写入 .rou 文件,所以也别写得太离谱,填板厂的主流参考值即可。
4.3 异形孔、半孔与拼板的特殊处理
异形孔,例如一端圆一端方的孔,在 Allegro 里可以用封装里的 Rectangle Drill 或自定义槽形搭配不同层实现,但要注意:NC Route 只能识别闭合轮廓,复杂的异形孔最好拆成“圆孔+槽孔”的组合,或者画成多个简单几何体叠加。有些设计师喜欢把异形孔画成一个复杂 polygon,结果 Allegro 生成的路径非常绕,锣机走起来慢,板厂还会加钱。
半孔(castellated holes)是另一个常见需求。半孔就是板边切开一半的孔,通常用于模块板与母板的贴焊。半孔不能靠 .drl 里的圆孔表达,它需要在板边轮廓上做半圆开槽,并在 NC Route 的锣带里走对应路径。如果你只出钻孔文件不出锣带,板厂多半不知道这里要铣半孔,最后给你做成整孔或漏做。
拼板时也要特别留心。如果你的 Gerber 是拼板(panel)出图,钻带就必须和拼板后坐标系一致。最稳妥的做法是:让 Allegro 里看到的就是最终拼板的板框,所有孔位坐标都在拼板坐标系下输出,而不是交单板钻带给板厂让他们自己扩。板厂不是不能扩,但每次“转一道”就多一次出错机会。我自己就遇到过单板钻带坐标和拼板 Gerber 对不上、整批槽孔偏了的情况。
5. 回读验证:把钻带文件倒进 CAM350,一张图看出所有问题
5.1 回读前要准备的参数清单
生成完 .drl 和 .rou,别急着打包发走,花十分钟用 CAM350 回读一次,这十分钟能挡掉 90% 的返工。打开 CAM350 后,选择 File > Import > Drill Data,或直接用 Auto Import 载入整个文件夹。回读时弹出的参数选择框里,有几项必须和 Allegro 输出时严格一致:
- Units:公制还是英制;
- File Format:3:3、3:4 等;
- Zero Suppression:前导零压缩 / 后导零压缩;
- 文件类型:Excellon。
这四项只要有一项不符,CAM350 里的孔位就会和 Gerber 错位,或者坐标显示异常。所以正确流程是:先看你在 Allegro 里设的参数,再按同样参数去 CAM350 里导,看的是“是否贴合”,不是“是否导得进来”。
5.2 我在回读时发现过的四类致命问题
把钻带叠加到光绘层上之后,我最常看到的四类问题:
第一类,槽孔直接丢失。.rou 文件导进来后,CAM350 里看不到槽孔轮廓,或者只看到几段断线。这种情况基本是 Allegro 的 NC Route 没识别到槽孔层,或槽孔没有画成闭合轮廓。回读能让你在发板前就把这个问题揪出来,而不是等板厂反馈。
第二类,孔位整体偏移。所有孔都偏到焊盘一侧,或每一颗孔都落在焊盘中心但整板旋转了一个角度。前者多半是单位或格式设置不一致;后者可能是导出时坐标系基准不同。回读后如果整板偏移,直接回到 Allegro 核对 NC Parameters,而不是手动去挪孔位。
第三类,孔径不对。CAM350 里看到的孔圈直径和封装设计的不一样。这类问题往往是封装里的 Drill 尺寸填错了,或者 Allegro 输出时单位换算出了问题。回读时按孔径颜色区分,一眼就能看出来。
第四类,孔数量不对。有些板子回读后,CAM350 统计的孔数比设计少了十几颗,通常是那些孔在 Allegro 里被设置成 Non-Plated 或不属于 NC Drill 输出范围。这种问题在常规检查里极难发现,只有回读时通过 Count 统计才能抓到。
5.3 Allegro 自带的 NC 结果检查怎么看
除了 CAM350,Allegro 本地也有几项自检手段。生成 .drl 后,用 Tools > Reports > Drill Report 可以生成一份孔报告,里面列出了每种孔径和钻刀编号。这份报告适合和 NC Drill 的 .log 交叉验证。
我还习惯把生成的 NC Legend 图放大检查一遍:孔径符号的位置是否都落在焊盘中心、有没有叠加到丝印上、有没有跑到板框外。虽然这与生产无关,但绘制图纸时能看出很多封装层面的问题,比如某颗焊盘和孔不同心、孔壁太薄、或孔出板边。这些小问题板厂不会主动帮你查,但造成良率下降时,板厂会拿你的文件说事。
6. 最终交板前的自检清单与我的个人习惯
6.1 交板前的六大检查项
投板前我会把下面这张表打印出来,一项一项打钩。不要嫌麻烦,帮朋友救急时,我带过太多“只缺一个文件”的压缩包:
| 检查项 | 说明 |
|---|---|
| .drl 和 .rou 是否都存在 | 常见低级失误是只出钻孔漏出锣带 |
| 日志文件是否有 ERROR | 检查 .log 中的刀具数量和孔数是否正常 |
| 单位与格式说明是否写清 | 在 readme 中写明 metric/inch、3:3/3:4、补零方式 |
| CAM350 回读是否对齐 | 孔位叠加光绘后是否在焊盘中心 |
| 槽孔数量和位置是否与结构图一致 | 对照机械结构图逐一确认安装孔 |
| 拼板坐标系与钻带是否一致 | 如果是拼板,确保钻带是拼板坐标,不是单板坐标 |
6.2 每次改版留下三样东西,省掉自己和板厂的反复沟通
我现在的习惯是,每次投板都在一个以版本号命名的文件夹里,固定存三样东西:一是 NC Parameters 的配置截图,二是 NC Drill / NC Route 输出日志,三是 CAM350 回读后的截图。这三样东西可能看起来增加了工作量,但每当板厂说“钻孔有问题”时,我只需要把文件夹打包发过去,他们对照配置就能立刻复现,省掉来回确认的邮件。
改版时更要小心:钻孔文件不会跟着原理图自动更新。只要有人动过任何一个过孔直径、槽孔位置、封装类型,出 Gerber 的时候必须重新生成 .drl 和 .rou,哪怕只是删了一颗螺丝孔。我曾经因为在最后一版只更新了光绘、忘记更新锣带,导致整批板子的安装孔还是旧位置,多花了一周时间返工。
最后分享一个小技巧:在 NC Drill 和 NC Route 输出前,把 Allegro 的视图缩放到全板,然后分别只显示钻孔层和槽孔层截图”看一遍“,确认孔位、槽位没有意外跑到板框之外。这个动作比任何参数检查都直观。钻孔文件这种东西,生成只需要一分钟,但真正考验人的是你是否清楚自己的设计里到底有哪些孔、哪些槽,以及板厂拿到文件后会怎么理解它们。把这两件事想透了,Allegro 17.4 的钻带/锣带输出就不再是玄学。