
板子一密起来Allegro 17.4里的过孔扇出和盲埋孔配置绝对是最考验基本功的两个环节。很多新人画第一块BGA板时最怕的不是布线而是刚一开始就被扇出卡住——引脚之间密密麻麻怎么走线都跟旁边网络冲突最后只能硬着头皮上自动布线结果越绕越乱DRC还翻车。如果你正在做高密度板、HDI板或者刚开始用Allegro 17.4处理BGA封装的PCB设计这篇文章就是我基于实际项目整理的过孔扇出技巧和盲埋孔实战配置从原理到菜单路径再到常见报错排查一次性过一遍。1. 过孔扇出和盲埋孔高密度板设计绕不开的两个动作1.1 扇出到底是什么为什么BGA一定需要先扇出扇出Fanout简单说就是把器件焊盘上的信号先用一小段走线引到过孔再通过过孔换到内层或器件外围继续走线。你可以把它理解成城市交通里的“出城匝道”——芯片引脚都在封装底下内层的路网再宽引脚也得先经过一个中转站离开当前区域才能进入四通八达的道路。BGA封装尤其依赖扇出原因是BGA焊盘排布太密集表层根本不可能把所有引线都拉出去。比如一个0.8mm pitch的BGA引脚中心间距只有0.8mm表层走线宽度加上安全间距通常要占掉0.3mm到0.4mm你想想两排焊盘之间就那么点空隙全部走表层根本不现实。只有通过过孔换层把一部分信号放到内层去走布线通道才会被打通。实际项目中扇出还有一个很重要的作用规划电源地网络。BGA中间通常分布着大量VCC和GND引脚这些引脚如果扇出得好可以形成规律的过孔阵列配合内层电源平面直接完成连接既降低直流压降又避免电源信号绕到板边再回来。如果扇出阶段电源地过孔排得乱后面电源平面被切断、信号回路面积变大整板信号完整性问题会接踵而来。1.2 通孔、盲孔、埋孔怎么选一张表看懂适用场景在设计高密度板时过孔类型的选择会直接影响层数、成本和可制造性。先建立基本概念过孔类型定义工艺特点典型应用通孔Through Via贯穿整个板厚机械钻孔成本最低生产成熟低密度板、平面对连、电源地连接盲孔Blind Via从表层连接到某一内层不贯穿全板激光钻孔孔径小、无需背钻成本中等表层信号进入内层HDI 高密度互联板埋孔Buried Via只连接内层之间从板外看不到机械或激光钻孔在压合前完成成本较高内层信号互连解放表层空间通孔看着简单但高密度板里通孔用多了是个麻烦。一个贯穿全板的通孔会在其他层占用额外空间如果走线层很紧张这些“路过”的孔往往会挡住内层通道。盲孔和埋孔则只会出现在特定层对之间比如L1到L2的盲孔只在表层和L2之间打孔内层其他层根本不受影响这就是高密度设计里盲埋孔的最大价值——按需连接不打扰无关区域。不过盲埋孔不是随便用的成本和工艺约束都很严格。盲孔一般用激光钻孔径能做到0.1mm甚至更小钻孔深度却有上限超过一定层数后激光就没办法稳定加工埋孔在压合前钻孔对位精度要求高一阶二阶三阶每加一阶加工难度和单价都会上一截。所以选通孔还是盲埋孔本质上是在“布线空间、层数成本、加工难度”之间做平衡而不是越花哨越好。2. Allegro 17.4过孔扇出实操参数设置到一键生成2.1 扇出前的准备工作约束规则和过孔库在Allegro 17.4里点开Route Create Fanout之前先得把“地基”打好。上来就扇出很容易出现后面过孔类型不对、间距超限、DRC满天飞的问题。第一步是确认单位制。在Setup Design Parameter Editor里把Display和Design单位统一成mm精度至少0.01mm或0.005mm尤其涉及盲埋孔、背钻这些精密工艺时单位混乱会带来灾难性问题。第二步是确认过孔库。正常的过孔库至少要有几种标准过孔比如0.15/0.35mm钻孔/焊盘的机械孔、0.1/0.25钻孔/焊盘的激光孔以及0.3/0.6mm的大电流过孔。在工具里双击过孔可以打开Padstack Editor检查每一层是否有对应的焊盘定义、反焊盘Anti-pad大小是否合理这步不能省否则盲埋孔定义后走线会报缺少层定义。第三步是设置物理规则。打开Setup Constraints Physical找到对应的Physical Constraint Set把默认走线宽度、最小线宽、最大线长这些规则填好然后在Allowable Vias里把需要用到的过孔型号全部加进去。过孔没有加入Allowable Vias的话扇出时Allegro根本不会让你使用这个过孔这是新手最容易踩的坑。第四步是确认间距规则。在Spacing Constraint Set里检查Same Net Spacing、Pin to Via Spacing等参数。特别是Pin to Via SpacingBGA扇出时过孔会紧挨着焊盘这个间距如果设得比板厂工艺极限还小要么出不了Gerber要么打样回来良率很差。一般保守设置为0.15mm以上高密度设计可以结合板厂能力压到0.1mm左右。这里补充一个常见实践经验对于0.8mm pitch的BGA焊盘直径通常是0.3mm左右要在四个引脚中心放一个过孔。四个引脚中心到目标引脚中心的距离是0.8倍根号2除以2约0.566mm。如果过孔焊盘直径是0.45mm间距要求0.2mm那么过孔中心到BGA焊盘中心至少需要0.3/2加0.45/2再加0.2等于0.575mm已经超过0.566mm放不下。所以这时候要么换0.15/0.35mm的小机械孔要么直接上0.1/0.3的激光盲孔。这类计算在确定过孔选型时非常有用建议养成习惯。2.2 一键扇出实战Create Fanout对话框参数详解准备工作做完就可以开始扇出了。最常用的菜单是Route Create Fanout选中封装器件后右键选择FanoutAllegro会弹出扇出参数对话框。这里我把常用参数解释一遍。过孔选择Select Via是最关键的一项。如果用的是盲埋孔板这里要按网络需要选择对应的Blind/Buried Via比如表层信号份胆选择L1_L2盲孔电源地网络选择L2_L7埋孔。如果只用通孔就选普通的Through Via。Allegro 17.4支持在扇出时按网络列表筛选可以灵活地给不同网络分批次扇出。方向Direction有Inward向器件内部扇出和Outward向器件外部扇出。实践中BGA中间区域的电源地引脚多用Inward向中心集中外部信号引脚多用Outward向外扩散这样内层走线通道可以做到清晰分层。不要把方向全部设成外向否则内部区域空着外面反而挤成一团。Via to Pin Distance过孔到焊盘中心距离直接决定了扇出孔离引脚多远。设置太近加工对位困难焊接也可能短路太远扇出线会绕过旁边引脚占用额外空间。通常参考值取0.45mm到0.6mm之间配合0.8mm pitch的BGA能让过孔正好落在四引脚中心附近。Fanout Trace Width扇出线宽一般按该BGA网络最小规则走比如0.1mm或0.125mm。注意不要为了省空间把信号线设得过细否则内层走线时线宽突变会带来阻抗不连续。设置完参数可以直接点扇出Allegro会一次性为该器件所有连接引脚生成过孔和短线。对有多个相同BGA的板子还可以用Route Copy Fanout把一个器件的扇出结果复制到另一个相同封装器件只要引脚位置和电源地网络一致能省非常多的重复劳动。实际操作中我习惯分两波扇出第一波是GND网络根据电源平面位置选择合适的过孔把地引脚全都扇到内部阵列第二波是VCC网络同样集中处理最后第三波才是普通信号。这样做的原因是电源地网络扇出规则和信号网络完全不同分开设置更清晰也方便后续布线时快速区分。2.3 扇出后的清理与检查项扇出完成后别急着走线先花几分钟做一次“扇出俯检”。以下是我每次必查的几项检查项参考标准目的过孔到BGA焊盘间距满足板厂最小工艺值避免焊盘桥接、钻孔偏移短路电源地过孔分布均匀性同一网络过孔尽量规则分布降低平面压降、防止电源塌陷差分对扇出对称性差分P/N的过孔和走线长度差尽量小减少共模噪声、保证差分阻抗扇出短线是否有直角不允许出现90度以下尖角避免腐蚀残留和信号反射是否有孤岛过孔所有过孔都应有明确去向防止扇出了孔却无处可走如果在检查中发现某个引脚没有扇出成功最常见原因是该网络没有对应的可用过孔或者约束规则里没有设置正确的Allowable Vias。此时不要手动随便打孔先回到约束管理器确认规则再重新执行扇出。手动补扇出往往会导致规则不统一给后期DRC增加很多麻烦。3. 盲埋孔实战配置从叠层设计到Allegro设置3.1 叠层设计与盲埋孔类型8层板1阶叠层示例要说盲埋孔配置一定离不开叠层设计。没有叠层结构Allegro里的盲埋孔定义根本没有“层对”可依。我以一个比较常见的8层板为例层号功能说明L1顶层信号/器件激光盲孔 L1-L2 扇出走线L2GND 平面与L1形成良好参考面L3信号层内层走线L4电源平面多路电源分割L5信号层内层走线L6电源平面GND为主L7GND 平面与L8形成参考面L8底层信号/器件激光盲孔 L7-L8 扇出走线一阶HDI在这种叠层中的典型配置是L1-L2激光盲孔、L7-L8激光盲孔再加上L2-L7机械埋孔用于连接两个大的GND区域和电源平面。这样表层信号要下到内层只用走激光盲孔到L2或L7再通过内层走线完成连接并不需要打穿整个板子。二阶HDI通常会在L1-L3加一组激光盲孔然后配合L2-L3埋孔、L3-L6埋孔、L6-L7埋孔完成中间层互连三阶就更复杂L1-L4甚至会出现跨四个层的盲孔。阶数越高说明板子内部“立体交通”越复杂加工工序越多成本成倍上升。因此设计初期就应该问自己是不是非用二阶、三阶不可很多设计其实1阶就够了盲目上高阶只会给板厂和预算增加压力。3.2 Allegro 17.4里定义盲埋孔的3个关键步骤在Allegro 17.4中盲埋孔的配置不是直接在布线时选一个过孔类型那么简单它需要先定义Blind/Buried Via对。我整理了三个关键步骤。第一步在Padstack Editor中建立对应层对的过孔焊盘。命名建议直接带上层对信息比如L1_L2、L7_L8、L2_L7。注意在这里要分别设置钻孔层、起始层和结束层并确认每个使用层的焊盘和反焊盘都定义了。很多DRC报错“Missing Package Geometry”或者“No pin defined”都跟这步偷懒有关。第二步在Setup Define B/B Via菜单里把过孔加到Blind/Buried Via列表。操作界面会要求你选择Start Layer和End Layer然后把已经建好的Padstack关联进来。比如Start Layer选TopL1End Layer选L2关联L1_L2过孔就完成了一组L1-L2盲孔的定义。这一组定义完成后Allegro才会在布线或扇出时允许你在这两层之间使用该过孔。第三步回到约束管理器的Physical Constraint Set里把新建的BB Via加入Allowable Vias。如果漏掉这一步你会发现布线时命令行一直提示“Via not allowed”或者扇出时该过孔在列表中灰色不可选。这一步是初学者最容易遗漏的。整个过程强调一下定义B/B Via不是往列表里塞一个名字就完了它本质上是在告诉Allegro“这个过孔只能用于从哪层到哪层”。只有层对匹配软件才会在换层走线时自动选择合法过孔。3.3 盲埋孔扇出与布线策略和通孔有什么不同用盲埋孔做扇出和通孔板最大的区别就是不能再把所有引脚一视同仁地扇出。因为盲孔只连通特定层对如果一个信号本来打算走L1到L3但手里只有L1-L2盲孔L2-L3埋孔的组合你就必须规划好换层位置而不是随意打一个通孔下去。我的推荐策略是先做网络分组也就是把BGA上的所有网络按扇出方案分成几类。第一类是电源地网络直接使用通孔或大尺寸埋孔形成规则过孔阵列内层平面通过阵列接入第二类是表层高频信号使用L1-L2盲孔直接落到L2参考面附近然后在内层完成短距离走线第三类是跨多个内层信号通常配合埋孔在L2-L3或L3-L6之间换层。扇出时我会分三次执行每次只选一组网络在Create Fanout的Net Selection里用筛选器把对应网络选出来再指定对应的BB Via。这样一来同一颗BGA的电源地过孔、表层信号盲孔、内部埋孔之间互不干扰DRC检查也不会交叉报错。布线阶段我建议的顺序是“先电源地、再表层敏感信号、最后中间层一般信号”。原因是电源地网络固定好平面框架后其他信号可以参考这个框架来安排回流路径。对于差分对盲埋孔的扇出尤其要注意P/N过孔位置的对称性最好让差分对的过孔落在相邻引脚的模式上并尽量让过孔到差分线的转换段保持等长。4. 盲埋孔设计与生产常见问题排查实录4.1 DRC报错的3类高频场景盲埋孔设计里DRC报错几乎是每天的日常。我自己遇到最多的是下面三类。第一类“Via crosses unplanned layer pair”。意思是你使用的过孔跨越的层对没有被定义。解决办法是在Setup Define B/B Via里检查这个过孔是否有对应的Start Layer和End Layer配置同时确认叠层名称是否匹配。如果你定义的是L1-L2但Spacing或者Physical规则中允许了某个跨L1-L4的过孔系统就会认为这个层对是“unplanned”。第二类报错集中在Padstack缺少定义。比如盲孔焊盘在某个电气层没有Flash符号或者反焊盘尺寸为0会直接导致DRC报告“Padstack ... has no default internal shape”。这种问题单看板子表面很难发现最好在Padstack Editor里逐层检查尤其注意Start/End层中间的若干层是否处于“Not Connected”状态。第三类是过孔类型没加入Allowable Vias。这类报错最直接的现象是布线时无法选择某种盲埋孔或扇出时过孔列表为空。回到约束管理器在Physical Constraint Set的Allowable Vias一栏把需要的BB Via全部勾上基本可以解决。排查这些报错时有个小技巧打开DRC Browser或使用Display Highlight用网络或约束类过滤出报错对象先看是哪类约束、再定位具体坐标。不要盯着整板红彤彤的标记发懵要学会按约束类型分组排查一次只看一类问题效率会高很多。4.2 钻孔文件与叠层信息表交付前一定要核对盲埋孔板的生产交付比普通通孔板多出很多容易忽略的细节。最常见的坑是钻孔文件输出不完整。由于盲孔、埋孔、通孔的钻孔尺寸和深度都不同Allegro的NC Drill通常会在一个文件中输出所有孔但板厂往往希望按孔径和类型分组方便分层钻孔和激光钻孔工序排产。在Manufacturing NC NC Drill里可以按当前使用的钻孔尺寸或层对生成多个钻孔文件。我一般会把所有过孔按Padstack名字分组导出比如L1_L2、L7_L8各一个文件L2_L7单独一个文件并给文件命名时带上层对信息。如果板厂明确要求使用统一的钻孔表也要确认生成的Drill Legend里有清晰标识。另外一个常被忽略的事情是盲埋孔板需要额外的叠层说明书。你得在交付文档里写清楚哪个文件是激光钻孔、哪一层到哪一层、是否包含背钻以及盲孔尽量减少重叠、对位精度要求等信息。很多板厂拿到文件后都会先看叠层图如果叠层信息和钻孔文件对不上一场沟通拉锯战是免不了的。还有一点如果方案中有背钻需求比如高速信号通孔需要去掉多余Stub那么背钻的深度、允许偏差也要在文档中标注清楚。用Allegro 17.4可以在Setup Cross-Section里设置背钻控制层并配合NC Back Drill菜单生成背钻文件不要把这步省略掉。4.3 Allegro 17.4快捷键设置把扇出和盲埋孔配置变成肌肉记忆做PCB设计效率高低很大程度取决于快捷键配置。Allegro 17.4虽然自带了很多菜单操作但频繁在菜单里点来点去手速再快也拖慢节奏。我的习惯是把自己最常用的一批操作绑定成快捷键。具体方式是在用户环境变量文件env中添加快捷键定义。env文件通常在用户目录下也可以在Setup User Preferences里查看env路径。文件里可以这样写funckey F4 route fanout funckey F5 done funckey F6 save alias DDN add connect注意不同版本命令名可能略有差异如果发现某个funckey不生效在命令行里输入命令前几个字母让Allegro自动补全提示出完整命令名照着写上即可。不想折腾env文件的也可以在菜单栏右键选择Customize把命令拖到自己的工具栏上然后用“Keyboard”快捷键绑定到工具栏按钮。我个人的快捷键习惯是这样的F4打开扇出操作F5确认/完成命令对应doneF6保存Ctrl鼠标滚轮用来快速查看层间切换。整套习惯用了很久做盲埋孔配置时从定义BB Via到给BGA扇出基本不需要在菜单里反复找入口。快捷键这玩意没有标准答案关键是“常去的菜单必须一步到位”。5. 复盘成熟的设计习惯比技巧本身更重要5.1 设计前一定要和板厂确认的5件事盲埋孔板做多了以后我最大的感受是设计前和板厂沟通的认真程度决定了项目后半段顺利与否。下面这些信息建议在画板之前就明确一是最小激光钻孔孔径和最小机械钻孔孔径。这直接决定你能否用0.1mm激光孔也决定过孔焊盘需要做多大从而影响BGA扇出方案。二是板材厚径比要求。板子总厚度与最小机械钻孔直径的比值如果过大钻孔和电镀都会困难板厂可能会要求放大埋孔尺寸。三是盲孔对位精度和对位能力。一阶板的盲孔是逐层对位的二阶、三阶则涉及多次压合对位精度差会带来开短路风险。设计时要控制盲孔尽量在特定区域内对齐。四是是否有背钻需求以及背钻深度。如果高速信号不能接受长Stub要在叠层设计阶段预留空间并和板厂确认背钻公差。五是表面处理方式和铜箔厚度。大电流设计要搞清楚默认铜厚是多少、过孔铜厚怎么电镀避免到后面才发现载流能力不够。这些问题听起来不“技术”但它们对布局布线的影响非常直接。我在一个电源项目上就吃过亏板子画完才确认板厂最小埋孔孔径结果被迫把一批过孔全部改大重新扇出耗时两天。5.2 从失败里沉淀出来的固定流程踩过几次坑之后我现在做高密度板基本会走一套固定流程先分网络再建约束然后定义过孔库和BB Via接着才是扇出。扇出顺序永远是电源地优先信号在后。扇出完成后先做一轮DRC再做电源平面连接最后走信号。这样每一步都站在上一步的结果之上不会出现走完信号线才发现电源平面被割裂不得不重来的情况。另外Allegro 17.4里有个很好用的功能直接打开DRC的“层次化”显示把错误按约束类型分类进行“批量修复”。盲埋孔板尤其适合这种工作方式。如果一上来就盯着某个红点修改修完这边又冒那边心态很容易崩。我个人体会是过孔扇出和盲埋孔配置这两件事做完不难做明白很难。只要愿意在前期多花半小时做约束和叠层规划后期布线、DRC、出文件都会顺畅很多。做PCB设计很多时候拼的就是“谁把基础动作做得更扎实”。希望这篇文章能帮你少走点弯路把Allegro 17.4这套工具用得更顺手。