
做PCB设计绕不开封装Footprint这一步。很多新人在Cadence Allegro里画原理图速度很快一打开封装编辑器就懵了——焊盘要单独用Pad Designer做封装符号又是一个独立工程稍不留神漏掉一层信息板子打样回来就是一顿返工。我自己最开始做封装时吃过丝印压焊盘的亏也做过QFN引脚间距算错整板报废的憋屈事。这篇就把我从焊盘设计到丝印标注的完整流程写下来配着实例讲参数和操作希望能帮你一次做对。1. 开工前的三件事手册、单位、命名1.1 拿到芯片手册先看什么引脚间距和封装类型在打开Allegro之前请先把芯片手册放在手边最好是PDF原文。制作封装时你真正需要的手册数据其实就几个封装类型SMD还是插件、引脚间距pitch、引脚宽度、本体尺寸、引脚伸出本体的长度、以及手册推荐的焊盘尺寸Land Pattern。很多厂商手册会直接给出推荐焊盘比如TI、NXP、ST的部分器件这是最省事的路径——照着画就行不用自己冒险计算。如果手册里没有推荐焊盘那就必须自己计算此时核心参数就是引脚间距和引脚宽度。以常见的QFP-48封装为例STM32F103系列用的LQFP48引脚间距是0.5mm引脚宽度约0.22mm到0.3mm。这个0.5mm就是后续一切尺寸的出发点焊盘宽度不能超过0.5mm否则相邻焊盘会短接也不能太窄否则贴片时抓不住引脚的焊锡。另外还要确认封装是“脚伸出来”的鸥翼型Gull-wing还是“脚藏在底下”的QFN型这两种封装的焊盘设计思路完全不同。还有一个容易被忽略的点引脚编号顺序。QFP、QFN、SOP这类封装Pin 1位置一般有圆点或者斜切角标记引脚编号逆时针排列。做封装前先在手册上把引脚1位置圈出来确认PCB封装里引脚1的方位要跟原理图符号对得上不然建完封装导入板子才发现方向反了只能整体旋转180度重新对齐。1.2 焊盘尺寸怎么算从公式到实例焊盘尺寸计算没有玄学核心逻辑就两条保证焊接可靠性和保证可制造性。我常用的经验公式如下贴片焊盘宽度 引脚宽度 0.05mm到0.15mm取整到0.05mm。贴片焊盘长度 引脚露出本体长度 焊盘外侧加长0.5mm到0.8mm 焊盘内侧加长0.25mm到0.4mm。通孔焊盘孔径 引脚直径 0.2mm到0.3mm如果引脚较粗或需要插入困难取0.4mm也行。通孔焊盘外径 孔径 0.6mm到0.8mm常见取1.6mm到1.8mm。拿QFP-48算一下引脚间距0.5mm引脚宽度0.3mm那么焊盘宽度取0.4mm0.30.1留出0.1mm的相邻间距普通工艺厂都能做。焊盘长度方面QFP引脚一般从本体伸出约0.6mm到1.0mm假设伸出0.8mm那么焊盘长度取外侧伸出1.0mm、内侧伸出0.4mm总长就是0.41.00.82.2mm这个尺寸偏大了需要调整。实际做QFP封装时焊盘本体部分的长度并不是必须完全覆盖引脚伸出长度通常焊盘总长在1.2mm到1.5mm即可焊接时靠熔融焊锡填充引脚与焊盘之间的空间。我一般取焊盘总长1.4mm外侧伸出本体边缘0.8mm内侧比本体边缘缩进0.2mm或齐平。以QFP-48本体7mm×7mm、引脚从本体边缘伸出0.8mm来计算单个焊盘中心线与本体边缘的偏移量约为外伸0.8mm加上焊盘一半长度0.7mm即焊盘中心在本体外1.5mm处这个数值用于放置焊盘时计算坐标非常有用。1.3 环境设置单位、格点、颜色封装制作前先把单位和格点设置好否则后期移动焊盘时坐标全是小数很容易对不齐。Cadence Allegro 16.6和17.x系列中Pad Designer和PCB Editor的单位设置是分开的建议统一使用毫米mm或密尔mil。国内做板子常用毫米我习惯设成毫米并保留四位小数这样处理0.05mm、0.025mm这类精度足够。格点设置建议精度与焊盘间距匹配。0.5mm引脚间距的QFP封装格点设成0.05mm或0.025mm比较合适既能吸附到准确位置又不会因为格点太细导致鼠标定位飘忽。密尔环境下常见设5mil或2.5mil。做封装时我最常用的组合是放置焊盘用精确坐标输入画丝印用捕捉格点手动调整用0.05mm增量。颜色设置方面封装编辑器里建议把无关层全部关掉只保留当前需要操作的层。比如画丝印时就只开Package Geometry的Silkscreen层放置焊盘时开对应焊盘层和Ref Des层。层一多界面就显得凌乱新手很容易把线画错层最后输出Gerber时才发现丝印不见了或者焊盘层多了东西。2. 焊盘库制作Pad Designer实操与参数全解2.1 Regular Pad、Thermal Relief、Anti-pad到底填什么Allegro的Pad Designer做焊盘时Layers窗口里会看到三类参数Regular Pad、Thermal Relief、Anti-pad。很多新手在这里卡住不知道每个格子该填什么。理解了这三者的物理含义就很简单。Regular Pad是连接铜皮时实际露出的焊盘就是你希望焊接的金属区域Thermal Relief是热焊盘也叫花焊盘用在电源或地层大片铜皮连接处通过四根辐条连接减少焊接时热量被铜皮过快导走Anti-pad是隔离区焊盘周围的空隙确保焊盘与内层铜皮之间不会意外短路。对于SMD贴片焊盘其实只需要填Regular Pad。因为贴片焊盘在顶层或底层不需要穿过内层Thermal Relief和Anti-pad都填Null。很多人习惯把这三项都填上虽然有时不报错但保守做法是SMD焊盘只填Regular Pad和Soldermask开口。对于通孔焊盘三层都要填Regular Pad是实际焊盘直径Thermal Relief是内层花焊盘的辐条尺寸Anti-pad是隔离间隙直径这三者配合好了多层板电源地分割才不会出问题。2.2 SMD贴片焊盘制作实例以QFP-48焊盘为例走一遍Pad Designer流程。打开Pad Designer新建一个焊盘在Parameters选项卡里设置单位mm和精度4位小数Type选择Single单端焊盘不穿通。回到Layers选项卡选择Begin Layer这是顶层贴片焊盘填入Regular Pad的几何形状和尺寸。几何形状选Rectangle矩形宽度0.4mm、长度1.4mm。这里要注意Allegro中Begin Layer的Regular Pad是俯视图的焊盘宽度对应芯片引脚间距方向长度对应引脚伸出方向千万别填反了。如果旋转90度封装焊盘会跟着转不影响最终结果但一开始填对会让后期心里有数。Soldermask层也要填这是阻焊开窗。阻焊开口比焊盘四周各大0.05mm到0.1mm左右也就是宽度0.5mm、长度1.5mm。PASTEMASK钢网层通常和焊盘一样大或略小0.025mm可根据工艺水平选择。Paste mask开太大容易导致锡膏印刷偏厚、连锡开太小则焊料不足。保存为QFP48_0.4x1.4.pad第一个焊盘就做好了。如果封装需要多个不同尺寸的焊盘比如中心大焊盘加四周引脚焊盘就要单独再做几个pad文件。2.3 插件通孔焊盘制作实例插件焊盘跟贴片焊盘在Pad Designer里的操作差异明显。以2.54mm排针为例排针引脚是方形边长0.64mm。钻孔直径取0.9mm比较稳妥既能插入又不会太松。Regular Pad取圆形直径1.7mm。Thermal Relief也填圆形内径与外径定义要正确内径略大于钻孔外径等于Regular Pad直径辐条宽度0.5mm。Anti-pad取圆形直径2.1mm比Regular Pad大0.4mm左右确保隔离间隙足够。在Drill/Slot Hole栏里设置孔的直径0.9mm。如果是金属化孔勾选Plated如果只需要非金属化安装孔则取消勾选。对于纯机械安装孔后面还要注意选择Mechanical类型否则Allegro会把它当作电气引脚处理。插件焊盘的Drill层数值直接影响钻孔文件输出漏填或者填错会导致打样厂找不到钻孔。做插件焊盘时有一个细节通孔焊盘的Regular Pad、Thermal Relief、Anti-pad的图形类型可以选择Circle或Oval等用圆形最常见。圆形焊盘加工最容易方形多用于某些特殊场合。如果你做的是大电流插件端子焊盘外径需要比孔径大很多以保证连接强度和过流能力这种情况我一般取孔径加1.0mm以上。2.4 大电流和散热焊盘的特殊处理遇到大电流器件或底部有大面积散热焊盘的芯片封装焊盘设计会复杂一些。以QFN-16为例芯片底部通常有一个大焊盘Exposed Pad尺寸跟芯片底面积几乎一样比如3mm×3mm。这个焊盘设计得太小会影响散热太大了回流焊时容易浮起或者焊锡拉偏。一般取芯片底面积的80%到90%作为焊盘尺寸比较合理我常用85%。大焊盘的另一个关键问题是SMD焊盘隔热设计。大焊盘连接到大片铜皮时铜皮的散热作用会让焊盘温度不够导致虚焊。常规做法是焊盘底部对应区域用十字花连接Thermal Relief焊盘下方禁止铺铜也就是在库文件里或者PCB设计中加入禁布区域。Allegro里可以在封装内用Route Keepout层画一个覆盖焊盘和外扩0.5mm的禁布区提醒自己在布线阶段不要在该区域铺铜或走线。此外大散热焊盘在Pad Designer里还要考虑是否开孔。很多PCB厂做QFN大焊盘时会在焊盘上打几个过孔来辅助散热过孔建议放在焊盘外侧或中心区域。封装阶段可以预留散热过孔的位置标记但实际过孔要在PCB阶段放置因为过孔数量和位置往往跟叠层、电流有关封装里固定死反而不灵活。3. 封装符号搭建从空白画布到完整封装3.1 新建Package Symbol并设置绘图环境焊盘文件准备好了接下来进入封装编辑器。File - NewDrawing Type选择Package Symbol文件名填QFP48_C4C4代表引脚间距0.5mm的常用代号。这里要养成给封装起规范名称的习惯我常用的命名格式是“封装类型_尺寸_间距_焊盘尺寸”比如QFP48_7x7_P0.5_Pad0.4x1.4一眼就能看懂参数避免后期从几百个封装里选错。进入编辑器后先设置绘图区格点Setup - Grids把格点设成0.05mm非格点Non-Etch和所有层的格点都同步设置。接着配置Display - Color/Visibility把以下层打开Package Geometry的Silkscreen层、Assembly层、Place Bound层、Ref Des的Silkscreen层和Assembly层、以及Etch的Top层。其他层全部关掉保证画图时层次清晰。这里建议先把原点定在芯片中心。后续放置焊盘时以原点为基准计算坐标非常方便。如果产生原点不在预期位置的情况用Setup - Change Drawing Origin重新设置即可。对于对称封装原点设在中心还能方便镜像翻转和旋转。3.2 放置焊盘坐标、旋转与编号分配放置焊盘是整个封装制作中最枯燥也最容易出错的一步。在Allegro封装编辑器中用Layout - Pins调出放置焊盘命令首先选中之前保存的QFP48_0.4x1.4.pad焊盘文件然后设置放置数量和间距。QFP-48有48个引脚四边各12个间距0.5mm所以两侧引脚间距是0.5mm×115.5mm也就是从中心到最外侧引脚距离2.75mm加上焊盘本身的尺寸你还需要留出足够空间放丝印。我习惯先放第一边的12个焊盘。选择焊盘后在命令行输入相对坐标或者用鼠标点选起始位置然后按X方向复制增量0.5mm。Allegro支持在Options面板里设置引脚的引脚编号、数量和增量方向。比如起始位置设定为X-2.75mm引脚编号Pin 1开始数量12X方向增量0.5mmZ方向增量0执行后这一排焊盘就出来了。放置时有一个关键操作利用引脚编号自动分配功能。Allegro会按顺序给焊盘分配Pin 1到Pin 12对应对面的引脚继续编号。对于四边都有引脚的QFP放第二边时需要注意焊盘的旋转方向。Allegro里放置引脚时可以设置Rotation角度第二边的焊盘宽度方向与第一边不同需要旋转90度否则焊盘方向会错误。放完第四边后进入Edit - Text或者用右键选择Edit Text修改引脚编号将这个焊盘标记为Pin 1因为QFP的引脚编号是逆时针的所以各个方向都要按顺序调整。放置焊盘时最实用的技巧是在Options面板里把“Pins”列表展开实时观察每个焊盘的坐标。如果发现某个焊盘坐标有偏差可以在放置完成后用Edit - Move配合精确移动修改将选中焊盘移动到指定坐标。坐标精度直接影响贴片机的贴装精度务必精确到0.01mm以内。3.3 丝印、装配层与器件本体的绘制焊盘放完了整个封装还只是个骨架真正的可读性靠的是丝印和装配层。丝印Silkscreen是PCB板上的白色线条和文字是装配工人识别器件位置和方向的依据。在Allegro封装编辑器中Package Geometry下的SilkScreen_TOP层就是用来画丝印的。丝印绘制建议用线条线宽至少0.15mm推荐0.2mm。太细的丝印在PCB生产工艺中可能印不出来或者模糊。画一个QFP-48的丝印框就是本体外扩0.3mm左右的一个方框四角可以加圆角防止尖端残留油墨。用Add - Line命令在Options里选Package Geometry、SilkScreen_TOP、Line然后画线。画完别忘了用“Join”或在属性里统一线宽。丝印上还要标出Pin 1位置。常见做法是在Pin 1附近画一个小圆点或一个小横线也可以在丝印框的左上角画一个45度切角。切角比圆点更明显方便贴片机操作员一眼识别方向。注意丝印线不要画到焊盘上丝印边缘与焊盘边缘至少保持0.2mm以上的距离否则焊接时丝印油墨可能被掀起或污染焊盘。装配层Assembly_TOP是给SMT贴片机编程用的画的是器件实际占用的轮廓线通常是本体的精确尺寸。以QFP-48为例本体7mm×7mm在Assembly层画一个7mm×7mm的方框不要外扩。同时建议在装配层中央放一个“QFP48”的文本标识方便在PCB文件里快速识别器件。文本高度不要太大2.5mm到3mm即可太高会跟实际器件重叠太低看不清。3.4 位号、器件高度与Place Bound位号RefDes和Place Bound是很多人容易漏掉的内容但它们直接影响后续布局和DRC检查。位号分为两类丝印层位号和装配层位号。在Ref Des下的SilkScreen_TOP层放置“U*”格式的占位符这里的星号是通配符Allegro导入到PCB后会自动替换为实际的元件编号比如U1、U3。装配层位号放在Ref Des下的Assembly_TOP层内容也是“U*”。Silkscreen层位号是给板厂和装配工人看的Assembly层位号是给SMT编程用的两者缺一不可。位号的位置和高度要注意。Silkscreen层位号一般放在丝印框外侧不要压在器件本体下方否则贴片完成后看不见装配工人无法核对。高度根据板子密度选择常规1.27mm左右密度大时可以用0.8mm。位号文字还可以设置旋转角度一般保持0度横向排列方便阅读。有人在库文件里把所有器件位号都放在同一位置比如原点附近导入PCB后再手动挪开这种方式效率很低不如在库文件里就摆好。Place Bound是Allegro用来做元件占位区域和DRC检查的层。在Package Geometry下的Place_Bound_TOP层画一个比本体大一些的方框一般外扩0.5mm左右。如果没有Place BoundAllegro在自动布局或者检查元件间距时会报错甚至无法正确识别器件边界。Place Bound也不宜画太大太大会导致元件间距DRC过宽板子利用率下降。器件高度在Setup - Areas - Package Height里设置。选择包络区域后在Options面板输入Height的最小值和最大值比如0mm到1.6mm。这个高度数据会传导到PCB的3D视图和元件干涉检查中如果左右侧误差太大3D模型配合时会出现穿插或悬空。4. 交付前的验证检查与常见问题排查4.1 封装检查清单逐项核对保存前必须做一轮系统性的自检。我自己常用的检查清单如下表检查项检查方法常见问题焊盘尺寸对照手册逐一核对宽度、长度、间距焊盘宽度接近或大于引脚间距导致连锡引脚编号查看Pin 1位置和编号顺序是否与手册一致Pin 1位置放反、编号顺序错乱丝印与焊盘距离用Dimension或测量工具检查间距丝印压焊盘、油墨进焊盘区域装配层轮廓与本体尺寸对照装配轮廓比本体大或小1mm以上Place Bound确认已画且大小合理缺失导致DRC报错位号位置确认Silkscreen和Assembly层都有位号只放丝印层位号SMT编程找不到器件原点位置检查原点是否在器件中心或Pin 1处原点跑偏导致贴片机坐标偏移器件高度确认Height值已填入高度为零导致3D干涉检查失效4.2 高频报错与修复实录封装制作中会有一些反复出现的报错和怪问题我就把常见的几个写下来。第一个是“Symbol has no place bound or place bound is too small”。Allegro在调用封装时会检查Place Bound是否存在没有就会弹警告。解决办法就是在Package Geometry的Place_Bound_TOP层画一个适当的矩形。如果画了但还是报错检查是否画在了正确的层。第二个是“Cell is read-only”或者保存时提示无法写入。这种情况多半是封装文件被设置了只读属性。在新版本Allegro中部分默认库文件带有只读保护你在该库基础上修改后保存时会触发报错。解决方法是把文件复制到自己的库目录去掉只读属性再打开修改或者直接用“File - Save As”另存为新文件不要在原文件上硬扛。第三个是“Pin numbers not sequential”。放置完焊盘后如果某些引脚的编号重复或缺失Allegro会警告。常见原因是复制焊盘时没有正确修改引脚编号。解决办法是用Edit - Text或者直接点击焊盘在属性窗口中将Pin Number改为正确值。这里一定要耐心逐个核对特别是四边引脚的QFP、BGA这类封装。我习惯在放置完每一边后立刻检查编号而不是全部放完再检查这样能减少返工。4.3 特殊封装场景螺丝孔与异形焊盘螺丝孔在Allegro里怎么做也算是个高频问题。螺丝孔分为金属化孔和非金属化孔两种。金属化螺丝孔常用于需要接地或屏蔽的场合做法跟普通插件焊盘类似但通常不从原理图中引用电气连接而是在PCB板上直接用封装方式摆放。推荐的做法是用Pad Designer做一个不带电属性的Mechanical焊盘比如孔径3.2mm、焊盘外径5.0mm然后在封装编辑器里新建一个Package Symbol把这个焊盘放在原点再在SilkScreen层画一个直径5.5mm左右的圆形丝印标注“M3”之类的螺丝规格。做完后在PCB编辑器中直接放置该封装即可。如果是非金属化螺丝孔Pad Designer里取消Plated选项钻孔属性选择Non-Plated。这两种孔在Gerber输出时一个是电镀孔、一个是非电镀孔板厂会按你的设置加工弄错会导致螺丝孔内壁要么有铜要么没铜影响功能。异形焊盘也是封装制作中经常遇到的。比如有些电源模块的焊盘是长方形加圆弧角或者是L型、镂空型。Allegro的Pad Designer提供的标准形状可能不够用这时可以在封装编辑器中用Shape命令画异形焊盘。具体做法是先用Add - Shape在Etch的Top层画出焊盘形状然后右键Assign to Pin把它关联到某个引脚上。这种方法自由度很高但要注意形状不能自相交也不能跟其他焊盘间距太小。5. 生成Symbol并落地到PCB封装的最后一公里5.1 生成.psm并配置库路径封装画完后保存为.dra文件这只是封装编辑文件要让PCB编辑器能调用需要生成Symbol文件File - Create Symbol。Allegro会生成一个同名的.psm文件。你不要以为.dra保存了就完事了很多新手直接在PCB里找封装却找不到就是因为没有生成.psm。随后要把焊盘文件.pad、封装文件.psm和封装编辑文件.dra都放到库目录中。Allegro的库路径设置方法是Setup - User Preferences - Design Paths找到padpath和psmpath把存放焊盘和封装的目录加进去。路径配置正确后在PCB编辑器中通过Place - Manually在Advanced Settings里勾选Library再点到封装列表就能看到刚做的封装了。这里顺便说一点库管理的经验。很多团队库目录混乱有人把封装文件放网盘、有人放本地结果换台电脑就找不到库。建议把所有焊盘和封装统一放在一个共享目录下用命名规范区分版本比如QFP48_7x7_P0.5_Pad0.4x1.4_REV1.2.psm每次修改都要递增版本号别让旧版本文件覆盖新版本否则PCB上的封装更新后跟设计文件对不上做板出来就会出问题。5.2 在PCB中调用、替换与更新封装封装进入PCB后实际使用中还有几个常见操作。一个是替换封装比如设计过程中换了芯片封装或者从有引脚改成无引脚选中器件后右键Replace或使用Tools - Replace在对话框里选择新的封装即可。替换后要特别注意检查哪些引脚网络丢失了因为新旧封装引脚数量不一致时原理图关联可能出错。另一个是更新封装。当源库文件修改后PCB中的封装不会自动更新需要执行Tools - Padstack - Refresh和Tools - Symbol - Replace或者用File - Import - Logic Changes同步。我遇到过一种情况封装丝印方向反了在库文件里修正后PCB中刷新了却仍然显示旧丝印纠结了半天才发现是因为没有重新生成.psm文件只改了.dra。所以要记住封装库的修改链路是“改.dra - Create Symbol生成新.psm - 刷新或替换”任何一步漏掉都会导致PCB看不到最新状态。封装做完并顺利落地到PCB这件看似基础的工作其实藏着不少门道。我个人实际操作中最深的体会是封装制作不是“画出来就行”而是“画出来且能生产”。从焊盘尺寸计算到丝印标注每一步都直接关联着打样良率和贴片效率——焊盘小了虚焊丝印反了贴错方向Place Bound缺失自动布局瘫痪这些坑我都踩过。每次做封装时多花十分钟核对手册参数多画一层Place Bound和装配层后面省下的就是返工的钱和时间。