ARTICLE DETAIL

资讯详情

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

Allegro过孔放置全攻略:从单孔到阵列与Skill脚本高效实践

Allegro过孔放置全攻略:从单孔到阵列与Skill脚本高效实践 1. 过孔放置这件事为什么值得单独拿出来讲画PCB的人都有一个共识布局布线是脑力活过孔放置是体力活。尤其是遇到BGA出线、电源平面互联、大面积散热焊盘这些场景动辄几百上千个过孔要打一个个手动放放到手抽筋不说间距还未必对得齐。我在早期做一块六层工控板的时候BGA区域有576个球每个球至少一个过孔加上电源和地的阵列过孔总共打了将近两千个。那一次我用最笨的办法——复制粘贴结果DRC报了几百个间距违规返工了一整天才搞定。后来我才认真去研究Allegro里过孔放置的各种高效方法从最基础的单孔放置到Via Array阵列过孔再到配合Skill脚本做批量操作效率提升非常明显。这篇内容就是把我这些年用Cadence SPB 17.4 Allegro做过孔放置的经验完整梳理一遍从单孔手动放置讲到阵列过孔的自动化方案再到实际项目中遇到的坑和排查方法。不管你是刚接触Allegro的新手还是已经画了几年板子但一直用笨办法放孔的老手这篇内容应该都能帮你省下不少时间。我下面提到的所有操作都基于Cadence SPB 17.4这个版本部分操作在16.6上也能用但菜单路径可能有差异我会在涉及的地方标注出来。2. 过孔放置前的准备工作2.1 过孔焊盘与Padstack的创建在Allegro里放一个过孔本质上就是放一个Padstack。所以第一步不是急着在PCB上点鼠标而是先把过孔类型定义好。很多新手拿到板子就开始放孔结果发现过孔列表里只有默认的几个选项或者放出来的孔尺寸不对这就是因为Padstack没提前做好。创建过孔Padstack的路径是Setup → Padstack → Padstack Editor17.4里独立出来了Padstack Editor工具16.6是在Pad Designer里。打开之后几个关键参数需要确认钻孔直径Drill常规通孔过孔0.2mm到0.3mm是比较常见的范围。板厂能力一般能做到最小0.15mm的机械钻孔但良率会下降成本会上升。我一般用0.25mm或0.3mm兼顾成本和可靠性。焊盘直径Regular Pad通常是钻孔直径的1.8到2.2倍。比如0.3mm的钻孔焊盘外径取0.6mm左右。这个比例保证了足够的环宽Annular Ring避免破环。阻焊开窗Solder Mask一般比焊盘大0.05mm到0.1mm。如果是盖油过孔Tented Via阻焊开窗可以设为0或者比焊盘小。反焊盘Anti Pad用于负片平面层一般比焊盘大0.1mm到0.2mm确保过孔与平面铜皮之间有足够的隔离。注意过孔Padstack的命名要有规律比如VIA_0R3_0R6表示钻孔0.3mm、焊盘0.6mm。项目里过孔类型一多命名混乱会让你在Constraint Manager里找约束找到崩溃。2.2 过孔列表的配置Padstack做好之后需要在Allegro的Constraint Manager里把过孔分配到物理约束规则中。路径是Setup → Constraints → Physical在Physical Constraint Set里找到对应的Via List把刚才做的过孔加进去。这一步很多人会忽略导致后面放孔的时候发现Via List里没有自己想要的过孔类型。另外如果你用的是17.4版本可以在Setup → Constraints → Modes里确认Physical约束模式是否打开否则Physical规则页面可能不显示。2.3 栅格与捕捉设置放孔之前栅格设置直接影响你的操作效率。我一般会设置两套栅格大栅格用于布局阶段一般设0.5mm或1mm方便器件对齐。小栅格用于过孔放置一般设0.1mm或0.05mm保证过孔间距精确。在Allegro里切换栅格的快捷键是G你可以在命令窗口输入grid 0.1快速切换。另外Setup → Grids里可以设置多套栅格用下拉菜单快速切换。实操心得放阵列过孔的时候栅格设成和过孔间距一致比如过孔间距是0.8mm栅格就设0.8mm这样放出来的孔自动对齐不需要后期再调。3. 单孔放置最基础但最容易踩坑的操作3.1 手动放置单个过孔的三种方式Allegro里放单个过孔至少有三种常用方式各有适用场景第一种菜单操作。路径是Place → Via然后在Options面板里选择过孔类型点击PCB上的目标位置即可放置。这种方式最直观适合偶尔放几个孔的场景。第二种快捷键操作。在Allegro的命令窗口直接输入add via然后回车鼠标变成十字光标点击放置。我一般会把add via绑定到一个快捷键上比如F2这样放孔速度会快很多。设置快捷键的路径是Tools → Utilities → Keyboard Editor或者直接编辑env文件。第三种复制已有过孔。选中一个已经放好的过孔按CtrlC复制然后CtrlV粘贴到目标位置。这种方式适合过孔类型已经确定、只需要批量复制的场景。但要注意复制过孔的时候Allegro默认会保留原过孔的Net属性如果你复制的是一个GND网络的过孔粘贴出来的也是GND网络这在某些情况下会带来麻烦。3.2 过孔网络属性的处理放一个过孔它属于哪个网络这件事在Allegro里有几种处理方式如果过孔放在某个网络的铜皮或走线上Allegro会自动把过孔分配给该网络。如果过孔放在空白区域过孔没有网络属性需要手动指定。可以在Options面板里勾选Assign Net然后选择目标网络。常见问题很多人在BGA区域放了一堆过孔结果发现过孔没有网络属性DRC报了一堆unconnected。原因就是过孔放在空白区域没有自动吸附到网络上。解决办法是放孔之前先确认目标位置有铜皮或走线或者放完之后手动Assign Net。3.3 过孔与铜皮的连接方式过孔和铜皮的连接方式直接影响焊接可靠性和电流承载能力。Allegro里过孔与铜皮的连接方式由Padstack里的Thermal Relief和Anti Pad定义同时在Constraint Manager里也有相关约束。对于电源和地过孔我一般用全连接Full Contact也就是过孔焊盘直接和铜皮连在一起不做过热焊盘。这样电流承载能力最强但焊接时散热快手工焊接会稍微困难一点。对于信号过孔如果连接到平面层一般用热焊盘Thermal Relief方便焊接。在17.4里过孔与铜皮的连接方式可以在Setup → Constraints → Physical → Same Net Spacing里进一步细化比如设置过孔到铜皮的间距、过孔到过孔的间距等。4. Via Array阵列过孔批量放置的核心方法4.1 Via Array功能的位置与基本用法阵列过孔是Allegro里批量放孔最直接的工具。路径是Place → Via Array17.4里在Place菜单下16.6可能在Place → Via Array或者通过其他入口。打开Via Array对话框之后几个关键参数需要设置Via Padstack选择你要用的过孔类型。Array Type阵列类型有Matrix矩阵、Perimeter周边、Fill填充等选项。Spacing X / Spacing YX方向和Y方向的过孔间距。Rows / Columns行数和列数。Rotation阵列旋转角度。设置好之后在PCB上框选一个区域Allegro会自动在该区域内生成阵列过孔。4.2 不同阵列类型的适用场景Via Array的几种阵列类型用对了场景效率翻倍用错了就是给自己找麻烦阵列类型适用场景注意事项MatrixBGA区域、规则排列的散热过孔需要精确设置行列数和间距Perimeter屏蔽罩接地、连接器周边接地沿选定区域边缘放置一圈过孔Fill大面积铜皮散热、电源平面互联自动填充间距均匀Along Path沿走线或板边放置需要先选中一条路径我个人的经验是BGA区域用Matrix最合适因为BGA焊球本身就是规则排列的过孔跟着焊球走就行。大面积散热焊盘用Fill让工具自动算间距比手动放快得多。屏蔽罩接地用Perimeter沿着屏蔽罩边框放一圈既美观又可靠。4.3 阵列过孔与禁布区的关系放阵列过孔的时候最容易忽略的就是禁布区Keepout。如果你在禁布区里放了过孔DRC会报错而且后期改起来很麻烦。Allegro里可以在放阵列过孔之前先用Setup → Areas → Keepout定义禁布区然后在Via Array对话框里勾选Obey Keepouts这样工具会自动避开禁布区。实操心得我一般会在BGA区域先画一个Keepout把BGA焊盘区域框起来然后放阵列过孔的时候让工具自动避开。这样既保证了过孔不会压到焊盘又不会漏掉该放孔的地方。4.4 阵列过孔的间距计算阵列过孔的间距不是随便设的需要考虑几个因素板厂加工能力过孔到过孔的最小间距一般板厂要求0.2mm以上。如果间距太小钻孔时容易破环。电流承载能力电源过孔的数量和间距决定了电流承载能力。一般来说一个0.3mm钻孔的过孔载流能力大约1A到1.5A。如果你需要承载5A电流至少需要4到5个过孔。散热需求散热过孔越多越好但受限于空间。一般散热焊盘上的过孔间距取1mm到1.5mm比较合适。举个例子假设你需要给一个5A的电源网络放阵列过孔过孔钻孔0.3mm单个过孔载流1.2A那么至少需要5个过孔。如果焊盘面积是5mm×5mm过孔间距取1mm可以放5×525个过孔远远满足需求。但实际中还要考虑焊盘上的锡膏面积过孔太多会导致焊接时锡膏流失所以一般取10到15个过孔比较合适。5. 高效过孔放置的进阶技巧5.1 利用Copy与Paste批量复制过孔Allegro的复制粘贴功能在过孔放置上非常实用。你可以选中一组已经放好的过孔CtrlC复制然后CtrlV粘贴到目标位置。粘贴的时候Allegro会保留过孔的所有属性包括网络、Padstack类型等。但有一个细节需要注意粘贴过孔的时候Allegro默认会以鼠标点击位置为参考点。如果你复制的是一组过孔粘贴时鼠标点击的位置就是这组过孔中某个过孔的参考位置。我一般会先选中一个基准过孔然后复制整组粘贴时点击目标位置的对应基准点这样对齐最准确。5.2 使用Skill脚本自动化放孔如果你经常需要放大量规则排列的过孔Skill脚本是终极解决方案。Allegro支持Skill语言你可以写一个脚本自动在指定区域生成阵列过孔。下面是一个简单的Skill脚本示例用于在指定区域生成矩阵过孔axlCmdRegister(myViaArray myViaArray) defun(myViaArray () let((viaPad xStart yStart xSpacing ySpacing rows cols) viaPad VIA_0R3_0R6 xStart 0.0 yStart 0.0 xSpacing 1.0 ySpacing 1.0 rows 5 cols 5 for(i 0 rows-1 for(j 0 cols-1 axlDBAddVia( viaPad xStart j * xSpacing yStart i * ySpacing nil ) ) ) ) )这个脚本会在坐标(0,0)到(4,4)的区域内生成5×5的过孔阵列间距1mm。你可以把这段代码保存为.il文件然后在Allegro里通过Skill → Load加载或者在命令窗口输入skill load(myViaArray.il)加载。注意Skill脚本操作的是数据库层面执行前建议先保存文件避免误操作导致数据丢失。另外脚本里的坐标单位要和PCB设计单位一致Allegro默认单位是mil如果你用的是mm需要在脚本里做转换。5.3 利用Fanout功能自动为BGA出线放孔BGA出线是过孔放置最密集的场景之一。Allegro的Fanout功能可以自动为BGA焊盘生成过孔和短线大大减少手动操作。路径是Route → Fanout by Pick或者Route → Fanout。在Options面板里选择过孔类型和出线方向然后框选BGA区域Allegro会自动为每个焊盘生成过孔和短线。Fanout的几个关键设置Via Direction出线方向有Outward向外、Inward向内、Left、Right等选项。Via Padstack选择过孔类型。Line Width短线宽度一般和走线宽度一致。Max Length短线最大长度。实操心得Fanout之前一定要确认BGA焊盘的间距和过孔尺寸是否匹配。如果BGA焊盘间距是0.8mm过孔焊盘外径0.6mm那么过孔放在两个焊盘之间是放不下的需要把过孔放在焊盘外侧或者用更小的过孔。我一般会先用一个BGA焊盘试一下Fanout确认没问题再批量操作。5.4 过孔替换与批量修改项目后期如果发现过孔类型选错了比如钻孔太小导致载流不够或者焊盘太大导致间距违规需要批量替换过孔。Allegro里可以用Tools → Padstack → Replace功能选中要替换的过孔然后选择新的Padstack一键替换。替换的时候要注意如果新旧Padstack的钻孔尺寸不同替换后过孔周围的铜皮和走线可能需要调整。另外替换过孔不会自动更新Constraint Manager里的约束需要手动检查。6. 过孔放置中的常见问题与排查方法6.1 DRC报错过孔间距违规这是最常见的过孔相关问题。DRC报错信息一般是Via to Via Spacing或者Via to Line Spacing。排查思路如下确认Constraint Manager里的间距约束是否设置合理。路径是Setup → Constraints → Spacing找到对应的Spacing Constraint Set检查Via to Via、Via to Line等约束值。确认过孔的实际间距是否满足约束。可以在Allegro里用Display → Measure工具测量两个过孔之间的实际距离。如果约束值设置过大可以适当放宽。但要注意板厂的最小间距要求不能低于板厂能力。常见问题速查表问题现象可能原因解决方法过孔间距DRC报错约束值设置过大检查Spacing约束适当放宽过孔与走线间距报错走线太靠近过孔调整走线或移动过孔过孔与铜皮间距报错Anti Pad设置过小修改Padstack的Anti Pad尺寸过孔没有网络属性放在空白区域手动Assign Net或放在铜皮上过孔与焊盘重叠阵列过孔未避开焊盘设置Keepout或调整阵列参数6.2 过孔盖油与开窗的处理过孔盖油Tented Via和开窗Untented Via的选择直接影响PCB的外观和焊接质量。盖油过孔的表面覆盖阻焊层外观整洁但不利于调试时测量信号。开窗过孔的表面没有阻焊层方便测量但容易沾锡。在Allegro里过孔的盖油和开窗由Padstack里的Solder Mask层定义。如果Solder Mask开窗比焊盘大就是开窗过孔如果Solder Mask开窗为0或者比焊盘小就是盖油过孔。实操心得我一般把调试用的测试过孔做成开窗方便示波器探头接触。其他过孔全部盖油避免焊接时锡膏流入过孔。另外如果过孔在焊盘上Via in Pad必须做盖油或者填孔电镀否则焊接时锡膏会通过过孔流失。6.3 过孔与铜皮优先级的问题Allegro里铜皮有优先级的概念当过孔与铜皮重叠时铜皮的优先级决定了过孔与铜皮的连接方式。如果铜皮优先级设置不当可能导致过孔与铜皮之间的连接不符合预期。调整铜皮优先级的路径是选中铜皮右键Parameters在Shape Priority里设置优先级数值。数值越大优先级越高。一般电源铜皮的优先级高于地铜皮地铜皮的优先级高于信号铜皮。注意过孔与铜皮的连接方式还受到Padstack里Thermal Relief和Anti Pad的影响。如果铜皮优先级高过孔与铜皮的连接方式以铜皮设置为准如果过孔优先级高以Padstack设置为准。6.4 过孔导致平面层断裂的问题在电源平面或地平面上放大量过孔如果过孔间距太小可能导致平面层铜皮被过孔分割成碎片影响电流回流路径。这个问题在高频电路里尤其严重。排查方法是在Allegro里用Display → Shape查看平面层的铜皮分布如果发现铜皮被过孔分割成孤立的碎片就需要调整过孔间距或者增加铜皮连接桥。实操心得我一般会在平面层上放阵列过孔的时候故意留出几条“通道”让铜皮保持连通。比如过孔间距设1mm但每隔5行留一行不放孔这样铜皮就有足够的连接宽度。7. 过孔放置完成后的检查与验证7.1 DRC检查与修复过孔放完之后必须跑一次完整的DRC检查。路径是Tools → Quick Reports → Design Rules Check或者直接点工具栏的DRC按钮。DRC检查重点关注以下几类错误Via to Via Spacing过孔间距违规。Via to Line Spacing过孔与走线间距违规。Via to Shape Spacing过孔与铜皮间距违规。Unconnected Via过孔没有网络属性。Via Outside Keepout过孔在禁布区内。DRC报错之后不要急着一个个手动改。Allegro提供了DRC Browser可以按错误类型筛选批量定位和修复。7.2 过孔数量与载流能力的验证对于电源和地过孔放完之后需要验证载流能力是否足够。我一般用两种方法经验估算一个0.3mm钻孔的过孔载流能力约1A到1.5A。根据电源网络的电流需求计算所需过孔数量。仿真验证如果项目对电源完整性要求高可以用Cadence Sigrity做直流压降仿真验证过孔和铜皮的载流能力。注意过孔载流能力还受到温升的影响。如果过孔周围散热条件差载流能力会下降。一般建议按经验值的70%到80%来设计留出余量。7.3 过孔与焊接工艺的匹配过孔放置不仅影响电气性能还影响焊接工艺。几个需要注意的点Via in Pad如果过孔放在焊盘上必须做填孔电镀或者盖油否则焊接时锡膏会通过过孔流失导致虚焊。散热过孔散热焊盘上的过孔如果太多太密会导致焊接时热量散失太快影响焊接质量。一般建议散热过孔间距1mm到1.5mm数量控制在10到15个。过孔盖油盖油过孔的表面阻焊层厚度要均匀否则可能导致过孔周围出现气泡或脱落。8. 我个人的一些实操体会过孔放置这件事说难不难说简单也不简单。我做了这么多年PCB设计踩过的坑总结下来就是几句话第一Padstack一定要提前做好。不要等到放孔的时候才发现过孔列表里没有想要的类型那时候再回头做Padstack浪费时间不说还容易出错。第二阵列过孔是效率神器但参数要算清楚。间距、行列数、载流能力这些都要提前算好不要凭感觉设。我见过有人放阵列过孔间距设0.5mm结果DRC报了几百个错误返工了一整天。第三Skill脚本值得学。如果你经常画同类型的板子写一个Skill脚本自动放孔效率提升不是一点半点。我写过一个BGA Fanout的脚本原来需要半小时的Fanout操作脚本跑一遍只要几秒钟。第四DRC检查不能省。过孔放完之后一定要跑DRC而且要仔细看每一类错误。有些错误看起来无关紧要但到了板厂那里就是报废。第五和板厂沟通很重要。过孔的最小钻孔、最小间距、盖油工艺这些都要提前和板厂确认。不同板厂的工艺能力不一样你按A板厂的参数设计拿到B板厂去做可能就做不出来。最后再分享一个小技巧如果你在Allegro里放孔放累了可以试试用Tools → Padstack → Modify Design Padstack批量修改过孔参数比一个个手动改快得多。另外Allegro的Copy功能配合Paste Special可以批量复制过孔并保持网络属性这个在BGA区域放孔的时候特别好用。过孔放置只是PCB设计中的一个环节但它直接影响板子的电气性能、散热能力和可制造性。花点时间把这件事做扎实后面出光绘、做板子的时候会省心很多。
返回列表