做过一阵子 Allegro 做板的人大概都有这种体验:原理图、封装、布局都搞得差不多了,结果一到过孔设置和放置环节,要么是拿着 Padstack Editor 里一堆层不知道填什么,要么是规则没设好,过孔打得乱七八糟,最后光绘出来板厂打电话说你孔到线距离不够、焊盘和孔不匹配。说实话,过孔这个事,单看每个参数都不难,难的是怎么把“孔径、焊盘、间距规则、放置方式”这一整套东西串起来,和你的板子实际需求对上号。
这篇文章就围绕 Cadence Allegro 里过孔设置与放置这件事,梳理出 5 个我实际项目里反复在用、也确实帮我少走弯路的技巧。每个技巧都会讲清楚背后的道理、在 Allegro 里具体怎么操作,以及哪些参数是参考值、哪些是必须按板厂能力来定的。文章不烧脑,但信息量比较大,适合正在用 Allegro 画板、或者在过孔这块总感觉差点意思的工程师朋友。
1. 动手设置之前,先把过孔这件事想透
1.1 过孔不只是“打个洞”,它是三维结构
很多人第一次打开 Padstack Editor,看到那一堆 Begin Layer、Default Internal、End Layer、Solder Mask 就发蒙。这里我建议先改变一个认知:过孔不是“一个圆盘加一个孔”,而是一个贯穿或者连接不同层的三维金属结构。
一个标准的通孔过孔,至少包含这么几部分:
- 钻孔(Drill Hole):实际机械钻出来的孔径,这个尺寸是板厂加工的基础,你设计的钻孔尺寸最终决定了物理孔径。
- 焊盘(Regular Pad):过孔在每一层上露出来的铜皮,用于连接走线、铜皮或者元器件引脚。
- 热焊盘(Thermal Pad):也叫花焊盘,用于过孔与内层铜皮相连,通常带几条细筋,方便焊接和散热控制。
- 反焊盘(Anti Pad):没有铜的区域,用于隔离过孔和它穿过的铜皮,尤其是电源层和地层。
在 Allegro 里设置过孔,你实际上是在定义“每一层上这个过孔长什么样”。Begin Layer 是顶层,End Layer 是底层,Default Internal 是中间层。之所以要分开定义,是因为外层可能要直接连接元件焊盘,内层可能要走大电流或者大面积铺铜,需求不一样,几何参数自然也不一样。
1.2 5 个技巧的总体思考框架
我把过孔这件事拆成 5 个维度,这也是这 5 个技巧的逻辑主线:
- 类型选不对,后面全白费:通孔、盲孔、埋孔、微孔,到底用哪一种。
- 几何参数是地基:钻孔多大、焊盘多大、热焊盘怎么处理,参数之间如何搭配。
- 规则约束是关键:让过孔在整板范围内自动满足安全间距,靠的不是手工调而是约束管理器。
- 放置手法解放生产力:电源地过孔怎么成组布局,怎么快速打孔。
- 高速信号有讲究:换层过孔为什么会出问题,伴地过孔和背钻怎么用。
下面逐个展开。
2. 技巧一:过孔类型的选择,别一上来就通孔走天下
2.1 通孔、盲埋孔、微孔的使用场景
绝大多数中小密度 PCB 设计,用通孔(Through-hole via)就够了,它贯穿整个板厚,成本低、加工方便、可靠性高。但如果是一块 12 层以上的高密度板,BGA 扇出区域密密麻麻全是引脚,通孔可能根本走不通,这时候就得考虑盲孔和埋孔。
- 通孔(Through Via):贯穿所有层,从顶层能看到底层。优点是便宜、可靠;缺点是占空间,会穿过所有内层,影响内层布线空间和电源完整性。
- 盲孔(Blind Via):只在表层和相邻内层之间,不贯穿整板。适合高密度板的表层扇出,能省出大量内层空间。
- 埋孔(Buried Via):只存在于内层,表面看不到,好处是给表层留出更多走线空间,但压合工艺里要多几次钻孔和电镀,成本上升明显。
- 微孔(Micro Via):激光打孔,孔径一般在 0.1mm 以下,非常适合 HDI 板。它的问题也很现实——加工设备和成本都高。
我个人的建议是:常规 4 层或 6 层板,老老实实全用通孔;只有 BGA 引脚间距非常密(比如 0.5mm pitch 甚至更小)或者板子层数拉到 8 层以上、通孔很难实现时,才引入盲埋孔。盲埋孔不是越高级越好,它会让板厂加工步骤成倍增加,交期和价格都会上去。
2.2 在 Allegro 里定义过孔类型
新建过孔在 Padstack Editor 里操作,路径是 File -> New,然后在 Type 下拉框里选择:
- Through Hole:通孔
- Blind/Buried:盲埋孔(同一个入口,设置两层之间的连接关系)
- Single Defined:单一定义(用于单个层面的焊盘结构)
选 Blind/Buried 时,Allegro 会要求你指定起始层和结束层,比如顶层到 L2 的盲孔,L2 到 L3 的埋孔。这个“从哪层到哪层”的指定非常重要,因为压合顺序决定了哪些层可以互钻。做盲埋孔之前,至少要和板厂确认一次他们的叠层顺序和可加工的钻孔组合,不然你设计得再漂亮,板厂做不出来也白搭。
3. 技巧二:过孔尺寸与焊盘参数的黄金搭配
3.1 钻孔直径怎么定,先看板厚和密度
业内选孔径,大家通常会参考一个比例:板厚与最小成品孔径之比,一般控制在 8:1 以内比较稳妥,超过 12:1 加工难度和电镀风险会明显上升。比如一块 1.6mm 的常规板,钻孔完成尺寸做到 0.2mm 就已经接近板厂的工艺极限,算上电镀厚度,实际能用的孔很小,成本也会涨。
在 Allegro 的 Padstack Editor 里,你填的 Drill Hole Size 是成品后的机械钻孔尺寸。要注意的是,钻孔出来之后孔壁还会有一层电镀铜,所以实际孔内径会比设计值略小。设计时如果要控制阻抗或者通过电流,要把这个差异算进去。
对于普通数字板,我是这样选的:
- 常规信号过孔:钻孔 0.2mm 到 0.3mm,对应 8mil 到 12mil。
- 电源和地过孔:钻孔 0.4mm 到 0.6mm,保证过流能力和加工可靠性。
- BGA 扇出用:钻孔 0.15mm 到 0.2mm 之间,具体看你 BGA 的 pitch 和板厂能力。
实际项目里,先把板厂的“工艺能力表”要过来看一下,上面通常会写明最小孔径、最小线宽线距、层间对准精度等。设计规范里写清楚“所有过孔钻孔统一 0.2mm/焊盘 0.35mm”,这样板厂 CAM 同事一看就知道是按标准参数来的,沟通成本很低。
3.2 焊盘、热焊盘、反焊盘的尺寸逻辑
钻完孔,接下来是焊盘。常规焊盘尺寸一般取“钻孔 + 0.4mm 到 0.6mm”,也就是 Drill 0.2mm 时,Regular Pad 做到 0.35mm 到 0.4mm 左右。这个多余的尺寸要覆盖钻孔偏差、层间对准偏差、电镀填充效果。注意,如果你的过孔要当作测试点或者需要接触探针,焊盘还要再留大一些。
关于热焊盘和反焊盘,Allegro 里设置时就容易忘:
- 热焊盘(Thermal Pad):过孔连接到内层电源或地层时使用,形状和尺寸要能让回流焊料充分连接,但不能大到把整块铜皮都切开。热焊盘内径一般比常规焊盘内径小一点,外径比常规焊盘外径大一点,连接筋数量可以设 4 条或 2 条。
- 反焊盘(Anti Pad):和热焊盘是一对。它决定过孔与内层铜皮之间的安全间隙,所以通常等于或者略大于热焊盘外径。内层是大面积铺铜时,反焊盘太小可能导致信号过孔的阻抗偏低;反焊盘太大又会影响电源平面的连续性和载流能力。常规做法是比 Pad 四周多出 0.1mm 到 0.2mm,高速板这里要用叠层计算工具专门算。
操作上,Padstack Editor 左侧列表里每一层都能单独设置 Regular Pad、Thermal Pad、Anti Pad。内层如果不用 Thermal 而用 Full Contact(全连接),那热焊盘就可以不设或设成和 Regular Pad 一样,但要注意大面积铜皮连小过孔时散热太快,回流焊容易虚焊,生产上一般还是建议用热焊盘连接。
4. 技巧三:约束管理器里把间距规则一次设到“能用”
4.1 过孔相关的间距约束,不设好真会出事
很多初学者习惯画完板之后再跑 DRC,然后一条一条去修。这样做虽然也能出板,但效率极低。更合理的做法是在约束管理器里提前把和过孔相关的间距规则全部设好,让布线和打孔过程全程受约束保护,DRC 报错数量能下降一个数量级。
在 Allegro 中,路径是 Setup -> Constraints -> Constraint Manager。需要关注的几组间距:
- Vias to Vias:过孔到过孔的间距,这个值太小时,孔壁之间可能打架,或者电镀时两个孔之间的基材太薄容易破损。常规 8mil,高密度板可以放到 6mil,再小就要看板厂能力。
- Vias to Pins:过孔到通孔插件焊盘的距离。如果太近,插件焊盘被破坏的风险很大。
- Vias to Lines:过孔到走线的距离。这条是 DRC 里最常见的报错类型,常规 5mil 到 6mil,高压区域另算。
- Vias to Board Outline:过孔到板边距离,推荐至少 10mil 到 15mil,防止板边铣削时把孔壁弄破。
用表格整理一下常见的参考值:
| 间距类型 | 常规值(mil) | 高密度板(mil) | 说明 |
|---|---|---|---|
| Vias to Vias | 8 | 5-6 | 与板厂确认最小孔壁间距 |
| Vias to Pins | 6-8 | 4-6 | 注意插件焊盘可靠性 |
| Vias to Lines | 5-6 | 4 | 电压高时需加大 |
| Vias to Board Edge | 10-15 | 8 | 避免铣边损伤 |
这些值设好之后,再结合叠层里的“物理规则区域”(Physical Region / Spacing Region),BGA 下和板边区域还可以单独再收紧或放松,比如 BGA 下孔到线间距可以单独设 4mil,其他区域保持 6mil。
4.2 Physical Constraint Set 里指定可用过孔集合
约束管理器里还有一个很容易被忽略但作用巨大的地方:Physical Constraint Set 里的 Vias 列表。这里定义的是“这个规则下允许使用哪些过孔类型”。
比如 BGA 扇出区域用 0.2mm/0.35mm 的小过孔 + 盲埋孔,而电源区域用 0.4mm/0.6mm 的过孔。如果没有给不同物理规则指定不同的过孔集合,Allegro 布线时可能随手就用了尺寸不对的过孔。给不同的 Constraint Set 各拉一个常用过孔清单,布线和修线时会自动选择当前区域允许的过孔,这是很实用的小技巧。
具体操作是:Constraint Manager -> Physical -> Physical Constraint Set,右键选中某个 Set 的 Vias 属性,把允许的过孔类型加进去。同时,在布线过程中你也可以用右键菜单里的 Via Pattern 来快速切换。
5. 技巧四:电源和地过孔的放置,别只图“打得够多”
5.1 一个过孔能过多少电流,心里要有个数
电源过孔的放置,最核心的问题就是:到底打多少个才够?这里有个经验估算方法:0.3mm 钻孔的过孔,孔壁电镀铜厚度通常在 20um 到 25um,一个孔大约能承载 1A 到 2A 的电流。如果你某个电源网络要跑 5A,那就至少要安排 3 到 5 个过孔并联,同时注意过孔要尽量靠近电源入口、负载端和去耦电容,让电流路径最短。
当然这只是估算,严谨的做法还要看电源平面上铜皮的宽度、引脚出线的瓶颈位置。但“在关键功率通路上多打几个过孔”这个思路,永远是改善载流与散热最直接的手段。
5.2 如何高效放置过孔阵列
在 Allegro 里给电源或地网络快速放置多个过孔,常用操作是布线命令下,走一段线之后按小键盘的*键或者指定的快捷键手动打孔,然后继续走线。但如果是几十个过孔要成组布置,手工一个个点太慢了,我更推荐两种方式:
- 复制法:先放好一个过孔(或者一段带过孔的走线),选中之后用 Copy 命令,以过孔本身为基准点,按坐标步进复制一排或者一列。Grid 设成均等的间距,比如 50mil 间隔,这样出来的孔阵列既整齐又均匀。
- 模块复用:如果你在设计里反复用同一种 DC-DC 电源电路,可以把“布局+打过孔”这一整套做成一个模块(Module),下次直接调出来复用。Allegro 里的 Module Reuse 功能适合整组复用,省时省力。
打过孔之前记得把当前的走线网络确认好,别打完才发现过孔的 net 不对。Allegro 里过孔的网络属性继承自走线,如果你在空区域放置一个没有走线的过孔,它会默认不归属任何网络,后续赋网络会很麻烦。
5.3 去耦电容的过孔,要贴着电源引脚打
电源完整性里,去耦电容到芯片电源引脚的环路面积越小,高频去耦效果越好。所以电容旁边那个地过孔和电源过孔,要放在电容焊盘的正下方或者紧贴焊盘的位置,而不是绕一圈再连到内层。
具体放置时,我通常先放电容,然后用键盘命令把过孔放在电容电源焊盘和地焊盘的正外侧,再通过短线把焊盘连接到最近的内层铜皮。这样电流从芯片引脚流出,经过电容后再到电源平面,回流路径最短。如果不是这样打,电容等于白放,高频噪声照样乱窜。
6. 技巧五:高速信号换层,过孔要成对出现
6.1 换层为什么会破坏回流路径
高速信号从顶层换到内层或者从内层换到底层时,电流返回路径在换层点是断开的。如果信号下方紧邻的是一个完整的地平面,信号过孔换层后回流电流需要通过最近的过孔跳到另一个地平面才能形成回路,这时候就必须在信号过孔旁边安排伴地过孔(Stitching Via / Ground Via)。
伴地过孔的作用就是给回流电流提供一个低阻抗的近距离通道。它离信号过孔越近,回路面就越小,辐射和串扰也就越小。实际操作中,我一般把伴地过孔放在信号过孔旁边几十 mil 的范围内,能靠近电源/地焊盘就直接放,信号孔和地孔间隔按 BGA 焊盘间距来,比如 1mm BGA 可以做到孔中心间距 0.5mm 左右。
6.2 背钻与 Stub 效应,高速设计躲不开的问题
在 SerDes 这种高速信号上,还有一个和过孔强相关的问题叫 Stub。通孔穿过整板,而你只需要从顶层换到 L3 层,那么从 L3 层到板底这一段孔壁铜就形成一个金属残桩(Stub),它会反射高速信号、影响眼图。
解决办法之一是设计时让信号只换到本就靠近表层的内层,比如从顶层换到 L2 或 L3,这样 Stub 落在板厂标准工艺能控制的范围内;更彻底的办法是背钻(Back Drill),把不需要的孔壁部分从背面钻掉。Allegro 里可以通过在过孔属性里设置背钻允许选项,同时给背钻过的过孔单独建一种 Padstack,在钻孔图上用特定符号表示。
如果你做的是 10Gbps 以上的高速板,我的建议是叠层阶段就和板厂确认背钻能力和最小残留 Stub 长度,然后把这部分参数写进设计规范,不要等到仿真通不过再改。
7. 常见问题排查与实操心得
7.1 过孔相关的典型报错和对应处理
用 Allegro 时间久了,下面这些过孔相关的坑基本都会遇到,我整理成一张排查表,方便直接对照:
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 布线上不了过孔,右键菜单里过孔是灰色 | 当前 Physical Constraint Set 没允许该过孔类型 | 进 Constraint Manager,把该过孔加入对应 Set 的 Vias 列表 |
| DRC 报 Vias to Lines 间距错误 | 约束间距设得比实际走线距离大,或者线太靠近已有过孔 | 调整 Spacing 规则,或者手动推挤走线 |
| 铺铜后过孔与铜皮连接为全连接,导致焊接困难 | Thermal Pad 没设置,或内层连接方式选了 Full Contact | 修改 Padstack,把内层连接改成 Thermal Relief,重新铺铜 |
| 过孔盖油区域总是不对 | Solder Mask 层开口或遮盖设置错误 | 在 Padstack Editor 里检查 Solder Mask 层的宽度,使用“过孔盖油”或“开窗”选项 |
| 信号过孔换层后串扰大 | 缺少伴地过孔,回流路径不连续 | 在信号过孔旁就近增加地过孔 |
| 电源平面被过孔切得七零八落 | 电源地过孔太多且排列过于密集 | 减少非必要过孔,调整过孔位置,确保电源/地层大面积连续 |
| 出光绘后板厂反馈孔到板边太近 | 过孔离板边小于板厂最小距离 | 加大 Vias to Board Outline 约束,重新拉孔 |
7.2 几个容易被忽略的小经验
第一,Cap 到电源平面的过孔不要搞成“一长串”,尽量用并排短连接。很多工程师习惯走很长的线再打孔,结果回路面一大,噪声指标全崩了。正确的做法是电源引脚和电容焊盘正下方直接下孔,电源平面的连通性靠多个过孔并联保证。
第二,Allegro 里有一个很方便的工具栏叫“Blank Rats”和“Ratsnest”,配合过孔放置可以快速查看哪些过孔已经真正连通了网络。打完一批过孔之后,按一下 R(Ratsnest)刷新,如果有没连上的网络,它会以飞线形式显示出来。建议养成打完一排孔就看一次飞线的习惯,别攒到最后一起查。
第三,自定义快捷键能显著提高打孔效率。Allegro 默认打孔用走线状态下按数字键盘的*或小键盘 6 之类的键,但很多人不习惯。你可以通过Funckey命令把常见动作绑定到顺手的位置,比如funckey v "popover route"配合过孔尺寸切换。也可以直接进入 Options 面板选 Via 类型,但键盘操作更快。实测下来,用快捷键切换“小过孔/大电源孔”比鼠标在面板里点来点去至少快 30%。
第四,如果你做的板子板厂对过孔有最小间距要求,务必在设计规则里把“Hole to Hole”也一起设了,而不仅仅是 Vias to Vias。Allegro 里有单独的 Hole 间距约束,在 Spacing Constraint Set 里可以找到 Hole to Hole。有时候两个过孔焊盘间距够了,但钻孔之间的基材厚度不够,板厂还是会打电话过来。
一些额外想说的
过孔这个东西,在 Allegro PCB 设计里只是很小的一个环节,但它直接影响布线完成率、电源完整性、信号完整性,还有和板厂的沟通效率。我见过不少人把大量时间花在调丝印、调位号上,结果过孔规则没设置,最后一版板子 DRC 报了几百个错误,光修就修了一整天。从这个意义上讲,花半小时把 Padstack 和 Constraint Manager 里的过孔相关内容一次搞清楚,比后期返工节省的时间多得多。
最后再分享一个小习惯:每次开新板时,我第一件事就是把常用过孔默认参数建好、约束管理器里间距规则设好,然后不管这块板最终用不用盲埋孔,先把通孔的类型、尺寸、热焊盘参数全部理顺。等真正开始布线的时候,基本可以做到“顺手打孔不用想”,心态会轻松很多。希望这篇分享能给你省下几个加班的晚上。