1. 动手之前先想明白:Allegro里的过孔到底是什么
先说个很多新手容易忽略的事实:在Cadence Allegro 17.4 PCB Editor里,过孔(Via)不是一个简单的“洞”,而是一个完整的Padstack(焊盘堆栈)。它包含了钻孔、各个层的焊盘、阻焊开窗、反焊盘、热焊盘等多个属性。你用到的每一个过孔,本质上是调用了一个独立的.pad文件,这个文件决定了过孔在每一层长什么样、能载流多大、能不能散热、会不会短路。
理解这一点非常关键。因为很多人第一次打开Allegro 17.4,直接在布线过程中按了一下数字键盘上的5或者点击图标,发现过孔能用,就觉得“过孔设置”这件事已经结束了。但等到画多层板、做电源设计、跑仿真、出Gerber的时候,问题就全冒出来了:过孔盘太大导致内层短路、钻孔孔径和板厂实际能力不匹配、盲埋孔层对不上叠层、电源过孔数量不够导致压降超标……这些问题的根源,几乎都能追溯到最初过孔定义和规则分配这两个环节。
所以这篇教程,我不想只教你怎么点按钮,而是按照“理解原理 → 建立Padstack → 定义过孔类型 → 绑定物理规则 → 实际调用 → 批量处理 → 生产对接”这条完整链路来讲。我现在用的是Cadence Allegro 17.4版本,界面是Hotfix较新的状态,绝大部分操作在16.6到17.4之间都通用,遇到版本差异我会特别说明。
学习这件事,适合谁呢?一种是刚接触Allegro、准备独立完成PCB Layout的硬件工程师和在校学生;另一种是用过Allegro但一直停留在“调用默认过孔”阶段的工程师,如果你想弄明白盲埋孔怎么建、电源过孔怎么算、替换过孔怎么不丢连接关系,那这篇文章正好对路。
写之前先做一个约定:本文涉及的所有参数,比如板厚、孔径、盘径,都是基于常规FR-4板材和普通工艺能力来说的。你实际做项目的时候,一定要把参数发给你合作的PCB板厂确认,尤其是最小钻孔、最小环宽、盲埋孔叠对能力这些工艺极限值,板厂说能做到才叫能做到,Datasheet写得再漂亮也没用。
2. Padstack Editor:从零手搓一个标准过孔的完整过程
2.1 先打开正确的编辑器
在17.4里,打开Padstack Editor的路径有两条:
- 开始菜单 → Cadence Release 17.4-2019 → PCB Editor Utilities → Padstack Editor。
- 在PCB Editor界面里,选择
File → New新建文件时,把类型选成Padstack,这样也会直接跳转到Padstack Editor 17.4。
如果你是从PCB Editor里面通过菜单Setup → Padstacks → Modify来编辑,打开的窗口界面和独立版Padstack Editory有细微差别,但核心参数是一致的。我习惯用独立版来建库,因为建库属于“离线工作”,没必要把PCB文件一直挂在后台,占内存不说,图层显示也容易干扰判断。直接在PCB里修改Padstack适合做临时验证,不适合作为建库的正式流程。
17.4的Padstack Editor界面相比老版本做了一次比较大的重构,左侧不再是一长串Parameters树形列表,而是分成了几个Tab区域,信息密度更高,但熟悉之后操作效率反而比老版本高。这里有个小提醒:如果你以前用的是16.x的Padstack Editor,第一次打开17.4可能会觉得不适应,别急着骂,先花半小时把界面点一遍,你就会发现它只是把“Default Internal”“Default Surfaces”“Default Soldermask”这些层参数做成了可视化表格,逻辑并没有变。
2.2 每一个参数的意义和填法
下面我用一个最常规的“通孔过孔”为例,带你从头填一遍。假设条件:板厚1.6mm,最小线宽6mil,走线层是L1到L4,过孔希望做到成品孔径0.3mm(约12mil),那么Padstack该怎么建?
首先,打开Padstack Editor后,选择新建一个通孔(Through)类型的Padstack。17.4里类型有Through、Blind/Buried、Microvia、Single、Mechanical等,这里选Through。
接下来看右侧的Parameters区域,重点填这几个参数:
| 参数项 | 我的推荐值 | 说明 |
|---|---|---|
| Units | Millimeter | 国内的板厂和常规器件封装,毫米单位更直接。如果你跟老外团队协作,可以用Mils |
| Decimal places | 4 | 精度足够,转换成mil的时候也不会出现过大舍入误差 |
| Multiple drill | 一个孔位对应多个钻孔 | 一般用不上,别选 |
| Drill diameter | 0.3mm | 这是成品孔径吗?不是。这是“钻孔孔径”,板厂做完电镀之后,成品孔径会比钻孔孔径小约0.05-0.1mm(取决于孔铜厚度)。你如果要求成品0.3mm,设计时Drill diameter要留余量,比如填0.35mm |
| Hole type | Circle | 常规圆形孔,方形孔和槽孔这里不展开 |
| Tolerance | ±0.05mm | 生产允许公差,板厂一般有自己的标准,你在图纸标注公差比这个严格反而会提高成本 |
| Drill symbol | 可以填个字符编号 | 比如V12_35,方便在钻孔图上识别 |
填完钻孔参数后,展开左侧或中间区域的Layers列表,你会看到这么几类层:
Begin Layer(顶层)Default Internal(内层)End Layer(底层)SolderMask Top/SolderMask BottomPastemask Top/Pastemask BottomFilm Mask(非必须)
每一层都需要指定Pad尺寸和Shape。普通中间信号层,我个人建议用Circular(圆形)Pad,Diameter取钻孔孔径 + 0.3mm左右的起步值。比如钻孔0.35mm时,盘径0.65mm是相对均衡的,环宽最小有 (0.65-0.35)/2 = 0.15mm = 6mil左右,可以满足绝大多数常规板厂的工艺能力。
顶层和底层的焊盘,如果只是过孔,不是用来焊接元器件的插件孔,那可以和内层保持一致,没必要故意加大。有人习惯把Top/Bottom的盘做大一圈,方便AOI测试,这是可以的,但一定要统一,否则后面做阻抗仿真或者等长处理时容易出错。
阻焊层(SolderMask)这里要留个心眼:默认情况下,Padstack Editor会自动给阻焊开窗比焊盘略大。如果你做的是“过孔盖油”或者“过孔塞油”设计,阻焊参数要配合板厂工艺做特殊处理。具体怎么处理,后面第5部分再讲,这里记住一句话:阻焊开窗尺寸不是随便填的,它决定了过孔是“裸露”还是“被油墨盖住”。
2.3 保存和命名习惯
填完所有层参数之后,点File → Save As,把Padstack保存到你的库路径下。命名规则一定不能随便,我吃过亏,以前建过一堆叫via1、via2的Padstack,三个月之后回头看,根本不记得这个过孔是多大孔径、适不适合电源、层叠是否匹配。
我现在用的命名格式是这样的:
VIP_12_35 // V=过孔,IP=内层信号通用,12=盘径12mil,35=钻孔35mil(0.35mm) VIA_20_12_S // S=single,单层过孔,用于顶层到L2的盲孔,盘径20mil,成品孔径12mil VTH_24_16_PWR // PWR=电源过孔,盘径24mil,钻孔16mil虽然17.4支持很长的字符串,但建议控制在20个字符以内,否则在Constraint Manager和光绘文件里显示不全,还会影响BOM和钻孔文件导出。更重要的是,命名信息要与实际值一致,我看到过同事把参数和命名对应不上,最后板子做出来钻孔偏小,焊盘无法插入,白白返工。
保存Padstack时,Allegro会同步生成一个.pad文件。这个文件本质上就是一个文本库文件,里面记录了当前Padstack的所有参数。你可以用记事本打开看一眼,理解它的结构。如果你熟悉Skill编程,以后批量修改焊盘时可以直接改这个文本文件再重新导入,效率高很多。
2.4 为什么说别直接抄DATASHEET上的过孔推荐值
很多芯片参考设计里会给出过孔建议,比如“使用8mil/18mil过孔”或者“使用12mil/25mil过孔”。这些值基本可用,但你要清楚:参考设计面对的叠层、板厂能力和你的项目不一定相同。
8mil钻孔(0.2mm)属于微孔和小钻孔的临界范围,一般需要激光钻孔,价格明显高于机械钻孔。如果你项目成本压力不大,电源电流也不大,那可以接受;但如果你做的是大功率电源板,参考设计里的8mil过孔载流能力可能不够,你必须自己根据电流计算过孔数量和孔径。所以,把参考设计当成起点,不要当成圣旨,最终参数一定要根据板厂的工艺能力表去核对。
3. 盲孔、埋孔和微孔到底怎么建,层叠又是怎么配的
3.1 先明确哪些孔属于哪种类别
用Allegro 17.4做多层板(6层及以上)时,你会在Padstack Editor里看到以下选择:
- Through Via:从顶层打通到底层的孔。最便宜,最可靠,但会占用所有层的布线空间。
- Blind Via:从顶层或底层延伸到某个内层,但不贯穿整板。比如
L1-L3,只打穿前三层。 - Buried Via:完全埋在内层的孔,从外部看不到,比如
L2-L3或者L4-L5之间。 - Microvia:微孔,常规指激光钻孔,孔径一般在0.1-0.15mm之间(4mil-6mil),常用于HDI板的高密度互连。
在17.4里,盲埋孔的Padstack类型虽然要选Blind/Buried,但真正决定它用在哪个层对的是你在Setup → Constraint Manager和Cross-section叠层里面设置的规则。Padstack本身不知道自己会被用在哪一层之间,它只知道自己有起始层和结束层的信息。这句话我解释一下:一个Padstack文件里面有Begin Layer、Internal Layers、End Layer,当你把它定义为盲孔时,Allegro会根据你在Cross-section里定义的层对,自动决定中间哪些内层不需要焊盘。所以你在建盲孔Padstack时,涉及到的所有内层焊盘参数都要填,但最后实际布板时只有穿过的那几层会生成焊盘。
3.2 用17.4叠层编辑器配合盲埋孔
进入Setup → Cross-section,你可以看到一张叠层表,每一行代表一个物理层。17.4里这个界面做得比以前直观,左侧直接有材料、厚度、介电常数、铜厚等字段。比如你做一个6层板,层顺序是L1 Top / L2 GND / L3 SIG / L4 PWR / L5 GND / L6 Bottom,每层之间都有pp(半固化片)和core(芯板)。在Cross-section里把每一层的顺序、厚度都填好后,盲埋孔的层对关系就必须与叠层匹配。
举个例子,如果我想做L1-L2的盲孔,叠层中L1到L2必须有介质层,并且钻孔的深度角度要符合板厂能力。通常激光钻孔的盲孔只能跨1个介质层,即L1-L2或L6-L5这种相邻层。如果你硬要设计L1-L3的激光盲孔,很多板厂做不了,或者需要特殊工艺,成本翻倍。非要跨两层,建议用机械控深钻,成本介于激光孔和通孔之间,但精度略差。
所以在17.4里面建盲孔Padstack时,我会做这样几件事:
- 先确定叠层顺序和厚度,在Cross-section里建好层结构。
- 对照板厂给的HDI能力表,确认允许哪些层对可以打盲埋孔。
- 根据层对分别建立Blind Via Padstack和Buried Via Padstack。
- 在Constraint Manager的Physical规则里,给不同Net或者不同区域分配不同的Via规则。
3.3 建一个盲孔的实操步骤
以L1到L2的盲孔为例,在Padstack Editor中:
- 类型选择
Blind/Buried,注意不是Through。 - Drill diameter填0.15mm(激光孔常用值)。
- 在Layers列表里,只有
Begin Layer(L1)和End Layer(L2)要填焊盘尺寸,其他内层可以设为Null或不填。 SolderMask Top可以正常开窗,但如果盲孔在BGA bottom面朝向板内侧,就不需要开窗。- 保存时命名,比如
VB_T2_L2_15_6。
有人会问,我没有指定End Layer对应L2,Allegro怎么知道?因为在Placement/布线时,你是通过约束管理器绑定层对来告诉Allegro的。比如在Physical Constraint Set里,你创建一个PCS,把Via rule指定为VB_T2_L2_15_6,同时把该PCS分配给某个Net Class或某个区域,Allegro就会在这个Net布线时允许使用这个盲孔。实际加过孔时,Allegro会判断你鼠标所在位置当前所在层状态,在允许切换的层对范围内才会弹出可用的盲孔。
3.4 微孔(Microvia)的特殊之处
17.4专门有Microvia类型,如果你选了Microvia,Padstack Editor会让你填Microvia的钻孔方式和尺寸。Microvia通常用于HDI板、手机板、模块板,孔很小,常规10层板堆叠甚至会用到两次叠孔(staggered或stacked via)。在Allegro里,微孔和普通盲孔的重要区别是:
- 微孔不需要焊盘环宽太大,因为激光钻孔位置精度高,但也不能太小,板厂工艺存在对位误差。
- 微孔Demo时环宽一般取
≥0.05mm(2mil),量产最好≥0.075mm(3mil)。 - 微孔可以打在焊盘上(via-in-pad),但需要做树脂塞孔或铜膏塞孔,否则贴片时锡膏会流进孔里导致虚焊。
如果你做的是高频高速板,还要注意微孔在层叠中的stub效应,盲孔比通孔天生的优势就是stub短,信号质量好。这一点在SerDes、DDR等高速信号中非常明显。很多工程师纠结DDR4等长难做,其实把过孔换来换去对信号质量影响很大,尽量保持同一组信号用过孔类型一致,比单纯调线长更有效。
4. 把过孔用起来:规则分配、调用替换与批量操作
4.1 在Constraint Manager中绑定过孔规则
建好Padstack之后,过孔还只是躺在库里“待命”,真正让它在布线时能被使用,需要绑定到物理规则上。这一步是很多新手完全不熟悉的环节。打开Setup → Constraints → Constraint Manager,界面左侧选择Physical → All Layers或Physical → Region,你会看到有一个Allowed Vias列。
默认情况下,Allegro会把你库里所有Padstack都列在允许列表里,这其实很危险。所有过孔都能用意味着你在布线时随手一放,可能放了一个需要塞孔的特殊过孔,或者放了一个大孔径电源孔在敏感信号区域,轻则影响性能,重则板厂无法制造。
所以我的习惯是:在Constraint Manager里,给每类网络单独创建一个Physical Constraint Set(PCS),在Allowed Vias里只勾选该网络允许使用的那几个过孔。例如:
- 普通信号线:只允许
VIP_12_35和VIA_16_8。 - 电源网络:允许
VTH_24_16_PWR和VIP_12_35。 - DDR组信号:只允许特定阻抗孔径组合的过孔。
这样做的好处非常明显:布线时Allegro会自动过滤可用的过孔列表,你按L键加过孔的时候,只会看到符合当前网络规则的那几个,从源头上避免误用。
4.2 布线时快速切换过孔
在PCB Editor中,布线状态下按键盘L(或V,取决于你的快捷键设置)会弹出Select a Via对话框,这里显示的就是当前Net允许的过孔列表。如果你发现某个过孔在这里没出现,常见原因有两个:
- 当前Net的PCS没有把该过孔加进Allowed Vias。
- 当前Net所在层对与过孔类型不匹配,比如你想放一个
L1-L3盲孔,但当前布线层是L4,当然不可用。
还有一种操作,17.4支持自定义过孔快捷键。比如我习惯把F4设置成常用过孔,F5设置成电源过孔。具体在Options面板的Via栏里选择好目标过孔后,我会使用Tools → Quick Utilities → Funckey/alias绑定快捷键。这一点能明显提升布线效率,尤其是密集BGA区域需要频繁切换过孔和盲孔时,省去每次弹窗找孔的时间。
4.3 批量替换过孔:从普通孔换成电源孔
项目做到中后期,你可能会发现某个电源网络的过孔载流能力不够,需要用更大孔径的过孔整体替换。这时候千万不要手动一个一个删了重打,Allegro有批量替换功能。
操作路径:Edit → Replace → Vias,或者使用Tools → Padstack → Replace。选中要替换的过孔类型A,再选择目标过孔类型B,执行后所有符合条件的过孔都会被替换。要注意的是:
- 替换时必须保持钻孔大小兼容,如果你把0.35mm钻孔替换成0.8mm钻孔,周围的走线间距可能瞬间违规,因为新孔盘更大,可能撞到旁边的走线或焊盘。
- 替换之前先跑一次
Tools → Design Rule Check,把所有DRC错误存一个底盘,替换之后再跑一次,对比差异,这样可以快速定位哪里因替换新增了错误。 - 如果只是希望把“某一个Net”上的过孔替换掉,建议先只选中该Net的网络,或者用
Temp Group功能圈选区域,再执行替换。全局替换有时候会误伤无关网络。
还有一种更精细的做法,就是选中特定过孔,右键Replace Padstack,这是针对单个过孔的局部替换。批量替换和单个替换逻辑一致,只是作用范围不同。
4.4 过孔阵列与Via Stitching
在Allegro 17.4里,Place → Via Arrays可以把过孔规则地排成阵列。这个功能在地孔、屏蔽孔、电源过孔、散热过孔中非常有用。比如铺铜区域的地孔,要求间距50mil、均匀分布,手工一个个摆很痛苦,用Via Arrays几秒钟就能完成。
操作步骤:
- 先绘制一个形状(Shape),或者在PCB Editor中用
Add → Shape画出需要放置过孔的区域。 - 选择
Place → Via Arrays → Boundary,选择边界形状。 - 设置行列间距、过孔Padstack类型、过孔所属网络。
- 执行后自动生成过孔阵列。
但这功能有个坑:它生成的过孔阵列是“静态”的。如果你修改了Shape,过孔不会自动跟着移动,需要删除后重新生成。如果你希望过孔能跟随铜皮自动避让或更新,那就得用动态Shape配合Via Stitching功能,但Allegro的静态Via Array依然是主流做法,因为它简单、可控、适合生产。
还有一点经验:地过孔的间距一般取λ/20原则,3GHz以下信号,地孔间距取200mil基本够用;5GHz以上,建议100mil以内;如果是射频板块,建议50mil或更密。但过孔过密会降低电源/地平面的完整性,因为它会增加平面被分割的效应,所以不能盲目追求多,要依据信号频段和回流路径需求计算。
5. 电源、散热和特殊工艺:过孔不是打孔越多越好
5.1 电源过孔数量怎么估算
很多工程师设计电源过孔时心里没底,就在电源网络中狂打几十个孔。其实过孔载流能力有明确的计算逻辑。一个常规0.3mm钻孔、孔铜厚度25μm的过孔,载流能力大约为1-2A,具体值取决于允许温升。如果你需要过10A电流,用5-10个过孔并联,是常见做法。
我自己有一个粗略公式:
过孔数量 ≈ 所需电流(A) / 单个过孔载流(A)再留1.2倍的冗余,即最终数量 = 计算值 × 1.2,向上取整。比如10A负载,单孔1.5A,计算6.67个,取8个左右。但要注意:过孔孔铜厚度与板厂工艺有关,常规是20-25μm,高端板可以做到35-50μm,你可以在叠层说明中要求板厂加厚孔铜,这样单个过孔载流能提高50%-100%。
打开Allegro 17.4的Tools → Padstack → Modify可以查看某个过孔的具体参数,但Allegro本身不直接告诉你载流电流。你可以在Cadence自带的文档中找IPC-2152或IPC-2221标准表格,再结合过孔热阻模型去精确计算。普通项目用我上面的经验公式足够。
5.2 散热过孔:QFN和功率器件底部的密集过孔
QFN封装中间有个大焊盘(Exposed Pad),需要通过过孔把热量传导到内层铜皮和底层。这种散热过孔通常要求:
- 孔径不能太大,否则锡膏会通过孔流走,一般0.2-0.3mm比较稳妥。
- 过孔要尽量靠近芯片中心,均匀分布。
- 如果是底部散热焊盘,建议把过孔打在焊盘区域内,采用via-in-pad工艺,背面塞树脂或者油墨,否则回流焊时焊料会从孔里跑掉。
- 过孔之间间距不能太密,否则基板强度下降,翘曲风险增大,一般间距在0.5mm-0.8mm左右。
在Allegro里,你可以建一组散热阵列,用手动阵列摆放。QFN底部如果空间狭小,我会用Place → Via Arrays做一个矩形阵列,然后整体调整到焊盘区域内。阵列摆放完之后,再看一下DRC,确认过孔盘没有跟内层的其他网络短路。因为散热过孔通常是GND网络,如果内层某个区域是电源铜皮,距离不足就会造成短路,这是多层板散热过孔最常见的DRC错误。
5.3 过孔盖油、塞油和开窗的区别
生产上,过孔的处理方式会影响你的Padstack设置,这一点很多教程不讲。简单区分一下:
- 开窗(Via Exposed):过孔焊盘裸露,方便测试、散热或大电流焊接。缺点是容易氧化、可能短路。
- 塞油(Via Plugged):用阻焊油墨把孔填满或盖住,避免锡珠、防短路。适用于大多数信号过孔,成本低。
- 树脂塞孔(Via Filled with Resin):孔内填充树脂,再电镀盖帽,常用于BGA焊盘上的过孔(via-in-pad),表面平整,贴片良率高。
- 铜浆塞孔(Copper Filled):孔内填铜,导热导电性能最好,用于大电流或散热场景,成本最高。
在Padstack Editor里,你设置SolderMask Top的开窗尺寸,就决定了过孔是否裸露。如果板厂要求塞油,通常你在图纸上标TENTED VIA或文字说明,不需要在Padstack里做特别复杂的设置,但Allegro可以在Padstack Editor里把SolderMask设置成比焊盘小(比如0),这样油墨就会盖住孔口。具体用哪种,建议和你合作的板厂确认,我个人的偏好是:BGA区域一律树脂塞孔,普通信号区域塞油,大电流电源区域开窗或铜浆塞孔。
5.4 电源平面过孔的反焊盘与热焊盘
在多层板电源设计中,内层通常会有一个电源平面层(Power Plane)。当你的过孔穿过这个平面层时,有两种连接方式:
- 直接连接(Direct Connect):过孔焊盘直接和铜皮相连,导电性能最好,但焊接散热快,手工焊接困难。
- 热焊盘(Thermal Relief):过孔周围有四个小铜条连接到平面铜皮,隔离热扩散,方便焊接,但载流能力下降。
Allegro在Padstack Editor的Default Internal层里有一个Thermal Relief选项,可以设置Heat Spoke宽度和个数。如果你做的是信号过孔,建议直接连接,不要用热焊盘,因为信号过孔不需要考虑散热,而热焊盘会增加阻抗不连续。如果是电源过孔,需要焊接操作的话,可以考虑热焊盘,但对于多层板内部连接,热焊盘意义不大,更多影响的是装配工艺。大电流路径上的电源过孔,我一般选直接连接,牺牲手工焊接便利性,换取更小的电阻和温升。
6. 实测中遇到的坑与排查链路
6.1 过孔盘径和钻孔尺寸不匹配引发的DRC风暴
有一次我在做一块4层电机驱动板,从库里面调用了一个历史Padstack,结果布线阶段DRC突然报了几百个Package to Package间距错误。排查过程是这样的:先看错误坐标,发现都集中在过孔位置;然后打开DRC Browser看明细,显示“Shape to Pad spacing < clear”之类。再检查该过孔的Padstack,才发现它定义的内层焊盘是正方形,边长比普通圆形盘大了近0.2mm,导致它和旁边电源铜皮的最小间距小于设定值。
当时我没有逐个过孔去改,而是用Tools → Padstack → Modify把所有违规过孔的Padstack统一替换为正确的圆形盘过孔,一下清零。这件事给我的教训是:建库时一定要统一盘形和盘径,并且每个Padstack在用于板子前,最好先在Padstack Editor里跑一次SPP(Shape to Pad/Pad to Shape)检查。
6.2 盲埋孔层对设置与叠层不一致
还有一次做8层板,盲孔设计为L1-L2,但在Constraint Manager里绑定规则时,我选择了一个误以为是L1-L2的盲孔,实际上它是一个L1-L3的机械盲孔。结果布线时发现MLO(Manual Layer Override)设置一直被忽略,每次放置盲孔都弹出“Layer pair not allowed”,我当时还挺奇怪。
排查链路是:Setup → Cross-section确认叠层实际层对 →Constraint Manager → Physical → Via查看该Padstack的层对属性 → 再用Padstack Editor打开该Padstack查看End Layer。最后发现我在Padstack Editor里保存时把End Layer设成了L3,跟叠层中的L2不匹配。修正Padstack并重新绑定规则后,问题消失。
这里提醒一下:Allegro 17.4对盲埋孔的层对检查非常严格。如果叠层表里定义了10层,但你的Padstack文件End Layer没有对应到具体的子层名称,即使名字相似也会报错。所以建盲埋孔时,每一层都要跟Cross-section中的Layer名字保持一致,否则就会出现“Permitted layers”无法识别的问题。
6.3 替换过孔时丢失连接关系的处理
一个朋友问我,他用Edit → Replace → Vias把一批过孔从通孔替换成盲孔后,发现某些网络的连接断了。原因是:被替换的过孔原来连接了L1、L3、L5、L6四个网络层(通过铜皮相连),而新盲孔只支持L1-L2,导致L5和L6的铜皮失去了连接。
这种问题在批量替换前就应该预见。我的建议是:替换前先做一次Tools → Reports → Connectivity Report,把替换前的网络连接情况导出;替换后再导出一次,对比差异。如果差异巨大,直接用Undo撤销替换,然后重新筛选替换范围。总之,批量替换过孔不是无脑操作,一定要先理解目标过孔的层连接能力。
6.4 光绘文件里过孔不显示
有段时间我出Gerber时发现钻孔文件里缺失部分过孔,排查了很久。最后发现是因为我要“Optimize Drill”时不小心勾选了Remove Redundant Drill,结果Allegro把同一位置重叠的钻孔给合并或删除了。如果你遇到钻孔表里孔数不对,先检查该项设置,再把所有过孔Padstack去重。
另一个常见问题是:在光绘文件输出时,如果Drill Legend中的孔径列表没有更新,你需要右键Drill Legend → Rebuild,重新生成钻孔标识表。千万别手动改,否则光绘和钻孔表对不上,板厂给你做错孔,那就是事故。
6.5 从Allegro输出给板厂的过孔信息清单
最后,跟板厂对接时,除了发Gerber和钻孔文件,我习惯顺便导出一份过孔清单PDF,包含:过孔类型、钻孔直径、成品孔径、内外层盘径、是否塞油、是否树脂塞孔、数量。这一步看起来多余,但能大幅降低沟通成本。你可以在Manufacture → NC → Drill Customization里查看钻孔信息,也可以从Padstack Editor导出一个文本报告。
这不算Allegro的功能,但却是“过孔设置全流程”里最容易被忽略、也最影响交付的一环。一个负责任的硬件工程师,交付文件里一定要有明确的过孔描述,否则板厂遇到模糊参数就会按他们的默认工艺走,跟你的设计意图有偏差。
7. 一个真实项目的过孔规划复盘
为了让你更直观地明白前面这些知识点怎么组合起来用,我复盘一个我最近做的6层Sensor板项目,不算复杂,但麻雀虽小五脏俱全。
项目背景:6层板,尺寸60mm×60mm,主控是BGA封装,DDR3跑800MHz,板上有3.3V、1.8V、1.2V三路电源,还有一组千兆以太网差分对。板厚1.2mm,要求控制成本,不用HDI。
过孔规划时我是这样推演的:
- 因为不用HDI,所以全部使用通孔过孔,不建盲埋孔,成本最低,生产可靠。
- BGA扇出区域,选择8mil/16mil的微小通孔(钻孔0.2mm,盘径0.4mm),以便在BGA引脚的0.5mm pitch空间内完成引出。
- 主电源路径(3.3V从电源入口到BGA)需要至少6A,用0.45mm钻孔/0.75mm盘径的电源过孔,打12个并联,载流余量充足。
- DDR3信号组约束中,过孔统一使用8mil/16mil微孔,减少阻抗跳变。
- 千兆以太网差分对,在连接器区域附近加地孔,间距100mil,形成完整回流。
- 板边一圈加地过孔阵,间距100mil,增强屏蔽和结构强度。
这个方案最后投板一次通过。总结下来就是:过孔规划必须在布局阶段提前做,而不是布线到一半才想起来。你花的几分钟做规划,可能省下后面几天的返工时间。
8. 关于17.4版本的使用感受与几个误解澄清
写这篇文章最后,我再针对Allegro 17.4的过孔功能说几句个人感受。
很多人问17.4和16.6差别大不大。负责任地说,在过孔设置这个环节,核心逻辑没有变,还是Padstack Editor + Constraint Manager这套体系。17.4的改进主要体现在可视化上,比如Padstack Editor的参数表格更清晰,Cross-section编辑器更顺手,Constraint Manager的过滤和联动更快。对老手来说,16.6到17.4过渡没有学习成本;对新手来说,17.4反而更容易学,因为它把很多以前藏在菜单深处的功能直接摆到了面板上。
还有一个常见误解:有些人以为设置过孔必须在Constraint Manager里专门建Via Rule,然后把Padstack填进去就行。其实不然,Allegro的Via Rule可以建立在PCS上,也可以建立在Region上。如果你的板子上局部区域需要特殊过孔(比如BGA底部),用Region规则绑定会更灵活。做法是:Setup → Constraints → Constraint Manager → Physical → Region,新建一个Region,圈选BGA区域,然后在Region的PCS中只允许需要使用的小过孔类型。
另一个误解:“Allegro不能自动给你布过孔”。实际上17.4支持Route → Unsupported Prototype和Auto Interactively Route,配合过孔规则,可以自动在走线换层时插入过孔。但全自动过孔布局的可控性还很有限,常规做法依然是手动添加过孔,再配合Copy/阵列快速复制。自动布过孔适合快速评估,不适合直接投产。
最后想强调一点:过孔设置看起来是一个很小的技术动作,但它串联了建库、叠层、约束、布线、仿真、制造等多个环节。你在Padstack Editor里随手填的一个盘径,后面可能影响阻抗、载流、可制造性甚至整个项目的交期。所以在设计开始前,多花一点时间把过孔规划好,绝对是性价比最高的投资。我自己这几年做项目的习惯就是先建一套规范的过孔库,再开工,后面几乎不会在过孔上返工。希望这篇从入门到精通的教程,能帮你把这件事真正做扎实。