1. 过孔操作在Allegro 16.6里的真实定位
过孔这东西,说简单也简单,就是一个把不同层铜皮连起来的“电学楼梯”;说复杂也复杂,因为它的类型、焊盘尺寸、阻焊开窗、反焊盘、约束规则,每一个参数都会直接影响板子的可制造性和信号完整性。我接触Allegro 16.6这些年,发现很多新手卡在过孔上,不是不会放,而是放完之后不知道它到底“合不合格”——DRC不报错就以为万事大吉,结果板厂反馈过孔焊盘太小、反焊盘不够、或者过孔打到焊盘上短路了才发现问题。
这篇内容就是围绕Allegro 16.6里过孔的基本操作展开,从过孔类型的选择、焊盘库的建立、约束管理器的配置,到实际放置、替换、检查,把整个链路讲透。适合刚上手Allegro的PCB设计人员,也适合从其他EDA工具转过来的老手——因为Allegro的过孔逻辑和其他工具差别不小,尤其是Padstack这个概念,不理解它,后面全是坑。
我尽量用从业者之间交流的方式来讲,不堆术语,该给参数的地方给参数,该说为什么的地方说清楚逻辑。你看完之后,至少能做到:自己建过孔、自己配规则、自己放、自己查,遇到问题知道往哪个方向排查。
2. 过孔类型与Padstack的核心逻辑
2.1 通孔、盲孔、埋孔到底怎么选
Allegro 16.6支持三种基本过孔类型:通孔(Through Hole)、盲孔(Blind Via)、埋孔(Buried Via)。很多人一上来就想用盲埋孔,觉得高级,但实际上除非你的板子密度真的到了通孔搞不定的地步,否则通孔是最稳妥的选择。
通孔从顶层贯穿到底层,板厂加工最简单,成本最低,可靠性也最高。盲孔是从外层打到内层,不穿透整板;埋孔是内层到内层,外层完全看不到。这两种过孔需要板厂在压合之前就做好对应层的钻孔,工艺步骤多,良率风险大,价格通常是通孔的几倍。
我个人的经验是:如果你的板子层数在6层以内,BGA球间距在0.8mm以上,通孔基本够用。只有当你遇到0.5mm甚至0.4mm间距的BGA,出线通道被堵死的时候,才考虑用盲孔从表层打到第二层或者第三层来释放布线空间。埋孔一般用在高层数背板或者非常复杂的HDI设计里,普通项目很少碰。
注意:盲埋孔不是你想用就能用,先跟板厂确认他们的工艺能力。有些板厂能做盲孔但做不了埋孔,有些板厂对盲孔的层对有限制。提前沟通,别等设计完了才发现做不了。
2.2 Padstack:过孔的“身份证”
Allegro里过孔不是一个简单的“点”,而是一个Padstack(焊盘堆栈)。一个Padstack定义了过孔在每一层的表现:顶层和底层的焊盘(Regular Pad)、内层的反焊盘(Anti Pad)、以及热风焊盘(Thermal Relief)。这三者缺一不可,尤其是反焊盘,它决定了过孔和内层铜皮之间的隔离距离。
很多新手建过孔的时候只设了Regular Pad,忘了Anti Pad,结果过孔放到内层铜皮上直接短路,DRC还不一定报——因为Allegro默认可能用的是全局的Anti Pad尺寸,如果全局设置不合理,问题就埋下了。
Padstack的创建路径是:Setup → Padstack → Padstack Designer。打开之后你会看到几个关键参数:
- Units:单位,一般用Mil或者Millimeter,跟你的设计保持一致。
- Drill:钻孔直径,Finished Hole Size。
- Regular Pad:各层的焊盘尺寸。
- Anti Pad:各层的反焊盘尺寸。
- Thermal Relief:各层的热风焊盘尺寸。
2.3 焊盘尺寸的计算逻辑
过孔焊盘尺寸不是随便填的,它跟钻孔直径有直接关系。行业里常用的经验公式是:
- Regular Pad直径 = 钻孔直径 + 0.2mm(约8mil)到钻孔直径 + 0.25mm(约10mil)
- Anti Pad直径 = Regular Pad直径 + 0.2mm(约8mil)到+ 0.25mm
- Thermal Relief的外径 = Regular Pad直径 + 0.2mm,内径 = Regular Pad直径 + 0.1mm
举个例子,如果你用0.3mm的钻孔,那么Regular Pad大概在0.5mm到0.55mm之间,Anti Pad在0.7mm到0.8mm之间。这个范围不是死的,要根据板厂的加工能力和你的阻抗要求来微调。
为什么Anti Pad要比Regular Pad大?因为反焊盘是过孔和内层铜皮之间的隔离区,如果太小,过孔和内层铜皮的间距不够,可能产生寄生电容,影响信号完整性,严重的话还会因为蚀刻公差导致短路。所以这个余量必须留够。
实操心得:我一般会在板厂的工艺能力基础上再留一点余量。比如板厂说最小焊盘可以做0.45mm,我就用0.5mm。多出来的0.05mm不会让你的布线密度明显下降,但能显著降低制造风险。
3. 在Allegro 16.6里创建过孔的完整流程
3.1 打开Padstack Designer并设置基本参数
第一步,打开Padstack Designer。路径是Setup → Padstack → Padstack Designer。打开之后,先别急着填参数,先把单位和精度确认一下。Allegro 16.6默认可能是Mil,如果你的设计是公制,记得改成Millimeter,精度一般设2位小数就够了。
然后选择Padstack的类型。在“Padstack Usage”里选“Via”,这样后面填的参数就是针对过孔的。如果你选的是“Pin”,那是给元器件引脚用的,逻辑不一样。
接下来设置钻孔参数。在Drill标签页里,填Finished Hole Size。这个尺寸是成品孔的直径,不是钻头直径。板厂会根据你的成品孔尺寸加上电镀厚度来选钻头。一般0.3mm的成品孔,钻头可能在0.35mm左右。
3.2 逐层设置焊盘和反焊盘
这是最关键的一步。在Layers标签页里,你会看到Top、Bottom和所有内层。对于通孔来说,Top和Bottom的Regular Pad是一样的,内层的Regular Pad可以设成和Top一样,也可以设成0(如果内层不需要焊盘)。但Anti Pad每一层都要设,而且尺寸要一致。
具体操作:
- 在Top层,Regular Pad填0.5mm,Anti Pad填0.7mm,Thermal Relief按公式填。
- 在Bottom层,跟Top保持一致。
- 在内层(比如GND层、VCC层),Regular Pad可以填0.5mm,Anti Pad填0.7mm。如果你希望内层过孔不显示焊盘,Regular Pad可以填0,但Anti Pad还是要填。
这里有个细节:Thermal Relief只在过孔连接到铜皮的时候才起作用。如果你的过孔只是穿过内层但不连接,那Thermal Relief设不设无所谓。但如果你要连接到内层的电源或地平面,Thermal Relief就必须设,否则Allegro会用全连接(Solid Connect),焊接的时候散热太快,可能导致虚焊。
3.3 保存并命名
设置完之后,点Save As,给过孔起个名字。命名规范建议包含钻孔尺寸和焊盘尺寸,比如“VIA_0R3_0R5”,表示钻孔0.3mm、焊盘0.5mm。这样后面在约束管理器里选过孔的时候一目了然,不用一个个点开看参数。
保存的路径一般是你的库路径,确保这个路径在Allegro的库搜索路径里。路径设置是Setup → User Preferences → Paths → Library,把padpath指向你的过孔库目录。
常见问题:保存之后在约束管理器里找不到这个过孔?大概率是库路径没设对,或者过孔文件没有放在padpath指定的目录下。检查一下User Preferences里的padpath,确认路径拼写正确,斜杠方向也对。
4. 约束管理器里的过孔规则配置
4.1 创建过孔列表(Via List)
过孔建好了,但Allegro不会自动用它。你需要在约束管理器(Constraint Manager)里创建一个Via List,把允许使用的过孔加进去。路径是Setup → Constraints → Constraint Manager,然后找到Physical → All Layers → Via List。
在Via List里,你可以新建一个列表,比如“DEFAULT_VIA”,然后把刚才建的过孔加进去。一个列表里可以加多个过孔,Allegro会按照你排列的顺序优先使用第一个。比如你放了0.3mm和0.4mm两个过孔,布线的时候默认用0.3mm的,如果空间不够自动切换到0.4mm的。
这个优先级逻辑很实用。我一般会把小过孔放在前面,大过孔放在后面,这样在密集区域自动用小过孔,在宽松区域用大过孔,兼顾密度和可靠性。
4.2 把过孔列表分配给网络或区域
Via List建好之后,还要把它分配给具体的网络或者区域。在Physical规则里,你可以针对不同的网络类(Net Class)设置不同的Via List。比如电源网络用大过孔,信号网络用小过孔。
具体操作:在Constraint Manager的Physical → Net → All Layers里,找到Via List这一列,给每个网络类选择对应的Via List。如果你没有特别设置,所有网络会用Default的Via List。
另外,你还可以在Area规则里针对特定区域设置过孔。比如BGA区域用0.2mm的微孔,其他区域用0.3mm的通孔。这个功能在HDI设计里非常有用。
4.3 过孔与铜皮的连接方式
过孔和内层铜皮的连接方式也在约束管理器里控制。在Physical → All Layers → Vias里,你可以设置过孔是Full Contact(全连接)还是Thermal Relief(热风焊盘连接)。对于电源和地网络的过孔,一般用Thermal Relief,方便焊接;对于信号过孔,如果不需要连接铜皮,就用Anti Pad隔离。
这里有个容易忽略的点:Thermal Relief的连接线宽度(Spoke Width)也要设。太细了载流不够,太粗了散热太快。一般设成和过孔焊盘直径差不多的宽度,比如0.5mm焊盘用0.2mm到0.25mm的连接线。
实操心得:我见过有人把Thermal Relief的Spoke设成0.1mm,结果板子回来发现过孔和铜皮的连接很脆弱,稍微受力就断了。建议不要低于0.2mm,除非你的电流非常小。
5. 过孔的实际放置与替换操作
5.1 手动放置过孔
在Allegro里手动放过孔很简单:布线的时候按快捷键或者点工具栏的“Add Via”按钮,然后在需要的位置点一下。但有几个细节要注意:
- 放过孔之前,确认当前激活的Via List里有你想要的过孔。如果Via List是空的,你点破天也放不出过孔。
- 放过孔的时候,Allegro会自动根据当前层和目标层选择过孔类型。如果你从顶层往底层走,它用通孔;如果你从顶层往第二层走,它可能用盲孔(如果你配了盲孔的话)。
- 过孔放下去之后,可以用“Slide”命令微调位置,但要注意不要推到DRC违规的区域。
5.2 批量替换过孔
有时候你需要把一种过孔换成另一种,比如把0.3mm的换成0.4mm的。手动一个个换太慢了,Allegro提供了批量替换功能。路径是Tools → Padstack → Replace。
在Replace界面里,选择“Via”作为替换类型,然后选源过孔和目标过孔。你可以选择替换整个设计里的所有过孔,也可以只替换选定区域或选定网络里的过孔。这个功能在改板的时候特别有用,比如板厂反馈0.3mm的孔太小,你直接批量换成0.4mm的,几分钟搞定。
但要注意:替换过孔之后,原来的布线可能会因为过孔变大而产生DRC违规。替换完记得跑一遍DRC,把违规的地方修掉。
5.3 过孔打到焊盘上的问题
有个热搜词是“allegro中过孔打到pad上为什么不报错”,这个问题很典型。在Allegro 16.6里,过孔打到焊盘上默认是不报DRC的,因为Allegro认为过孔和焊盘属于同一网络的话,连接是合法的。但如果你不小心把过孔打到了不同网络的焊盘上,那就短路了。
为什么不报错?因为Allegro的DRC检查里,“Via to Pad”的间距规则可能没有启用,或者间距值设成了0。你需要在Constraint Manager的Spacing规则里,找到“Via to Pad”这一项,设置一个合理的间距值,比如0.1mm。这样过孔靠近焊盘太近的时候就会报错。
但即使设了间距规则,同网络的过孔和焊盘还是不会报错,因为同网络默认是允许连接的。所以放过孔的时候,自己要看清楚,别打到不同网络的焊盘上。
避坑技巧:我一般会在布局阶段就把过孔的位置规划好,尽量让过孔远离焊盘。如果实在避不开,至少确保过孔和焊盘的网络一致,并且过孔不要压在焊盘的阻焊开窗上,否则焊接的时候锡会流到过孔里。
6. 过孔相关的DRC检查与常见问题排查
6.1 必须开启的过孔DRC规则
Allegro 16.6的DRC规则很多,跟过孔相关的主要有这几项:
| DRC规则 | 作用 | 建议设置 |
|---|---|---|
| Via to Via | 过孔之间的间距 | 0.2mm以上 |
| Via to Line | 过孔到走线的间距 | 0.15mm以上 |
| Via to Pad | 过孔到焊盘的间距 | 0.1mm以上 |
| Via to Shape | 过孔到铜皮的间距 | 由Anti Pad控制 |
| Drill to Drill | 钻孔之间的间距 | 0.25mm以上 |
| Hole to Copper | 钻孔到铜皮的间距 | 0.2mm以上 |
这些规则在Constraint Manager的Spacing和Physical规则里都能找到。设置完之后,跑DRC的时候Allegro会自动检查。
6.2 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 放不出过孔 | Via List为空或未分配 | 检查Constraint Manager里的Via List |
| 过孔在内层短路 | Anti Pad未设置或太小 | 重新建Padstack,加大Anti Pad |
| 过孔焊盘太小 | Regular Pad尺寸不够 | 按钻孔+0.2mm重新计算 |
| 过孔打到焊盘不报错 | Via to Pad规则未启用 | 在Spacing规则里启用并设值 |
| 替换过孔后DRC大量报错 | 新过孔尺寸变大 | 跑DRC后逐个修复或调整规则 |
| 过孔连接铜皮不牢固 | Thermal Relief Spoke太细 | 加大Spoke宽度到0.2mm以上 |
| 盲孔无法放置 | 未在Padstack里定义盲孔层对 | 检查Padstack的Layer设置 |
6.3 独家避坑经验
第一个坑:过孔焊盘尺寸和板厂能力不匹配。有些板厂的最小焊盘是0.5mm,你用了0.45mm,板厂会帮你改,但改完之后可能影响阻抗。所以建过孔之前,先拿到板厂的工艺能力表,按他们的最小值加一点余量来设。
第二个坑:过孔的反焊盘在负片层里不显示。Allegro的内层如果是负片(Negative Plane),反焊盘是自动生成的,但如果你在Padstack里没设Anti Pad,负片层就不会隔离,直接短路。所以不管正片负片,Anti Pad都要设。
第三个坑:过孔替换之后忘了更新泪滴。如果你的设计里有泪滴(Teardrop),替换过孔之后泪滴可能失效,需要重新生成。路径是Route → Gloss → Teardrop。
第四个坑:盲埋孔的层对设置错误。比如你想从Top打到Layer 3,但在Padstack里只设了Top到Layer 2,那放下去的时候Allegro会找不到对应的过孔类型。建盲孔的时候,一定要在Padstack Designer里把Start Layer和End Layer设对。
7. 过孔与铜皮、禁铺区的交互处理
7.1 过孔在铜皮里的表现
过孔放到铜皮上之后,Allegro会根据Padstack里的Anti Pad和Thermal Relief设置来决定怎么处理。如果过孔和铜皮同网络,且设置了Thermal Relief,过孔会通过几根连接线和铜皮相连;如果设置了Full Contact,过孔会直接和铜皮融合;如果过孔和铜皮不同网络,Anti Pad会起作用,在过孔周围形成一个隔离环。
这里有个细节:铜皮的优先级会影响过孔的表现。如果铜皮的优先级高,过孔的Anti Pad可能会被铜皮覆盖,导致隔离失效。所以一般建议铜皮的优先级低于过孔的Anti Pad。在Allegro里,铜皮的优先级在Shape的属性里可以调。
7.2 禁铺区对过孔的影响
禁铺区(Keepout)可以限制过孔的放置。你可以在Keepout里设置“No Via”,这样在这个区域内就放不了过孔。这个功能在BGA区域或者天线区域很有用,防止过孔影响信号。
但要注意:Keepout的优先级很高,如果你在Keepout里禁了过孔,即使Via List里有可用的过孔,也放不下去。所以设置Keepout的时候要谨慎,别把需要放过孔的区域也禁了。
7.3 过孔与铜皮连接的实操建议
对于电源和地的过孔,我一般用Thermal Relief连接,Spoke宽度设0.25mm,数量4根。这样焊接的时候热风焊盘能减缓散热,避免虚焊,同时4根Spoke的载流能力也够。
对于信号过孔,如果不需要连接内层铜皮,就用Anti Pad隔离,Anti Pad尺寸比Regular Pad大0.2mm。如果需要连接,就用Full Contact,但要注意阻抗匹配。
实操心得:我见过有人在电源层用过孔连接铜皮的时候用了Full Contact,结果回流焊的时候过孔散热太快,焊锡没化开,导致虚焊。后来改成Thermal Relief就好了。所以电源和地的过孔,老老实实用Thermal Relief。
8. 过孔操作的效率技巧与个人体会
8.1 快捷键与批量操作
Allegro 16.6的快捷键可以大幅提升过孔操作效率。我常用的几个:
- Add Via:默认没有快捷键,我一般设成F2,按一下就能放过孔。
- Slide:设成F3,用来微调过孔位置。
- Replace Padstack:设成F4,批量替换过孔。
- DRC Update:设成F5,改完过孔后快速跑DRC。
设置路径是Tools → Utilities → Keyboard Commands,或者直接编辑env文件。env文件一般在你的HOME目录下的pcbenv文件夹里。
批量操作方面,除了前面说的Replace Padstack,还可以用“Copy”命令批量复制过孔。选中一个过孔,按Copy,然后框选目标位置,Allegro会自动在每個位置放过孔。这个在打地过孔阵列的时候特别快。
8.2 过孔阵列的规划
地过孔阵列是高速设计里常见的操作。比如在BGA下方打一圈地过孔,或者在连接器周围打屏蔽过孔。规划的时候要注意:
- 过孔间距要均匀,一般1mm到2mm一个。
- 过孔要尽量靠近需要屏蔽的信号线,但不要影响布线通道。
- 地过孔的Anti Pad要设对,确保和电源层隔离。
我一般会在布局阶段就把地过孔阵列规划好,用Copy命令批量放置,然后用DRC检查间距。
8.3 个人体会
Allegro 16.6的过孔操作,说到底是“建、配、放、查”四个字。建是建Padstack,配是配约束规则,放是实际放置,查是DRC检查。这四个环节任何一个出问题,过孔都会出毛病。
我刚开始用Allegro的时候,最头疼的就是Padstack。因为其他EDA工具里过孔就是一个参数,Allegro里却要建一个完整的Padstack,还要逐层设置。后来理解了Anti Pad和Thermal Relief的作用之后,就顺畅多了。
还有一个体会是:不要怕麻烦,过孔建好之后,把常用的几种保存成模板,下次直接调用。我一般会建一套标准过孔库,包括0.2mm、0.3mm、0.4mm、0.5mm几种钻孔尺寸,每种都配好Regular Pad、Anti Pad和Thermal Relief。这样新项目直接拿来用,不用每次重新建。
最后再分享一个小技巧:如果你不确定过孔参数是否合理,可以在Allegro里用“Report”功能生成过孔报告,看看每个过孔的钻孔尺寸、焊盘尺寸、反焊盘尺寸,然后对照板厂的工艺能力表检查一遍。这个习惯能帮你提前发现很多问题,避免板子回来才发现过孔不合格。