ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Allegro 17.4盲埋孔与扇出配置实战:从叠构到DFM一次理清

Allegro 17.4盲埋孔与扇出配置实战:从叠构到DFM一次理清 1. 过孔不是最后才补的东西三种过孔的分工与叠构逻辑1.1 通孔、盲孔、埋孔真正区别在哪里很多刚用 Allegro 17.4 的朋友一上来就急着点 Fanout结果过孔类型全是默认的 Through All扇完才发现 BGA 内排引脚根本出不去或者电源过孔塞得密密麻麻板厂报价直接翻倍。这个问题根子上不是操作不熟而是没把过孔和叠构当成一个系统来想。先理清楚三种过孔到底在干什么。通孔Through Via贯穿整块板子从 L1 打到 Ln加工最简单成本最低但它占用了所有层的布线空间。盲孔Blind Via从表层打到某一内层比如 L1-L2、L1-L3它不穿透整板能给内层省出大量走线通道。埋孔Buried Via完全藏在内层之间比如 L2-L3外表完全看不见适合高密度互连场景。我用一块 8 层板举例。假设叠构是L1 顶层信号L2 地平面L3 信号L4 电源L5 电源L6 信号L7 地平面L8 底层信号如果全部用通孔一颗 0.8mm pitch 的 FPGA 扇出后L4、L5 两个电源层基本被过孔打成了筛子电源平面的回流路径被切得支离破碎。而如果引入 L1-L2 盲孔把 FPGA 最外两排引脚的扇出过孔做成盲孔只打到 L2 地平面层就转走那么从 L3 往下的每一层都完全看不到这批过孔内层走线密度一下子宽松很多。这里有一个新手最容易忽略的点盲孔不是简单地“打一半的孔”。在 Allegro 17.4 的 Padstack Editor 里每个盲孔必须明确指定 Start Layer 和 End Layer这两个参数直接决定了它在叠构中跨哪几层。不同跨层的盲孔加工方式完全不同。L1-L2 通常用激光钻孔L1-L3 就要做激光钻孔后再电镀填平L2-L3 这种完全内层的埋孔则是在压合前先单独钻孔电镀再二次压合。成本差异很大这直接决定了你板子单价。1.2 为什么扇出方案必须和过孔类型一起定扇出这个词本质上是把 BGA、QFP、连接器这类细间距器件的引脚从器件本体下面引出来通过一小段走线加一个过孔换到更宽的布线通道上去。但扇出用哪种过孔不是随意选的它取决于三件事引脚间距、需要的布线层数、以及成本预算。引脚间距是最硬的约束。0.4mm pitch 的 BGA引脚之间连 0.1mm 的机械钻头都塞不进去更别说通孔焊盘了这时候必须在焊盘正中心做激光盲孔也就是盘中孔。0.5mm pitch 的 BGA机械通孔勉强可以做但扇出方向和孔到焊盘的间距余量非常小。0.65mm pitch 以上才比较适合用常规通孔扇出。布线层数决定了盲埋孔的深度。一个 0.5mm pitch 的 FBGA如果只用 L1-L2 一层盲孔那么只有最外两排引脚能扇出到表层第三排往内的引脚根本够不到盲孔。要扇出第三排、第四排就得用 L1-L3 的跨两层盲孔甚至需要 L1-L4 的叠孔。所以你在规划叠构的时候必须先数清楚 BGA 里有多少排引脚需要扇出每排引脚落在哪个扇出环带才能定出盲孔跨几层。我见过最典型的返工案例就是项目规划时没数引脚排数叠构定成一阶 HDI结果布到一半发现内排引脚无法逃逸被迫改成二阶 HDI整个叠构推翻重来所有阻抗线全部重算。成本也一样。一阶 HDI 的盲孔只需要一次激光钻孔加一次压合二阶 HDI 要两次激光钻孔加两次压合良率和交期都受影响。所以一个负责任的 PCB 设计必须提前把“哪些引脚用通孔、哪些引脚用盲孔、最内排用不用埋孔”这件事想清楚再动手设置过孔库。这不是设计后期能补的而是项目启动阶段就要定死的方案。2. 开工前先把过孔库和约束规则备好Padstack 与 Constraint 的关键操作2.1 Padstack Designer 里建盲埋孔的参数要点Allegro 17.4 里创建过孔的入口有两种老界面叫 Pad Designer17.4 依然保留了但界面布局更接近新版风格。启动后 File New输入过孔名称比如 VIA_BLD_L1_L2然后设置类型。这里的关键类型选项有三个Through通孔默认贯穿所有层Blind盲孔需要在 Start Layer 和 End Layer 里指定跨层范围Buried埋孔Start Layer 和 End Layer 都在内层以 L1-L2 盲孔为例Start Layer 选 TOPEnd Layer 选择你在叠构里命名好的 L2_GND 层。Drill 参数里激光微孔一般设置 0.1mm 或 0.075mm 成品孔径。Regular Pad 在 TOP 和 L2_GND 层都要设置中间层因为不涉及这个过孔不用设置或者保持 Default Internal 的选项。Thermal Relief 和 Anti Pad 这两个参数在 Allegro 里直接影响电源层连接方式我的建议是电源地网络用花焊盘连接信号网络用直接连接具体可以在 Net 属性里覆盖不要全局统一否则电源平面容易变成孤岛。很多工程师忽略 Default Internal 这一栏导致盲孔的中间层出现不该有的金属残留。实际做法里除了 Start 和 End 层之外的所有层都要在 Default Internal 里设置 No Connect这样才能保证过孔只在指定两层出现。对于埋孔比如 L3-L6操作逻辑一样只是 Start Layer 选 L3_SIGEnd Layer 选 L6_SIG中间层全部 No Connect。埋孔是二次压合前加工的Allegro 里并不区分激光加工还是机械加工但你要在命名上体现比如 MECH_BURIED 和 LASER_BLIND否则后处理时板厂容易看错。2.2 约束管理器里影响扇出的三条规则过孔建好只是第一步不在约束管理器里把规则配好扇出时系统根本不会用你的盲孔或者用了之后疯狂报 DRC。打开 Constraints Physical找到 Physical Constraint Set这里有三条和扇出强相关的规则。第一条是 Vias 列表。你需要把允许使用的过孔类型添加到对应的约束集里。比如 Default 约束集下可以包含 VIA_THRU、VIA_BLD_L1_L2、VIA_BUR_L3_L6。如果某个网络用了特定的约束集比如高速时钟网络用了 CLK 约束集那就只能使用这个集中列出的过孔这是控制高速信号过孔类型最直接的手段。第二条是 B/B Via 定义。Allegro 17.4 中盲埋孔需要先在 Physical Constraint Set 里做 B/B Via 分配具体操作是选中约束集右键选择 Assign BBvia Definition在弹出的对话框里勾选你要启用的盲埋孔。如果漏了这一步布线时右键切换过孔盲孔选项是灰的。这是新手最常卡住的地方。第三条是 Via 到 Pin、Via 到 Via 的间距规则这个其实在 Spacing 约束集里。扇出时系统默认按照 Spacing Rule 计算过孔到焊盘的最小距离。BGA 区域内如果引脚间距太小通孔扇出会报间距错误这时候不是去放宽全局间距而是单独建一个 BGA_Area 的 Spacing 约束集在区域内适当缩小 Via-Pad 间距。但要小心这个值不能小于板厂工艺能力否则做不出来。2.3 Allegro 17.4 与旧版本在选项设置上的差异如果你是从 16.6 或者更早版本升上来的17.4 的几个变化要适应。第一Options 面板更大了扇出、布线、铺铜的参数都集中在右侧习惯早版本小面板的人会容易忽略折叠起来的参数。第二17.4 默认开启了 DesignTrue DFM 实时检查你在布线扇出的时候如果过孔间距违反工艺规则会实时飘红这其实是好事但如果你还没规划好规则会觉得系统很烦可以先在 Setup DesignTrue DFM 里关掉等规则配完再打开。第三17.4 对过孔命名和叠构的关联做了增强Cross-Section 里如果改了层名之前建的 Padstack 不会自动更新必须要回到 Padstack Editor 里重新指定 End Layer。我踩过一次叠构里把 L2 从 GND 改成了 POWER结果所有 L1-L2 盲孔全部变成无效过孔布线时一放就报错查了半天才反应过来是层名失配。还有个快捷键设置的问题很多人问 17.4 怎么快速切换过孔。其实不用写脚本布线状态下右键选 BBvia或者按 ShiftB就能调出当前约束集允许的所有过孔。想自定义快捷键可以在 Tools User Preferences 里搜索 alias把 fanout 命令绑定到一个顺手的键我习惯把 FBO 设成执行扇出效率高很多。3. 自动扇出的实操与参数含义FBGA 扇出实例3.1 Fanout 命令的菜单与参数逐项解释现在进入正题。Allegro 17.4 的自动扇出入口在 Route Fanout下面有三个子命令Fanout By Component、Fanout By Pick、Fanout By Net。我用的最多的是 Fanout By Component操作流程是选中要扇出的器件右键选择 Fanout 即可。真正决定扇出质量的是 Options 面板里的参数这里逐项拆开讲。Via 下拉框选择这次扇出使用的过孔类型。如果你的设计同时存在通孔和盲孔不要只选一种。实际操作中先选通孔扇出外圈再切盲孔扇出内圈。一次把所有引脚全部用盲孔扇出成本会失控。Fanout Direction这个参数控制走线从引脚的哪个方向出来再落孔。OK出表示从引脚朝器件外侧方向出线IN入表示先朝器件中心方向走再落孔Both 是双向。对 BGA 来说外圈引脚用 OK内圈引脚由于空间受限经常要用 IN 或 Both。Pin Edge在 BGA 里通常不用但在 QFP 这类四边引脚器件上很有用。选择 Allow Any Edge 就够。Max Fanout Length限制从引脚到过孔之间的最大走线长度。默认值可能很大但对高速信号建议限制在 50-100mil 以内可以避免信号在扇出段就开始绕线。这个参数也会影响扇出失败率设得太小系统可能找不到落孔点。扇出执行完Allegro 会生成一段扇出走线和一个过孔。这里我要强调一点自动扇出的线宽和线距完全遵循你设定的 Physical 和 Spacing 规则所以扇出前必须确认默认走线宽度是能进 BGA 通道的。0.5mm pitch 的 BGA通道宽度连 4mil 线都比较紧张如果你默认线宽是 5mil扇出会大面积失败。建议在约束管理器里单独做一个 FANOUT 物理约束集线宽 3.5mil 或 4mil线距按板厂最小值设置专门给扇出用。3.2 电源过孔扇出的载流和回流处理自动扇出功能会把所有引脚一视同仁地扇出但电源引脚不能这么处理。电源过孔是另一个逻辑它不是为了“逃逸布线”而是为了给内层电源平面供电同时保证回流路径短。大功耗器件比如 FPGA、ASIC每个电源域可能有几十个电源引脚这些引脚往往集中在器件中心区域。对电源引脚做扇出核心诉求是让过孔直接打在引脚旁边能就近连接到内层电源平面而不是绕到外层去。操作上我用 Fanout By Net只选择电源网络例如 VCC_INT、VCC_IO、VCC_AUX分别执行扇出。这里有一个载流计算的要点。一个 0.3mm 成品孔径、25μm 镀铜厚度的过孔大概能承载 1.5A 左右的电流温升 10℃。FPGA 内核电流动辄 5A、10A单个过孔远远不够需要并联。一般的设计里同一电源域至少保证每 1A 电流配 1 个过孔并且这些过孔要均匀分布不能挤在一个角落。Allegro 17.4 里可以用菜单命令快速数出一个网络上有多少个过孔Display Status或者用 Tools Quick Report Report Net 查看。我习惯在扇出后对每个电源域做一次 Quick Report核对过孔数量是否满足载流预算。回流路径也要提前想。高速信号的过孔在换层时必须有相邻的地过孔提供回流。自动扇出不会自动帮你加地过孔所以扇出完成后要手动在信号过孔旁边补地孔。对于 BGA 区域通常的做法是在器件中心的接地引脚上扇出地孔它们天然密集可以作为整个 BGA 区域的回流骨架。3.3 扇出失败和飞线的处理思路自动扇出不是每次都能成功尤其碰到 FBGA 这类引脚密度高的器件。常见失败场景有这么几类。第一类是“No Fanout Location Found”。这是系统在当前规则下找不到可以放过孔的地方。优先检查两个方向通道宽度是否太窄线宽能否再降过孔到引脚间距是否太小把 Spacing 约束集里的 Via to Pin 值适当放宽。如果还不行就要考虑更深层的盲孔了——0.4mm pitch BGA 的内排引脚用 L1-L2 盲孔是扇不出来的得用 L1-L3。第二类是“Via Type Not Allowed on This Net”。这是物理规则里没给这个网络加入允许的过孔类型。回去 Physical Constraint Set 里把对应过孔加进 Vias 列表即可。第三类是扇出后绕线冲突。自动扇出的落孔位置并不是最优解经常出现扇出线互相交错的情况。我的做法是自动扇出完成 70%-80% 就够了剩下的手工修。手动修正时不要删除扇出线重画直接用 Slide 推挤导线配合 Ctrl 键切换忽略障碍模式微调过孔位置。这里分享一个小技巧扇出完成后的过孔如果位置不满意可以用移动命令 Move推荐勾选着 Options 面板里的 Ripup etch 选项移动过孔时系统会自动删除原来的扇出走线重新连接新的比手动重画效率高很多。4. 盲埋孔实战配置叠构编辑器、BBvia 与层切换4.1 Cross-Section 叠构设计从一阶 HDI 到任意层互连盲埋孔能不能用取决于叠构里有没有对应的层对。Allegro 17.4 的叠构编辑入口在 Setup Cross-Section打开后是层叠表每一行代表一层可以设置层名、类型Conductor/Dielectric、厚度和材质。对一阶 HDI 板典型叠构在 Cross-Section 里长这样TOP信号DIE1介质L2_GND地DIE2介质L3_SIG信号...后续层BOTTOM信号在这种叠构里系统能识别的盲孔层对是 TOP-L2_GND 和 L2_GND-L3_SIG如果你做外层到 L3 的跨层盲孔。二阶 HDI 则要额外定义 TOP-L3_SIG 这样的跨层对并且中间要包含 Buried Via 层对例如 L3_SIG-L4_PWR。我强烈建议在叠构设计阶段就把每一层的作用标清楚信号层、地平面、电源平面分类别命名。这不只是为了好看Allegro 17.4 在 BBvia 分配时是按照层名匹配的如果层名混乱分配过孔时非常容易选错。在 Cross-Section 里还有一个容易被忽略的字段Material 和 Thickness。这两个值直接影响阻抗计算间接影响过孔设计。盲孔从 L1 打到 L2如果 L1-L2 之间的介质厚度是 50μm激光孔深径比还合理如果你把 L1-L2 之间的介质厚度设成 200μm激光孔 0.1mm 孔径的深径比就到了 2:1很多板厂做不到就会要求你改成 0.15mm 孔径。所以叠构厚度不是随便填的它决定了你的盲孔能用多大孔。4.2 BBvia 的定义和层切换时的过孔选择叠构建好过孔库建好接下来的关键是让 Allegro 知道哪些过孔可以被哪些网络使用。这个动作叫 Assign BBvia。操作路径是在 Constraint Manager 的 Physical 页面选中一个 Physical Constraint Set右键选择 Assign BBvia Definition弹出对话框之后勾选允许的过孔。这里建议把常用的组合做成一个模板比如约束集名称允许的过孔DEFAULTVIA_THRU, VIA_BLD_L1_L2, VIA_BUR_L3_L6BGA_0P5VIA_THRU, VIA_BLD_L1_L2, VIA_BLD_L1_L3POWERVIA_THRU, VIA_PWR_0P5MM这样在布线和扇出时系统会根据当前网络自动过滤出合适的过孔不用每次手动选择。真正布线时层切换的操作是这样的在交互式布线状态下走到要换层的点按 ShiftB打开过孔类型选择列表当前约束集允许的过孔都会列出来。选一个盲孔比如 L1-L3然后鼠标点击切换后的目标层Allegro 会自动从 L1 打孔到 L3并且之后走线自动落到 L3 层。需要注意切换层时 Options 面板里显示的 Active Layer 会变化如果你选择了一个 L1-L3 盲孔系统会直接把 active layer 跳到 L3。如果你只是想在 L1 和 L2 之间来回切换而 Options 里当前层已经是 L3那说明你选错了过孔类型。这个逻辑听起来简单实际项目里非常多人在 L1 布线、想换到 L2却选了一个 L1-L3 盲孔结果线莫名其妙跑到了 L3然后开始怀疑人生。4.3 激光孔、机械孔与纵横比成本与可制造性怎么平衡盲埋孔不是越深越好越深的孔越贵良率越低。我一般按这样的经验法则控制L1-L2 盲孔用激光孔孔径 0.075-0.1mm成本可控适合 0.4mm pitch 及以上的 BGAL1-L3 盲孔依旧用激光孔但要先镭射再电镀填孔成本大约是 L1-L2 的 1.5 倍L2-L3 埋孔机械钻为主孔径可以大到 0.2mm用于内层信号互联L1-L4 以上的跨层盲孔成本急剧上升尽量少用能用埋孔转接就不要直接跨多层在 Allegro 17.4 里钻孔符号和孔径定义在 Padstack Editor 中但叠构里每层之间的介质厚度决定了钻孔的纵横比。激光孔的深径比一般控制在 0.75:1 以内比较稳妥极限是 1:1。机械盲孔的深径比控制在 1:1 到 2:1具体看板厂能力。我在一个 0.4mm pitch 的 Mobile 类产品上做过 L1-L4 的四层盲孔当时是为了解决内排引脚扇出。叠构中 L1-L4 之间总共 120μm 介质0.075mm 激光孔深径比 1.6:1板厂反馈良率偏低。后来优化的方案是L1-L2 盲孔用于扇出L2-L3 埋孔做换层L3-L4 再做一组盲孔把信号引到深层效果比一个深盲孔好很多成本反而更低。这个思路在 Allegro 里实现也简单无非是多建几个 Padstack多做一次 Assign BBvia。5. 扇出盲埋孔落地时的 DFM 检查与高频踩坑点5.1 钻孔安全间距、盘中孔与背钻即使扇出和盲埋孔在 Allegro 里全部走得通还要过板厂制造这一关。最容易出问题的三个点钻孔到导体的间距、盘中孔的处理、以及背钻。钻孔到导体间距约束管理器里对应的是 Drill to Route、Drill to Pin 这类规则。机械钻孔有钻进偏差如果过孔离其他导体太近钻头偏摆可能直接破坏旁边的线。常见的安全间距机械孔到铜皮至少 0.15mm激光孔因为精度高可以做到 0.075mm。我在 17.4 里提前建好一个 DFM 的 Spacing 约束集把这类间距全部加进去然后用 Quick Report 检查。盘中孔是 BGA 盲孔扇出绕不开的问题。0.4mm pitch BGA 用 L1-L2 盲孔孔径 0.075mm焊盘只有 0.2mm钻头基本就落在焊盘正中心这个孔是“盘中孔”。盘中孔需要树脂塞孔电镀填平否则焊接时锡膏会顺着孔流走产生虚焊。在 Allegro 里检查盘中孔的方式是Manufacturing Artwork 前用 Tools Padstack Modify Design Padstack逐个查看 BGA 焊盘上的过孔是否有塞孔属性。更快的办法是让板厂在 EQ 阶段确认。背钻针对的是高速通孔的残桩。如果你用通孔扇出而信号只走了 L1-L2 两层那通孔从 L2 到 L8 的这段金属圆柱体就是残桩它会反射高速信号。Allegro 17.4 里可以通过规则设置背钻区在 Physical 约束集里给网络指定 Backdrill 的上限层和下限层。但我一般不建议在扇出阶段用背钻成本高能改用盲孔就用盲孔。5.2 扇出后必须检查的回流路径与电源平面完整性扇出完成只是第一步比扇出更重要的是扇出之后的回流设计。BGA 区域密集的过孔如果布置不合理会把内层电源平面和地平面打成筛子。地孔的作用在这里特别突出。每换一次层信号电流都要借助邻近的地过孔形成回流。如果地孔离信号过孔太远回流面积会变大形成一个巨大的电流环带来 EMI 隐患。我习惯在自动扇出之后目视检查一遍 BGA 区域信号过孔旁边 50mil 范围内必须能找到至少一个地过孔。如果找不到就手动在旁边的地引脚上补一个地孔。电源平面完整性也要检查。过孔密集区如果在电源平面上形成了一个个孤岛部分去耦电容就失去了作用。Allegro 17.4 的 Shape 菜单里有 Check 命令可以检查铜皮孤岛但那是后期铺铜之后的事了。在扇出阶段能做的是电源过孔不要扎堆打在同一个位置尽量沿着电源引脚区域均匀分布。因为电流是从引脚流入过孔再到电源平面的如果过孔全部挤到一个角那一角附近的电源平面电位下降会比别处更明显等于引入了额外的直流压降。5.3 导出光绘前的过孔相关验证最后说说导出光绘前的验证这部分是我每次出板子之前必走的流程能省下和板厂来回确认的时间。首先确认盲埋孔的每一层钻孔文件都是独立的。Allegro 17.4 的 Manufacturing NC Drill Customization 里可以把盲孔、埋孔、通孔分开生成钻孔文件。板厂需要知道你每一类孔打在哪些层对如果全部堆在一个钻孔文件里很容易漏钻。其次用 Analysis Report 生成一份 Drill Report核对过孔总数和各层过孔分布是否合理。我遇到过一种情况设计明明用了盲孔但生成钻孔文件时系统把盲孔和通孔归到一起导致板厂当成通孔加工直接把内层不该有的过孔全部打穿了。这个错误在 17.4 里可以通过 Drill Customization 里把 Blind/Buried 和 Through 分开来避免关键是分清 GROUP 属性。最后提醒一点光绘文件的命名要体现过孔类型。比如顶层光绘里的焊盘、盲孔层的光绘、埋孔层的光绘命名上加上 BLIND_L1_L2、BURIED_L2_L3 这样的后缀板厂一眼就能看出来工艺结构不用反复沟通。我在实际项目里通常在扇出阶段就花一小时把这些 DFM 检查全部跑完而不是等到布线完成再回头处理。因为扇出阶段的过孔数量和位置基本决定了整板的可制造性越早发现问题返工成本越低。这也是为什么我反复强调过孔规划要前置、过孔类型要提前配好、扇出参数要理解其含义而不是机械地点击默认按钮。把这一套流程理顺Allegro 17.4 的扇出和盲埋孔配置其实没有想象中复杂真正复杂的永远是你对板子结构、成本和可制造性的整体判断。
返回列表