ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

BGA扇孔设计指南:从狗骨扇出到盘中孔的工程实践

2026/10/7 18:22:46 拓冰建站 浏览量
BGA扇孔设计指南:从狗骨扇出到盘中孔的工程实践 1. BGA扇孔到底在解决什么问题BGA封装的引脚藏在芯片肚子底下这是所有PCB设计者都绕不开的一道坎。你打开一个0.8mm pitch的BGA球间距只有0.8毫米焊球直径通常在0.3到0.4毫米之间两个焊球之间的缝隙也就0.4毫米左右。这个缝隙里要穿线、要铺铜、要留安全间距算下来能走的线宽和间距非常有限。如果BGA的ball数再多一些比如1000多球的FPGA内部走线密度会急剧上升这时候不借助扇孔几乎不可能把信号引出来。扇孔的本质是在BGA焊盘和外部走线之间加一段过渡。这段过渡把BGA焊盘从“焊球尺寸”缩小到“普通走线尺寸”让信号能够从密集的球阵列中“逃”出来。你可以把它理解成高速公路的匝道——主路很宽但出口很窄匝道的作用就是平滑过渡让车流顺利分流。没有扇孔BGA内部的信号就出不来或者只能走很细的线阻抗和工艺都很难控制。扇孔分两种盘中孔扇出和狗骨扇出。盘中孔是把过孔直接打在BGA焊盘上然后从过孔另一面走线。这种方式最省空间但对工艺要求高需要树脂塞孔加电镀填平成本也高。狗骨扇出是从焊盘引一小段短线到一个过孔再从过孔走线形状像狗骨头。狗骨扇出工艺成熟、成本低是大多数消费电子和工业产品的首选。选择哪种方式取决于你的产品定位、BGA pitch、层叠结构和成本预算。我见过不少新手拿到BGA就急着拉线结果拉到一半发现走不通回头再补扇孔整个布局都要推倒重来。正确的做法是在布局阶段就把扇孔方案定下来甚至在做封装的时候就规划好扇出方向。扇孔不是布线的一个步骤而是布局和布线之间的桥梁它决定了你后面能走多少线、走多粗、走几层。2. 扇孔之前必须算清楚的几个数2.1 从pitch和ball直径反推可用空间BGA的pitch是相邻两个焊球中心之间的距离常见的有1.0mm、0.8mm、0.65mm、0.5mm甚至0.4mm。ball直径一般是pitch的0.4到0.5倍。以0.8mm pitch为例ball直径约0.35mm两个ball边缘之间的间隙是0.8 - 0.35 0.45mm。这个0.45mm就是你能利用的全部空间里面要放走线、过孔、阻焊桥。如果你用狗骨扇出从焊盘引出的短线宽度通常是0.1mm到0.15mm过孔外径0.3mm到0.4mm。过孔不能和相邻的焊盘或走线短路所以过孔边缘到相邻ball边缘要留至少0.1mm的间隙。算下来0.8mm pitch的BGA狗骨扇出通常只能朝一个方向扇出而且过孔要错开排列。0.65mm pitch就更紧张了过孔外径可能要缩到0.25mm走线宽度0.08mm到0.1mm这时候很多工厂的工艺能力就跟不上了。2.2 层叠结构决定扇出方式扇孔方案和层叠结构是绑定的。如果你做的是两层板BGA在顶层底层走线那扇孔只能从顶层打过孔到底层过孔会占用底层空间。如果是四层板通常BGA在顶层第二层是地平面第三层是电源或信号底层是信号。这时候扇孔可以打到第二层地也可以打到第三层或底层。我一般建议BGA区域至少留一层完整的地平面作为参考平面这样高速信号的阻抗可控。扇孔过孔如果穿过地平面会在地平面上形成反焊盘破坏地平面的完整性。所以扇孔过孔要尽量集中反焊盘要尽量小或者在地平面层用铜皮把反焊盘包围起来减少对地平面的切割。2.3 过孔尺寸与工艺能力的匹配过孔尺寸包括钻孔直径和焊盘外径。钻孔直径越小能穿过的空间越多但成本越高。常规工艺下机械钻孔最小0.2mm激光钻孔可以到0.1mm。0.8mm pitch的BGA狗骨扇出常用0.2mm钻孔、0.4mm焊盘外径。0.65mm pitch可能要用0.15mm钻孔、0.3mm焊盘。0.5mm pitch以下基本只能考虑盘中孔或者激光钻孔。这里有个经验值过孔焊盘外径至少要比钻孔直径大0.15mm到0.2mm否则焊盘环宽太窄钻孔偏移时容易破环。比如0.2mm钻孔焊盘外径至少0.35mm到0.4mm。如果你把焊盘外径压到0.3mm工厂的钻孔精度稍微差一点良率就会掉。提示在确定过孔尺寸之前一定要和你的PCB工厂确认他们的最小钻孔、最小焊盘环宽和最小走线宽度。不要照着网上的模板直接抄不同工厂的工艺能力差别很大。3. 狗骨扇出的手工操作与参数设置3.1 扇出方向的规划逻辑狗骨扇出不是随便找个方向打孔就行。BGA的球阵列通常是网格状排列扇出方向要顺着走线通道走。一般来说BGA最外两圈可以从外侧直接扇出中间区域的球需要从内部向外扇出或者从BGA下方的通道穿过。我的习惯是先把BGA的球按行和列分组最外一圈朝外扇出第二圈朝外扇出但过孔要错开第一圈的过孔第三圈及以内考虑从BGA中心区域向外扇出。如果BGA中心有电源和地球可以先把电源和地球扇出到平面层信号球再从剩余空间扇出。扇出方向还要考虑信号流向。比如DDR的BGA数据线通常从BGA的一侧走向另一侧扇出方向就要顺着数据线的流向避免走线绕来绕去。时钟和差分对要优先扇出因为它们对走线长度和对称性要求高。3.2 Allegro中手动扇出的具体步骤在Allegro里手动扇出一个狗骨基本流程是这样的先用“Add Connect”命令从BGA焊盘引出一段短线线宽设成你规划的值比如0.1mm。然后在这段短线的末端放一个过孔过孔尺寸选你预设的。最后从过孔另一面继续走线。听起来简单但实际操作中有几个细节容易出错。第一短线要从焊盘中心引出不要偏否则焊盘和走线的连接处会出现尖角影响焊接。第二短线的长度要控制好太长会占用相邻球的空间太短过孔会压到焊盘。一般短线长度在0.2mm到0.3mm之间比较合适。第三过孔放下去之后要检查DRC确保过孔和相邻焊盘、走线的间距满足规则。Allegro有个“Fanout by Pick”功能可以手动选择BGA焊盘进行扇出。你可以在Constraint Manager里预设好扇出规则包括过孔类型、线宽、间距等然后用这个功能逐个扇出。这个功能比纯手工放线放孔快很多而且不容易出错。3.3 自动扇出功能的配置与限制Allegro的自动扇出功能在“Route”菜单下的“Fanout”里。你可以选择“Fanout by Pick”手动选球也可以选“Auto Fanout”对整个BGA自动扇出。自动扇出之前需要在Constraint Manager里设置好BGA的扇出规则包括扇出方向可以选择“Outward”朝外、“Inward”朝内或“Both”过孔类型指定用哪种过孔线宽和间距扇出短线的宽度和与相邻对象的间距扇出顺序先扇出电源地还是先扇出信号自动扇出的优点是快缺点是它不会考虑你的走线规划。它只会按照规则把每个球都扇出来不管后面走线顺不顺畅。所以我的做法是先用自动扇出把最外两圈扇出来中间区域手动扇出或者自动扇出之后手动调整方向不对的过孔。自动扇出还有一个坑它可能会在BGA内部产生大量过孔把地平面切割得支离破碎。如果你用的是多层板自动扇出之后一定要检查地平面的完整性必要时手动调整过孔位置把过孔集中到不影响地平面的区域。4. 盘中孔扇出的工艺门槛与设计要点4.1 盘中孔为什么贵盘中孔是把过孔直接打在BGA焊盘上焊盘和过孔同心。这样做的好处是扇出路径最短占用空间最小0.5mm pitch甚至0.4mm pitch的BGA都能扇出。但代价是工艺复杂过孔打在焊盘上焊接时焊锡会顺着过孔流走导致虚焊。所以盘中孔必须做树脂塞孔把过孔填实然后再电镀填平让焊盘表面平整。树脂塞孔加电镀填平的成本比普通过孔高好几倍。而且不是所有工厂都能做需要确认工厂有没有真空树脂塞孔设备和电镀填平产线。如果你的产品对成本敏感盘中孔可能不划算。但如果你做的是手机、平板这类高密度产品BGA pitch很小盘中孔几乎是唯一选择。4.2 盘中孔的设计规则盘中孔的过孔尺寸通常比狗骨扇出小。0.5mm pitch的BGA盘中孔钻孔可以做到0.1mm到0.15mm焊盘外径和BGA焊盘一样大比如0.25mm到0.3mm。过孔打在焊盘中心焊盘环宽就是焊盘外径 - 钻孔直径/ 2。0.3mm焊盘配0.15mm钻孔环宽只有0.075mm这对钻孔精度要求很高。盘中孔扇出时走线从过孔的另一面引出。如果是多层板过孔可能穿过多个层走线可以从任意一层引出。这时候要注意过孔的反焊盘设计反焊盘太大会影响焊盘强度太小会导致过孔和平面短路。一般反焊盘比过孔焊盘大0.1mm到0.15mm。注意盘中孔设计必须和PCB工厂的工艺能力匹配。在投板之前把BGA区域的过孔尺寸、塞孔要求、电镀要求写成工艺说明发给工厂确认。不要等到板子做出来才发现工厂做不了。4.3 盘中孔与狗骨混用的策略实际项目中我经常混用盘中孔和狗骨扇出。最外两圈用狗骨因为空间相对充裕成本低。中间区域用盘中孔因为空间紧张狗骨扇不出来。这样既控制了成本又解决了密度问题。混用的时候要注意盘中孔和狗骨的过孔类型不同在Allegro里要分别设置。盘中孔的过孔要单独定义一个过孔类型狗骨的用另一个。扇出的时候按区域选择不同的扇出规则。DRC检查时两种过孔的规则都要覆盖到。5. 扇出之后的检查与常见DRC报错处理5.1 扇出完成后的自检清单扇出做完之后不要急着走线。先做一轮自检把问题消灭在走线之前。我通常检查这几项所有BGA焊盘是否都有扇出路径有没有漏掉的球过孔是否都在焊盘引出线的末端有没有过孔压焊盘的情况扇出短线的宽度是否一致有没有粗细不均过孔之间的间距是否满足规则有没有过孔挨得太近过孔和相邻焊盘、走线的间距是否满足规则地平面上的反焊盘是否过大地平面是否被切割得太碎电源和地球是否已经扇出到平面层有没有遗漏这个清单看起来简单但实际项目中漏掉一两项是常有的事。我见过一个项目BGA扇出之后没检查地平面结果地平面被过孔切成了几十个小岛信号回流路径断了板子跑起来噪声很大。后来重新调整过孔位置把地平面补回来才解决问题。5.2 常见DRC报错及处理扇出阶段最常见的DRC报错是间距违规。比如过孔和相邻焊盘的间距小于规则值或者扇出短线和相邻过孔短路。处理这类报错优先调整过孔位置把过孔往远离违规对象的方向移。如果移不了就缩小过孔尺寸或者减小扇出短线宽度。另一个常见报错是焊盘环宽不足。Allegro会检查过孔焊盘的环宽是否满足最小要求。如果环宽不够要么加大焊盘外径要么减小钻孔直径。加大焊盘外径可能会引起间距违规减小钻孔直径可能超出工厂工艺能力需要权衡。还有一种报错是“Line to Pad”间距违规扇出短线和相邻BGA焊盘之间的距离不够。这时候可以尝试改变扇出方向把短线往另一个方向引或者缩短短线长度让过孔更靠近焊盘。5.3 扇出对后续走线的影响评估扇出完成之后你要评估一下扇出方案对后续走线的影响。主要看几个方面走线通道是否足够从BGA内部到外部的走线路径是否顺畅差分对是否能够等长走线电源和地的连接是否方便。如果发现走线通道不够可能需要调整扇出方向或者增加层数。如果差分对走线不对称可能需要重新扇出差分对的过孔让两个过孔的位置对称。如果电源和地连接不方便可能需要增加电源和地的扇出过孔数量或者调整平面分割。我一般会在扇出之后做一个简单的走线预演用Allegro的“Show Rats”功能看看飞线走向判断扇出方案是否合理。如果飞线交叉严重说明扇出方向有问题需要调整。6. 高速BGA扇出的特殊考量6.1 差分对扇出的对称性要求高速差分对比如PCIe、USB3.0、HDMI对扇出的对称性要求很高。差分对的两个过孔要尽量靠近走线长度要尽量相等过孔引起的阻抗不连续要尽量小。如果差分对的两个过孔一前一后走线长度差就会变大影响信号质量。我的做法是差分对的两个BGA球如果相邻就并排扇出两个过孔放在同一水平线上走线从过孔引出后立即靠拢。如果两个球不相邻就分别扇出但过孔位置要尽量对称走线长度差控制在5mil以内。差分对的过孔反焊盘要一致避免阻抗不连续。6.2 电源地扇出与平面完整性BGA的电源和地球数量很多扇出的时候不能一个一个打孔那样会占用大量空间。通常的做法是把电源和地球先短接到附近的电源或地平面通过平面层供电。扇出的时候电源和地球可以几个球共用一个过孔或者直接通过焊盘连接到平面。电源地扇出要注意平面完整性。过孔穿过平面层时反焊盘会切割平面。如果反焊盘太大或者过孔太密平面会被切碎影响电源和地的阻抗。我一般会把电源地的过孔集中排列反焊盘尽量小或者在平面层用铜皮把反焊盘之间的区域填满保持平面的连续性。6.3 扇出对阻抗的影响与补偿过孔本身是阻抗不连续点会引起信号反射。高速信号对过孔阻抗很敏感如果过孔设计不好信号质量会明显下降。过孔的阻抗主要取决于过孔直径、焊盘外径、反焊盘尺寸和过孔长度。过孔直径越大阻抗越低反焊盘越大阻抗越高。为了减小过孔阻抗不连续可以采取几个措施减小过孔直径和焊盘外径减小反焊盘尺寸缩短过孔长度比如用盲埋孔在过孔附近增加接地过孔。对于特别高速的信号比如25Gbps以上可能需要在过孔处做阻抗补偿比如调整反焊盘尺寸或者在过孔旁边加补偿电容。7. 我踩过的那些扇孔坑7.1 扇出方向反了导致走线绕远有一次做一个FPGA项目BGA有1000多球我自动扇出的时候选了“Outward”结果所有球都朝外扇出BGA中心区域的球扇出后过孔集中在BGA外围走线的时候发现中心区域的信号要绕到外围才能走走线长度增加了好几倍。后来改成中心区域朝内扇出过孔集中在BGA中心走线从中心向外辐射长度短了很多。这个坑的教训是扇出方向要根据走线规划来定不能无脑选“Outward”。BGA中心区域的球如果信号要往BGA外部走朝内扇出反而更短。扇出之前先想清楚信号流向再决定扇出方向。7.2 过孔太小工厂做不出来还有一次为了追求密度我把0.65mm pitch BGA的扇出过孔设成了0.15mm钻孔、0.25mm焊盘。设计的时候DRC全过看起来没问题。结果投板的时候工厂说0.15mm钻孔他们的机械钻做不了要用激光钻成本翻倍。后来改成0.2mm钻孔、0.35mm焊盘重新调整了扇出布局才把板子做出来。这个坑的教训是设计之前一定要确认工厂的工艺能力不要凭感觉设参数。不同工厂的最小钻孔、最小线宽、最小间距都不一样同一个参数在这家能做在那家可能就做不了。我现在的习惯是项目开始的时候就把工艺能力表拿到手设计的时候严格按照工艺能力来。7.3 扇出后没检查地平面导致信号完整性问题前面提到过一个项目BGA扇出之后地平面被过孔切碎信号回流路径断了板子跑起来噪声很大。后来用Allegro的平面检查工具看了一下地平面被分成了几十个区域有些区域只有几个过孔连接阻抗很高。重新调整过孔位置把地平面补回来之后噪声问题才解决。这个坑的教训是扇出之后一定要检查平面完整性特别是地平面。过孔的反焊盘会切割平面如果切割得太厉害信号回流路径就会断。检查的方法很简单在Allegro里把地平面层打开看看平面的连通性有没有孤岛。如果有孤岛要么调整过孔位置要么在孤岛区域加接地过孔。7.4 自动扇出后手动调整的工作量被低估自动扇出虽然快但扇出结果往往需要大量手动调整。我做过一个项目自动扇出用了不到一分钟但后续手动调整过孔位置、修改扇出方向、处理DRC报错花了整整两天。自动扇出只是把过孔放下去它不会考虑走线通道、差分对对称性、平面完整性这些因素。所以我现在对自动扇出的态度是用它做初稿但不要指望它直接出成品。自动扇出之后一定要花时间手动优化。优化的重点包括调整扇出方向不顺的过孔把差分对的过孔对齐把电源地的过孔集中检查平面完整性。8. 不同pitch BGA的扇出策略速查BGA Pitch推荐扇出方式过孔尺寸钻孔/焊盘扇出线宽注意事项1.0mm狗骨0.3/0.6mm0.15mm空间充裕可朝外扇出0.8mm狗骨0.2/0.4mm0.1mm过孔需错开排列0.65mm狗骨或盘中孔0.15/0.3mm0.08mm确认工厂工艺能力0.5mm盘中孔0.1/0.25mm0.06mm必须树脂塞孔电镀填平0.4mm盘中孔0.1/0.2mm0.05mm高密度产品专用成本高这个表是我根据多个项目的经验总结的实际使用时还要结合层叠结构、信号速率和工厂能力调整。比如0.65mm pitch的BGA如果工厂能做0.15mm钻孔狗骨扇出是可行的如果工厂只能做0.2mm钻孔那就只能考虑盘中孔。9. 扇出完成后的走线衔接技巧扇出只是把信号从BGA里引出来真正的挑战是扇出之后的走线。扇出过孔的位置决定了走线的起点如果过孔位置不好走线就会很别扭。我一般会在扇出的时候就把走线通道预留出来过孔不要放在走线通道上而是放在通道旁边走线从过孔引出后立即进入通道。对于多层板扇出过孔通常打到内层走线在内层进行。这时候要注意过孔和内层走线的连接过孔的反焊盘不要太大否则会占用内层走线空间。如果内层走线密度高可以考虑用盲埋孔把过孔限制在相邻层之间减少对其它层的影响。走线从扇出过孔引出后要尽快达到目标线宽。扇出短线通常比正常走线细如果一直用细线走阻抗会偏高。我一般会在过孔引出后0.5mm到1mm内把线宽过渡到正常值过渡段要平滑避免阻抗突变。10. 一些提高效率的Allegro操作技巧Allegro的扇出功能有很多快捷键和脚本可以提效。比如“Fanout by Pick”可以配合“Find”面板使用先筛选出需要扇出的球然后批量扇出。Constraint Manager里的规则可以导出成模板下一个项目直接导入不用重新设置。我还写过一个简单的Skill脚本用来自动检查扇出后的过孔间距和平面完整性。脚本的逻辑很简单遍历BGA区域的所有过孔检查过孔之间的间距是否小于规则值检查地平面上的反焊盘是否导致平面孤岛。脚本跑一遍只要几秒钟比手动检查快很多。另外Allegro的“Copy”功能在扇出时很好用。如果你已经扇出了一个球可以用“Copy”命令复制这个扇出结构到其他球过孔和短线会一起复制。复制的时候注意选择参考点确保过孔位置对齐。对于规则排列的BGA球复制扇出比逐个扇出快很多。提示Skill脚本虽然方便但不要过度依赖。脚本只能检查规则性的问题对于走线通道、信号流向这些需要判断的问题还是得靠人。我一般用脚本做初筛然后手动检查关键区域。11. 扇孔规范文档应该包含什么如果你在团队里负责制定设计规范BGA扇孔规范文档应该包含这几部分适用范围哪些pitch的BGA适用、扇出方式选择狗骨还是盘中孔、过孔尺寸表按pitch分类、扇出方向规则、DRC规则设置、检查清单、工艺要求塞孔、电镀等。规范文档不要写得太死要留出灵活空间。比如过孔尺寸可以给一个范围让设计者根据实际情况选择。扇出方向可以给一个推荐值但允许设计者根据走线规划调整。规范的目的不是限制设计者而是让设计者有据可依减少低级错误。我见过一些团队的规范文档写了几十页但设计者根本不看。规范要简洁实用最好配图说明。一页纸能说清楚的事情不要写十页。关键规则用加粗标出来常见错误用红色标注让设计者一眼就能看到重点。12. 从扇孔看PCB设计的整体思维BGA扇孔看起来只是一个局部操作但它反映的是PCB设计的整体思维。扇孔方案决定了走线通道、层叠结构、平面完整性、信号质量这些问题在扇孔阶段就要考虑清楚不能等到走线的时候再补救。我经常跟新人说BGA扇孔是PCB设计的缩影。你要在有限的空间里做取舍要在成本、性能、工艺之间找平衡要提前规划而不是事后补救。一个扇孔做得好的设计走线通常也很顺畅一个扇孔做得乱的设计后面到处是问题。扇孔没有标准答案不同的产品、不同的工厂、不同的成本要求扇孔方案都不一样。但有一点是共通的扇孔之前要想清楚扇孔之后要检查到位。想清楚信号往哪走检查过孔有没有问题平面有没有被破坏。这两件事做好了BGA扇孔就不会出大问题。我在实际项目中总结的一个习惯是每次扇孔完成后把BGA区域单独截个图标出过孔位置和走线通道存档备查。下一个项目如果遇到类似的BGA可以直接参考上一个项目的扇孔方案不用从头再来。这个习惯帮我省了很多时间也让我积累了一套自己的扇孔参数库。