简介:这份《Allegro 17.2 背钻设置指导书》面向使用 Cadence Allegro 进行 PCB 设计的工程师与初学者,聚焦 17.2 版本中背钻(Backdrill)功能的配置流程与参数设置,帮助读者理解背钻在高速多层板设计中的作用与操作要点。资源包内共 1 个 PDF 文件,约 391KB,内容以图文步骤形式呈现,涵盖从属性编辑、网络筛选、背钻参数设定到钻孔表输出的完整链路,并附带对 Allegro Design and Analysis、Design Authoring、Design Publisher 等模块的功能说明,便于读者建立对 Allegro 设计体系的整体认知。目前已有 516 人学习,适合需要快速上手背钻设置或查漏补缺的 PCB 设计人员参考,可作为日常操作时的速查手册使用。
1. 背钻不是“多钻一刀”,而是把过孔 stub 从寄生电感变成可控参数
很多硬件工程师第一次在 Allegro 172 里做背钻,会把它当成一个后处理动作:板子照常布线,最后在钻孔表里加一道深度就完事。真正上手才发现,背钻改的是叠层、钻孔对、约束管理器和制造输出的联动关系,任何一处没对齐,轻则 stub 长度失控,重则把内层走线钻断。
背钻(Back Drilling)要解决的是通孔压接或过孔在信号换层后残留的那段“无用铜”。这段 stub 在低速时无所谓,到了 10Gbps 以上会形成明显的阻抗不连续和谐振点,眼图直接塌。Allegro 172 把背钻拆成三层配置:叠层里的背钻对、Constraint Manager 里的背钻规则、以及钻孔图例和 NC 输出。这篇按“先建对、再定规则、后出图”的顺序,把每一步的命令、参数和常见报错讲清楚,适合已经能独立跑完一次 PCB 设计、但还没系统做过背钻的工程师。
2. Allegro 172 里背钻对的建立与叠层参数怎么定
2.1 先分清通孔、盲埋孔和背钻在叠层里的表示差异
在 Allegro 172 的 Cross Section 编辑器里,普通通孔是贯穿所有层的钻孔对,盲埋孔只跨指定层,而背钻不是一种新的孔,它是在已有通孔上追加一次“反向钻削”。所以叠层里你看到的仍然是原来的通孔对,背钻信息挂在钻孔符号和 NC 参数上。
常见做法是:先确认信号过孔用的是哪一组钻孔对,比如VIA_12从 Top 贯穿到 Bottom。背钻要做的就是把这个孔在 Bottom 侧多余的那段铜去掉,保留从 Top 到目标内层的有效连接。目标内层通常是你换层后的参考层或信号层,比如第 3 层。
这里有个容易踩的坑:如果过孔在叠层里被定义成盲孔,背钻就无从谈起,因为盲孔本身已经不贯穿。所以背钻只对通孔有意义,做之前先用Tools -> Padstack -> Modify Design Padstack确认过孔的钻孔对类型。
2.2 用 Padstack Editor 给过孔加上背钻属性
Allegro 172 的背钻属性不在 Constraint Manager 里直接加,而是先在 Padstack Editor 中给过孔定义背钻层。打开Padstack Editor,选中目标过孔,切到Drill标签页,在Backdrill区域勾选Enable Backdrill,然后指定背钻的起始层和结束层。
# 在 Allegro 命令行中批量检查当前设计里哪些过孔已启用背钻 set vias [dbget top.padstacks] foreach v $vias { set bd [dbget $v.backdrill] if {$bd != "nil"} { puts "Padstack: [dbget $v.name] Backdrill: $bd" } }这段 Tcl 的逻辑是遍历设计里所有 padstack,用dbget读取backdrill属性,只打印已启用背钻的过孔。参数说明:top.padstacks是当前设计的焊盘栈集合,backdrill返回的是背钻层信息,如果没启用会返回nil。跑完你能快速知道哪些孔已经配了背钻,避免漏配或重复配。
提示:Padstack Editor 里改完背钻属性后,必须回到 PCB Editor 执行
Tools -> Padstack -> Refresh,否则约束管理器读到的还是旧属性。
2.3 叠层里背钻深度与 stub 长度的换算关系
背钻深度不是随便填的,它由叠层厚度和你要保留的 stub 长度共同决定。假设从 Bottom 到目标内层第 3 层的介质总厚度是 1.2mm,你希望 stub 控制在 0.3mm 以内,那么背钻深度至少要钻到 1.2 - 0.3 = 0.9mm 的位置。
| 参数 | 含义 | 典型取值 |
|---|---|---|
| 目标内层 | 信号换层后实际连接的层 | 第 3 层 |
| 介质总厚度 | Bottom 到目标内层的厚度 | 1.2mm |
| 允许 stub | 工艺能接受的最大残桩 | 0.2~0.3mm |
| 背钻深度 | 从 Bottom 钻入的深度 | 0.9~1.0mm |
| 钻头直径 | 背钻钻头直径 | 比原孔大 0.2mm |
这张表是给叠层设计用的,实际填进 Allegro 的是背钻层对和深度值。注意钻头直径一般比原过孔大 0.2mm 左右,太小会钻不干净,太大会伤到相邻走线。Allegro 172 在Cross Section里可以给背钻单独设Drill Diameter,不要直接沿用原孔直径。
3. Constraint Manager 里背钻规则的设置与验证
3.1 在 Constraint Manager 中定位背钻规则入口
Allegro 172 的背钻规则不在常规的Physical或Spacing里,而是在Constraint Manager -> Electrical -> Backdrill分支下。打开方式:Setup -> Constraints -> Constraint Manager,左侧展开Electrical,找到Backdrill。如果这里为空,说明叠层里还没有背钻对,需要先回到第 2 章把 padstack 配好。
进入后你会看到按网络或按过孔分组的规则列表。常见做法是按差分对和高速信号分组,给它们单独设 stub 上限,低速信号可以放宽甚至不设。这样做的理由是背钻会增加制造成本,没必要全板一刀切。
3.2 用规则集给差分对设 stub 上限
在Backdrill分支下右键Create -> Rule Set,命名比如BD_HIGHSPEED,然后在Stub Length里填0.3mm,Backdrill Layer选Bottom到目标层。接着把这个规则集赋给对应的差分对。
# 给指定差分对批量赋背钻规则集 set diff_pairs [dbget top.nets -e {net_type == "DIFFERENTIAL"}] foreach dp $diff_pairs { set name [dbget $dp.name] # 只处理高速差分对,按命名前缀过滤 if {[string match "PCIE*" $name] || [string match "USB*" $name]} { setNetProp $name backdrill_rule_set "BD_HIGHSPEED" puts "Applied BD_HIGHSPEED to $name" } }逻辑说明:先取出所有差分网络,再按命名前缀过滤出 PCIE 和 USB 这类高速信号,用setNetProp把背钻规则集挂上去。参数说明:net_type == "DIFFERENTIAL"是差分网络的属性过滤条件,backdrill_rule_set是 Allegro 172 里背钻规则集的属性名。跑完后在 Constraint Manager 里刷新就能看到这些网络已经关联到BD_HIGHSPEED。
注意:规则集赋完后一定要跑一次 DRC,背钻的 stub 超限会在 DRC 里报
Backdrill Stub Violation,不要等到出 Gerber 才发现。
3.3 背钻 DRC 报错怎么读和怎么改
背钻最常见的 DRC 有三类:stub 超限、背钻层对不匹配、背钻钻头与相邻孔冲突。stub 超限说明你设的深度不够或目标层选错;层对不匹配通常是 padstack 里的背钻层和 Constraint Manager 里选的不一致;钻头冲突则是背钻直径太大,碰到了旁边的孔或走线。
处理顺序建议:先看Backdrill Stub Violation,用Zoom -> Violation定位到具体过孔,检查它的 padstack 背钻层和规则集里的层是否一致。如果一致但还报错,就回到叠层算一遍深度,确认介质厚度没填错。钻头冲突的话,在 Padstack Editor 里把背钻直径调小 0.05mm 再试,直到 DRC 干净。
4. 背钻钻孔图例与 NC 输出:从设计到制造的最后一公里
4.1 生成背钻钻孔图例的步骤
设计规则清干净后,下一步是出钻孔图例。Allegro 172 里走Manufacture -> NC -> Drill Legend,在弹出的对话框里勾选Backdrill,然后选择要输出的背钻层对。生成的图例会单独列出背钻孔的符号、直径和深度。
# 用 Allegro 批处理模式导出背钻钻孔文件 allegro -batch -nographic -execute "nc_drill_backdrill.scr" # nc_drill_backdrill.scr 内容示例: # set nc_mode = backdrill # set output_dir = "./nc_output" # set drill_legend = true # run nc_drill这段脚本的逻辑是用批处理模式跑一个预存的 script,把背钻 NC 数据导到指定目录。参数说明:-batch表示无界面运行,-nographic关闭图形输出,-execute指定要跑的脚本文件。脚本里的nc_mode = backdrill是关键,它告诉 Allegro 只导出背钻相关的钻孔数据,不和普通通孔混在一起。
4.2 NC 输出里背钻与普通钻孔的区分方式
导出的 NC 文件里,背钻孔和普通通孔是分开的。普通通孔在nc_tools里是一组,背钻在nc_backdrill里是另一组。制造厂拿到后会用不同的钻头程序处理。你要做的是确认背钻文件里的孔数和设计里启用了背钻的过孔数一致。
| 输出项 | 普通通孔 | 背钻 |
|---|---|---|
| 文件名前缀 | nc_tools | nc_backdrill |
| 钻头直径 | 原孔直径 | 原孔 + 0.2mm |
| 深度信息 | 贯穿 | 指定深度 |
| 图例符号 | 圆形 | 带斜线圆形 |
这张表是给 CAM 工程师核对用的。如果你发现背钻文件里孔数偏少,多半是有些过孔没启用背钻属性,回到第 2 章的 Tcl 脚本再扫一遍。
4.3 出图前必须检查的三个参数
出 Gerber 和 NC 之前,有三个参数必须确认:背钻深度是否和叠层一致、背钻钻头直径是否更新到最新、背钻层对是否覆盖了所有需要背钻的信号。常见做法是跑一次Tools -> Reports -> Backdrill Report,它会列出所有背钻过孔的层对、深度和 stub 长度。
如果报告里出现 stub 长度为负值,说明背钻深度超过了目标层,这是严重错误,必须回去改叠层或 padstack。如果 stub 长度普遍偏大,检查是不是规则集没赋上,或者 Constraint Manager 里的层选错了。这三个参数确认完,再出制造文件,能省掉一轮返工。
5. 背钻 stub 的仿真验证与叠层迭代技巧
背钻做完不是终点,还得验证 stub 是否真的压到了目标值。Allegro 172 自带 Sigrity 接口,可以把背钻后的过孔模型导到 Sigrity 里跑 TDR 或 S 参数。常见做法是:在 PCB Editor 里选中背钻过孔,走Tools -> Sigrity -> Extract Via Model,导出.sp文件后在 Sigrity Topology Explorer 里看阻抗曲线。
# 用 Python 快速对比背钻前后 stub 的谐振频率偏移 import numpy as np def stub_resonance(stub_mm, er=4.2): # stub 谐振频率估算:f = c / (4 * stub * sqrt(er)) c = 299792458 # 光速 m/s stub_m = stub_mm * 1e-3 f = c / (4 * stub_m * np.sqrt(er)) return f / 1e9 # 转 GHz before = stub_resonance(1.2) after = stub_resonance(0.3) print(f"背钻前 stub 谐振: {before:.2f} GHz") print(f"背钻后 stub 谐振: {after:.2f} GHz")这段代码用四分之一波长公式估算 stub 的谐振频率,参数stub_mm是残桩长度,er是介质常数。背钻前 1.2mm 的 stub 谐振在 30GHz 左右,背钻到 0.3mm 后谐振推到 120GHz 以上,已经远离你的信号频段。实际仿真会比这个公式复杂,但用它做快速估算足够判断背钻深度是否合理。
叠层迭代时有个技巧:先把背钻深度按理论值设好,跑一次仿真看 TDR 曲线,如果阻抗不连续点还在,就把深度再加 0.1mm 再跑。每次只调一个参数,记录 stub 长度和阻抗的对应关系,两三轮就能收敛。不要一次改多个参数,否则出了问题不知道是哪个引起的。
提示:Sigrity 提取的过孔模型要包含背钻后的实际铜形,如果模型里还是原始通孔,仿真结果没有参考价值。提取前确认
Backdrill选项已勾选。
最后一步是把验证过的背钻参数回写到 Constraint Manager 和 Padstack 里,确保设计和仿真用的是同一套数据。很多团队仿真和设计脱节,仿真说 stub 0.3mm 没问题,设计里还是 0.5mm,板子回来眼图照样塌。回写之后重新跑一次 DRC 和 Backdrill Report,两个都干净了再出制造文件。
本文还有配套的精品资源,点击获取