做封装这件事,你在原理图库和PCB库之间来回折腾的时候,迟早得自己上手。Cadence 17.4的Allegro封装制作流程,说难不难,但步骤分散在几个编辑器里,刚接触的人容易卡在“不知道下一步点哪里”。这篇教程就是把你从零开始画一个完整PCB封装的过程完整过一遍,从焊盘设计到丝印整理,全部按实际操作的顺序来,每一步尽量说清楚为什么要这么做。
这篇内容适合几类人:刚转行做硬件设计的新人,手头有数据手册却不知道如何转成封装尺寸的技术支持,以及平时用Allegro画板但封装一直依赖别人、这次想自己掌握全流程的工程师。不管你是画通孔插件封装,还是表贴封装,整个思路都通用。Cadence 17.4和16.6在封装编辑器上的操作逻辑基本一致,我以17.4的界面为主,但老版本用户也能照着做。
1. 做封装前,先把这些东西定下来
很多人打开Allegro就开始画,画到一半发现尺寸不对,再回头改,效率低还容易漏。封装制作的真正起点不是软件,而是数据手册,你先得把元件手册里的关键尺寸全部吃透。
1.1 先看数据手册,这几个参数必须拿准
拿到一颗芯片或连接器的规格书,别急着看电性能参数,先找“Package Drawing”或“Mechanical Dimensions”这几页。你需要从中提取的核心尺寸包括:引脚间距(Pitch)、引脚宽度(Lead Width)、引脚长度(Lead Length)、器件本体长宽高、引脚数量,以及引脚相对于本体中心的偏移量。
以最常见的SOIC-8封装为例,手册会给出像“1.27mm pitch,body width 3.9mm,lead width 0.41mm”这样的信息。这些数字不是说直接照抄就行,焊盘尺寸要在此基础上做一些补偿,通常是用引脚宽度或长度加一个固定增量,具体增量多少和焊接工艺、组装精度有关,这个稍后细说。另外特别注意一点,有些手册标注的是“推荐焊盘尺寸(Recommended Land Pattern)”,如果是这种情况,你可以直接用推荐值,不用再自己加。
一个有经验的工程师拿到手册,第一件事是做一张“封装参数提取表”,把引脚数、间距、宽度、长度、本体尺寸、高度逐个列出来,再标注哪个数字来自手册的哪个图。这个过程看着繁琐,却能帮你避免最致命的问题:手册单位看错。很多国外器件手册使用毫米和mil两套单位,标注混在一起,你要是把0.65mm看成0.65mil,做出来的封装就差了40倍,完全不能用。
1.2 Cadence 17.4的封装设计流程总览
在Allegro中,一个完整的PCB封装由两部分组成:焊盘(Padstack)和封装符号(Symbol)。焊盘是封装的基础单元,定义的是金属部分和过孔结构;封装符号则是在Allegro中用这些焊盘拼出来的元件整体,包括引脚、外形、丝印、装配层和占地区域。
所以标准流程是:先打开Padstack Editor单独建焊盘,把它保存到焊盘库路径下,然后在PCB Editor中新建封装文件,调用这些焊盘,摆放引脚位置,再画外框和丝印,最后保存为.dra文件,并生成.psm文件供PCB调用。这个流程在Cadence 17.4里没有变化,但要注意17.4的库文件格式与老版本兼容性问题,跨版本使用库时最好先在“Package Design”模式下检查一遍引脚和丝印位置是否正确。
初学者经常犯的一个错是跳过了焊盘制作,直接在封装里用一个简单的矩形焊盘代替。临时画个铜皮确实能让封装“看起来完成了”,但后续做DRC检查、出Gerber、做仿真都会出问题,因为缺少了焊盘应有的层叠结构和钻孔信息。所以老老实实走正式流程,磨刀不误砍柴工。
2. 焊盘是封装的地基,先把它搞定
焊盘制作是在Padstack Editor里完成的。它决定了一个引脚连到PCB上时,哪些层有铜、哪些层没有,以及孔的尺寸。焊盘做错,后面的封装就是空中楼阁。
2.1 焊盘类型怎么选
焊盘分为两大类:通孔焊盘和表贴焊盘。通孔焊盘用在插件元件、连接器、接插件上,需要通过钻孔穿过整个板子;表贴焊盘用在贴片元件上,只存在于表面层。
从Padstack Editor的“Type”选项上,你可以看到“Through”和“Single”两种定义方式。通孔焊盘需要定义的是从顶层、内层到底层的完整层叠结构;表贴焊盘只需要定义“表层焊盘(Regular Pad)”和“阻焊层(Soldermask)”,顶层的焊盘就作为器件的焊接面。
还有一种“Blind/Buried”类型,用于盲埋孔和HDI板设计,普通项目用不到,新手可以先忽略。对于引脚数量少的被动元件,比如0402电阻,表贴焊盘就是两个矩形;对BGA这类阵列封装,焊盘形态相对统一,更讲究命名规范,因为库里可能有几百个封装需要批量管理。
2.2 Padstack Editor界面要点与参数设置
打开Padstack Editor(Start菜单里搜索Padstack Editor,或从Allegro的Tools菜单下进入),第一步就是设置单位。很多人习惯用Mils,我建议你先看数据手册用的是什么单位。Cadence 17.4支持在Preference中切换单位显示,但如果你在毫米和密尔之间反复切换,很容易产生小数误差。通常我建议直接用Mils来定义,因为Allegro对整个设计环境的默认单位是Mils,画板时栅格、线宽、间距规则也都是基于Mils的。但手工测量时用毫米会比较直观,解决方法是:手册用毫米读数,然后用计算器转成Mils,转换过程保留至少两位小数。
举个例子,一个引脚宽度为0.4mm、长度为1.2mm的焊盘,转换成Mils就是15.75mil和47.24mil。参考焊盘尺寸时,一般会在引脚宽度方向上每边增加4mil左右,长度方向上每端增加6mil,这样计算下来焊盘大约是24mil×60mil。这里有一个细节:表贴焊盘的Regular Pad(常规焊盘)通常会比引脚宽,是为了容纳贴片机的贴装误差和焊料润湿。但也不宜过大,焊盘太宽会造成元件自对准不良,甚至引起立碑现象,尤其是阻容件。
对于通孔焊盘,要设置的是钻孔尺寸和焊盘外径。钻孔尺寸一般比引脚直径大8~12mil,焊盘外径比钻孔大18~25mil。以常见的0.8mm引脚为例,钻孔选0.9mm(约35mil),焊盘外径选1.5mm(约59mil)。这些数值不是拍脑袋定的,它们对应了常规的制造能力、镀铜工艺和装配精度。如果你的PCB工厂工艺能力一般,焊盘外径过大反而会让钻孔附近的基材强度变差。
在Padstack Editor的“Layers”选项卡里,你需要为每一层指定焊盘的形状和尺寸。通孔焊盘通常顶层、底层设置同样的圆形焊盘,内层也是一样;表贴焊盘只需设置TOP层和阻焊层。阻焊层的开窗尺寸一般比焊盘大3~4mil,这个参数在“Soldermask”一栏里设置。注意,如果是BGA焊盘,还会涉及“Thermal Relief”(热焊盘)和“Anti-Pad”(反焊盘)的设置,这直接关系到电源平面的连接质量,稍后单独说。
2.3 热焊盘和反焊盘有什么用
当你把通孔焊盘放在一个完整的电源或地铜皮上时,如果没有做热焊盘和反焊盘,焊盘会与铜皮完全短路,而且焊接时热量会被整块铜皮吸走,导致虚焊。所谓热焊盘(Thermal Relief),是让焊盘通过几根细的“辐条”与铜皮相连,既能保证电气连接,又限制了热量传导路径;反焊盘(Anti-Pad)则是把焊盘周围挖空一圈,让过孔或者引脚在穿过平面层时不会意外短接。
在Cadence中,设置热焊盘的时候要指定辐条数量(通常是4根)和辐条宽度,比如4根辐条各宽12mil,中间以45度或90度交叉连接。反焊盘的尺寸通常比焊盘外径大6~10mil,形成一个环形的空隙。这些设置在Padstack Editor里都有对应的选项,在做电源模块或主板这类大面积铺铜的板子时,这一项特别重要。
热焊盘和反焊盘的数值也不是越大越好。反焊盘过大,会在平面上形成比较大的空洞,影响平面层电流回流路径和阻抗连续性;过小,则可能导致焊盘和铜皮距离太近,制造时产生毛刺。在2.4GHz以上的射频板上,这方面的选择会更讲究,但常规数字板用常规参数就行。
2.4 命名规范与库路径设置
焊盘命名是新手经常忽略、到后面项目大时才后悔莫及的地方。一个PCB库里有几十上百种焊盘并不奇怪,如果命名随意,后期找一个焊盘就要挨个点开看,效率极低。建议采用“型号_尺寸_类型”的格式,比如“SOIC8_P24_W60_T”表示SOIC8封装、引脚间距24mil、焊盘宽度60mil、通孔(“Through”);“0402_L20_W24_SMT”表示0402电阻表贴焊盘,长度20mil,宽度24mil。命名规则不需要统一到全公司,但至少自己项目里要能一看就懂。
保存焊盘的时候,需要确认你的焊盘库路径是有效的。Cadence在环境变量里通过“padpath”来指定焊盘库位置,在Allegro的Setup - User Preferences - Design Paths中可以查看和修改。保存后的.pad文件必须放在这个路径下,否则后面调用时软件会提示找不到焊盘。实际工作中有很多“明明存了焊盘却找不到”的报错,百分之八十都是路径环境变量没有配置好。
提示:在Setup - User Preferences - Design Paths中,padpath和psmpath是两条关键路径,前者对应焊盘.pad文件,后者对应封装符号.psm文件。改完路径后,记得重新启动Allegro才能让设置生效。
3. 在Allegro里一步步画出封装
焊盘就绪之后,真正的“画封装”环节才正式开始。这个部分需要打开的是Allegro PCB Designer,在File - New中,选择“Package Symbol”类型来新建一个封装文件。
3.1 新建封装文件,别选错类型
新建封装时要特别注意文件类型选择。Allegro的“Drawing Type”选项里有好几种,包括Board、Package Symbol、Mechanical Symbol、Format Symbol等。你要选的是“Package Symbol”,而不是“Mechanical Symbol”。前者可以放置引脚、定义电气属性;后者只能画机械外形,不能放引脚。选错类型,后面会非常痛苦。
在Drawing Name里填一个文件名,这个文件保存时会生成一个.dra文件。这个文件名会作为你的封装名,建议和元件的型号对应,比如“SOIC8_N”“STM32F103_LQFP48”这样,方便后续在PCB中调用。命名规则也应该遵守公司的库管理规范,如果公司没有规范,自己定一个统一的、有意义的规则。
3.2 设置栅格与设计参数
打开封装编辑器后,第一件事不是画图,而是设置栅格(Grid)。Allegro的默认栅格可能和你的元件引脚间距不匹配,导致放置引脚时位置总是差一点点。在Setup - Grids中,你可以设置“Non-Etch”和“All Etch”两个状态下的X、Y步进。对于引脚间距是1.27mm(50mil)的元件,可以把栅格设为25mil或5mil,这样所有引脚放置的位置都能对齐到栅格上。
另一个需要设置的是“Design Parameter”中的精度(Accuracy)。建议把精度设为2位小数,也就是0.01mil。太低的精度会导致尺寸微小误差,特别是在摆放多引脚器件的时候,引脚之间的相对位置会被放大。在Setup - Design Parameter Editor - Design - Accuracy中设置单位精度。
还有一项是绘图尺寸(Drawing Size),封装的图纸区域不用开得太大,A4或A3大小足够,但必须能容纳器件全部元素。如果图幅太小,后面画丝印或者标注时会出现元素超出图纸边界的情况,导出时也容易被软件截断。
3.3 放引脚:方向、编号与原点
放置引脚使用的是Layout - Pins命令,快捷键是P。在弹出的Pin Options面板中,你需要选择正确的焊盘名(Padstack),然后设置引脚编号(Pin Number)和引脚方向(Pin Direction。引脚方向主要影响后续DRC检查中引脚连接关系,一般输入型引脚设为Input、输出型设为Output,但对封装来说,设置为Bidirectional通常最省事。
放置引脚时最核心的规则是:第一个引脚(Pin 1)放在原点左边或者下边,并确定好所有引脚的排列顺序。通常原点应该设置在器件的几何中心,而不是任意角落。以SOIC-8为例,如果器件引脚间距是50mil,行间距是250mil,那么你可以把Pin 1放在坐标(-150, -125)处,然后按顺序放置其他引脚。
放置引脚的时候需要注意方向。光标周围会有一个引脚的预览形状,按R可以旋转,按F可以翻转。操作上,先输入坐标再点击放置,比鼠标粗放地摆放精确得多。很多新手不知道可以直接输入XY坐标,结果所有引脚只能靠目测对齐,最后间距参差不齐,这是封装制作的大忌。
放完引脚后,应该立即检查引脚之间的相对位置是否正确。用Display - Highlight和Dimension - Linear来测量相邻引脚间距,如果和手册不一致,马上调整。这里有个经验:放完引脚后,先不要画任何图形,立刻用工具的“Show Element”命令查看每个引脚的坐标,确保编号和位置对应,再往下进行。
3.4 画本体轮廓与Place Bound
引脚放好,接下来画的是器件的实体外形。外形画在“Assembly_Top”和“Silkscreen_Top”两层,但还有一个容易被忽略的图层叫“Place_Bound_Top”,它是一个逻辑占位区域,定义了器件在PCB上占用的总面积,用于防止元件之间重叠和规划布局。
Place Bound区域应该比器件本体略大,一般大出10~20mil,它不会被制造出来,只存在于设计数据中。画Place Bound使用Add - Rectangle命令,在Options面板中把Active Class and Subclass选为“Package Geometry”和“Place_Bound_Top”,然后按器件的最大外形尺寸画出矩形。
同时,需要在该图层上设置器件的“高度”属性。高度属性在后续做3D视图或机械干涉检查时非常关键。选中Place_Bound矩形,用Edit - Properties,在弹出的对话框中添加“Package_Height_Max”属性,填入器件高度,例如2.0mm,这样在3D模型和碰撞检查时能正确识别。
3.5 设置元件编号和属性
在封装里需要设置一个元件编号(RefDes)的占位符,这个占位符在PCB上会以“U1”“R1”这样的形式显示。它的位置在丝印层,可以用Add - Text命令添加,文字内容填写“REFDES”,并且设置字体层级(Change - Text Block),建议设置为3号或者4号字,宽度至少5mil,否则加工出来的字会看不清。这个占位符会在原理图导入PCB后被自动更新为实际编号。
还有一个容易忽略的属性是“DEVICE”属性,它用来关联原理图符号和PCB封装。在Setup - Device Setup中设置器件类型,或者在属性编辑器里添加“DEVICE”和“VALUE”属性。这些属性直接关系到原理图网表导入PCB时能否正确匹配,库管理越严格的地方越重视这一项。
讲到这一步,封装的主体已经完成了。接下来要花心思的地方是丝印和标注,它看着简单,实际很多公司在PCB评审时会盯着丝印挑问题。
4. 丝印层:不只画个框就行
丝印(Silkscreen)是PCB表面印刷上去的文字和符号层,不参与导电,但对于制造、焊接、调试和后期维修都至关重要。封装里的丝印是原理图库封装到PCB后显示在板子上的关键图形,如果画得不规范,生产阶段就会出问题。
4.1 丝印的设计规则
丝印的线宽至少要5mil以上,普通工艺建议采用6mil或8mil;如果是高密度板,可以缩小到4mil,但不能再低了,否则加工时断线模糊。丝印的颜色一般是白色或黄色,不影响电路功能,但如果丝印线跨过焊盘,可能会影响阻焊层附着力和焊接润湿性,所以规范要求丝印线不能进入焊盘区域。
在Allegro中,丝印线画在“Silkscreen_Top”层,使用Add - Line命令,线宽在Options面板的Line Width中设置。常用的丝印外框线宽,我一般用0.127mm(5mil)或0.203mm(8mil),具体取决于板子密度。画完线之后,要把线宽统一,如果后期需要批量调整,可以用Edit - Change的线宽修改工具,选中所有丝印线一次性修改。
外框的位置也有讲究。丝印外框比器件本体尺寸大5~10mil,是为了在器件贴偏时仍能看到轮廓,不至于丝印线和本体重叠产生混淆。长宽方向一般设成比本体外扩10mil即可,不用太大,否则相邻器件空间紧张时丝印会打架。
4.2 极性标识和管脚一标识
极性标识是丝印中最容易被新手漏掉的内容,但它在生产、手工焊接、维修时都是关键的定位信息。常见的方式是在Pin 1附近画一个小圆点,或者画一个“1”字,放在丝印线框外的角落。有些封装,比如二极管,用一条竖线表示负极对应关系;电解电容则会在丝印上画出半圆形的凸起区域,代表正极方向。
需要特别强调的是,丝印上极性的逻辑和元件实物必须一致。说明白一点:你画的标识必须指示出焊盘1的位置,而焊盘1的位置又必须在封装库里和原理图符号的1脚一致。这个一致性检查,建议在封装完成时做一次“符号对比”——分别在原理图符号库和PCB封装库中显示Pin 1的位置,手动目视比对。
在Allegro中,给Pin 1添加标识可以使用Add - Text,或者画一个圆,放置在Pin 1的斜对角,圆心偏移到丝印区域外。用圆点标识时,圆的直径一般设为20mil左右,线宽和丝印一致。还有一种常用做法是直接在Pin 1引脚旁边画一个小矩形框,标注“1”,这种方法对多排引脚芯片尤其有用。
4.3 装配层与建议结合
除了丝印层,还有一个层是装配层(Assembly_Top)。这一层是给贴片机做视觉定位和人工查看用的,和丝印的区别在于,装配层图形通常和器件本体外形一致,并且比丝印层更精细。装配层在PCB打样时不会直接印刷出来,但它在生成装配图时会被使用,有的工厂也会把它作为丝印的参考层。
在Allegro中,装配层的外形一般使用Add - Rectangle或Add - Line画矩形,放在“Assembly_Top”层。装配层图形不需要加粗线宽,用0.1mm甚至更细的线即可,它的精确定位比视觉效果更重要。如果你的封装同时有本体外形和丝印外形,装配层和丝印层可以分开画,数据上允许两者大小不同,但实际意义是要一致的。
再补充一个实用建议:如果你的板子会做3D模型展示或者机械装配验证,装配层的尺寸要严格按照元件的最大外形尺寸画,不能为了美观而缩小。它直接影响你在MCAD工具中做干涉检查时的结果。
5. 常见问题与排查技巧实录
封装做到上机、导出、流片,你迟早会遇到几个经典报错和视觉上的“怪象”。这里挑几个在Cadence 17.4的封装场景里最容易出现的问题,把排查思路直接写出来。
5.1 焊盘保存不了或找不到
焊盘保存时提示“Unable to save padstack”,最常见的原因是焊盘库路径不对。你在Padstack Editor里保存焊盘时,它会默认存到一个路径,但这个路径和Allegro Design环境中设置的padpath不一致。解决办法就是在Padstack Editor的Options栏里查看当前保存路径,或者在Allegro的Setup - User Preferences中把padpath改成自己统一管理的目录。
还有一种情况是保存时提示“Name already exists”,这可能是因为你打开了别人库里的焊盘做修改后直接保存,覆盖了源文件。很多时候,厂家的封装库是只读的,你应该在保存时换一个名字,或者把库文件复制到自己的目录里再修改。我在处理外来库文件时,习惯先复制一份再改名,从源头上避免把原厂库改烂。
5.2 “Cell is read-only” 的问题
建立封装后,如果在编辑器中保存时报“Cell is read-only”,说明这个封装文件被设置为只读属性,或者它在库中被标记为只读状态。这种问题常见于你从别人那里拷贝过来的封装文件。解决方法是选中文件后右键查看属性,取消“只读”勾选;或者在Allegro中检查Library Path,看文件是否存储在带权限限制的只读目录中。还有一种隐蔽的情况是文件被签出(Check Out),这种情况下你需要联系库管理员确认,或者在工作区中另存为一个新封装名。
这个问题看着简单,但经常出现在项目Deadline之前,特别影响心情。我的建议是,把外部获取的库文件统一复制到一个自己完全控制的目录下再做任何修改,并且在打开文件的时候看一下窗口顶部的文件名路径,确认不是指向系统保护目录。
5.3 封装导入PCB后焊盘不显示
做完封装放进PCB,有时候发现某些引脚的焊盘不见了,只剩一个丝印框。这种情况大概率是焊盘文件没有被正确加载,或者焊盘定义中的层叠设置有误。在PCB Draw模式下,用Display - Status检查“Pads”和“Symbols”的完成状态。如果显示缺符号,回到封装编辑器中检查是不是引脚参考的焊盘文件丢失,或者用Tools - Padstack - Modify Design Padstack刷新一次焊盘定义。
还有一个常见原因是封装中添加了引脚,但是没有给引脚连接网络,在PCB中使用时Deck(网络)显示为空。这并不代表焊盘不见了,而是逻辑上没有连接到任何网络。用Edit - Properties查看引脚的网络属性,或者在PCB里手动分配网络即可。
5.4 原理图引脚编号映射错误
原理图导入PCB时报“引脚编号不匹配”的错误,大多是封装中引脚编号与原理图符号引脚编号不一致。比如原理图里SOP-8的8个引脚编号是1~8,但你的封装里误把某个引脚编号写成9或A,两边对应不上,导入就会失败。解决办法是在封装编辑器中用Edit - Text把所有引脚的编号调成和原理图符号完全一致,特别注意数字“1”和字母“I”在一些字体下容易混淆,要仔细核对。
这个错误在新人身上特别常见。如果你画的是多焊盘连接器,原理图引脚编号可能包含字母或组合,比如“A1”“B2”,封装和原理图必须严格一致,一个字母错了整颗元件都连不上。我建议每做一个新封装,都用原理图里的对应Symbol做一次交叉比对,可以截图对照,也可以直接看引脚数量的统计。
5.5 丝印线宽出光绘时被异常处理
出光绘后丝印线在某些区域突然从清晰变模糊,甚至断线,这通常不是丝印本身画错,而是光绘设置中对于最小线宽做了限制,或者把某些层误选了。Cadence出光绘文件时,在Artwork Control Form中,如果你把“Silkscreen_Top”层的线宽改成“Undefined line width”下填了一个过大的数值,它会强制把所有丝印线加粗,导致图形变形。正确的做法是保持undefined line width为0或4mil,并把suppress shape填充等选项按实际需求配置。
另外,丝印线如果画在了板框边缘,出光绘后会被切割掉一部分,视觉上就会看到“断丝印”。这是板框设计问题,不是光绘问题,需要在封装阶段就检查丝印是否超出板边或靠近孔位。在Allegro中,可以开启Manufacturing - Outline层查看板框范围,确保丝印在板框内。
最后再分享一点个人习惯
封装制作是一件极度依赖细致的工作,花半小时精心做一个标准封装,远比赶时间随便画一个、后面在PCB阶段反复返工要划算得多。我自己在做封装时,一直保持一个习惯:每个封装完成后,在分配层上留下一个版本注释,比如“v1.0 2025-xx-xx,初始化封装”,方便后面任何人看到这个封装都能知道它是什么时候、由谁建立的。这种做法在团队项目里尤其能省去不少沟通成本。
Cadence 17.4的Allegro封装流程并不复杂,但每个细节都值得重视。焊盘尺寸的选取、丝印线宽的控制、引脚编号的对应关系,这些都是在项目曝光后才会显现价值的工作。希望这篇教程能帮你把这条路走顺,少踩几个我踩过的坑。如果后续有条件,我会再整理一篇关于复杂封装——比如BGA和连接器——的制作心得,以及如何把自制封装和原理图符号做好联动,那部分内容同样有意思。