提到PCB设计,很多人第一反应是走线、铺铜、层叠、阻抗,却总把“孔”当成一件理所当然的小事。可是真到了打样回来调试,板子不工作、信号乱跳、电源压降大、甚至过孔直接烧断的时候,回头一查,问题恰恰出在这些不起眼的孔上。我这些年经手过的板子里,因为孔出问题的案例至少占三成,高速板、电源板、单片机最小系统板全都有份。
这篇就专门把PCB里的“孔”一次讲透:从钻孔文件怎么生成,到通孔/盲孔/埋孔/背钻怎么选,再到孔径怎么算电流、过孔怎么影响信号完整性,以及Altium Designer、Allegro、嘉立创EDA这些常用软件里的孔设置和制造端的工艺坑。无论你是刚入门画第一块板子的学生,还是被过孔寄生参数折磨过的硬件工程师,这篇都能给你一些能直接用上的经验。
1. 一枚过孔的前半生:从焊盘符号到钻孔文件的真实路径
1.1 孔在PCB里到底是怎么“长”出来的
先说最基本的物理结构。一枚过孔,不是钻完孔就完事了。工厂拿到你的Gerber和钻孔文件之后,先钻孔,然后在孔壁上电镀一层铜,让顶层和底层的铜箔通过孔壁导通。这层电镀铜的厚度一般在20到25微米左右,别小看这二十几微米,过孔的载流能力、抗热冲击能力全靠它。孔周围还有一圈焊盘(Pad),用来连接走线和铜皮;如果过孔要绝缘,焊盘外围还要有比孔径大一圈的间隙,俗称反焊盘(Anti-pad)。
很多人以为“孔”就是钻孔文件里的那个圆圈坐标,其实在软件里,一个过孔是由多个要素共同定义的:孔径、焊盘外径、反焊盘直径、阻焊开窗大小。这四个参数任何一个设置错了,板子都可能在制造或者调试阶段出问题。我见过最典型的案例是,有人只设置了孔径,没设置阻焊开窗,结果过孔被整片绿油盖住,贴片后测试点全部不可用,只能刮开绿油手工补测。
1.2 钻孔文件与Gerber文件的分工
这里必须把概念理清楚:Gerber文件描述的是每一层的图形,包括铜箔层、阻焊层、丝印层;而钻孔文件(通常是Excellon格式)描述的是孔的位置、孔径和是否金属化。这两个文件是分开的,打样时都要一起提交给工厂。很多新手只导出Gerber忘记导出钻孔文件,或者钻孔文件里孔的坐标和Gerber里面的焊盘对不上,结果就是板子回来,孔的位置偏了,或者干脆没钻孔。
软件里导出的时候,Altium Designer是在“File -> Fabrication Outputs -> NC Drill Files”生成钻孔文件,同时还要在“Gerber Files”里勾选“Include Drill Holes”才能在Gerber里看到孔符号。Allegro的话是Manufacture -> NC -> Drill,输出后还要跑一遍Artwork检查。嘉立创EDA相对省心,导出制造文件时钻孔和Gerber会一起打包。但不管用哪个软件,我建议导出后用CAM350或者嘉立创EDA的在线查看器打开,把钻孔层和铜箔层叠在一起看一眼,确认孔的位置和焊盘完全重合,这一步能挡掉至少一半的工艺事故。
1.3 孔位阵列的识别经验:那一排整整齐齐的孔到底是什么
热词里有一条特别有代表性:“12.2mil的孔整齐一排一排的,一共248个,不确定是via还是插件孔,但这些孔又有背钻。”这类问题我太熟了,凡是遇到数百个孔排成整整齐齐的阵列,十有八九是BGA、连接器或者CPU的电源/地引出扇出孔,而不是插件孔。12.2mil换算过来大约是0.31mm,这个尺寸在高速板里太常见了。
怎么判断是过孔还是插件孔?最简单的方法是在CAM软件里看钻孔文件的属性:PTH(Plated Through Hole,金属化孔)和NPTH(Non-Plated Through Hole,非金属化孔)在钻孔文件里是有标记区分的,前者是电镀孔,后者不是。另一个办法是看背钻层,背钻只对过孔做,目的是去掉高速信号孔多余的那段“stub”,所以只要文件里有Backdrill层,可以确定这些孔是信号过孔,不是插件孔。插件孔一般焊盘大、间距大,不会密集到248个挤在一起还只有12.2mil孔径。
2. 通孔、盲孔、埋孔、背钻,选型背后的成本和信号逻辑
2.1 四类孔的真实对比
| 孔类型 | 制造方式 | 成本 | 适用场景 | 典型问题 |
|---|---|---|---|---|
| 通孔 | 从上钻到下,全板钻孔 | 最低 | 普通信号、电源、插件 | 高频时存在stub效应 |
| 盲孔 | 只连接到表层与相邻内层,激光钻孔 | 中等 | HDI板,高密度走线 | 制造工序多,良率略低 |
| 埋孔 | 完全藏在内层,不露出表面 | 高 | 高端多层板,板内互连 | 一旦损坏不可维修 |
| 背钻 | 通孔钻完后,再从反面钻掉一段多余的孔壁铜 | 通孔基础上增加工序 | 10Gbps以上高速信号 | 背钻深度公差需要控制 |
很多消费类板子为了省成本,全部用通孔,也能正常工作。但一旦信号速率上去,比如PCIe、USB3.0、DDR4/DDR5,通孔的stub效应就会显现。信号沿整个过孔柱走下去,到了不需要连接的底层,又反射回来,反射波叠加到原信号上,眼图立刻变差。解决思路有两个:一是换盲埋孔设计,二是用背钻把多余的stub钻掉。
2.2 背钻的设计与坑
背钻的实现原理很直接:正常通孔是顶层到底层全导通,但如果你只需要顶层到第三层的传输,那四层到八层之间的那段孔壁铜就是多余的。背钻用大一号的钻头从底面反向钻到特定深度,把这截多余的铜去掉,只保留需要的前半段。
背钻最关键的参数是深度公差。因为多层板内层的铜箔位置有生产误差,背钻不能精确停在某个介质层边界,一般会设定一个“背钻深度余量”,比如比本来要保留的过孔段多留3到5mil。这个余量太大了,stub没削干净,高速信号照样被反射;太小了,可能钻到需要保留的过孔段,甚至切断连接。我个人的经验是,背钻余量设3mil左右,而且必须和板厂提前确认他们的背钻对准能力,不要照着理想数值写,要按工厂的实际能力来。
2.3 盲埋孔不是想用就能用
盲孔和埋孔适合高密度互连,也就是HDI板,核心价值是给走线腾空间。比如一片8层板,表底层走器件扇出,内层走电源和地平面,如果某些信号必须从顶层跨到第四层,用埋孔就能避免穿透整个板厚,减少对其他层的干扰。但代价也很明显:每一类盲埋孔都是一道额外的激光钻孔和电镀工序,成本是通孔的几倍,交期也更长。所以我的建议是,能不盲埋就不盲埋,先用通孔做一版,验证功能和信号,实在布线布不通再上盲埋,别第一阶段就把成本拉满。
3. 孔径的电气参数:0.3mm过孔到底能过多少电流
3.1 一个过孔的载流能力
热词里多次出现“0.3mm能过多少电流”的搜索,这也是硬件工程师问得最频繁的问题。严格说,过孔的载流取决于孔壁电镀铜的截面积,而不是孔径本身。孔径越大,孔的周长越大,电镀铜的横截面就越宽,能过的电流就越多。
工程上经常用经验值估算:过孔孔壁铜厚按20微米算,单孔载流密度一般取1A/0.3mm孔径以内比较保守。也就是说,普通0.3mm孔径的过孔,过1A电流基本没问题,但如果一个过孔要走2A、3A甚至更大电流,就不要单打独斗,要并联多个过孔分摊电流。我还习惯在电源通道上的每个关键节点放不少于两个0.3mm过孔,这样其中一个过孔因为制造瑕疵开路,另一个还能维持正常工作,电源轨不会直接掉电。
3.2 用IPC-2221公式算电镀铜截面
如果非要算得准确一点,可以用IPC-2221里的经验公式。对内部导体,载流量 I = 0.048 × ΔT^0.44 × A^0.725;对外层导体,I = 0.064 × ΔT^0.44 × A^0.725。这里ΔT是温升(摄氏度),A是铜的截面积(平方密耳)。
对于一个0.3mm孔径的过孔,孔壁周长约等于 π × 0.3mm ≈ 0.942mm,电镀铜厚25μm,那么截面积约等于 0.942mm × 0.025mm ≈ 0.02355平方毫米,换算成平方密耳大约是36.5。假设温升20℃,套公式算下来大约是1.79A。注意,这是理论值,实际板子还有散热条件、过孔周围的铜箔面积影响,所以我通常按公式计算结果的70%来使用。过孔周围多铺铜,载流能力会明显提升,这也是“散热孔”能承担电流的底层逻辑。
3.3 过孔的寄生电容与寄生电感
过孔的高频特性不能只看载流。一个过孔就是一个小的寄生电容加寄生电感。寄生生电感 L ≈ 0.5 × h × (1 + ln(4h/d)),单位是纳亨,h是过孔长度,d是孔径。比如1.6mm的板厚,0.3mm孔径,算下来大约1.2nH,频率越高,感抗越大。
寄生电容来自过孔焊盘和周围地铜皮之间的电场,约等于 C ≈ 1.41 × εr × D × d / (D - d),这里D是反焊盘直径。高频场景下,过孔电容会造成信号边沿变慢,过孔电感则会带来电源噪声。ADC/DAC这类混合信号电路,模拟电源和数字电源的过孔布局稍有不慎,时钟抖动和电源噪声就会串进采样结果。我的习惯是,高速信号过孔尽量少换层,每换一次层就是一次阻抗不连续点;如果必须换层,在换层的地方相邻层放一个地过孔,给返回电流提供最短回路,这个细节对眼图的改善立竿见影。
3.4 散热孔怎么打才有效
如果过孔用于散热,那么目标不是“导通电流”而是“导热”。铜的导热系数远高于FR4板材,热过孔把发热器件正下方的热量导到背面的大面积铜皮或者散热片上。经验做法是:器件底部的散热焊盘上打9个或16个0.3mm的过孔阵列,孔间距1mm左右,孔内最好做塞孔处理,避免回流焊时锡膏顺着孔流走导致虚焊。尤其是电源芯片、MOS管、LED驱动这类大功率器件,散热过孔的数量直接决定器件温升,我见过有人只打4个孔,满载工作一小时就热保护,补到12个孔之后温度直接降了十几度。
4. PCB设计软件里的孔操作:从Altium Designer到嘉立创EDA
4.1 过孔规则与DRC检查的设置思路
不同软件的面板名称不一样,但设计思路是共通的。Altium Designer在“Via Rules”里统一管理孔径和焊盘尺寸;Allegro则是Physics规则里指定Via列表,并且用Physical Constraint Set来控制实际选用的过孔;嘉立创EDA的规则设置更贴近国产工程师的习惯,直接在规则管理器里改“过孔外径/孔径”。
无论用哪个软件,至少要设置三类规则:默认信号过孔、电源过孔、地过孔。我通常会把电源和地过孔的孔径比信号过孔大一档,方便承载更大的电流。DRC检查里务必勾选“Hole Size Constraint”和“Via Style Constraint”,否则打样回来才发现孔径小于工厂最小能力就晚了。
4.2 缝合孔与隔离孔的放置逻辑
“缝合孔”这个词指的是在铺铜区域边缘或者屏蔽区域内,连续放置一批连接到地平面的过孔。这些孔的作用是让铺铜区域内部的参考地保持连续,减少电磁辐射和回流路径绕行。在Altium里可以选中铜皮后选择“Place -> Via Stitching”,设置阵列间距和过孔类型;Allegro里也有Via Array工具;嘉立创EDA可以使用“阵列粘贴”或者放一排过孔手动对齐。
缝合孔的间距怎么定?我自己的习惯是,对于普通2层板,缝合孔间距取波长的1/20左右,但实际工程中,针对100MHz以下信号,间距做到100-200mil已经足够。关键是要把缝合孔放在铺铜的边缘,而不是中间,边缘的缝隙越大,屏蔽效果越差。另外还要注意,缝合孔不能塞进走线密集的区域,否则DRC会报间距错误,所以放缝合孔之前先跑一遍间距检查,然后再统一调整位置。
4.3 铜皮挖空的操作细节
“铜皮挖空”在PCB设计里通常指两个场景:一是在铺铜上挖出隔离区域,避免铜皮与高频天线或敏感器件太近;二是为了控制阻抗,在特定过孔周围挖掉参考铜皮。操作上,Altium里用“Tools -> Polygon Pour Manager -> Pours -> Add Cutout”来加挖空区域;Allegro里用“Shape -> Manual Void/Cavity”;嘉立创EDA是在铺铜状态下手动画出禁布区,再重新铺铜。
一个很容易被忽略的问题:挖空区域不要挖得比反焊盘还小。如果你挖空的目的是给某个过孔做阻抗匹配,那么挖空区域的直径至少要比过孔的反焊盘大4到6mil,否则铜皮边缘和过孔焊盘边缘太近,生产时会造成阻焊桥崩塌或者短路风险。
4.4 从原理图跳转PCB、网络标号不显示这类软件日常问题
围绕PCB绘制的搜索热词里,有一批其实是使用软件时的高频痛点,比如“AD23中在原理图中选中一个器件,如何快捷跳转定位到PCB上”。答案并不复杂:在原理图中选中器件后,按快捷键TC(Tools -> Cross Select Mode)或者在PCB界面按Shift+Ctrl+X,就能交叉选择并跳转过去。前提是工程文件和PCB文件在同一个Project里,而且原理图的元件必须有对应的封装。
再比如“AD25 PCB上网标不显示”,这种情况多半是网络标签的显示开关被关掉了。按键盘上的N键,选择“Show Connections / Show Net Names”。另外查看PCB的某一网络高亮时,在PCB界面按L打开“View Configurations”,在Net Colors里确认对应的网络颜色不是黑色,否色和背景色融为一体,看起来就像“没显示”。这类问题不是板子的问题,是软件视图设置的问题,排查时先看颜色配置再去看DRC。
4.5 关于Gerber转PCB、Allegro转AD的实话
有些帖子在讨论“AD导入Gerber转PCB”或者“Allegro的PCB能不能转成AD格式”。我的态度是:自己公司内部的项目,永远不要依赖Gerber逆向转PCB来维护设计。Gerber是制造文件,不包含元件属性、网络连接关系,转出来的东西只是图形,不具备可编辑性。如果你需要接手别人的板子,正确做法是找对方要原始工程文件。Allegro转AD虽然能导,但往往丢失大量规则、叠层参数和封装属性,转完必须逐项核对。所以我一般只用CAM软件看Gerber来验证制造效果,而不把它当作编辑源文件的方法。
5. 制造端的孔工艺边界:PTH/NPTH、塞孔、露铜和公差
5.1 金属化孔和非金属化孔的制造差异
工厂做一块PCB的孔,会先把全板的孔按数控钻程序钻出来,再做全板电镀。要区分金属化孔和非金属化孔,是对非金属化孔做“二次钻”或者“堵孔”处理。比如定位孔、螺丝孔,如果不需要和铜皮导通,就要在钻孔文件里标记成NPTH。很多新手把所有孔都设成PTH,导致螺丝孔内壁电镀上铜,如果和地平面间距不够,甚至会把螺丝孔和地网络短路,装螺丝时整个板子地电位异常。
设计上的处理:定位孔孔径要根据螺丝直径留余量,螺丝孔的内壁到铜皮的安全间距至少保持在0.3mm以上,最好设成禁布区。如果需要螺丝孔接大地,那就在孔周围放一圈焊盘并打上过孔连接到地网络,形成良好的电气接触。
5.2 盖油、塞孔、树脂塞孔到底怎么选
这是孔工艺里最乱的一个话题,很多工程师分不清“盖油”和“塞孔”的区别。盖油是在过孔表面覆盖一层阻焊油,主要目的是防止过孔氧化和避免锡膏渗透。但盖油并不是把孔全部堵死,孔是空的。塞孔则是用油墨、树脂或者铝片塞进孔内,把孔洞填实。
选择原则我总结如下:普通信号过孔,盖油即可,成本低,只要不影响焊接;BGA焊盘上的过孔,如果过孔在焊盘上或者紧邻焊盘,一定要做“树脂塞孔+电镀盖帽”,否则过孔会吸走焊盘上的锡,造成虚焊;需要埋铜块散热的,直接用大铜塞孔。另外,背钻过的过孔一般不建议单纯塞油,因为背钻后孔壁状态复杂,塞油容易不饱满,有条件的用树脂塞孔。
5.3 绿油露铜处理的实际操作
热词里有“allegro pcb背面的绿油露铜处理”,这是想把铜皮裸露出来,用于屏蔽或者散热。在Allegro里,这通常通过绘制一个SolderMask层(阻焊开窗)的shape来实现。思路是:你要让哪个区域的铜皮露出来,就在那块铜皮对应的Soldermask_Top/Bottom层画一个比铜皮轮廓小一点的shape,工厂制造时就会在这块区域去掉绿油,露出裸铜。
经验参数:如果是用于螺丝接触或者测试点,露铜区域的尺寸不要小于1mm×1mm,太小了绿油边缘容易跳开或者掩盖测试点;如果露铜是为了大电流接触,最好再让工厂做表面处理,比如沉金或镀锡,裸铜时间长了会氧化发黑,接触电阻变大。不要直接在铜皮上只放丝印框之类的标记来“表示露铜”,必须在阻焊层画图形才是真正开窗。
5.4 层叠厚度和孔径的关系:纵横比
多层板的孔还要考虑纵横比(板厚与最小孔径的比值)。传统机械钻加工能力一般在10:1以内,比如1.6mm的板子,最小孔径大约0.2mm左右,如果小于这个值,钻孔难度和断钻风险都会大幅上升,成本变高。激光钻孔则能做更小的盲孔,但深度很浅,一般不超过0.1mm。
有工程师画板时只关心孔径够不够走线,没考虑板厚,结果设计了一个1.6mm板厚、0.15mm孔径的过孔,工厂电话打来说做不了,要改成0.2mm甚至0.25mm。所以订规范前先问板厂:你的最小机械钻孔是多少?最大纵横比是多少?心里有数再开始布线,能少折腾一轮评审。
6. 等板子回来后:过孔相关的常见故障与排查链路
6.1 过孔断裂和阻焊开裂
板子生产出来,经过回流焊、波峰焊之后,过孔内部的热应力会集中释放。最典型的故障是过孔孔壁出现裂纹,导致信号时断时续。这类问题不是万用表能简单量出来的,因为常温下可能接触良好,一发热就断开。排查时用热风枪给疑似区域局部加热,同时用示波器监测信号,一旦波形消失,基本就是热断路。
阻焊开裂则更隐蔽。过孔边缘的绿油在热冲击下开裂后,如果板面有湿气或者灰尘,容易在高压下爬电,严重时直接短路。遇到这种情况,设计阶段就把过孔和周边铜箔的距离放大,减少应力集中,或者改用塞孔工艺增强孔壁强度。
6.2 如何用万用表和示波器快速定位孔位问题
拿到一块不工作的板子,先别急着刷程序换芯片,用万用表通断档检查关键电源过孔两端是否导通。如果发现某个过孔不通,大概率是电镀不良,这时候查原理图看这个孔属于哪个网络,用飞线从顶层飞到内层或底层对应位置,先确认问题范围。之后再把故障记录反馈给板厂,让他们查钻孔和电镀记录。
如果是高速信号偶发性误码,测量眼图前先在信号路径上检查过孔stub是否过长。假如设计时没有背钻,可以把板子侧过来打X光,看看过孔柱是否有明显的未连接段。一般实验室没有X光机,最简单的办法是换一版PCB,在信号过孔旁边加背钻,对比两版的眼图,这一步能直接验证stub影响的严重程度。
6.3 我的实际经验:孔的设计评审清单
最后分享一份我自己在画板收官时会逐项核对的口诀清单,每一条都是踩坑换来的:
- 所有过孔是否都在DRC里检查过最小孔径、最小环宽、孔到孔间距?
- 电源网络的关键节点是否至少有双过孔并联?大电流路径是否放了足够多的过孔?
- 高频信号换层时,旁边是否放置了回流地过孔?
- BGA区域过孔是否做了树脂塞孔?焊盘上的过孔是否盖帽?
- 定位孔是否设置成NPTH?螺丝孔周围是否留了安全间距?
- 高发热器件底部的散热孔是否做了塞孔,防止锡膏流失?
- 需要露铜的区域是否在阻焊层画了开窗,而不是只画丝印?
- 钻孔文件和Gerber是否已经叠层检查过,孔位与焊盘是否对得上?
- 板厚和最小孔径的纵横比是否在工厂工艺能力范围内?
- 背钻参数是否和板厂确认过深度公差和钻头直径?
这些项目看起来多,但真正养成习惯之后,每次画板只需要多花二十分钟。比起板子回来之后对着示波器发呆,二十分钟实在太划算了。孔虽然小,却是PCB里连接一切的关键节点,把它管好了,整块板子的稳定性和良率都会上一个大台阶。