ARTICLE DETAIL

资讯详情

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

Allegro 17.4过孔阵列批量打孔技巧:5分钟搞定板边应力孔与散热孔

Allegro 17.4过孔阵列批量打孔技巧:5分钟搞定板边应力孔与散热孔 做PCB layout这些年我最不想干的重复劳动就是打孔。早先做一个电机驱动板电源部分铺铜区要补二十多个地孔板边还要再加一排应力释放孔当时我一个个点点一个放大看一次位置再点下一个半小时过去眼睛都快瞎了还出了两个低级问题有个孔偏了0.15mm几乎蹭到旁边走线还有几个孔忘了分配网络后期全部返工。后来换到Allegro 17.4把过孔阵列行业里习惯叫Via Array这套操作彻底用熟之后同样量的工作基本可以压缩到5分钟以内而且间距、数量、网络完全可控。这篇文章就围绕板边和铺铜区两类高频场景把Allegro 17.4里批量打孔的操作步骤、参数计算和踩坑经验一次讲清楚。无论你是刚毕业的layout新手还是被手动打孔折磨过一阵子的“准工程师”看完应该都能直接上手。1. 为什么我坚持用Via Array批量布孔1.1 手动放孔的那些痛很多工程师第一次意识到要学Via Array通常是被“手动放孔”折磨出来的。手动打孔的问题很典型。效率低到离谱。一块10mm×10mm的散热焊盘按常用经验要放上百个散热过孔手动一个个放至少得十几二十分钟而且中间不能被打断一打断就容易数错。相比之下用阵列功能一次性生成整片孔连计算带操作一分钟内肯定能结束。间距靠目测完全不稳定。手动点孔时孔与孔之间到底隔了多少基本靠眼睛估算。放三五个孔看不出来数量一多孔间距忽大忽小尤其是挨着板边、焊盘边缘的位置很容易出现局部密度过高或过低对散热和屏蔽效果都非常不利。阵列功能最大的价值就是间距由参数严格定义行列井然有序。网络容易“漏”或者“错”。这问题手动打孔时特别隐蔽——你明明记得打的都是GND孔检查时却发现中间混了几个没有网络甚至落在别的网络上。这种孔不查DRC根本发现不了等板子回来再发现就晚了。用阵列复制时只要源孔网络是对的复制出来的所有孔都会继承同一个网络从根上避免了这个坑。后期调整困难。手动放的孔想整体挪个位置只能框选后一个个移动移动完还得重新检查间距。用阵列生成的孔如果位置不对选中整组、用Move命令一次就能平移如果行列数不对重新执行一次Copy也很快。1.2 过孔阵列最常见的四个应用场景这批孔里最典型的几类场景是这样的。第一类是板边应力释放孔。板厂在拼板分板时无论是V-cut还是邮票孔连接机械应力都会沿着板边向内部传递靠近分板位置的铜箔和过孔最容易出现微裂纹严重的还会导致孔壁断裂。在板边应力集中区放一排密集过孔相当于给应力传递路径“截流”。这类孔我在电机驱动板、电源板、车载板里都常加加完分板后的故障率确实明显下降。第二类是铺铜区缝合孔。两层地平面之间通过密集过孔缝合可以降低地平面阻抗、减小回流路径环路面积对EMI控制很关键。比如板边一圈地孔、屏蔽罩下方一圈地孔、高速线两侧的地孔都属于缝合孔。这类孔一般沿铺铜区边缘排布间距按频率来定后面我会具体讲怎么算。第三类是散热过孔阵列。大功率器件底部散热焊盘、电源模块下方、MOS管附近经常要打一片密集过孔把热量导到背面铜箔。这类孔孔径不大、间距很小看起来就像筛子一样。第四类是大电流换层过孔组。走线太宽或者电流太大需要换层时单颗Via过流能力不够就得并联多个过孔。用阵列生成一组规整的过孔既保证过流能力又方便后续调整比一个个放孔靠谱得多。1.3 为什么在原理图阶段搞不定这批孔经常有刚接触PCB设计的朋友问过孔能不能像元器件一样在原理图里提前放好答案是基本做不到。过孔在Cadence体系里不属于元器件不需要原理图符号它纯粹是PCB布局布线过程中产生的物理结构。所以你只能在Allegro里直接操作无法靠Capture同步过去。这也是为什么类似Via Array这种操作对layout工程师来说是“刚需”。既然原理图帮不上忙PCB端又多又重复工具再不给力那就只能靠手动硬扛了。Allegro 17.4里的阵列复制方式是我实际用下来最顺手的一套也是很多EDA工具的通用思路——复制一次参数化生成整片。2. 工具与版本Allegro里的Via Array到底藏在哪2.1 菜单里没有Via Array这个名字这里必须先把概念说清楚Allegro菜单里并没有一个直接写着“Via Array”的按钮。大家平时说的Via Array其实是指“通过Edit→Copy命令配合Options面板里的Rectangular矩形阵列方式批量生成过孔阵列”的操作组合。第一次听人说“Allegro Via Array”的时候我也在菜单里找了半天最后才反应过来原来就是Copy功能。用Copy做阵列核心优势是Options面板可以设置行数、列数和间距复制结果完全受力控制而不是单纯复制一个或几个对象。除了Copy之外有些工程师也爱用Duplicate。两者的区别在于Copy可以在Options里选择阵列方式和间距控制力更强Duplicate更偏向“原样复制”适合少量等距复制场景。做批量过孔阵列我基本只用Copy。2.2 Copy阵列的Options面板逐项拆解理解了原理具体参数就好说了。选中基准过孔后执行Edit→Copy右侧Options面板里把Array Type从None切换成Rectangular面板上会出现几个关键参数项。X Count和Y Count分别控制X方向和Y方向要复制多少个实例。这里有个细节很容易坑人——不同版本对Count的计数规则不完全一样有的版本把源孔也计入有的版本不计入。我自己的习惯是先把期望的总列数、总行数填上去放置完成后再看实际结果如果多了或少了就把对应方向的Count加减1。别小看这一步很多新手第一次阵列完发现怎么多了一列孔就是这个原因。X Spacing和Y Spacing控制X方向和Y方向相邻两个孔之间的距离。这里的距离是孔中心到孔中心不是孔边缘之间的间隙。填的时候要先确认当前设计单位是mm还是mil。如果单位没设置对填出来的间距会差得非常离谱。Rotation一般保持0度即可阵列的方向跟着设计走。如果要做圆形阵列需要把Array Type切换成Polar那个场景不常用这里不展开。Options面板右下角还有一个“Copies”栏显示预计复制数量执行前务必扫一眼确认数值是自己想要的。2.3 16.6到22.x版本差异与快捷键配置这套操作在Allegro 16.6、17.4以及更新版本里都通用基本原理没有变化。我在16.6上用过同样方法Copy的Options面板里也有Rectangular选项到了17.4界面刷新更流畅Options面板的布局也更清楚用起来顺手不少。22.x版本我简单验证过入口路径和参数项基本一致老工程师完全可以无缝切换。顺带说一句“Allegro快捷键设置”这个高频搜索词。Copy作为我最高频的编辑命令之一一进17.4我就给它配了快捷键。Cadence的快捷键文件是普通文本可以自己改我习惯在 %HOME%\pcbenv\env 文件里加一行alias cp copy保存后重启Allegro输入“cp”就能直接执行Copy命令不用每次去菜单里点。注意不要和已有快捷键冲突不同项目团队的env文件可能会有差异建议先用最简单的命令测试。3. 5分钟实操板边和铺铜区阵列完整流程3.1 先做两件准备工作任何阵列操作之前我建议你先花十秒钟确认两件事单位以及格点。单位不对一切参数都是空谈。在Setup→Design Parameter Editor里确认当前单位是mm还是mil并记下精度。比如你要打0.8mm间距的孔但当前单位是mil且精度是0.01那填0.8时实际输入的是0.8mil不是0.8mm结果差距大到离谱。格点影响放置结果。如果格点设置成1mm而你输入的阵列间距是0.8mm复制出来的孔很可能被吸附到格点上导致间距变成了1mm或者其他整倍数。最稳妥的方法是先把Grid设置为0.05mm或更小或者干脆在阵列时用Absolute坐标输入精确值等阵列完成后再恢复日常格点。3.2 放置基准过孔的三个要点阵列是“复制”所以第一步永远是先准备好一个正确的源孔。这个源孔的质量直接决定整个阵列的质量。第一个要点选对过孔类型。常规双面板板边应力孔、铺铜散热孔用通孔类型就行如果是多层板内层走线需要换层就要根据叠层选择对应的盲埋孔。我建议在建封装或做设计前先和板厂确认可用的Padstack清单不要随手选一个通用孔等到板厂反馈“中间几层没有连接”再改就麻烦了。第二个要点给基准孔分配正确的网络。放置过孔时右侧Options面板里有Net下拉选项可以直接选择GND或其他网络。这一点非常关键因为复制出来的所有孔都会继承源孔的网络。如果源孔没有网络复制出来的整片孔全是空网络后期一个个改网络非常痛苦所以先设置好再复制。第三个要点精确放置首孔位置。以板边应力孔为例首孔位置决定整排孔的起点。手动用鼠标点击很容易偏我会在命令行输入“x [x坐标] [y坐标]”让首孔落到精确位置。比如板边应力孔距离板边0.6mm孔心坐标可以直接写成 x 5.6 10.0 这种形式确保阵列起点没问题。3.3 Copy阵列参数设置与放置基准孔准备好了就可以执行真正的阵列复制了。完整操作流程大概是这样的在Find面板里只勾选Vias或者直接用鼠标框选基准过孔。执行Edit→Copy或者输入刚才配置的快捷键“cp”。在右侧Options面板里将Array Type切换为Rectangular。输入X Count、Y Count、X Spacing、Y SpacingRotation保持0。用鼠标左键点击基准孔位置作为Copy的基点。移动鼠标到目标区域的新原点位置点击一次阵列就会生成。右键Done结束命令。这里有三个容易出问题的地方要提醒。第一个是基点选择。基点就是Copy的参考点通常选基准孔本身这样阵列生成后第一个复制出来的实例会落在你第二次点击的位置。如果基点选歪了整个阵列都会跟着偏移所以点完之后最好用Element命令复查一下某个角孔的位置。第二个是复制范围的边界。很多人会在一个10mm宽的焊盘上放一排孔结果阵列完发现孔已经跑到焊盘外面去了。原因很简单Count×Spacing超出了焊盘可用区域。建议先在心里算一遍一排孔跨越的总长度约等于Count-1×Spacing然后看这个长度是否落在允许范围内。第三个是点击落点。如果阵列只生成了一排或一列检查一下Options面板里的Y Count是不是填成了1如果孔的位置和预想偏差半个间距考虑一下基点有没有选准。这类小问题排查起来其实很快但新手容易卡住列在这里供参考。3.4 案例一板边应力释放孔阵列用实际项目举例。之前做一块四层电机驱动板V-cut分板后板边紧挨着铺铜区的位置出现了过孔开裂问题。分析后发现是分板应力沿板边传递把靠近边缘的过孔拉裂了。解决思路是在分板应力集中区域补一排应力释放孔。设计参数大概是这样板边长度约30mm需要考虑孔径用0.3mm孔中心距离板边0.6mm孔间距0.8mm。计算一下孔数30mm区域除以0.8mm间距再加1大约是38个孔。实际操作时我先把首孔放在起点坐标然后在Copy的Options里填X Count38、Y Count1、X Spacing0.8mm其他保持默认点完起点和落点一排孔就出来了。这里要注意不同版本对Count是否包含源孔的规则可能有差异执行完最好用Display→Element确认一下实际数量。这类孔有几个禁忌孔心距离板边不能小于0.3mm否则钻孔时容易破板间距最好不要小于0.5mm否则板边强度下降太多另外孔不要打成一整条完全贯穿板边的直线那样容易造成应力集中。正常情况下单排孔已经能起到很好的应力释放效果。3.5 案例二大功率器件散热过孔阵列再说一个铺铜区散热过孔的经典案例。某电源板上有一颗TO-263封装的MOS管底部大焊盘尺寸约10mm×9mm工作电流不小发热很明显需要在焊盘正下方打一片散热孔把热量导到背面的大面积铺铜去散热。当时我选的孔径是0.3mm焊盘直径0.6mm孔中心间距1.0mm。考虑焊盘实际可用区域阵列区域控制在8mm×8mm左右。计算一下数量X方向8mm/1.0mm8列加1是9列Y方向同理也是9行。我设置X Count9、Y Count9、X Spacing1.0mm、Y Spacing1.0mm再配合前面对Count规则的修正最终得到一个8×8或9×9的孔阵列覆盖在焊盘中央区域。这里有一个重要的经验散热孔阵列不要做到焊盘边缘建议四周至少留0.3mm以上的距离。原因有两个一是防止焊接时焊料从孔中流失到背面形成虚焊二是避免孔破坏焊盘的平滑度影响焊接可靠性。所以阵列范围宁可小一点也不要顶到边缘。4. 参数背后的原理间距、孔径、数量怎么定4.1 缝合孔间距先算λ/20很多工程师打缝合孔时直接套经验值比如“一般2mm左右一个”但并不知道这个间距是怎么来的。其实背后是一个很经典的电磁学准则两个缝合孔之间的空隙在电磁层面上相当于一个缝隙当缝隙尺寸接近工作频率波长的1/20时就会产生明显的电磁泄漏导致屏蔽性能急剧下降。计算公式很简单波长λ等于光速c除以频率f然后取λ/20作为最大允许间距。举两个常见频段算例。2.4GHz频段波长λ 3×10^8 m/s / 2.4×10^9 Hz 0.125m 125mmλ/20 6.25mm。所以蓝牙、WiFi模块下方地缝合孔间距做到2~3mm已经非常充裕。5GHz频段波长λ ≈ 60mmλ/20 3mm。所以5G WiFi相关的射频区域孔间距做到1.5~2mm会更好。需要注意的是间距不是越小越好。孔太过密集会削弱铜箔机械强度增加钻孔加工时间焊盘区域开孔过多还会影响焊接质量。实际选择时在满足λ/20的前提下给设计留出合理的加工余量就好。4.2 散热孔阵列的热阻估算散热过孔为什么总是密密麻麻因为单个过孔的散热能力其实极其有限。我们可以简单估算一下热阻。假设一个过孔孔径0.3mm镀铜厚度约25μm板厚1.6mm。铜筒的等效横截面积大约等于圆周乘以镀铜厚度也就是约π×0.3mm×0.025mm≈0.0236mm²。铜的导热系数约385W/(m·K)。单孔热阻R 长度/(导热系数×截面积)把单位换算一致后计算结果大约在176K/W左右。这个数字是什么意思如果1W功耗单独经过这一个过孔产生的温差可以达到176K热量根本传不过去。如果是10个孔并联总热阻降到约17.6K/W100个孔并联总热阻约1.76K/W。对一个30W发热的器件允许温升50K的系统来说并联热阻做到1.67K/W左右才够用所以打百来个孔并不夸张。这里再补充一个工艺层面的细节普通过孔内部通常是树脂填充或者空孔导热能力远不如铜柱。如果散热要求高优先选择树脂塞孔电镀填铜的过孔或者干脆让板厂做“开窗焊锡填充”工艺热阻会显著降低。成本会略高但热性能提升非常明显。4.3 大电流过孔的数量估算有些场景下过孔阵列是为了过流比如大电流电源走线换层处。这个同样有经验值一个标准制程的0.3mm过孔镀铜约25μm1oz铜箔条件下大约能承载1A左右的电流温升控制在10℃以内。想安全通10A理论上至少需要10个孔并联。实际设计时我一般会在这个理论数量基础上至少翻一倍也就是按20个孔去打。原因有两个一是电流不会绝对均流靠近入口的孔往往承担的电流更大二是过孔本身有电阻长时间工作会有温升留出余量更安全。可以用阵列快速生成一组车规级过孔再按电流路径适当调整密度。这里的核心思路是先算概数再加系数不要生搬硬套。每个项目的散热条件、铜厚、板层结构都不一样最终数值要在实际测试中微调。4.4 铺铜区阵列的涡流损耗雷区这是我要特别提醒的一块。热搜词里有一个很专业词汇叫“PCB涡流损耗”我在实际项目里踩过坑觉得必须单独说。开关电源的高频大电流回流路径上地平面的电流分布是有规律可循的它会沿着阻抗最小的路径回流通常聚集在走线正下方。如果你在这个回流路径的中间横着打了一排密集的过孔阵列相当于给完整地平面切出了一道“栅栏”把回流电流硬生生逼到旁边绕行。这样做的后果有两个一是环路面积变大等效电感增加EMI变差二是电流绕行时在地平面内部形成涡旋电流造成涡流损耗严重时局部温升明显甚至出现热斑。避免的方法也很简单打孔之前先把关键电流环路画出来问自己这一片孔到底是“辅助回流”还是“阻断回流”。如果是铺铜区散热孔尽量让孔列的延伸方向和主要回流电流方向平行不要横着把电流路径拦腰截断。这句话听着简单实际设计时太容易忽略等板子回来局部发热明显才意识到是孔位问题那就晚了。5. 常见翻车现场与排查技巧5.1 Via阵列和铺铜“绝缘”了想象一下你辛辛苦苦打了一整片GND阵列孔结果跑完DRC发现过孔和铺铜之间没有连接电气关系是断开的。这个问题在静态铜箔Static Solid区域非常常见——静态铜箔不会自动对过孔生成避让和连接它只按你画的形状和规则老实铺在那里。解决办法有两个把静态铜箔改成动态铜箔Dynamic Copper让Allegro自动生成热释放连接或者手动在静态铜箔上画Void把过孔区域掏出来。我个人的建议是大面积的电源/地铺铜尽量用动态铜箔后续增加过孔时省心很多。5.2 阵列完孔不在格点上复制出来的孔位置对但没有对齐到格点后续走线对不齐看着也不舒服。这通常有两个原因一是执行Copy时格点设置过大阵列间距不是格点整数倍二是基点选择有偏差导致整体偏移。排查时先打开Setup→Grid把格点改小然后选中整组孔用Move命令输入坐标差把整组孔重新对齐。10秒左右就能解决不用删掉重打。5.3 复制出来的过孔没有网络这是一个很隐蔽的问题。源孔如果没分配网络复制出来的所有孔都会没有网络DRC阶段会看到一堆断开的孤岛过孔。解决方法是执行Edit→Change在Find面板里只勾选Vias然后在Options面板里把网络改成需要连接的目标网络。这样一次性就能把所有孔的归属纠正过来。但最稳妥的办法还是回到前面说的在放置源孔时就把网络选对复制之前花一秒钟检查后面就少了半小时返工。5.4 阵列范围压到焊盘或走线DRC爆红阵列生成时如果Count或Spacing设置不当孔很容易压到旁边的元件焊盘、走线或机械孔。DRC会报出一堆Antipad或Spacing错误。遇到这种情况不用慌先用Display→Element点几个报错孔确认是位置问题还是参数问题。如果是位置问题删掉局部几个孔手动补孔到安全位置如果是参数问题回到Copy命令重新设置Count和Spacing。补孔时通常也需要保持阵列的间距节奏这样整板看着才整齐。5.5 17.4里找不到对应按钮很多第一次接触17.4的朋友会在菜单里到处找“Via Array”结果半天找不到。记住入口是Edit→Copy不是Place菜单。Options面板如果没显示出来去菜单栏的View里调出Options窗口。这个操作路径我已经反复强调过如果真的找不到检查一下是否是工作区窗口被收起了。实在不行把env里加的“alias cp copy”删掉直接用菜单入口能更专注地确认每一步。5.6 分板时板边孔崩边的处理板边应力释放孔打得太靠近板边或者孔径太小分板时孔壁容易崩裂反而造成新的缺陷。解决思路是孔径尽量不小于0.3mm孔心到板边距离不小于0.5mm间距不要小于0.6mm并和板厂确认最小孔边距要求。另外应力释放孔的起始和终止位置应该超出应力集中区域之外留出一定余量不能刚好贴着边界结束否则应力又会从两端缺口处钻进去。5.7 快速排查表现象可能原因解决办法阵列孔和铺铜不连接静态铜箔未自动避让改用动态铜箔或手动Void孔位置不在格点上格点设置过大、基点偏移缩小格点Move整体对齐过孔没有网络源孔本身无网络Edit→Change批量分配网络DRC报错密集阵列压到焊盘/走线减少Count或增大Spacing补孔找不到Via Array按钮入口其实是Edit→Copy走菜单Edit→Copy调出Options分板崩边孔径太小或距离板边太近增大孔径、加大孔边距最后再说两句实操体会Via Array这套操作本质上并不复杂它就是把“打孔”这件事从一个一个的手工劳动变成“我告诉你方向、数量、间距你一次性全部生成”的参数化过程。真正拉开效率差距的是你有没有在复制前想清楚三个问题打多少孔、间距多少、网络是什么。想清楚了一次操作15秒结束想不清楚工具再快也只是加速生产返工品而已。从我做板这些年的经验看板边应力释放孔、铺铜区散热孔、地平面缝合孔这三大场景几乎每个复杂一点的PCB项目都会碰到。把这套Atitle“5分钟搞定”的操作练熟对日常工作效率的提升真的很明显。最后再分享一个习惯阵列完成后随手用Display→Element抽查两颗孔确认网络和Padstack比后期等DRC全跑完再返工要省心太多。
返回列表