第一次用Allegro建封装很多人会把所有不顺归结为“软件反人类”其实多半是还没搞懂两件事0402到底怎么取数以及pad和symbol之间是什么关系。这篇笔记就拿最常用的0402贴片电阻/电容封装开刀把从焊盘设计到生成.psm的完整流程走一遍。操作基于Allegro 17.2/17.4界面16.6也基本通用适合刚从Altium/KiCad转过来的板子工程师也适合想统一公司封装库规范的硬件同事收藏。1. 一开始就把0402的尺寸和文件体系搞清楚1.1 0402不是0.4mm×0.2mm英制命名和公制实物的换算先解决最基础、也最容易翻车的问题。0402这个型号绝大多数时候是指英制尺寸元件本体长0.04英寸、宽0.02英寸。换算成公制是1.016mm×0.508mm行业习惯直接取整数按1.0mm×0.5mm设计和采购。日系和国产品牌的数据手册里还经常看到“1005”这个写法意思就是公制的1.0mm×0.5mm。所以当你看到某颗电阻料号里带1005和0402是同一个规格不用怀疑。网上也偶尔能看到有人把0402理解成0.4mm×0.2mm这是字母数字组合带来的直觉误导千万别按这个来。我见过一个刚入行的同事按0.4mm×0.2mm建了一整套小封装后面测间距的时候怎么都不对最后发现是基本定义错了。这件事越早纠正后面越省事。以市面上常见的0402厚膜电阻为例典型本体尺寸大概是长度L1.00mm±0.10mm宽度W0.50mm±0.05mm厚度C0.35mm±0.05mm两端可焊端电极从端部向内延伸约0.25mm。0402电容的封装尺寸也基本一样。这些数值决定了焊盘怎么设计不能按一个“点”去处理你得考虑端电极覆盖区域、焊锡爬升空间和回流焊时的自对准余量。同类封装的命名规律也顺手列一下0603就是英制0.06in×0.03in对应公制16081.6mm×0.8mm0805对应公制20122.0mm×1.25mm。后面如果要在Allegro里把整个片式电容电阻库都建起来这套换算关系会一直用得上。1.2 Allegro封装不是“一个文件”pad、dra、psm各管什么在Altium里新建封装焊盘、丝印、位号都在同一个封装编辑器里搞定。Allegro完全不同它把封装拆成了两层文件焊盘栈Padstack后缀.pad负责描述一个焊盘的物理结构包括顶层焊盘多大、阻焊开窗多大、钢网开窗多大封装符号Package Symbol的源文件是.dra负责描述元件整体包括放哪几个.psm、丝印画在哪、Place Bound范围是多少封装编译输出文件是.psmPCB设计时真正调用的是这个文件。所以标准的建库流程是先在Padstack Editor里建.pad再到PCB Editor里新建Package Symbol类型的.dra把.pad放进去最后用FileCreate Symbol生成.psm。原理图里的元件符号单独是另一套体系通过原理图器件属性里的PCB Footprint填上封装名网表导入时才会和PCB封装关联上。很多新手卡在Allegro封装这一关就是没理解这个拆分逻辑以为建完.dra就是万事大吉结果PCB里PlaceManually半天找不到元件。实际上你还差最后一步生成.psm并且在Design Paths里把库路径配置好。这个体系绕是绕但好处也很明显同一个0402焊盘可以被电阻、电容、磁珠好几个封装复用后面想改焊盘尺寸只要动一个.pad文件所有引用它的封装在下次加载时一起更新。2. 焊盘定多大从IPC-7351到0402的推荐值2.1 手工计算还是抄推荐表确定焊盘尺寸优先级我是这么排的第一优先用公司封装库规范第二优先用器件数据手册里的Land Pattern推荐图第三才轮到IPC-7351标准或行业通用经验值。如果前两个都没有那就按下面的通用做法来。0402这种两脚片式元件焊盘设计的核心就两个方向垂直元件长轴方向的宽度以及沿元件长轴方向的长度。宽度方向要保证焊盘比元件本体略宽让侧面和底部都能吃锡长度方向要考虑端电极的覆盖长度、焊料填充区和两个焊盘之间的绝缘间隔间隔太小容易连锡太大又会造成元件浮高或者立碑。从IPC-7351的思路看0402的推荐焊盘宽度一般是0.55mm到0.61mm之间取0.56mm比较稳妥焊盘长度沿长轴一般在0.55mm到0.65mm之间取0.60mm合适。两个焊盘中心距取1.00mm以元件几何中心为原点左右各放0.50mm。这套数值我用在常规0402电阻、电容封装上都量产过属于中规中矩不激进的选择。如果你的后端贴片工艺偏保守或者元件本体公差较大可以放宽到焊盘0.60mm×0.65mm、中心距1.05mm代价是中间间隙变大一点对立碑的抑制没那么好。2.2 0402封装推荐焊盘尺寸表与参数说明下面这组参数是直接可以照着用的也是后面Padstack Editor和Package Symbol里要输入的数值。参数推荐值说明焊盘宽度X方向0.56mm对应元件体宽0.50mm两侧各露出约0.03mm焊盘长度Y方向0.60mm沿元件长轴方向外侧悬出约0.30mm焊盘中心距1.00mm元件体中心在原点焊盘中心在±0.50mm焊盘内侧边缘间距0.40mm太窄易连锡太宽易立碑阻焊开窗0.76mm×0.80mm每个方向比焊盘大0.10mm钢网开窗0.56mm×0.60mm与焊盘等大或按工艺缩0.02~0.05mm简单说一下为什么中心距选1.00mm而不是更小或更大。0402元件本体长1.0mm两端可焊端电极各占约0.25mm中间实际被端电极覆盖的区域只有0.5mm左右。焊盘中心距1.00mm时每个焊盘沿长轴方向从元件端部向外延伸约0.30mm向内压在端电极内部约0.30mm两个焊盘之间还留有0.40mm的间隙。这个间隙在回流焊时既不会因为太窄导致两个焊盘之间的锡连成桥也不会因为太宽导致元件被表面张力拉得歪斜。阻焊开窗每边外扩0.10mm也是经验值。小于0.075mmPCB厂工艺波动大绿油容易爬焊盘大于0.15mm焊盘之间的阻焊桥太窄分立式小封装容易掉油。0402两个焊盘之间的空隙本来就只有0.40mm阻焊开窗如果外扩0.15mm中间阻焊桥宽度就只剩0.10mm生产时很容易脱落所以0.10mm是比较平衡的选择。3. Padstack Editor实操把0402的SMD焊盘建出来3.1 打开Padstack Editor后的参数配置在Allegro里建封装第一步永远是建焊盘。打开Cadence套件里的Allegro Padstack Editor新建一个焊盘文件命名我建议按这种格式PAD0402R_056_060_C100。含义是0402矩形焊盘、宽0.56mm、长0.60mm、中心距1.00mm。命名里带中心距后面建封装时可以直接从上一步copy数值不用再开文件回忆当初是怎么设计的。等你的库有几百个焊盘时这种可读性就是救命的。新建后最先要做的是在Parameters页签里把Type选成Single单位选Millimeter小数点精度设2位。Type选成Single就是告诉Allegro这是一个纯表贴焊盘不需要钻孔定义。新手容易在这选Through通孔后面会多出一堆钻孔、背钻参数焊盘也莫名变成带有孔属性的异常结构。单位这里必须强调一定要在新建焊盘的一开始就设成Millimeter不要默认Mils然后说“反正能用”。0402焊盘尺寸只有0.56mm如果用Mils精度又是整数位换算出来会产生0.013mm左右的误差对这个小封装来说已经相当可观生产时可能出现焊盘偏移。3.2 Begin、SolderMask、PasteMask三层的设置逻辑在Layers页签里只需要关注三个层其他层保持默认就行。第一层是BEGIN LAYER也就是顶层导电焊盘。Regular Pad选Geometry为RectangleWidth填0.56Height填0.60。这里Width和Height的方向千万别搞反Allegro里Width对应X方向Height对应Y方向。如果你后续打开Assembly层发现焊盘方向不对不是在这里硬调而是回到PCB Editor里放置焊盘时用Angle90旋转。第二层是SOLDERMASK_TOP这是阻焊开窗。很多人第一次看到这层名字以为要在这里把整个焊盘涂满其实在Allegro里这个层表达的是“哪里揭开阻焊”也就是开窗。Regular Pad同样选RectangleWidth填0.76Height填0.80。这样焊盘四周每一侧都比实际焊盘大0.10mmPCB厂做绿油时会按这个窗口露铜。第三层是PASTEMASK_TOP这是钢网开窗。常规做法是跟焊盘等大0.56mm×0.60mm。如果你的SMT供应商反馈0402容易锡膏偏多可以在这层把尺寸缩到0.52mm×0.56mm。我个人的习惯是保持在0.54mm×0.58mm左右既能保证锡量又不容易在回流时拉尖。其他层像DEFAULT INTERNAL、END LAYER这些在Single类型下不要填任何值保持默认空就可以。保存后一个0402的SMD焊盘就建好了。到这里.psm文件还没影子别急这只是第一步。3.3 焊盘命名你的库还乱吗既然正在建库多唠叨一句命名规范。很多公司历史库里的焊盘叫PAD1、PAD2、PAD_A导致后面看到封装只能靠猜尺寸。焊盘命名最忌讳没规则我建议规则是“封装名_形状_宽度_长度_中心距”例如PAD0402R_056_060_C100。焊盘在多个封装中复用时这个命名也一目了然。如果公司已经有规范就按公司来关键是别今天用一套明天换一套。4. Package Symbol实操从新建.dra到生成.psm4.1 新建封装、定原点、设格点焊盘建好后打开Allegro PCB EditorFileNewDrawing Type选择Package symbol名字输入CAP-R0402_1005或者R0402_1005保存目录直接指定到你的库文件夹。注意不要随手存到默认temp目录后面Create Symbol时容易把.psm生成到别的地方。创建后第一步SetupDesign Parameter Editor在Design页签里把User Units设成MillimeterAccuracy设2。这里和Padstack里的单位逻辑一样16.6版本经常出现“单位没改就画图、画完再改导致坐标偏差”的情况最稳妥的办法是一开始就设好后面不要动。接着SetupGrids把Non-Etch相关的格点都设成0.05mmEtch格点如果不做特殊用途也设成0.05mm。0402总量程才1mm格点如果还是默认的0.254mm放焊盘时你连对齐都做不到。设成0.05mm后鼠标吸附精度足够画丝印和Place Bound。原点的选择也值得说。Allegro封装默认原点在画布中心附近但我们设计封装时一定要把元件几何中心放在(0,0)。这样放置焊盘时左焊盘中心就是(-0.50,0)右焊盘中心是(0.50,0)后续在PCB里旋转、镜像时都以元件中心为轴不会出现整体偏移出焊盘的表情。4.2 放焊盘中心距、方向不能想当然选择LayoutPins16.6里也可以从PlacePin进入在Options面板的Padstack栏点浏览按钮选到刚才建的.pad文件。放焊盘我强烈建议用坐标输入别用鼠标点。因为你一但在格点上手抖一下小封装差0.05mm就会让焊盘中心距变成1.05mm。在命令行输入x -0.5 0回车第一个焊盘中心就落在(-0.50,0)再输入x 0.5 0回车第二个焊盘落在(0.50,0)。这样两个焊盘的几何对称性完全由命令保证。如果发现焊盘放出来的方向跟预期相反比如你需要长方向沿X轴但实际显示长方向沿Y轴别急着删掉重来。在Options面板里把Angle设成90度再放一次或者放完后选中焊盘右键Rotate旋转90度。Allegro会把焊盘连同阻焊、钢网层一起旋转不需要在Padstack里单独改。放完后养成一个好习惯用DisplayMeasure量一下两个焊盘中心之间的距离确认是1.00mm再继续。这个步骤只要花十秒但能避免你后面画完丝印才发现尺寸错误、一锅端重来的窘境。4.3 画丝印和Place Bound尺寸和位置一样重要焊盘放好后开始画丝印。在Options面板里把Active Class and Subclass切换成Package Geometry / Silkscreen_Top然后用AddLine或AddRectangle画元件外形。丝印线宽建议设成0.15mm0402本身很小太粗的线会压到焊盘太细在生产时可能断线。画一个矩形轮廓从(-0.50,-0.25)到(0.50,0.25)。这里要注意画丝印不是越满越好因为0402的两个焊盘之间的间隙只有0.4mm如果丝印矩形正好卡在焊盘内侧就等于把0.15mm宽的线压在焊盘边缘上。更稳妥的做法是只画两个短竖线表示元件两端或者画一个空心矩形但把上下两边留到焊盘内侧以外。我自己画0402时通常只画左右两条竖线中间不连宽度覆盖元件体这样既不影响识别元件方向也完全不压焊盘。画完丝印后切换到Package Geometry / Place_Bound_Top。Place Bound是Allegro自动布局和DRC用来判断元件占用范围的矩形一定要画。尺寸比实体略大即可一般每个方向外扩0.05到0.10mm所以我通常画(-0.55,-0.30)到(0.55,0.30)。很多新手会忽略Place Bound结果在PCB里放置元件时Allegro不认为这个封装有实体占用区域DRC里元件间距检查全都不生效自动布局更是直接摆到板框外。这是一个“看不见但后果严重”的层。如果有出装配图的需求还可以在Package Geometry / Assembly_Top画一个和丝印一致的外形放到Assembly层。这个不是强制但正规的商用封装库一般都有。4.4 加Ref Des、保存并生成.psm位号也是封装的一部分。用AddTextOptions里Class选Ref DesSubclass选Silkscreen_TopText Block设3或4号。0402这么小的元件位号如果字太大放上去会盖住焊盘和丝印。输入内容填*这个星号在PCB设计时会被自动替换成R1、C3这类实际位号。如果你在装配层也需要位号可以把同样的Text再放到Ref Des / Assembly_Top里。到这里封装的主体已经完成。保存.dra后关键一步来了FileCreate Symbol。这一步会生成.psm文件如果成功命令行会显示类似Creating symbol ... successfully的提示。很多新手保存完.dra就直接去PCB里放置结果PlaceManually的列表里什么都找不到原因就是没有执行Create Symbol。如果ToolsReports里想看封装信息可以生成Symbol Report确认焊盘数量、Ref Des层、丝印层是否齐全。通常到这个阶段封装本身已经能用了。5. 踩坑记录0402封装实战最容易翻车的地方5.1 生成.psm后PCB里放不出来库路径和文件查找逻辑这个问题在Allegro新手期出现频率极高。明明封装建好、.psm也生成了但打开PCB后PlaceManually的列表里就是没有。先检查SetupUser PreferencesDesign Paths里的padpath和psmpath。如果你的库目录没有加进去Allegro就算把.psm文件放在当前工作路径下有时候也“看不到”。把库目录分别添加到这两个路径变量中添加后最好重启一次PCB Editor因为部分版本对路径变量不是即时刷新的。再检查原理图符号里的PCB Footprint属性这个值必须填.psm的文件名不带扩展名也不带路径。很多人填成了R0402.psm或者带反斜杠的路径网表导入时就对不上。如果PCB Editor提示找不到.pad文件说明psmpath里虽然有.psm但padpath里没有.pad文件所在的目录。Allegro加载封装时会先去解析封装里引用的每个.pad找不到焊盘整个封装也无法正常放置。5.2 read-only和文件占用不是玄学多半是路径权限热搜词里有一条“allegro cell read-only”这个问题我遇到过很多次。触发read-only的原因通常有三个。第一个是库目录本身是只读的特别是从版本管理工具或者共享服务器上拉下来的库Windows文件属性默认带“只读”。解决方法是右键去掉只读或者重新检出文件。第二个是同一个.dra或.psm文件正被另一个PCB Editor进程占用Allegro加锁之后第二次打开就会报只读。第三个是文件所在的共享目录权限不足可以先把文件复制到本地目录试一下复制到本地能正常改名和覆盖基本可以断定是服务器权限问题。判断具体是哪个原因最直接的方法是去目录里看文件属性把只读勾去掉再试。如果还不行看看系统里是不是开了多个Allegro窗口。5.3 丝印压焊盘、阻焊开窗太小、格点偏移小封装的细节放大效应这三个问题都属于“封装看起来好像没问题但板厂和SMT那里疯狂报问题”的类型。丝印压焊盘前面讲过一次这里再强调。0402焊盘间距只有0.4mm丝印线哪怕只伸进来0.1mm都会让绿油或字符油墨覆盖到焊接区边缘影响可焊性。我在实际项目中见过丝印框压在焊盘上导致贴片后出现焊点不饱满的情况虽然不影响功能但AOI看得很不舒服。解决办法一个是画内缩的丝印另一个是在出Gerber前把丝印层独立检查一遍。阻焊开窗太小的问题通常是Padstack里SolderMask忘了设或设成和焊盘等大。只要PCB厂工艺稍微带一点波动绿油就会爬进焊盘一圈导致可焊接面积变小。所以我才反复强调每边外扩0.10mm。格点偏移的问题多发于创建封装前没把Grids设成0.05mm然后画丝印和Place Bound时鼠标吸附到0.254mm的默认格点产生肉眼几乎看不出的偏差。这种偏差在放置单个元件时无所谓但在BGA/高密板上一旦引发DRC间距问题查起来耗时很长。我建库时有个习惯把Non-Etch所有Grid X/Y都设0.05mmEtch设0.025mm直到整个封装画完都不动。最后说点题外话。0402封装这套流程走通之后0603、0805、1206甚至钽电容A/B型壳号思路完全一样改焊盘尺寸、改丝印框、改Place Bound范围、改命名即可区别只是具体数值。我一开始在Allegro里建第一个封装时也被单位约定和文件机制劝退过后来把“先pad后symbol、焊盘尺寸照规范、丝印不压焊盘、原点摆对称”这几条刻进习惯里效率很快就上来了。建完之后记得把.pad和.psm都收进公司库命名带上尺寸和中心距一年后再回头维护这套库你会感谢自己当初在这篇笔记里学到的那点“强迫症”。