ARTICLE DETAIL

资讯详情

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

Cadence Allegro 17.4过孔设计全攻略:从通孔到盲埋孔实战

Cadence Allegro 17.4过孔设计全攻略:从通孔到盲埋孔实战 1. 过孔这件事远比你想的要深画PCB的人都有一个共识过孔选不对后面全白费。我见过太多项目原理图没问题布局也漂亮结果板子回来一测信号完整性一塌糊涂电源纹波大得离谱最后追根溯源问题就出在过孔上。尤其是在Cadence Allegro 17.4这个版本里过孔的管理方式和PADS、Altium Designer完全不是一个逻辑很多人从AD转过来第一步就卡在“怎么放一个过孔”这种看似最简单的问题上。这篇内容就是把我这些年用Allegro 17.4做PCB Editor时关于过孔的所有实操经验系统性地梳理一遍。从最基础的通孔设置到扇出策略再到盲埋孔的层叠配置最后聊一聊电源过孔和高速信号过孔的处理技巧。不管你是刚接触Allegro的新手还是已经画了几块板子但总觉得过孔这块不够通透的老手应该都能从中找到一些可以直接抄作业的东西。先明确一个概念在Allegro的语境里过孔不是一个孤立的元素它是和焊盘、层叠、约束规则深度绑定的。你不可能脱离Padstack Designer单独去谈过孔设置也不可能脱离Constraint Manager去谈过孔规则。所以这篇内容会按照“先建库、再放置、后优化”的逻辑来展开每一步都配上我实际项目中的参数和踩坑记录。2. 通孔、盲孔、埋孔到底怎么选2.1 三种孔的本质区别与成本账很多人一开始分不清盲孔和埋孔其实用一句话就能说清楚通孔是从顶层打到底层盲孔是从表层打到内层埋孔是从内层打到内层。通孔你打完能看见两头盲孔只能看见一头埋孔两头都看不见。但真正做项目的时候选哪种孔不是技术问题是成本问题。我拿一个典型的8层板举例孔类型钻孔方式层间连接相对成本适用场景通孔一次钻穿顶层到底层1倍基准绝大多数常规设计盲孔激光或控深钻表层到内层2-3倍高密度BGA扇出埋孔多次压合前钻内层到内层3-5倍超高层数HDI板这个成本倍数不是拍脑袋来的。通孔一次钻穿工序最简单。盲孔需要控深钻或者激光钻而且压合顺序有讲究。埋孔更麻烦必须在压合之前就把内层钻好、电镀好然后才能压合一旦某一层埋孔出了问题整块板子报废良率损失很大。我个人的经验是能用通孔解决的问题绝对不要用盲埋孔。只有当BGA的球间距小到0.5mm以下通孔扇出实在走不通的时候才考虑盲孔。埋孔一般用在10层以上的HDI板普通项目基本碰不到。2.2 什么情况下必须上盲埋孔说几个我实际遇到过的场景。第一个是0.4mm pitch的FBGA焊盘直径只有0.2mm左右焊盘间距0.4mm两个焊盘之间只有0.2mm的缝隙。通孔的钻孔直径最小也要0.2mm加上环宽根本放不下。这时候只能用盲孔从表层打到第二层孔径做0.1mm激光钻孔。第二个场景是电源平面和地平面之间的连接。有些设计为了降低电源阻抗需要在电源层和地层之间打大量过孔但通孔会穿透整个板子占用其他层的布线空间。这时候用埋孔连接电源和地不占用表层空间布线密度能提升不少。第三个场景是射频板。射频信号对过孔的寄生参数非常敏感通孔的stub效应在毫米波频段会导致严重的信号反射。盲孔因为没有贯穿整个板子stub短很多高频性能明显更好。注意盲埋孔不是你想用就能用的必须先和PCB板厂确认他们的工艺能力。不同板厂的激光钻孔最小孔径、控深钻精度、压合次数都不一样。我一般会在设计前直接找板厂的工艺工程师要一份最新的能力表按照他们的参数来设计避免设计完了发现做不了。2.3 Allegro中盲埋孔的层叠设置逻辑在Allegro 17.4里设置盲埋孔核心是在Padstack Designer里定义起始层和结束层。打开Padstack Designer在Drill标签页里你会看到“Drill”和“Blind/Buried”两个选项。选Blind/Buried之后Start Layer和End Layer就可以选了。这里有一个很容易踩的坑Allegro里的层定义必须和Cross Section里配置的层叠完全一致。比如你在Cross Section里定义的是TOP、GND02、ART03、PWR04、ART05、GND06、ART07、BOTTOM那么你在设置盲孔的时候Start Layer选TOPEnd Layer选GND02这就是一个从顶层到第二层的盲孔。如果你选错了层Allegro不会报错但出Gerber的时候会出问题。我一般会建一个专门的过孔库文件把所有用到的过孔类型都提前建好。命名规则用“VIA_孔径_起始层_结束层”的格式比如VIA_10_TOP_GND02表示孔径0.1mm从顶层到第二层的盲孔。这样在Constraint Manager里引用的时候一目了然不会搞混。3. Padstack Designer建过孔的全流程拆解3.1 从零开始建一个标准通孔打开Padstack Designer第一步是选Padstack的类型。过孔选“Via”不要选“Through”。然后设置单位我习惯用毫米因为大部分板厂的工艺能力表都是毫米单位。接下来是Drill标签页。这里要填三个关键参数Drill Diameter钻孔直径、Plating是否电镀、以及钻孔符号。钻孔直径怎么定我的经验是孔径 成品孔径 0.1mm左右的余量。比如你想要0.3mm的成品孔钻孔直径设0.4mm。但具体余量要看板厂的工艺有些板厂能力强0.05mm就够了。电镀选项一般选“Plated”除非你做的是安装孔。钻孔符号可以选一个简单的形状比如圆形或者十字这个符号会显示在钻孔图上方便板厂识别。然后是Padstack的各层定义。对于通孔来说需要定义的有Regular Pad规则焊盘、Thermal Relief热风焊盘、Anti Pad隔离焊盘。这三者在不同的层上都要定义。Regular Pad是过孔在铜层上的实际焊盘一般比钻孔直径大0.2-0.3mm。比如钻孔0.4mm焊盘做0.6mm或0.7mm。Thermal Relief用于负片层连接电源或地的时候用内径比钻孔大外径比焊盘大开口宽度一般是焊盘直径的0.5倍左右。Anti Pad也用于负片层但它是隔离用的直径比焊盘大0.2mm左右。我见过很多新手在建过孔的时候只定义了Regular Pad忘了Thermal Relief和Anti Pad结果在负片层上过孔和铜皮直接短路了。这个坑一定要避开。3.2 盲埋孔的参数设置与层对定义盲埋孔的设置比通孔复杂一些因为涉及到**层对Layer Pair**的概念。在Padstack Designer里你需要为每一个层对单独定义焊盘。举个例子一个从TOP到GND02的盲孔它的层对就是TOP-GND02。在这个层对上你需要定义TOP层的焊盘和GND02层的焊盘。中间的介质层不需要定义焊盘因为孔没有穿过它们。这里有一个关键点盲孔的焊盘在起始层和结束层上都要定义而且尺寸可以不同。比如TOP层的焊盘可以大一点方便焊接和探测GND02层的焊盘可以小一点节省空间。我一般TOP层焊盘比钻孔大0.25mm内层焊盘比钻孔大0.2mm。还有一个容易忽略的参数是钻孔的深度。Allegro里可以通过设置“Drill Offset”来控制钻孔的起始位置但实际生产中盲孔的深度是由板厂的控深钻设备决定的。你在设计文件里标注清楚层对就行了板厂会根据层叠结构来计算钻孔深度。提示盲埋孔设计完成后一定要在Allegro的Cross Section里检查一遍层叠顺序。我遇到过一次Cross Section里TOP下面直接是ART03但Padstack里定义的盲孔是从TOP到GND02结果Allegro在DRC检查时报了一堆莫名其妙的错误。后来发现是Cross Section的层顺序和Padstack的层对不匹配改过来就好了。3.3 过孔命名规范与库管理过孔建好之后命名和管理也很重要。我见过一个项目前任工程师建了二十多个过孔命名全是“via1”“via2”“via3”后面的人根本不知道哪个是哪个改板的时候不敢删也不敢用最后只能全部重建。我的命名规则是这样的VIA_类型_孔径_起始层_结束层。比如VIA_TH_040_TOP_BOT通孔钻孔0.4mm顶层到底层VIA_BL_010_TOP_GND02盲孔钻孔0.1mm顶层到第二层VIA_BR_015_GND02_PWR04埋孔钻孔0.15mm第二层到第四层这样命名之后在Constraint Manager里引用的时候一眼就能看出这个过孔的类型和适用范围。而且过孔库文件要单独管理不要和焊盘库混在一起。我一般会在项目目录下建一个“padstacks”文件夹专门放过孔文件然后在Allegro的库路径里把这个文件夹加进去。4. 扇出策略BGA和FBGA的过孔怎么打4.1 扇出的基本逻辑与Allegro中的操作入口扇出Fanout是过孔使用最密集的场景。BGA下面几百个球每个球都要通过过孔引出来怎么打、往哪打、打多大直接决定了布线的难易程度。在Allegro 17.4里扇出的入口在Route菜单下的“Fanout by Pick”或者“Auto Fanout”。我一般用“Fanout by Pick”因为可以手动控制每个球的扇出方向比自动扇出灵活得多。扇出的基本逻辑是从BGA焊盘引一小段线然后打一个过孔再从过孔引到内层。这段小线的长度和角度有讲究。太长会占用布线通道太短可能导致过孔和焊盘之间的间距不够。我一般把这段线控制在0.5mm以内角度用45度或者90度。4.2 不同Pitch BGA的扇出参数对照BGA的pitch不同扇出策略完全不一样。我整理了一个对照表是我实际项目中常用的参数BGA Pitch焊盘直径过孔孔径过孔焊盘扇出方式可走线通道1.0mm0.5mm0.3mm0.6mm直接扇出两线0.8mm0.4mm0.25mm0.5mm直接扇出两线0.65mm0.3mm0.2mm0.4mm斜向扇出单线0.5mm0.25mm0.15mm0.35mm斜向扇出单线0.4mm0.2mm0.1mm0.25mm盲孔扇出单线这个表里的参数不是绝对的具体还要看板厂的工艺能力和你的布线密度要求。但有一个原则是不变的过孔焊盘之间的间距必须大于板厂的最小线宽间距。比如0.5mm pitch的BGA焊盘间距0.5mm过孔焊盘0.35mm两个过孔焊盘之间的缝隙只有0.15mm如果你的线宽是0.1mm间距0.1mm那刚好能过一根线。如果线宽再大一点就走不了了。4.3 扇出时的常见错误与规避方法扇出最容易犯的错误是过孔打在焊盘上。有些新手为了省空间直接把过孔放在BGA焊盘的正上方这在工艺上叫“Via in Pad”需要板厂做树脂塞孔成本高不说焊接的时候还容易漏锡。除非你确实需要否则不要这么干。第二个常见错误是扇出方向不一致。BGA四个边的球扇出方向应该分别朝外这样布线通道最顺畅。如果所有球都朝同一个方向扇出内侧的球过孔会挤在一起根本走不出来。我一般会按照BGA的四个象限分别设置扇出方向每个象限的球朝对应的外侧扇出。第三个错误是过孔太靠近BGA焊盘。过孔和焊盘之间要有足够的间距一般至少0.15mm否则焊接的时候锡膏会顺着过孔流走。Allegro的DRC可以检查这个间距在Constraint Manager里设置“Via to Pad”的间距规则就行了。实操心得扇出之前先在Constraint Manager里把过孔和焊盘、过孔和过孔、过孔和线的间距规则设好。我一般会设三档过孔到焊盘0.15mm过孔到过孔0.2mm过孔到线0.15mm。设好之后扇出的时候Allegro会自动检查有冲突的地方会高亮显示省得后面改板的时候才发现问题。5. 电源过孔与高速信号过孔的处理技巧5.1 电源过孔的数量计算与阵列布局电源过孔和信号过孔完全是两码事。信号过孔关注的是阻抗和反射电源过孔关注的是载流能力和阻抗。先说载流能力。一个0.3mm孔径、0.6mm焊盘的通孔镀铜厚度25微米的话载流能力大约是1A左右。但这个数字不是固定的和温升要求有关。如果允许温升10度载流能力可以到1.5A如果只允许温升5度那只能到1A。我一般会按照每安培至少两个过孔来设计留一倍余量。比如一个电源网络需要过3A电流我会打6-8个过孔。如果空间允许打10个也不嫌多因为过孔多了之后电源平面的阻抗会明显降低。电源过孔的布局也有讲究。不要把所有过孔挤在一起要均匀分布在电源平面的连接区域。我一般会沿着电源平面的边缘打一排过孔间距1mm左右。如果是BGA下面的电源球就在每个电源球的附近打2-4个过孔直接连到电源平面。5.2 高速信号过孔的阻抗控制与Stub处理高速信号过孔的核心问题是阻抗不连续和Stub效应。阻抗不连续是因为过孔的焊盘比走线宽而且过孔穿过不同层的时候参考平面的变化会导致阻抗突变。解决方法是在过孔周围加回流地过孔。一般每个信号过孔旁边打1-2个地过孔间距0.5mm以内。地过孔的作用是给信号提供一个最近的回流路径减少阻抗突变。Stub效应是通孔特有的问题。信号从顶层进入经过过孔到达内层但过孔还会继续往下延伸到板子底部这段多余的长度就是Stub。Stub越长信号反射越严重。在10Gbps以上的信号中Stub超过0.5mm就会导致明显的眼图闭合。解决Stub的方法有两种盲孔和背钻。盲孔前面说过了从表层打到目标层就结束没有Stub。背钻是在通孔做完之后用一个大钻头把多余的铜管钻掉相当于把Stub挖掉。背钻的深度控制很关键一般要留0.2mm左右的余量不能钻到目标层的铜皮。在Allegro里背钻的设置是在Padstack Designer里加一个“Backdrill”层。你需要定义背钻的起始层和结束层以及背钻的孔径。背钻孔径一般比钻孔大0.2mm左右比如钻孔0.3mm背钻用0.5mm。5.3 过孔对信号完整性的影响实测对比我做过一组实测用同一块板子同样的走线长度只改变过孔的处理方式看信号质量的变化。测试信号是5Gbps的差分信号结果如下过孔处理方式插入损耗2.5GHz回波损耗2.5GHz眼高眼宽普通通孔-1.2dB-12dB180mV0.7UI通孔背钻-0.8dB-18dB220mV0.85UI盲孔-0.6dB-22dB250mV0.9UI盲孔回流地过孔-0.5dB-25dB270mV0.92UI这组数据很直观地说明了问题背钻和盲孔对信号完整性的改善非常明显而回流地过孔虽然看起来不起眼但效果也很显著。如果你的项目对信号完整性要求高这几个手段该上就上不要省。注意背钻和盲孔都会增加成本而且不是所有板厂都能做。背钻的精度要求很高钻深公差一般要控制在±0.1mm以内。选板厂的时候一定要确认他们的背钻能力最好让他们提供一份背钻的工艺说明。6. 过孔相关的DRC设置与常见报错处理6.1 Constraint Manager中过孔规则的配置Allegro的Constraint Manager是过孔规则的核心。打开Constraint Manager在“Physical”和“Spacing”两个约束集里都有过孔相关的规则。Physical约束里主要是设置过孔的最大和最小孔径以及允许使用的过孔类型。我一般会在这里限制只能用库里面已经建好的过孔防止有人随手放一个没经过验证的过孔。Spacing约束里需要设置的有Via to Via、Via to Pad、Via to Line、Via to Shape。这几个间距规则我前面提过一般设0.15-0.2mm。但要注意不同的网络类别可以设不同的规则。比如电源网络的过孔间距可以设小一点因为电源过孔通常比较密集信号网络的过孔间距可以设大一点保证信号质量。还有一个容易被忽略的规则是Hole to Hole也就是钻孔到钻孔的间距。这个间距是板厂钻孔工艺决定的一般最小0.2mm。如果两个过孔的钻孔间距小于这个值板厂做不了。Allegro的DRC可以检查这个在Manufacturing约束里设置。6.2 过孔DRC报错速查表我整理了一份常见的过孔DRC报错和解决方法报错信息原因解决方法Via to Via Spacing两个过孔间距小于规则值移开过孔或调整规则Via to Pad Spacing过孔和焊盘间距不足移开过孔或缩小焊盘Hole to Hole Spacing钻孔间距小于板厂能力移开过孔或换更小孔径Via Not Allowed使用了未授权的过孔类型在Constraint Manager中添加Backdrill Depth Error背钻深度设置错误检查背钻层对和深度Unplated Hole to Copper非电镀孔和铜皮间距不足增大Anti Pad或移开铜皮这份表是我从实际项目中总结出来的基本上覆盖了90%以上的过孔DRC问题。遇到报错的时候先看报错信息然后对照这张表一般都能快速定位。6.3 过孔检查清单与出Gerber前的确认事项出Gerber之前过孔这块一定要做一次全面检查。我一般会按照这个清单逐项确认过孔类型是否都在板厂能力范围内孔径、焊盘、间距都要确认。盲埋孔的层对是否正确在Cross Section里核对一遍。背钻深度是否合理留够余量不要钻到目标层。电源过孔数量是否足够按照载流要求核算一遍。高速信号过孔是否有回流地过孔每个信号过孔旁边至少一个地过孔。过孔是否被阻焊覆盖如果不希望过孔开窗要在阻焊层里盖住。钻孔图是否标注清楚不同孔径的过孔要用不同的钻孔符号。这七项检查做完基本上不会出大问题。我见过一个项目出Gerber的时候忘了检查盲埋孔的层对结果板厂做出来的板子盲孔打穿了整批报废。这个教训很深刻所以现在每次出Gerber前都会把这份清单过一遍。7. 我踩过的那些过孔坑说几个我实际踩过的坑都是血泪教训。第一个坑是过孔焊盘太小导致焊接不良。有一次做一个0.8mm pitch的BGA板子为了省空间过孔焊盘只做了0.4mm钻孔0.25mm。结果板子回来之后BGA下面的过孔有虚焊返修了好几次。后来把焊盘加大到0.5mm问题就解决了。所以过孔焊盘不要做得太极限留点余量。第二个坑是盲孔层对搞错导致短路。有一次做一个6层板盲孔从TOP到GND02但我在Padstack里把End Layer设成了ART03。Allegro没报错但板厂做出来之后盲孔打到了第三层和第三层的信号线短路了。后来发现是Cross Section里的层顺序和Padstack里的层对不一致。这个坑让我养成了一个习惯每次设置盲埋孔之前先把Cross Section打开放在旁边对照着设置。第三个坑是电源过孔数量不够导致压降过大。有一个项目电源网络需要过2A电流我只打了3个过孔。结果板子回来一测电源末端的压降有0.15V超出了芯片的供电要求。后来重新改板打了8个过孔压降降到了0.05V以内。所以电源过孔的数量一定要按照载流要求来算不要凭感觉。第四个坑是背钻深度没留余量导致钻到目标层。有一次做背钻板厂反馈说背钻深度太深钻到了目标层的铜皮导致连接断开。后来把背钻深度减少了0.1mm问题解决。背钻的深度公差很大一定要留够余量一般至少0.2mm。这些坑说起来都是小事但每一个都可能导致项目延期或者板子报废。做PCB设计细节决定成败过孔就是最典型的例子。8. 从通孔到盲埋孔我的过孔设计原则做了这么多年PCB设计关于过孔我总结了几条自己的原则不一定对但都是实战中验证过的。第一条能用通孔就用通孔不要为了炫技上盲埋孔。盲埋孔的成本和风险都比通孔高得多除非确实需要否则不要用。第二条过孔参数要留余量不要做到板厂能力的极限。比如板厂说最小孔径0.2mm你就用0.25mm板厂说最小间距0.15mm你就用0.2mm。留余量不是为了好看是为了给板厂的生产波动留空间。第三条电源过孔宁多勿少。电源过孔多了阻抗低压降小温升低没有坏处。唯一的影响是占用一点空间但和电源质量比起来这点空间不算什么。第四条高速信号过孔一定要加回流地过孔。这个习惯我从做第一个10Gbps项目的时候就养成了效果非常明显。地过孔不占多少空间但对信号完整性的改善是立竿见影的。第五条过孔库要统一管理命名要规范。一个项目里不要出现多个版本的过孔库命名要能看出孔径和层对。这样后面改板或者别人接手的时候不会一头雾水。最后再分享一个小技巧在Allegro里可以用“Tools - Reports”生成一份过孔统计报告列出所有用到的过孔类型和数量。出Gerber之前看一眼这份报告确认没有多余的或者错误的过孔类型能避免很多低级错误。这个功能我用了好几年了每次都能发现一些意想不到的问题。
返回列表