
1. BGA扇孔到底在解决什么问题BGA封装的引脚藏在芯片肚子底下肉眼看不见、烙铁够不着这是所有PCB设计者绕不开的第一道坎。一块0.8mm pitch的BGA球间距只有0.8毫米焊盘直径通常0.4毫米左右两个焊盘之间的缝隙不到0.4毫米。这个缝隙要穿过一根走线还要保证不短路、不串扰、不违反工艺能力难度可想而知。扇孔Fanout就是在这个背景下出现的——它把BGA内部密集的球脚通过短走线加过孔的方式把信号“引”到PCB的其他层让后续布线有路可走。我见过太多新手拿到BGA封装直接开始拉线结果布到一半发现内圈信号根本出不来只能推倒重来。扇孔不是布线的一部分它是布线的前置工程。扇孔做得好后面布线顺风顺水扇孔做得烂后面每一步都在还债。这篇文章面向的是已经会用Cadence Allegro画板、但对BGA扇孔还没有系统方法的PCB设计工程师也适合想从PADS或AD转过来、想搞清楚Allegro扇孔逻辑的朋友。Allegro在扇孔这块的工具链其实相当成熟Fanout by Pick、Auto Fanout、Spread Between Voids这些命令用好了效率能翻好几倍。但工具是死的规则是活的。你得先明白为什么这么扇、扇成什么样才算合格工具才能帮上忙。下面我从设计思路、参数计算、实操步骤、踩坑排查几个维度把BGA扇孔这件事讲透。2. 扇孔方案的整体设计思路2.1 先定层数再定扇孔策略扇孔方案不是孤立存在的它跟板层结构强绑定。你手上如果是一块6层板BGA是0.8mm pitch、256球那扇孔策略和一块16层板、1000球以上的大芯片完全不是一回事。我的习惯是拿到BGA先数球、看pitch、看信号类型然后反推需要几层才能把线全部引出来。一个粗略的估算方法对于0.8mm pitch的BGA每一圈球脚大约需要一层走线通道。如果BGA有8圈球理论上至少需要8层信号层才能全部扇出实际中可以通过优化减少。对于1.0mm pitch的BGA两圈球之间可以走两根线层数需求会少一些。这个估算不精确但能帮你快速判断层数够不够。注意不要等到布线阶段才发现层数不够。扇孔规划必须在布局阶段就完成层数确定后修改成本极高。2.2 过孔选型的核心逻辑过孔选型是扇孔方案里最关键的决策之一。通孔Through Via、盲孔Blind Via、埋孔Buried Via、微孔Microvia选哪种直接决定了扇孔密度和成本。通孔最便宜从顶层打到底层占用所有层的空间。对于BGA扇孔来说通孔的问题是它会“堵住”内层走线通道。一个通孔穿过内层时会在内层形成一个反焊盘Anti-pad这个反焊盘会吃掉内层的布线空间。如果BGA球密度高通孔的反焊盘可能把内层通道全部堵死。盲孔从外层打到内层不穿透整板能释放内层空间。但盲孔需要多次压合成本上升。微孔激光孔直径通常0.1mm到0.15mm用于HDI板能实现极高的扇孔密度但成本最高。我的经验是0.8mm pitch及以上的BGA优先用通孔通过优化反焊盘尺寸和走线层分配来腾空间0.65mm pitch及以下的BGA考虑盲孔或微孔。如果成本敏感可以先用通孔试扇扇不出来再升级。2.3 扇孔方向与出线层规划扇孔方向决定了信号从BGA的哪一侧出来。常见的扇孔方向有四种向四周扇出、向两侧扇出、向单侧扇出、以及混合扇出。向四周扇出适合BGA位于板子中央、四周都有空间的情况。向两侧扇出适合BGA靠近板边、只有两个方向有空间的情况。向单侧扇出通常用于BGA靠近连接器、信号需要集中往一个方向走的情况。出线层规划是扇孔方案的另一半。BGA内圈的信号通常需要先扇到内层走一段后再换层到外层。外圈的信号可以直接从表层引出。我的做法是把BGA的球按圈数分层最外圈走表层第二圈走内层1第三圈走内层2以此类推。这样每一层都有明确的走线通道不会互相抢空间。3. 过孔参数计算与工艺能力匹配3.1 过孔尺寸的确定方法过孔尺寸不是拍脑袋定的它由三个因素决定BGA球间距、PCB工艺能力、以及走线宽度。以0.8mm pitch的BGA为例。球间距0.8mm焊盘直径通常0.4mm那么两个焊盘边缘之间的缝隙是0.8 - 0.4 0.4mm。这个缝隙里要放一个过孔还要留出走线空间。如果过孔焊盘直径是0.4mm走线宽度0.1mm那么需要的总宽度是0.4 0.1 0.1两侧间隙 0.6mm超过了0.4mm的缝隙。所以0.8mm pitch的BGA过孔不能放在两个焊盘正中间必须错位放置。实际中0.8mm pitch BGA常用的过孔尺寸是钻孔0.2mm焊盘0.4mm反焊盘0.5mm。这个尺寸下过孔可以放在四个焊盘的对角线中心位置利用对角线方向的空间。对角线方向两个焊盘中心的距离是0.8 × 1.414 ≈ 1.13mm减去两个焊盘半径0.4mm剩余空间约0.73mm足够放一个0.4mm的过孔焊盘。对于0.65mm pitch的BGA钻孔通常用0.15mm到0.2mm焊盘0.3mm到0.35mm。这个尺寸已经接近常规PCB工艺的极限需要确认板厂的能力。3.2 反焊盘尺寸的优化反焊盘Anti-pad是过孔在内层铜皮上挖掉的圆环区域目的是防止过孔与内层铜皮短路。反焊盘越大内层走线空间越小反焊盘太小又可能因为加工偏差导致短路。反焊盘尺寸的常规计算方法是反焊盘直径 过孔焊盘直径 2 × 最小环宽。最小环宽通常取0.1mm到0.15mm。比如过孔焊盘0.4mm反焊盘就是0.4 2×0.1 0.6mm。但在BGA扇孔区域反焊盘需要特别优化。我的做法是在BGA区域反焊盘只比焊盘大0.05mm到0.08mm把省下来的空间留给走线。这个做法有风险需要和板厂确认他们的加工精度。如果板厂的钻孔偏差是±0.05mm那么反焊盘比焊盘大0.1mm是安全的如果偏差是±0.075mm那就要留0.15mm以上。提示反焊盘优化是BGA扇孔中最容易出问题的地方。改小反焊盘之前一定先拿到板厂的工艺能力表确认最小环宽和钻孔偏差。3.3 走线宽度与间距的权衡BGA扇孔区域的走线宽度通常比板子其他区域细。0.8mm pitch BGA的扇孔走线常用0.1mm线宽、0.1mm间距。这个尺寸下走线的阻抗会偏高但对于大多数数字信号来说可以接受。如果是高速差分信号需要特别计算阻抗可能需要调整线宽或层叠。走线间距的确定要考虑串扰。0.1mm间距下相邻走线之间的串扰在低速信号中可以忽略但在高速信号中可能造成问题。我的经验是时钟、差分对、高速数据线在扇孔区域尽量拉开间距如果空间不够优先保证这些信号的间距低速控制信号可以挤一挤。4. Allegro自动扇出实操全流程4.1 扇孔前的准备工作在Allegro里执行自动扇出之前有几项准备工作必须完成否则扇出来的结果会让你想砸键盘。第一确认BGA封装的焊盘和过孔已经正确加载。在Padstack Designer里检查过孔焊盘的尺寸、钻孔、反焊盘是否与你的规划一致。我遇到过好几次因为过孔焊盘尺寸设错自动扇出后过孔全部重叠的情况。第二设置好约束管理器Constraint Manager里的间距规则。至少要有Line to Line、Line to Via、Via to Via、Pad to Via这几项。BGA区域的规则可以单独设一个Region把间距放宽或收紧。第三在Setup Constraints Modes里确认On-line DRC是开启的。自动扇出过程中如果DRC报错你能第一时间发现。第四把BGA区域的所有球脚网络确认一遍。电源和地网络的球脚通常不需要扇出到信号层而是直接通过过孔连接到电源平面。在自动扇出之前把电源和地网络排除掉可以大幅减少扇出数量。4.2 Fanout by Pick 手动扇出技巧Fanout by Pick是我最常用的扇出命令它允许你手动选择要扇出的球脚逐个或批量扇出。这个命令的好处是可控性高你可以针对不同区域采用不同的扇出策略。操作路径Route Fanout by Pick。执行后在Options面板里设置过孔类型、走线宽度、扇出方向。然后框选要扇出的球脚Allegro会自动为每个球脚添加过孔和短走线。这里有几个关键设置Via选择你规划好的过孔类型。如果BGA区域有专用的过孔在这里选。Line width扇孔走线宽度。0.8mm pitch BGA通常设0.1mm。Direction扇出方向。可以选Outward向外、Inward向内、Left、Right等。Spread Between Voids这个选项控制过孔是否在球脚之间交错排列。勾选后过孔会尽量分散减少重叠。我的实操习惯是先用Fanout by Pick把最外两圈球脚扇出这两圈空间充足扇出方向明确。然后处理内圈内圈需要更仔细地规划过孔位置有时候需要手动调整。4.3 Auto Fanout 批量扇出与参数配置Auto Fanout适合球脚数量多、扇出规则统一的场景。操作路径Route Auto Fanout。执行后会弹出对话框让你选择扇出的范围整个BGA或选定区域、过孔类型、走线参数。Auto Fanout的核心参数在Options面板里Fanout Direction可选Top、Bottom、Left、Right、Any。选Any时Allegro会自动选择最优方向。Via Sharing是否允许相邻球脚共享过孔。这个选项要慎用共享过孔会增加串扰风险。Max Via Count每个球脚允许的最大过孔数。通常设1特殊情况下可以设2。Min Air Gap过孔之间的最小空气间隙。这个值决定了过孔的密集程度。自动扇出跑完后一定要用Display Status检查DRC。自动扇出最常见的错误是过孔间距违规和走线交叉。如果错误太多不要硬着头皮改调整参数重新扇。4.4 扇出后的检查与优化扇出完成后我通常会做以下几项检查第一目视检查过孔排列是否整齐。自动扇出有时候会把过孔放在奇怪的位置虽然DRC能过但后续布线会很难受。第二检查内层走线通道是否被过孔堵死。在Color Dialog里把过孔的反焊盘显示出来看看内层还有多少走线空间。第三检查电源和地网络的连接。电源地球脚通常需要多个过孔并联降低阻抗。如果自动扇出只给电源球脚分配了一个过孔需要手动增加。第四检查扇孔走线的长度。扇孔走线越短越好理想情况下不超过2mm。过长的扇孔走线会引入额外的寄生参数。5. 不同Pitch BGA的扇孔策略对比5.1 1.0mm及以上Pitch的扇孔方法1.0mm pitch的BGA是相对“宽松”的。两个焊盘之间的缝隙有0.6mm左右足够放一个0.4mm的过孔焊盘加一根0.15mm的走线。这种BGA的扇孔策略比较自由过孔可以放在两个焊盘正中间也可以错位放置。我通常的做法是外圈球脚直接向板边扇出过孔放在球脚外侧内圈球脚向BGA中心扇出过孔放在四个球脚的对角线中心。1.0mm pitch下内层走线通道比较充裕一般不需要盲孔或微孔。5.2 0.8mm Pitch的扇孔挑战0.8mm pitch是当前主流BGA的常见规格也是扇孔难度的分水岭。这个pitch下两个焊盘之间的缝隙只有0.4mm过孔必须错位放置走线宽度也要压缩到0.1mm。0.8mm pitch BGA的扇孔策略通常是最外两圈向板边扇出过孔放在球脚外侧第三圈开始向BGA中心扇出过孔放在四个球脚的对角线中心最内圈可能需要通过盲孔或微孔扇出到内层。这个pitch下反焊盘的优化至关重要。我通常会把反焊盘控制在0.5mm以内给内层走线留出尽可能多的空间。5.3 0.65mm及以下Pitch的HDI扇孔0.65mm pitch及以下的BGA常规通孔已经很难扇出必须借助HDI工艺。微孔激光孔直径0.1mm焊盘0.25mm可以在两个焊盘之间轻松放置。HDI扇孔的典型结构是第一层微孔从表层打到第二层第二层微孔从第二层打到第三层以此类推。这种“叠孔”结构可以实现极高的扇孔密度但成本也最高。我的建议是如果项目预算允许0.65mm pitch BGA直接用HDI如果预算紧张可以尝试用0.2mm钻孔的通孔但需要和板厂确认他们能做多小的钻孔和多大的反焊盘。6. 扇孔常见问题与排查实录6.1 DRC报错过孔间距违规这是自动扇出后最常见的报错。原因通常是过孔放得太密违反了Via to Via的最小间距规则。排查方法在Constraint Manager里找到Via to Via规则看看BGA区域的最小间距设的是多少。如果设的是0.2mm而实际过孔间距只有0.15mm就会报错。解决方法有两种一是放宽规则把BGA区域的Via to Via改成0.15mm二是调整过孔位置让它们拉开距离。我的经验是BGA区域的Via to Via规则可以比板子其他区域宽松因为BGA区域的过孔都是短桩串扰风险相对可控。但也不能太离谱0.15mm是底线。6.2 内层走线通道被堵死扇孔完成后发现内层走线出不去这是最让人头疼的问题。原因通常是过孔的反焊盘太大或者过孔排列太密。排查方法在Color Dialog里打开Anti-pad显示看看内层铜皮上被挖掉了多少。如果反焊盘连成一片内层就没有走线空间了。解决方法一是减小反焊盘尺寸二是调整过孔排列让反焊盘错开。如果都不行只能增加层数或改用盲孔。6.3 电源地球脚扇出不足电源和地球脚需要多个过孔并联来降低阻抗。自动扇出通常只给每个球脚分配一个过孔这对于大电流电源来说是不够的。排查方法检查电源和地网络的过孔数量。一个简单的方法是在Find面板里选择Net然后选中电源网络看看它有多少个过孔。如果过孔数量明显少于球脚数量说明扇出不足。解决方法手动给电源地球脚增加过孔。在Allegro里可以用Copy命令复制过孔然后粘贴到球脚附近。注意新增的过孔要连接到正确的网络。6.4 扇孔走线过长导致信号完整性问题扇孔走线过长会引入额外的电感和电容影响信号完整性。特别是高速信号扇孔走线的长度需要严格控制。排查方法用Delay或Length检查工具查看扇孔走线的长度。如果超过2mm就需要优化。解决方法调整过孔位置让过孔尽量靠近球脚。如果空间允许可以把过孔放在球脚正下方需要盲孔。对于高速信号优先保证扇孔走线最短。6.5 常见问题速查表问题现象可能原因排查方法解决措施DRC报过孔间距违规过孔太密或规则太严检查Constraint Manager放宽规则或调整过孔位置内层走线出不去反焊盘太大或过孔太密显示Anti-pad检查减小反焊盘或改用盲孔电源过孔不足自动扇出只给一个过孔检查电源网络过孔数手动增加并联过孔扇孔走线过长过孔位置太远用Length工具检查调整过孔位置过孔与焊盘短路反焊盘太小或钻孔偏差检查板厂工艺能力增大反焊盘扇出后走线交叉扇出方向设置不当目视检查调整扇出方向重新扇7. 扇孔效率提升的实战技巧7.1 用Skill脚本批量处理Allegro支持Skill脚本可以批量执行扇出操作。我写过一个简单的脚本自动识别BGA区域的所有信号球脚按圈数分组然后依次调用Fanout by Pick。这个脚本把一块1000球BGA的扇出时间从2小时压缩到15分钟。脚本的核心逻辑是用axlDBGetDesign获取BGA的球脚列表用axlDBGetPad获取每个球脚的位置然后按距离BGA中心的半径分组。外圈一组内圈一组分别设置不同的扇出参数。如果你不熟悉Skill也可以录一个宏Macro把重复的操作录下来然后批量执行。虽然不如Skill灵活但胜在简单。7.2 复用扇孔模板如果你经常画同类型的BGA可以做一个扇孔模板。把扇好孔的BGA保存为一个Module下次直接调用。Allegro的Module功能支持保存和复用布局、扇孔、走线。我的做法是每完成一个BGA的扇孔就把它保存为Module命名规则是“BGA型号_pitch_层数”。下次遇到同样的BGA直接调用Module省去扇孔时间。7.3 扇孔与布局的协同优化扇孔不是孤立的步骤它和布局强相关。BGA的摆放位置、旋转角度、周围器件的布局都会影响扇孔难度。我的经验是BGA尽量放在板子中央四周留出足够的扇孔空间。如果BGA必须靠边把需要扇出的球脚朝向板内。BGA的旋转角度也要考虑尽量让球脚的行列方向与板子的走线方向一致减少扇孔走线的弯折。提示在布局阶段就用Fanout by Pick试扇一下看看扇孔难度。如果发现扇不出来及时调整布局比布线阶段再改要省事得多。8. 扇孔后的布线衔接与层叠优化扇孔只是第一步扇完孔之后怎么布线才是真正的考验。扇孔的质量直接决定了布线的难度。如果扇孔时过孔排列整齐、走线通道清晰布线就是顺水推舟如果扇孔时乱七八糟布线就是处处碰壁。我的做法是扇孔完成后先在BGA区域做一次“预布线”。把最外圈的信号从扇孔过孔拉到BGA外围看看走线通道是否顺畅。如果发现某条通道被堵及时调整扇孔。这个预布线不需要走完只需要验证通道可行性。层叠优化也是扇孔后需要关注的点。BGA区域的层叠通常需要特别设计比如把信号层和平面层交替排列减少串扰。如果BGA区域的高速信号多可以考虑在BGA下方增加一个接地层作为屏蔽。电源平面的处理也很关键。BGA的电源球脚通常需要连接到电源平面如果电源平面被过孔的反焊盘挖得千疮百孔电源阻抗会升高。我的做法是在BGA区域电源平面尽量保持完整过孔的反焊盘在电源层上可以适当减小因为电源层和过孔之间的电压差小短路风险低。9. 我踩过的那些坑第一个坑反焊盘改小后没通知板厂。有一次为了腾出走线空间我把BGA区域的反焊盘从0.6mm改到0.5mm结果板厂做出来后有短路。后来才知道板厂的钻孔偏差是±0.075mm0.5mm的反焊盘不够安全。从那以后我改任何工艺参数之前都会先和板厂确认。第二个坑自动扇出后没检查电源过孔。有一次自动扇出跑完DRC全过我直接去布线了。结果板子回来发现电源纹波很大查了半天才发现电源球脚只扇了一个过孔阻抗太高。后来我养成了习惯自动扇出后必须手动检查电源和地的过孔数量。第三个坑扇孔走线太长导致时序问题。有一次一块DDR的BGA扇孔走线平均长度3mm结果时序怎么都调不通。后来把过孔位置调整扇孔走线缩短到1.5mm时序问题迎刃而解。扇孔走线虽然短但在高速信号中每毫米都算数。第四个坑过孔类型选错导致成本飙升。有一次0.8mm pitch的BGA我为了保险用了盲孔结果板厂报价比通孔贵了40%。后来用通孔重新扇优化了一下反焊盘也能扇出来。选过孔类型之前先试试通孔能不能搞定搞不定再升级。10. 扇孔规范检查清单每次扇孔完成后我都会对照这个清单检查一遍过孔尺寸是否与板厂工艺能力匹配反焊盘尺寸是否经过板厂确认电源和地球脚的过孔数量是否足够扇孔走线长度是否控制在2mm以内高速信号的扇孔走线是否最短内层走线通道是否畅通DRC是否全部通过过孔排列是否整齐便于后续布线扇孔方向是否与布局协调是否保存了扇孔模板供复用这个清单看起来简单但每一条都是踩坑踩出来的。特别是电源过孔数量和反焊盘尺寸这两条最容易出问题也最容易被忽略。扇孔这件事说到底就是“空间博弈”。BGA的球脚密度是固定的PCB的工艺能力是有限的你需要在两者之间找到最优解。Allegro的工具能帮你提高效率但决策还得靠人。多扇几块板多踩几个坑自然就有手感了。