
1. 为什么BGA扇孔是PCB设计里绕不开的一道坎搞过高速板子的人都知道BGA封装器件的扇出Fanout是整块PCB设计里最考验基本功的环节之一。尤其是当你面对一颗0.8mm甚至0.65mm pitch的FPGA或处理器时球栅阵列底下那密密麻麻的焊盘就像早高峰的地铁站——所有人都想往外走但通道就那么几条。Cadence Allegro作为业界公认的高速PCB设计利器在BGA扇孔这个环节提供了相当完整的工具链但工具好用不代表你会用更不代表你能用对。这篇文章想聊的就是怎么在Allegro里把BGA扇孔这件事做得既规范又高效。我会从扇孔的基本策略讲起把过孔选型、扇出方向规划、自动扇出工具的参数配置、电源过孔的特殊处理、以及实际项目中踩过的坑全部掰开揉碎讲一遍。不管你是刚接触BGA扇孔的新手还是已经画过几十块板子但总觉得扇出效率不够高的老手应该都能从里面找到一些能直接拿去用的东西。先明确一下范围这里说的BGA扇孔指的是从BGA焊盘引出过孔把信号从球栅阵列内部引到外层或内层走线通道的过程。它不包括后续的布线优化也不涉及具体的信号完整性仿真——那些是另一个话题。我们聚焦在“怎么把孔打出去”这个最基础但也最容易出问题的环节上。2. 扇孔之前必须想清楚的几件事2.1 过孔选型别拿8mil的孔去扇0.65mm的BGA过孔选型是BGA扇孔的第一步也是最容易翻车的地方。很多人拿到板子先想着怎么扇出结果孔选大了发现两个BGA焊盘之间根本塞不下回头再改时间全浪费了。先看一个最基本的计算。假设BGA的pitch是0.8mm焊盘直径典型值是0.4mm不同封装会有差异以实际datasheet为准那么两个相邻焊盘边缘之间的间隙就是0.8mm - 0.4mm 0.4mm这0.4mm就是你放过孔的全部空间。过孔本身有孔径Drill和焊盘Pad两个尺寸真正占空间的是外层焊盘直径。如果你选一个孔径0.2mm、焊盘0.4mm的过孔那它刚好和BGA焊盘一样大两个孔并排放置时焊盘边缘会直接挨上制造上基本不可行。所以通常需要留出至少0.1mm的间距给蚀刻公差和阻焊桥。实际项目中0.8mm pitch的BGA我一般会用孔径0.2mm、焊盘0.35mm的过孔这样两个过孔焊盘之间的间隙是0.4 - 0.35 0.05mm虽然紧但大多数板厂能做。如果板厂工艺能力一般那就得考虑激光钻孔或者更小的过孔。0.65mm pitch的BGA就更紧张了通常需要孔径0.15mm、焊盘0.3mm甚至更小的微孔这时候成本会明显上升。注意过孔选型一定要提前和板厂确认工艺能力不要自己拍脑袋定。同一块板子上尽量统一过孔规格混用多种孔径会增加加工成本和出错概率。2.2 扇出方向规划往外扇还是往里扇BGA扇出有两个基本方向向外扇出Fanout Away和向内扇出Fanout In。向外扇出是把过孔打在BGA外圈焊盘的外侧适合最外几圈信号向内扇出是把过孔打在BGA内部区域的焊盘之间适合内圈信号往外引。选择哪种方式取决于几个因素。最外圈焊盘通常直接向外扇出最省事因为外面空间大过孔可以打得舒服一些。但到了第二圈、第三圈外侧已经被前一排的过孔占了就得考虑从焊盘之间的缝隙斜着往外扇或者往内扇到BGA底部的空旷区域。我的经验是前两圈优先向外扇出第三圈开始混合使用。具体来说第一圈焊盘直接向外打孔第二圈焊盘从两个第一圈过孔之间的缝隙斜向扇出第三圈及以内则根据走线层分配决定是往内扇还是继续往外挤。这个策略在0.8mm pitch上基本通吃0.65mm pitch则需要更激进的向内扇出比例。还有一个容易被忽略的点扇出方向要和布线层规划一致。如果你打算用内层走线那过孔扇出后要能顺利连接到目标层如果打算外层走线那过孔位置就不能挡住其他信号的通道。我见过不少设计扇出本身没问题但过孔位置把后续布线的通道全堵死了最后不得不返工重扇。2.3 电源和地过孔的差异化处理BGA底部的电源和地过孔和信号过孔的处理逻辑完全不同。信号过孔追求的是“一个萝卜一个坑”每个信号独立一个孔电源和地过孔则要考虑载流能力和回流路径。对于大电流电源单个过孔的通流能力有限。一个孔径0.3mm、镀铜25um的过孔载流能力大约在1A左右具体取决于温升要求。如果BGA的某个电源球需要3A电流那就至少需要3到4个过孔并联。实际设计中我通常会按每个电源球配2到4个过孔来规划具体数量看电流大小和电源平面的铜厚。地过孔则要考虑回流路径的连续性。高速信号换层时旁边的地过孔就是它的回流通道。如果地过孔离信号过孔太远回流路径就会变长引入额外的电感。一般建议信号过孔周围0.5mm范围内至少有一个地过孔关键高速信号甚至要求更近。在Allegro里电源和地过孔的扇出可以用Copy功能批量复制也可以借助Fanout by Pick手动放置。自动扇出工具对电源过孔的支持有限通常需要手动补充。3. Allegro自动扇出工具的参数配置与实操3.1 自动扇出前的准备工作Allegro的自动扇出功能Fanout藏在Route菜单下面但直接点下去之前有几件事必须先做好。第一确认焊盘和过孔已经正确关联。在Constraint Manager里需要为BGA器件指定可用的过孔列表。具体路径是Setup Constraints Constraint Manager Physical All Layers Vias。在这里把允许使用的过孔类型加进去否则自动扇出时会报错说找不到可用过孔。第二设置好扇出规则。在Constraint Manager的Physical规则里可以针对特定器件或网络设置扇出参数包括过孔类型、扇出方向、间距等。我一般会为BGA器件单独建一个规则集把过孔限定为前面选好的那种避免自动扇出时乱用其他过孔。第三检查焊盘间距和过孔间距的DRC规则。自动扇出会严格按照DRC规则来放置过孔如果规则设得太松扇出来的孔可能制造不了设得太紧又可能扇不出去。建议在扇出前先把BGA区域的DRC规则调到一个合理的值扇完后再根据实际情况微调。3.2 自动扇出的参数详解Allegro的自动扇出对话框里有几个关键参数需要理解Fanout Direction可选Away、In、Both。Away是向外扇In是向内扇Both是两者结合。对于BGA我通常选Both让工具自己决定每个焊盘往哪边扇。Via Direction控制过孔相对于焊盘的方向。有Diagonal斜向、Orthogonal正交、Any任意几个选项。0.8mm pitch的BGA用Diagonal最合适因为斜向扇出可以利用焊盘之间的对角线空间。Via Spacing过孔之间的最小间距。这个值要参考板厂的最小间距能力一般设0.2mm到0.25mm。Allow Via on Pad是否允许过孔直接打在焊盘上Via on Pad。这个选项要慎重Via on Pad需要板厂做树脂塞孔或电镀填平成本高且不是所有板厂都能做。除非空间实在不够否则不建议勾选。Fanout Grid扇出时使用的栅格。通常设成BGA pitch的一半或四分之一这样过孔位置会比较规整。实际操作中我一般会先用默认参数跑一遍看看扇出效果然后针对没扇出去或者扇得不好的区域手动调整。自动扇出不是万能的尤其是BGA四个角和边缘区域经常需要手动补扇。3.3 手动扇出的技巧自动扇出搞不定的地方就得手动来。Allegro里手动扇出有几个常用命令Fanout by Pick选中一个焊盘然后指定过孔位置工具会自动生成走线连接焊盘和过孔。这个命令适合单个或少量焊盘的扇出。Copy如果某个焊盘的扇出方式可以复用直接Copy到其他焊盘上。Copy时注意选择“Copy via and trace”选项这样过孔和连线一起复制。Swap有时候两个焊盘的扇出方向需要互换用Swap命令可以快速调整。Move手动扇出后如果发现过孔位置不理想可以直接Move过孔Allegro会自动调整连线。但要注意Move过孔后可能会违反DRC规则需要重新检查。手动扇出最耗时的部分是BGA内圈那些被四面围住的焊盘。我的做法是先用自动扇出把能扇的都扇出去然后从最内圈开始手动处理剩下的。内圈焊盘通常只能往一个方向扇因为其他方向都被堵死了。这时候要结合布线层规划决定往哪一层扇、从哪个方向出去。4. 扇出后的检查与优化4.1 DRC检查别让扇出留下隐患扇出完成后第一件事就是跑DRC。Allegro的DRC检查可以快速找出间距违规、过孔重叠、走线短路等问题。重点关注以下几类过孔间距违规两个过孔焊盘之间的距离小于规则值。过孔与焊盘间距违规过孔离BGA焊盘太近。走线宽度违规扇出连线的宽度不符合规则。阻焊开窗违规过孔阻焊开窗与焊盘开窗重叠。DRC报错不一定要全部消除有些是误报或者可以接受的。但每一处报错都要确认原因不能直接忽略。我见过有人扇完出直接跑DRC看到几百个报错就全删了结果板子做出来才发现真的有短路。4.2 扇出优化让布线更顺畅DRC过了不代表扇出就完美了。还要从布线角度审视一遍通道是否足够每个扇出过孔周围要留出足够的走线通道。如果两个过孔之间只有0.1mm的间隙那只能走一根很细的线甚至走不了线。理想情况下相邻过孔之间应该能容纳至少一根信号线。过孔是否对齐虽然不强制要求但过孔对齐会让后续布线更舒服。Allegro里可以用Align命令批量对齐过孔。电源过孔是否充足检查每个电源球的过孔数量是否满足载流要求。可以用Allegro的Report功能统计每个网络的过孔数量。地过孔是否到位高速信号过孔附近是否有地过孔。如果没有手动补几个。4.3 常见问题速查表问题现象可能原因解决方法自动扇出报错“No available via”未在Constraint Manager中指定过孔在Physical规则中添加可用过孔扇出后过孔重叠过孔间距设置过小增大Via Spacing或改用手动扇出内圈焊盘扇不出去周围空间被占满改用更小过孔或向内扇出扇出后布线通道不足过孔位置不合理调整扇出方向或重新规划过孔位置电源过孔载流不够过孔数量不足增加并联过孔数量DRC报大量间距错误规则设置过严或过孔选型不当检查规则设置必要时更换过孔规格5. 电源过孔与地过孔的特殊处理5.1 电源过孔的载流计算电源过孔的载流能力是很多新手容易忽略的问题。一个过孔的载流能力取决于孔径、镀铜厚度、允许温升等因素。经验公式是I k * (D^1.5) * (T^0.5)其中I是电流AD是孔径mmT是温升摄氏度k是常数约1.5。但这个公式只是估算实际设计中我更倾向于用板厂提供的数据或者仿真工具来确认。以孔径0.3mm、镀铜25um的过孔为例在10摄氏度温升下载流能力大约1A。如果BGA的某个电源球需要2A电流那就至少需要2个过孔考虑到余量实际会用3到4个。在Allegro里可以用Report Via Report来统计每个网络的过孔数量然后对照电流需求检查是否足够。5.2 地过孔与回流路径高速信号换层时回流电流会沿着最近的路径从参考平面流回源端。如果信号过孔旁边没有地过孔回流电流就得绕远路形成较大的回流环路导致电磁辐射和信号完整性问题。一般规则是信号过孔周围0.5mm内至少有一个地过孔。对于差分信号两个信号过孔之间或旁边应该有地过孔。对于时钟等关键信号地过孔要更近。在Allegro里可以手动在信号过孔旁边放置地过孔也可以用Copy功能批量复制。有些设计会用“地过孔阵列”的方式在BGA底部均匀分布地过孔这样既保证了回流路径又增强了电源完整性。5.3 电源和地过孔的扇出策略电源和地过孔的扇出和信号过孔不同不需要考虑走线通道主要考虑载流和回流。我的做法是每个电源球至少配2个过孔大电流的配4个以上。地过孔尽量均匀分布不要集中在一处。电源过孔和地过孔可以共用通道但要注意间距。如果BGA底部有电源平面可以直接在平面上打孔不需要额外走线。在Allegro里可以用Fanout by Pick手动放置电源和地过孔也可以用Copy批量复制。自动扇出工具对电源过孔的支持有限通常需要手动补充。6. 实际项目中的经验与避坑指南6.1 0.65mm pitch BGA的扇出实战0.65mm pitch的BGA是扇出难度的一个分水岭。焊盘直径通常只有0.3mm焊盘间隙只有0.35mm常规过孔根本放不下。这时候有几个选择方案一激光钻孔。用孔径0.1mm、焊盘0.25mm的激光孔可以勉强扇出。但激光孔成本高而且需要板厂有激光钻孔能力。方案二Via on Pad。直接把过孔打在焊盘上省去扇出走线。但需要树脂塞孔或电镀填平成本更高。方案三盘中孔任意层互联。这是最高端的方案成本也最高一般只有手机主板等空间极度受限的场景才会用。实际项目中我遇到0.65mm pitch的BGA通常会先和板厂确认工艺能力然后根据成本预算选择方案。如果板厂能做0.1mm激光孔那优先用方案一如果不行再考虑方案二。6.2 扇出与布线层规划的配合扇出不是孤立的一步它和布线层规划紧密相关。我一般会在扇出之前先做好层叠设计确定哪些层走什么信号然后根据层叠来决定扇出方向。比如如果信号主要在内层走线那扇出过孔就要能顺利连接到内层如果信号在外层走线那过孔位置就不能挡住其他信号的通道。我见过不少设计扇出本身没问题但过孔位置把后续布线的通道全堵死了最后不得不返工重扇。6.3 扇出效率提升的几个技巧批量复制如果BGA的扇出方式有规律可以用Copy功能批量复制。比如第一圈焊盘的扇出方式可以复制到第二圈、第三圈。使用ScriptAllegro支持Script录制可以把重复性的扇出操作录成脚本一键执行。对于多个相同封装的BGA这个技巧特别省时间。合理使用自动扇出自动扇出不是万能的但用好了能省不少事。我的做法是先用自动扇出跑一遍然后手动处理剩下的。自动扇出的成功率通常在70%到80%左右剩下的20%到30%需要手动补。保持扇出风格一致同一块板子上的BGA扇出风格尽量一致这样后续布线和检查都会方便很多。6.4 常见问题与排查技巧问题一自动扇出后过孔位置不理想。自动扇出是按算法放置过孔的不一定符合你的布线意图。解决方法是手动调整或者先用自动扇出然后Move过孔到理想位置。问题二扇出后DRC报大量错误。先检查规则设置是否合理然后检查过孔选型是否合适。如果规则没问题过孔也没问题那可能是扇出方向不对需要调整。问题三内圈焊盘扇不出去。内圈焊盘周围空间有限自动扇出经常失败。解决方法是手动扇出或者改用更小的过孔。问题四电源过孔载流不够。检查每个电源球的过孔数量不够就补。可以用Report功能统计。问题五扇出后布线通道不足。这是扇出规划的问题需要在扇出前就考虑好布线通道。如果已经扇完了只能调整过孔位置或者重新扇。7. 写在最后的一些个人体会BGA扇孔这件事说难不难说简单也不简单。工具就在那里参数也就那些但真正做好靠的是对细节的把控和对后续布线的预判。我画过的板子里扇孔返工的情况不少大多数都是因为前期没想清楚急着往下走结果后面发现通道不够、过孔位置不对、电源载流不足只能回头重来。现在我的习惯是拿到BGA封装后先花半个小时把扇出方案想清楚包括过孔选型、扇出方向、电源地过孔规划、布线层分配然后在纸上画个草图确认没问题了再动手。这半个小时花得值能省下后面好几个小时的返工时间。另外Allegro的自动扇出功能确实好用但不要完全依赖它。自动扇出适合处理规则区域BGA的边角和不规则区域还是得手动来。把自动和手动结合起来效率最高。最后说一个容易被忽略的点扇出完成后一定要把扇出结果和布线工程师确认一遍。有时候扇出的人觉得没问题但布线的人一看就知道通道不够。提前沟通比事后返工强得多。