1. 写在前面:为什么是0402,封装到底在做什么
如果你刚开始接触Cadence Allegro,第一件事不是急着画原理图,也不是铺铜走线,而是先搞清楚封装(Package Symbol)是怎么回事。很多新手在导入网表那一步卡住,提示找不到器件,十有八九就是封装没建对或者路径没配好。我当初从AD转Allegro时,就被这套“先建焊盘,再建封装,最后调路径”的流程折腾了两天,回头想想,核心就一句话:Allegro把封装拆成了两个独立单元——Padstack(焊盘)和Package Symbol(封装),你得先有前者才能搭后者。
这次我拿0402来开刀,就是因为它足够小、足够典型,又是贴片电阻电容里最常用的尺寸之一。0402是英制命名,对应公制是1005,也就是1.0mm×0.5mm。你能把这个封装从焊盘到丝印完整建一遍,之后再做0603、0805,或者SOT、QFN,都只是换尺寸、加引脚、调间距的事,流程是一样的。这篇笔记不是官方文档的翻译,而是我实际在Allegro里一步步点出来的过程,加上踩过的坑,适合正在学Allegro的硬件工程师、PCB layout新手,以及从AD转过来的老鸟参考。
我用的版本是Allegro 17.2,但16.6和17.4的操作路径也基本一致,最多是菜单位置有点差异,原理完全不变。下文提到的参数,我以最常用的工程推荐值为准,个别地方也会告诉你为什么取这个值而不是乱拍的。
2. 封装构成拆解:先搞清楚你要画什么
2.1 一个完整贴片封装由哪些部分组成
在动手之前,先把目标拆清楚。一个0402贴片封装,在Allegro里至少由以下四部分构成:
- 焊盘(Padstack):这是封装的核心,决定了器件焊接到PCB上的金属区域,包括顶层的Regular Pad、阻焊开窗(Soldermask)、以及可能有的助焊层(Paste Mask)。对双面板或单面板来说,0402的焊盘通常是表贴矩形或椭圆形焊盘,不需要钻孔。
- 丝印(Silkscreen Top):就是板子上白色的器件轮廓线,用于指示器件位置和方向,0402这类无极性器件虽然不分方向,但轮廓必须画,不然贴片机和维修人员都很难快速识别位置。
- 装配层(Assembly Top):在Allegro里也叫装配外框,主要给贴片机和PCB工厂做贴装定位用,丝印偏“给人看”,装配层偏“给机器看”。
- Place Bound(Placement Bound):这个很多人会忽略,但Allegro在布局时进行DRC检查和器件间距判断,靠的就是每个封装上的Place Bound区域。没有它,布局阶段的器件间距检查会失效。
除了这四块,还有位号(RefDes)的字体、高度、线宽设置,这些都要在封装里预先定义好,否则后边生成装配图、丝印图时会非常乱。
2.2 为什么0402引脚数量少却最能练手
0402两个引脚,一个本体,结构极其简单,但它可以把Allegro封装设计的完整逻辑走一遍:建焊盘时该填哪些层、Thermal Relief和Anti Pad对表贴焊盘要不要管、封装里引脚坐标怎么算、原点放哪里、丝印画多大不会跟焊盘打架、Place Bound要覆盖多少余量。这些知识点是相通的。
有人问我为什么不直接拿0603练,老实说都行,但0402封装本体小,焊盘和丝印的尺寸余量极其有限,你在设置线宽、间距时会更敏感,也更早体会到“封装设计是精度活”这件事。而且0402在手机板、模组板上用到吐,你把它做熟了,后面改改尺寸就能覆盖一大票常用阻容件。
2.3 03015、0201到0402的演进:常规封装为什么选0402
现在很多消费类产品已经切到0201甚至01005了,但0402仍然是性价比和可制造性的平衡点——它比0603省面积,又不像0201那样对焊盘精度、钢网开孔极其敏感。换句话说,0402是“常规标贴封装”里最典型、最值得作为学习范本的尺寸。等你把0402完整创建一遍,往后做0201时只需把尺寸改小、把公差想得更细,思路完全一样。
3. 焊盘设计:0402焊盘的尺寸计算与关键参数
3.1 机械尺寸回顾:0402到底多大
先背一组数据:英制0402 = 长0.04英寸 × 宽0.02英寸,换算成公制就是1.0mm × 0.5mm。注意,这个尺寸指的是器件本体,不是焊盘区域。器件的两端是金属端电极,焊盘要跟端电极可靠接触并形成焊点,所以焊盘必须比本体两端各向外延伸一点,同时又不能延伸太多,否则相邻焊盘间距不够,焊接时容易连锡。
电阻电容的端电极宽度一般跟本体宽度接近或略小,0402的端电极大约0.25mm左右。焊盘设计的核心就是:长度方向要有足够的“爬锡”区域,宽度方向要比本体略宽,保证贴片时的容错空间。
3.2 焊盘尺寸推荐值及计算思路
以下是我个人在实际项目中验证过的推荐值,也是业内比较通用的做法:
- 焊盘长度(X方向):0.6mm。计算逻辑是本体长度1.0mm,两端电极各约0.25mm,所以每端只需要保证约0.15mm的搭接即可。焊盘两端各比端电极略长一点,取值0.6mm是工程上多次验证的稳妥结果。
- 焊盘宽度(Y方向):0.65mm。本体宽度0.5mm,焊盘比本体宽出0.15mm,也就是每边各宽出0.075mm。既不影响相邻引脚间距,又给贴片机吸嘴偏移留了余量。
- 两焊盘中心距:0.8mm。这个值的来源很有讲究。0402器件两端的端电极中心距,约等于本体长度1.0mm减去端电极宽度0.25mm,即约0.75mm。焊盘中心距取0.8mm,略大于器件端电极中心距,目的是让器件贴上去后,端电极能有效落在焊盘内侧偏中的位置,形成良好的“碗底效应”,改善焊接可靠性。如果你用IPC标准或嘉立创的封装向导,出来的结果也基本在0.75到0.85mm之间。
很多初学者喜欢把焊盘做成跟本体一模一样宽,焊盘中心距就等于本体长度,这样表面看着对齐,实际上焊接良率会变差——器件贴装时只要有一丁点偏移,端电极就会部分悬空在焊盘外,造成立碑或虚焊。所以焊盘设计本质是在“抓得住”和“不连锡”之间找平衡。
3.3 在Padstack Editor里新建0402焊盘
打开Allegro后,从Start Page直接进Padstack Editor,或者在PCB Editor里通过Tools → Padstack → Edit打开。我这里以直接打开Padstack Editor为例:
新建焊盘文件:File → New,类型选择Through Single。这里注意,很多人看到0402是贴片元件,下意识选Surface Mount,实际Allegro里建贴片焊盘也是用Through Single或Surface Mount都行,关键看是否需要定义钻孔。0402无通孔,推荐直接用Through Single,在钻孔那一栏留空即可。如果选Surface Mount,后续定义Soldermask层时逻辑也是一样的,看你习惯。我用的是Through Single。
设置单位:默认单位是Mils,一定要改成Millimeter,不然你填0.6进去就只有0.6mil,那焊盘就成针眼了。操作是Design → Units,勾选Millimeter,精度选2位小数或4位小数,推荐4位。
定义Regular Pad:在Layers列表里找到BEGIN LAYER(顶层焊盘),在Regular Pad区域选Geometry为Rectangle或Oblong,填入宽度(Width)0.65mm,高度(Length)0.6mm。我推荐Oblong,也就是长圆形焊盘,因为它的边角更圆润,焊料流动性好,应力集中小。如果用Rectangle,区别只在边角是直角,实际使用也没问题,看你公司的封装库规范。
定义Soldermask层:在Soldermask Top层,同样填一个比Regular Pad略大的尺寸。一般外扩0.05到0.1mm,即宽度0.75mm、长度0.7mm。阻焊开窗如果跟焊盘一样大,Production时绿油对位偏差会导致焊盘边缘被绿油覆盖,所以要外扩一些。我习惯每边外扩0.075mm。
定义Paste Mask层:Paste Mask Top是钢网开孔层,尺寸通常跟Regular Pad一致或略小,钢网开孔如果比焊盘大,锡膏会刷到绿油上。我做0.6mm×0.65mm,跟焊盘一致即可。
Thermal Relief和Anti Pad:这两个概念经常有人混淆,它们都是针对内层电源/地平面连接的。对于0402这种表贴焊盘,如果你用Through Single类型,Allegro会默认也显示内层几个选项,但实际我们不需要连接内层,直接留空即可。很多人在这里纠结半天,其实答案很简单:表贴焊盘不需要Thermal Relief。
完成后保存,文件名我建议格式SMD0402_0R6_0W65_1T,意思是0402封装、长度0.6mm、宽度0.65mm、单面贴片。焊盘命名规范一定要提前定好,不然库大了以后找起来会崩溃。
4. 封装创建实操:从引脚到丝印一步步来
4.1 新建Package Symbol并设置工作环境
焊盘文件保存好后,开始在PCB Editor里新建封装。注意,一定要选对符号类型:File → New,Drawing Type选Package Symbol,名字填0402。如果选了Board或Schematic Symbol,后边流程完全不一样,很多人刚开始就挂在这。
进入封装编辑界面后,第一件事是设置图纸单位和图纸大小。Setup → Design Parameter Editor,在Design选项卡里把User Units改成Millimeter,什么都别急着画,先把单位弄对,不然你后面画丝印时输入0.127mm,结果系统按mil解析,丝印细成头发丝。
图纸大小无所谓,能放下器件就行,我用200×200mil的默认值也够用,反正最终导入PCB时封装原点才是定位基准,图纸大小只影响你编辑时的视野。
接下来设置栅格。Setup → Grids,把所有栅格改成0.025mm或0.05mm的整数倍。0402封装尺寸小,0.1mm的栅格在画丝印时会觉得“对不齐”,0.025mm步进更灵活。
4.2 放置焊盘并精确调整坐标
0402封装只有两个引脚,放置逻辑很简单,但精确坐标是封装质量的命根子。
调用放置引脚命令:Layout → Pins,或者直接在命令框输入“x”。弹出来的Pin Placement对话框里,点击Padstack选择器,从库路径下选中刚才创建的SMD0402_0R6_0W65_1T焊盘。
接下来是放置坐标的确定。我习惯把封装原点设在器件几何中心,这样后续在PCB里按原点对齐时,器件刚好落在光标位置,不会有偏移感。两个焊盘的中心距是0.8mm,所以:
- 1脚焊盘中心:x = -0.4mm, y = 0
- 2脚焊盘中心:x = +0.4mm, y = 0
在放置引脚时,Allegro支持直接输入精确坐标。命令框里会出现“Enter origin of pin”的提示,此时输入“x -0.4 0”并回车,就把第一个焊盘放上去了。然后继续输入“x 0.4 0”放第二个。如果你不知道这个技巧,用鼠标点,点半天都对不准0.8mm的中心距。这里强烈建议养成命令行输入坐标的习惯,精确、高效,这也是Allegro和AD操作逻辑最大的不同之一。
放完焊盘后,用Display → Showmeasure或直接按快捷键,测量一下两个焊盘中心距离,确认是0.8mm。再测量焊盘边缘间距,应该是0.8mm减去两个焊盘各一半的长度0.3mm,即0.2mm。0402的本体长度1.0mm,焊盘间距0.2mm意味着两端端电极之间的本体底部有0.2mm露在外面,这很正常,焊盘不是把本体整个盖住的。
4.3 添加丝印外框与装配层
焊盘放好了,接着是画丝印。这里有个很多新手都会犯的错误:丝印直接画在焊盘上。正确的做法是丝印外框与焊盘保持至少0.15~0.2mm的间距,因为丝印油墨有一定厚度,如果压在焊盘上,会导致焊盘表面不平整,影响焊接,严重的会造成器件立碑。
画丝印的步骤:
在右侧Options面板里,Active Class选Package Geometry,Subclass选Silkscreen Top。注意千万别选成Etch或Board Geometry。
选择Add → Line,线宽设置为0.127mm(5mil),这是工程上常用的丝印线宽,太细了工厂做不出来,太粗了在0402这么小的器件上会糊成一片。
画一个矩形外框。我的习惯是以焊盘整体包络线为基准外扩0.2mm。焊盘最左边缘是-0.4mm(中心)减去焊盘长的一半0.3mm,即-0.7mm;最右边缘是+0.7mm。丝印外框就画在x = -0.9mm到x = +0.9mm,y方向焊盘宽度0.65mm的一半是0.325mm,丝印外扩0.2mm,所以y范围取-0.55mm到+0.55mm。整个丝印矩形就是长1.8mm、宽1.1mm。这样画出来,丝印线和焊盘之间有0.2mm的间隙,视觉上清晰,工艺上也安全。
画完丝印后,再画装配层外框。操作逻辑一样,Subclass选Assembly Top,但线宽可以粗一点,0.2mm左右,形状画成跟器件本体尺寸基本一致或略大0.1mm,即x方向从-0.55mm到+0.55mm,y方向从-0.3mm到+0.3mm。装配层不参与PCB制造,主要给贴片机编程做视觉定位用,画得贴近本体即可。
4.4 Place Bound区域的设置
Place Bound是Allegro封装里经常被忽略但实际上非常重要的一个区域。它的作用是告诉Allegro:“这个封装占多大地方,别人不许进来。”布局时器件之间的间距DRC检查、自动布局时的碰撞检测,全靠它。
操作路径:Setup → Areas → Package Boundary,然后在Options面板里选择Package Geometry下的Place_Bound_Top,画一个矩形框,覆盖范围比丝印再外扩一点,我做的是x从-1.0mm到+1.0mm,y从-0.65mm到+0.65mm,也就是2.0mm × 1.3mm的矩形。
为什么要这么大?因为Place Bound越小,布局时可以摆得越密,但DRC检查会非常苛刻;越大越宽松,但浪费板面积。0402我取2.0mm×1.3mm,大概比本体四周各多出0.4到0.5mm,已经是比较紧凑的设置了。注意,Place Bound不一定非要矩形,但矩形在布局阶段计算最快,除非有异形需求,否则一律用矩形。
4.5 位号(RefDes)的放置与规范
位号就是你在原理图里的R1、C2这些编号。在封装里放位号,相当于占个位置,等导入网表后,Allegro会把这个位置上的文字自动替换成具体的网络标号实例。
操作:Labels → RefDes,然后在Options面板里选择装配层和丝印层分别放置。
- 装配层位号:Subclass选Assembly Top,文字高度我在0402封装里设为0.8mm,线宽0.13mm。这个位号主要用于装配图输出,一般放在器件本体旁边或内部,但要确保不与焊盘重叠。
- 丝印层位号:Subclass选Silkscreen Top,高度也设0.8mm。
这里要特别提醒:0402器件太小,很多公司直接在封装里不画丝印位号,而是靠装配层位号配合PCB丝印统一生成。我建议初学者还是老老实实两层都放,等你熟练了再根据公司规范精简。位号字体的设置,在Edit → Change Text Block里可以调,或者在Text Setup里预设好。不同公司对位号高度、线宽有不同规范,常见的是0.8mm高、0.13mm线宽,也有用1.0mm高的,主要看板子密度。
4.6 保存封装并检查
保存快捷键是File → Save,或者直接按F键旁的存盘快捷键。保存后,封装文件是一个.dra文件,但它还不能直接用于PCB设计,必须再生成一个对应的.psm文件。在Allegro里,当你保存封装时,系统会自动生成.psm,也就是Package Symbol的编译文件。实测下来,如果你改了.dra但没重新保存,PCB里的封装不会同步,因为PCB调入的是.psm,这是很多人“改了封装但板上不变”的原因。
保存后建议做一次自我检查:File → Create Symbol,或者重新用File → Open打开这个封装,确认焊盘、丝印、装配层、Place Bound四样都存在,然后量一下关键尺寸,确认无误。
5. 原理图符号联动与后续网表导入的衔接
到这里,0402封装本身已经建完了。但有一件事经常被忽略:Allegro的封装还有“原理图符号”这个概念,普通阻容元件的原理图符号用Cadence自带的库就够用,不需要你从头画,但你需要把原理图符号的PCB Footprint属性填成你刚创建的封装名。
在OrCAD Capture里,双击你的电阻电容元件,在属性列表里找到PCB Footprint,填上“0402”,注意一定要跟Allegro里的封装文件名完全一致,包括大小写。之后再生成网表,Allegro导入网表时才会在封装库路径下找到这个.psm文件。
如果你在OrCAD里没有找到PCB Footprint属性,可以在原理图库编辑器里,选中元件,右键Edit Properties,然后新建一个属性叫PCB Footprint,值填0402。这一步漏了,后边导入网表会报错,提示找不到封装。
6. 常见问题与排查技巧实录
做封装这件事,流程不复杂,但每一步都可能出幺蛾子。下面列出我自己踩过、也见别人踩过的几个高频问题,供大家排查时对照。
6.1 封装库路径不对导致找不到封装
现象:在Allegro里调用器件时提示“Symbol not found in library”,但明明封装已经保存了。
排查:开机后进入PCB Editor,Setup → User Preferences → Design Paths,检查Padpath和Psmpath里有没有包含你的封装库目录。这两个路径一个管焊盘文件,一个管封装文件,缺一不可。很多人只配了Psmpath,忘记配Padpath,结果封装里的焊盘文件找不到,报错就来了。
另外,如果你是在另一台电脑或服务器上打开的工程,库路径可能没同步。我的习惯是在User Preferences里把库路径设为相对路径,而不是绝对路径,这样整包工程拷给别人时不容易断链。
6.2 焊盘中心距算成0.8还是0.75、0.85的取舍
网上能查到0402焊盘中心距有说0.75mm的,有说0.8mm的,还有IPC标称0.85mm的。到底用哪个?
先说结论:常规消费类产品,0.8mm是最通用的,适合回流焊,兼容性也好。0.75mm更接近器件端电极中心距,焊接时器件会坐得更“正”,但焊盘间距稍小,对贴片精度要求高一些。0.85mm是IPC-7351里推荐值,偏保守,适合手工焊接或生产设备能力一般的情况。我看到不少军工或汽车级产品会故意放宽焊盘间距,牺牲一点面积换可靠性。
如果你所在公司有封装规范,按规范走;没有规范就用0.8mm中心距,这是最大公约数。
6.3 画丝印时总是不小心画到Etch层
现象:丝印线看起来跟焊盘一样高亮,导出Gerber时丝印层一片金属。
原因:画丝印时Options面板里Active Subclass没选对,选成了Etch Top或者Board Geometry。
处理:选中误画的线,按Delete删除,重新把Subclass切到Silkscreen Top再画。这个问题在16.6版本里特别容易出,因为默认的Active Subclass常常是Etch层,很多人一进来就画线,根本没注意下拉框。新手建议每次画线前都看一眼Options面板顶部,养成肌肉记忆。
6.4 保存报错“Cannot save symbol with zero pins”
现象:保存封装时报错,提示删除或添加引脚。
原因:封装里一个引脚都没放,或者引脚放在了一个不可见的类里。
处理:回去确认两个焊盘是否真的放上去了。有时候你点了Pins命令但没放成功,Allegro会保留一个空的操作记录。解决方案是正常再放置一遍焊盘,或者直接重启PCB Editor再试。这个报错另一个常见场景是:你从某个模板新建封装时,模板本身不带焊盘,你又忘了放,一保存就报错。
6.5 封装修改后PCB里不更新
现象:改了.dra,重新保存了,但打开PCB板文件,器件还是老样子。
原因:Allegro在PCB里用的是.psm符号缓存,而不是实时读取.dra文件。你改了.dra,PCB里不会自动同步。
处理:在PCB Editor中,执行Tools → Update Symbols,勾选Package symbols,点Refresh即可。快捷键是Place → Update Symbols,不同版本菜单位置略有差异,但关键词是Update Symbols。这里提醒一下,更新符号后,PCB走线或铜皮可能因为封装外形变化报DRC错误,属于正常现象,按需要再调整即可。
6.6 0402封装的位号看起来比焊盘还大
这是正常的。0402焊盘才0.6mm×0.65mm,位号0.8mm高必然比焊盘大。所以你去看正规产品板,贴片阻容的位号通常不全放在器件本体内部,而是通过装配层位号的自动移位功能,在出装配图时单独生成。Allegro中可以通过Setup → Design Parameter Editor → Text选项卡,调整位号默认位置和方向,也可以在出图时用Manufacture → Silkscreen来统一调整丝印位置,把位号挪到器件本体外边不被遮挡的位置。
7. 一些额外的经验:从0402到整个封装库的管理思路
封装建完只是第一步,怎么管理好封装库,才是长期电气设计效率的保障。我自己的经验是:按器件类型/尺寸分目录保存,焊盘一个目录,封装一个目录,原理图符号可能又单独一套。焊盘文件按“尺寸_焊盘类型”命名,比如SMD0402_0R6_0W65_1T,封装文件直接按“封装名.dra”命名,比如0402.dra、0603.dra。文件名里包含尺寸参数,好处是出问题时你一眼能判断出是哪个焊盘、多大尺寸。
库文件最好放到一个同步盘或Git仓库里,每次改动有版本记录。硬件设计这个领域,最怕的就是“我明明改了库,怎么板子上还是旧的”,版本管理能从根上解决这种问题。
还有一个技巧:用SKILL脚本批量生成常用封装。Allegro支持SKILL脚本,你可以写脚本把0402到1206的所有电阻电容封装批量生成出来,参数写在Excel里,脚本循环读取并创建焊盘和封装。这个过程上手有一定门槛,但属于“一劳永逸”的投资。如果你不熟悉SKILL,也可以先从手动建几个关键封装开始,积累感觉后再考虑自动化。
最后分享一个小细节:很多人建封装时会把原点放在左下角或焊盘中心,我建议放在器件几何中心。这样在PCB里移动器件、按坐标对齐、甚至做拼板时,都以器件中心为基准,后期写坐标文件给贴片机用也更直观。贴片机的坐标本来就是按器件中心输出的,你封装原点跟它一致,导出的坐标文件直接能对接,不需要二次换算。
对了,还有一个关于命名的问题。我见过有人把0402封装命名为“R0402”或“C0402”,以此区分电阻和电容。这种做法我严重不推荐。因为同一个尺寸的电阻电容,焊盘是完全一样的,你分两个名字只会让库越来越冗余。正确做法是统一叫“0402”,电阻电容共用一套封装,原理图里靠元件类型区分是R还是C,PCB里根本没区别。
这篇笔记写到这里,0402封装的完整创建思路、操作步骤、参数依据和坑点就都覆盖了。封装这件事,再复杂也逃不出“焊盘-丝印-装配-边界”这四板斧,你把0402走一遍,后面的路就通了。