做PCB设计这些年,我见过最多的新手翻车点,不是布线,不是规则设置,而是最不起眼的焊盘。Cadence Allegro 17.4里SMD焊盘和通孔焊盘看似就是填几个尺寸数字,一旦单位选错、层搞混、热焊盘参数设反,后面封装建得再漂亮也是白搭,DRC一片红、板厂电话打到爆的场面我见得太多了。这篇文章就把17.4焊盘设计这件事彻底讲透,从Padstack Editor的具体打开方式,到每个参数背后的工程逻辑,再到常见坑的排查,全程按实际项目习惯走。不管你是刚转硬件的新人,还是学校里第一次接触Allegro的学生,跟着这套流程把SMD焊盘和通孔焊盘各建一遍,基本就能独立搭出自己的焊盘库了。
1. 为什么焊盘值得专门花时间死磕
1.1 焊盘是整个PCB设计链路的地基
很多人第一次打开Allegro 17.4,看到原理图、封装、PCB三层文件结构就懵了。其实链路很清晰:原理图符号代表逻辑连接,封装代表物理落地,PCB板子则是所有封装的集合。而焊盘,就是封装里最小也最关键的物理单元。一颗电阻能不能焊牢、一个BGA球能不能对准、过孔内层会不会短路,全部取决于你在Padstack Editor里填的那几个数字。
Allegro 17.4里焊盘文件后缀是.pad,封装文件是.dra和.psm,PCB文件是.brd。焊盘文件是独立于封装文件存在的,封装只是把焊盘“摆放”进去。这意味着你改一个.pad文件,所有调用它的封装都会跟着变。反过来,你封装画得再标准,焊盘参数错了,整条链路全是错的。我管这叫“地基层”,地基层塌了,上面盖什么都白搭。
1.2 先弄清Cadence和Allegro到底什么关系
很多初学者把Cadence和Allegro当成两个软件,其实Cadence是公司名,Allegro是这家公司的PCB设计产品线。Cadence旗下有原理图工具OrCAD Capture、PCB设计工具Allegro PCB Designer、仿真工具Sigrity、封装设计工具Allegro Package Designer等。我们常说的“Allegro 17.4”,全名是Cadence Allegro PCB Designer 17.4-2019,2019年发布,SPB 17.4版本号。
Allegro 17.4跟老版本16.6相比,界面现代化了不少,新增了启动页、改善了显示效果、动态铜皮性能也更强。虽然现在Cadence已经推出22.1(Allegro X),但17.4在行业内保有量依然非常大,很多公司的标准库还是用17.4维护,所以学这个版本一点不过时。做焊盘用的Padstack Editor,在17.4中依然是独立程序,从开始菜单单独打开,也可以在Allegro界面里直接敲命令pad_designer调出来。
2. 焊盘参数背后的“为什么”,比填数字更重要
2.1 SMD焊盘三层结构:铜皮、阻焊、钢网各管什么
SMD焊盘在17.4的Padstack Editor里至少要定义三个层:BEGIN LAYER(顶层铜皮)、SOLDERMASK_TOP(顶层阻焊开窗)、PASTEMASK_TOP(顶层钢网开孔)。很多新手只填了BEGIN LAYER,后面板厂打样回来发现焊盘上全是绿油,就是因为阻焊层没开窗。
三层的尺寸逻辑是这样的:铜皮是实际焊盘大小;阻焊开窗要比铜皮略大,不然绿油盖住焊盘边缘,焊接面积变小;钢网开孔通常比铜皮略小,防止锡膏印刷时溢出到焊盘外。以常规0603电阻为例,铜皮焊盘做0.85mm乘0.95mm,阻焊开窗每边放大0.05mm,也就是0.95mm乘1.05mm,钢网开孔每边缩小0.05mm,做成0.75mm乘0.85mm。用生活化类比解释:铜皮是脚,阻焊是袜子,钢网是鞋,袜子要比脚大一点,鞋要合脚甚至稍紧一点。
为什么SMD焊盘没有钻孔?因为它没有贯穿孔,不需要金属化过孔结构。这一点看着简单,实操时却有很多人习惯性给SMD焊盘也填了钻孔,结果DRC报钻孔错,板厂也看不懂。
2.2 通孔焊盘的Regular Pad、Thermal Relief和Anti Pad
通孔焊盘比SMD复杂得多。除了顶层铜皮BEGIN LAYER和底层铜皮END LAYER,还有中间内层DEFAULT INTERNAL、钻孔层、阻焊层。多出来的核心概念是Regular Pad、Thermal Relief(热焊盘/花焊盘)、Anti Pad(隔离盘/反焊盘)。
Regular Pad是焊盘本身,所有层都靠它建立电气连接。Thermal Relief是内层连接铜皮时用的“十字花”结构,中间留空隙,只在四个方向留窄铜桥。为什么要有这个结构?因为内层如果是大面积铜皮,焊接时热量会顺着铜皮瞬间散掉,焊盘温度上不去,形成虚焊。十字花相当于给热量“限流”,让焊盘能保持足够温度。Anti Pad是焊盘与内层铜皮之间的隔离空隙,防止不该连接的网络短路。
正片层和负片层的用法很多人搞反。正片层画什么就是什么铜,负片层画什么就是挖空什么。设计负片平面层时,要跟铜皮连接的过孔焊盘必须用Thermal Relief,不连接的用Anti Pad;而正片层则相反,连接的直接用Regular Pad,不连接的用Anti Pad。如果你画的是普通双层板,内层基本都是走线,那DEFAULT INTERNAL层直接套用Regular Pad就行,Thermal Relief和Anti Pad可以留空,没必要给自己增加工作量。
3. 实战一:创建SMD焊盘,从打开软件到保存文件
3.1 Padstack Editor的打开、单位设置和新建流程
先说操作入口。17.4安装完成后,开始菜单里能找到“Cadence Allegro PCB Designer 17.4”文件夹,里面有“Padstack Editor”快捷方式。在Allegro PCB Editor界面里也可以直接输入命令pad_designer,回车后Padstack Editor就会弹出,两种方式任选。
打开后执行File大于New,弹出新建对话框。这里第一件事就是选Padstack Type,SMD焊盘要选“Single”,通孔焊盘选“Through”。选错类型后面会非常别扭,比如SMD焊盘如果选成Through,软件会强制你填钻孔参数,明明没有孔还要填,多此一举。
新建之后立刻检查单位。Padstack Editor左下角或者Setup菜单里的Design Parameters中,能看到单位设置选项。焊盘文件里英制公制混用是重灾区,我见过有人把0.6mm的焊盘填成了0.6mil,最后做出来比针尖还小。工程习惯建议统一用Millimeter,精度选4位小数。为什么4位?因为很多芯片手册给的引脚尺寸是英制,换算成毫米会出现3.937这样的数,4位小数能保住精度,后期DRC也不会因为四舍五入误报。
3.2 层定义表格怎么填,填完怎么保存
单位设好之后,界面顶部有Parameters和Layers两个页签。SMD焊盘主要操作Layers页签,里面是一张表:列方向是Regular Pad、Thermal Relief、Anti Pad,行方向是BEGIN LAYER、SOLDERMASK_TOP、PASTEMASK_TOP等。我们需要做的就是把光标点到对应行的Regular Pad列,右键选择Shape类型。
以做一个0.5mm间距QFP芯片的SMD焊盘为例。芯片引脚宽度通常是0.22mm到0.25mm,焊盘宽度做到0.3mm比较合适,比引脚宽一点,既保证焊接强度又不容易连锡。焊盘长度(沿引脚延伸方向)做1.3mm,给足焊锡爬坡空间。在BEGIN LAYER对应的Regular Pad单元格右键,选择Rectangle,填入Width 0.3,Height 1.3。然后是SOLDERMASK_TOP,形状相同,每边放大0.05mm,填0.4mm乘1.4mm。PASTEMASK_TOP也相同,每边缩小0.05mm,填0.2mm乘1.2mm。如果引脚是圆形的或者设计需要,也可以选Circle、Oblong、Square等形状。
填完不要急着关。File > Save As,存成.pad文件。命名规范必须养成习惯,我在公司强制要求库文件遵循“类型_尺寸_形状”规则,比如这个文件命名为smd_r030_1r30_qfp.pad,一看就知道是0.3乘1.3毫米矩形SMD焊盘。命名混乱的库文件,过两个月你自己都找不到哪个是哪个。
3.3 用0603电阻练手,把流程完整走一遍
光说理论不够,拿0603电阻焊盘把流程串一遍。0603电阻本体尺寸是1.6mm乘0.8mm,引脚间距约1.0mm,焊盘设计尺寸一般取0.85mm乘0.95mm,两端焊盘中心间距1.0mm。在Padstack Editor里新建Single类型焊盘,单位毫米4位小数,然后:
- BEGIN LAYER的Regular Pad填Rectangle,Width 0.85,Height 0.95。
- SOLDERMASK_TOP填Rectangle,Width 0.95,Height 1.05。
- PASTEMASK_TOP填Rectangle,Width 0.75,Height 0.85。
- File > Save As保存为
smd_r085_095_0603.pad。
这么几个步骤,一个能直接用于生产的0603 SMD焊盘就做好了。你可能会问,为什么我的尺寸和网上教程不完全一样?因为0603焊盘尺寸本来就有一定浮动空间,0.8乘0.9、0.85乘0.95、0.9乘1.0都有人用,关键是相对关系正确:阻焊比铜皮大,钢网比铜皮小,然后根据自己板厂的工艺能力微调。如果厂里的回流焊炉温曲线偏热,就把焊盘稍微做小一点防止立碑;如果引脚特别粗,就把焊盘宽度适当加大。这就是焊盘设计的“手感”,做多了自然有感觉。
4. 实战二:创建通孔焊盘,钻孔和热焊盘一次说透
4.1 新建Through焊盘,先把钻孔参数设明白
通孔焊盘在Padstack Editor里的创建流程,前半段跟SMD焊盘类似,但类型要选“Through”。新建之后首先面对的是Parameters里的Drill参数区。
Drill直径(Drill diameter)是最核心的参数。通孔元件的引脚截面决定钻孔大小。以最常用的2.54mm排针为例,引脚通常是0.64mm见方的方针,对角线约0.91mm,钻孔至少要比对角线大0.2到0.3mm,取1.0mm到1.1mm比较稳妥。留太小,插件插不进去,产线工作人员只能用锤子敲,那画面太美我不敢看。留太大,孔环变窄,焊接时焊锡容易流到背面,形成虚焊。
Drill tolerance一般不用自己填,填0或者留0.1mm以内都可以,板厂会根据自己的工艺自动补偿孔径。很多人喜欢在这里填正负0.1,结果板厂在加严公差之后反而不好加工,这是典型的“多做多错”。
Drill figure选Circle圆形,这是主流选择。Drill symbol是钻孔符号,在图纸上表示的标记,选个X或者十字形都行,主要用于制造文档,不影响实际生产。
还有一个关键选项是Drill Layer(钻孔层次)。通孔焊盘选“Through All”表示从顶层穿到底层。如果是盲孔或者埋孔,要选对应的Beginning Layer和Ending Layer,比如HDI设计的盲孔L1-L2,就开始层选TOP,结束层选L2。大多数普通项目用Through All就对了。
4.2 通孔焊盘各层参数怎么填,以2.54mm排针为例
钻孔设好之后切到Layers页签,这时候要填的单元格比SMD焊盘多得多。还是拿2.54mm排针举例,钻孔1.0mm,焊盘外径1.7mm是工程上很成熟的做法。焊盘外径为什么是1.7mm?因为孔环至少要保证0.3mm以上,1.7减去1.0再除以2,单边孔环0.35mm,既满足强度要求,又不至于让焊盘间距过近。如果孔径更大,比如2.0mm的螺丝孔,焊盘外径就要做到2.6mm以上,规则不变。
接下来说各层怎么填:
- BEGIN LAYER(顶层):Regular Pad填Circle,直径1.7mm。
- DEFAULT INTERNAL(内层):Regular Pad填Circle,直径1.7mm。如果你的内层有电源层或地层且用负片,就需要Thermal Relief,填Circle,Inner diameter 1.3mm,Outer diameter 1.6mm,Spoke width 0.25mm。Anti Pad填Circle,直径2.0mm。
- END LAYER(底层):和BEGIN LAYER一样,Regular Pad直径1.7mm。
- SOLDERMASK_TOP和SOLDERMASK_BOTTOM(阻焊层):直径1.9mm,比焊盘外径大0.2mm,保证阻焊桥完全避开焊盘。
- PASTEMASK_TOP和PASTEMASK_BOTTOM(钢网层):通孔焊盘一般不需要,留空即可。
这里有个非常容易翻车的地方:如果项目是双层板,内层DEFAULT INTERNAL你不会单独设置Thermal Relief和Anti Pad,直接把Regular Pad填同尺寸就行。但如果你做了四层板,而且第二层是负片的地平面,还不设置Thermal Relief,那这个过孔就整个跟地平面短接,DRC当然报错。我自己就犯过这种错,四层板打样回来才发现有一排过孔把地平面和信号网络短路了,那种返工成本谁碰谁知道。
4.3 背钻和电镀参数,到底要不要管
17.4通孔焊盘里还有Backdrill(背钻)相关设置。背钻简单理解就是把过孔多余的、没走线的部分钻掉,减少高速信号在过孔stub上的反射。如果你的项目是10G以上高速信号,或者用到SerDes通道,背钻是常见的工艺要求。在Padstack Editor里设置时,需要指定背钻的起始层和保留的stub长度,这些参数一般由SI仿真结果决定,不是拍脑袋定的。
普通项目里背钻参数完全可以不动。我见过不少工程师连背钻是什么都没搞清楚,就在焊盘属性里乱填,最后板厂来投诉说钻不了。记住一句话:工艺参数永远跟着需求走,没有需求就不要加戏。
电镀参数同样如此。Allegro 17.4允许在焊盘属性里设置电镀厚度、孔壁粗糙度等,但一般板厂会按IPC-6012标准执行,不需要设计端操心。设计端管好尺寸和层定义,制造参数交给制造端,这是行业分工的基本逻辑。
5. 从焊盘到封装,Allegro 17.4里的落地操作
5.1 在封装编辑器里把焊盘放进去
焊盘文件创建完成后,下一步是在封装编辑器里调用。打开Allegro PCB Editor,File > New,Drawing Type选择Package Symbol,创建一个新封装。进来之后第一件事还是设单位和精度,和Padstack Editor里保持完全一致,不然容易出现封装里焊盘位置偏移几毫米的问题。
放焊盘的操作路径是Layout > Pins(旧版本显示为Add > Pin)。点开之后,右侧Option面板里有一个Padstack输入框,里面默认可能是via0之类的名字,把它改成你刚保存的焊盘文件名,比如smd_r085_095_0603.pad,然后回车,在绘图区点击放置。每点一次放一个焊盘,连续点击可以放一排,放完右键Done结束。
这里有个小技巧:如果Option面板里输入Padstack名称后按回车没有反应,先检查当前封装库路径里有没有包含这个焊盘文件所在目录。Allegro不会自动搜索整个硬盘,你必须在库路径里明确告诉它去哪里找,找不到就不加载。
放焊盘的时候,建议把栅格(Grid)设置成引脚间距的整数倍。比如0603电阻引脚中心距1.0mm,就把Grid设为0.1mm或者0.5mm,这样放置时引脚位置不会出现小数偏移,后面布线对位也省事。
5.2 库路径配置,为什么你的焊盘总是“找不到”
这个问题太典型了,单独拿出来说。Allegro 17.4的库路径配置在Setup > User Preferences > Design Paths下,里面有两个关键项:padpath是焊盘文件搜索路径,psmpath是封装符号搜索路径。把你自己建的库文件夹路径添加进去,保存后重启Allegro才完全生效。
很多人做了一堆焊盘,调用的时候却提示找不到文件,90%是这里没配置或者路径填错。还有一个小坑:路径里不能带中文和空格。中国工程师的项目文件夹很多叫“PCB库”“新建文件夹”,一旦带中文,Allegro经常出现奇奇怪怪的加载失败。我个人的习惯是所有库文件路径全用英文,比如D:\Lib\pad和D:\Lib\sym,一劳永逸。
另外,焊盘文件的命名也不要用中文和空格。不要觉得这是小事,我之前接过一个外包项目,对方所有焊盘文件叫“电阻焊盘1.pad”,结果Allegro识别异常,害我重做了一整批库。规范命名、纯英文路径,这是做库最基本的职业素养。
5.3 17.4快捷键设置和辅助工具的兼容情况
既然很多人搜“Allegro 17.4快捷键设置”,这里一并分享。Allegro的快捷键分为alias和funckey两种。alias本质是命令别名,可以带空格,适合组合命令;funckey是把按键直接映射为命令,适合高频单键操作。修改方式都是编辑env文件,位置通常在C:\Users\你的用户名\pcbenv\env。打开这个文件,按自己的习惯追加内容:
alias F2 done alias F3 oops alias F4 cancel alias F6 angle 90 funckey 1 add connect funckey 2 add rat funckey d shadow toggle保存文件后重启Allegro才生效。我个人的习惯是F2设为done,F4设为cancel,布线和放元器件时高频操作全在左手边,效率明显提升。注意env文件修改前最好备份,改坏了Allegro启动会直接报错。
还有不少人在问“电路精灵能不能用在17.4上”。这里说下我的理解:如果你指的是Cadence后续在Allegro X里逐步推出的AI辅助设计能力,那17.4本身没有完整集成;如果指的是网上流传的各种Skill脚本、快捷工具,那就看具体脚本的版本兼容性,很多早期脚本能直接在17.4上跑。不过我的建议是,辅助工具可以等手工流程熟练了再玩,焊盘这种基础库文件,还是自己手动建一遍最踏实。17.4自带的IPC Compliant Footprint Wizard(工具菜单下)也可以自动生成标准封装,生成后建议再人工核对一遍焊盘参数,别直接拿去用。
6. 常见问题与排查技巧实录
6.1 高频问题速查表,照着对就行
下面这张表是我整理的高频问题排查清单,基本覆盖了新手建焊盘时遇到的大部分坑:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 焊盘在封装里不显示 | padpath库路径没配置或文件未保存 | 检查路径,重新保存.pad文件 |
| 焊盘显示为红叉或空心 | 焊盘文件找不到或名称拼写错误 | 核对Option中的Padstack名称 |
| 焊盘尺寸看起来巨大 | 单位错误,公制填成了英制 | 统一使用毫米4位小数 |
| 通孔焊盘无法钻孔 | Drill diameter是0或Drill Layer设置错误 | 重新设置钻孔参数 |
| 内层大片短接DRC | 负片层Thermal Relief没设置 | 补上Thermal Relief和Anti Pad |
| SMD焊盘立碑、虚焊 | 焊盘过长或钢网开孔过大 | 缩短焊盘,缩小钢网窗口 |
| 板厂反馈孔环不足 | 焊盘外径与孔径差太小 | 保证单边孔环大于0.3mm |
| 焊盘文件加载后变为0 | 文件路径含中文或空格 | 改英文路径并更新库路径 |
这些问题的共同规律是:大部分都是基础参数没设对,而不是Allegro软件本身的问题。排错时先看单位,再看层,最后看路径,按这个顺序基本能解决80%的问题。
6.2 我做库这几年总结的几条铁律
最后分享几条做焊盘库的“铁律”,都是踩过坑换来的经验:
第一,动手建库前,先跟板厂要一份工艺能力表。最小钻孔能做到多少,最小线宽间距是多少,孔环要求多少,先了解这些再定焊盘尺寸。做出来的焊盘再漂亮,板厂做不了就是废的。
第二,建库前确定一套属于自己的命名规范并严格执行。焊盘文件命名里要有类型、尺寸、形状这些关键信息,比如pad_via_1r0_1r7.pad表示钻孔1.0外径1.7的通孔焊盘,smd_r040_060.pad表示0.4乘0.6的矩形SMD焊盘。命名清晰还能顺便当文档用。
第三,每次建完焊盘,在封装里做一次Geometry Check和DRC。不要嫌麻烦,花两分钟检查一遍,能避免打样回来才发现问题的惨剧。第四,改焊盘参数后,必须重新生成所有调用它的封装,不要把旧封装继续留在库里。Allegro的焊盘和封装是引用关系,改了焊盘不更新封装,等于白改。
第五,标准库要像代码一样做版本管理。每次改动记录一下日期和原因,我习惯在env同目录下放一个版本说明文件,比如“2024-03-15,更新0402焊盘阻焊开窗,从0.9改成1.0”。几个月后回来看,你会感谢当时的自己。
按我个人经验来说,焊盘设计是这个行业里少有的“慢功夫”。原理图可以靠网上下载,模块可以靠复制粘贴,但焊盘库这种东西,必须自己一块一块攒出来,因为只有你知道自己手里的板厂、工艺、元件批次是什么状态。你现在花几个小时把SMD焊盘和通孔焊盘的流程彻底摸透,后面建封装、排布局、跑DRC都会顺很多。焊盘这种东西,做的时候觉得枯燥,返工的时候才知道当初认真有多值。