
1. 封装制作前的底层逻辑与准备工作1.1 为什么封装是PCB设计的“地基”干硬件这行十来年我越来越觉得PCB封装制作这件事表面看是画几个焊盘、拉几根线实际上它决定了整个板子的电气性能、焊接良率甚至量产成本。你原理图画得再漂亮仿真跑得再顺封装建错一个尺寸板子回来就是一堆废片。尤其是现在器件越来越小0201、01005的阻容满地跑BGA引脚间距做到0.35mm甚至更小手工算尺寸的时代早就过去了但Cadence Allegro这套工具的逻辑还是得从最底层理解起。很多人刚接触Allegro的时候习惯拿Altium Designer的思路去套结果发现处处别扭。AD里画封装放个焊盘、画个框改改属性就完事了。Allegro不一样它把焊盘Padstack、封装符号Symbol、**器件Device**这三层拆得很清楚。焊盘是独立的文件封装是独立的文件器件又是另一个概念。这种设计一开始让人觉得繁琐但当你需要批量替换焊盘、或者同一个封装对应不同器件的时候就知道它的好处了。提示如果你是从AD转过来的先把“焊盘即封装”的思维扔掉。在Allegro里焊盘是焊盘封装是封装两者通过Pad Designer和PCB Editor分别管理。1.2 建库前的环境确认与单位设置动手之前有几件事必须先确认好不然做到一半发现单位错了返工能让你崩溃。第一确认你的Allegro版本和补丁。16.6和17.4的界面差异不小17.4之后很多菜单项挪了位置快捷键也有变化。我见过有人照着16.6的教程在17.4上找菜单找了半小时没找到。所以先确认版本再找对应教程。第二单位设置。Allegro默认可能是mil也可能是mm。国内大部分消费电子用mm但很多射频板、高速板还是用mil。我的习惯是建库之前先统一成mil因为大部分器件手册给的尺寸都是mm但焊盘补偿习惯用mil来算转换起来1mm≈39.37mil心里有数就行。具体操作在PCB Editor里Setup → Design Parameters → Design把User Units改成MilsAccuracy设成2小数点后两位这样精度够用又不会因为位数太多导致文件臃肿。第三库路径规划。别把所有封装都扔在一个文件夹里后期找起来要命。我的习惯是按器件类型分/lib/resistor、/lib/capacitor、/lib/ic、/lib/connector每个下面再分/pad和/symbol。这样后期维护、备份、迁移都方便。1.3 焊盘设计标准的快速查阅方法0201焊盘设计标准尺寸这个问题网上搜出来的答案五花八门。我一般直接翻IPC-7351标准但那个文档太厚实际工作中我总结了一个快速估算方法对于02010.6mm×0.3mm的阻容焊盘宽度通常取0.3mm到0.35mm焊盘长度取0.35mm到0.4mm两个焊盘之间的间距取0.4mm左右。但这不是死数得看你的工艺能力。如果板厂蚀刻精度一般焊盘可以稍微放大0.02mm如果是高密度板就按标准来。更靠谱的做法是直接找器件厂商的推荐焊盘图。比如Murata、TDK的官网每个型号都有Recommended Land Pattern照着画基本不会错。如果找不到就按IPC-7351的Nominal值来别自己拍脑袋。注意焊盘尺寸不是越大越好。焊盘太大回流焊时器件容易漂移焊盘太小焊锡量不够虚焊风险高。这个平衡点得靠实际打样来验证。2. 焊盘制作的核心细节与参数计算2.1 Pad Designer的界面逻辑与关键参数打开Pad Designer界面看起来简单但每个参数背后都有讲究。我按顺序说Layer页面是核心。对于表贴焊盘你只需要在Begin Layer和Default Internal Layer里填尺寸。但注意Allegro的焊盘是分层的Top层和Bottom层可以不一样虽然大多数情况一样。对于通孔焊盘还要填Internal Layer也就是孔壁的铜厚。Parameters页面里Drill Size是钻孔直径通常比成品孔径大0.1mm到0.15mm给电镀留余量。比如成品孔0.3mm钻头就用0.4mm或0.45mm。这个余量给多少得问板厂。有些板厂能力强0.1mm就够了有些小厂你得给到0.15mm甚至0.2mm。Thermal Relief和Anti Pad是给负片层用的。现在很多板子用正片这两个参数用得少但如果你用负片铺铜就得认真填。Thermal Relief的开口宽度一般是焊盘直径的0.5倍到0.7倍太小了散热不够太大了连接强度不够。2.2 表贴焊盘与通孔焊盘的尺寸计算实例拿一个0402的电容举例。器件手册给的焊盘推荐是焊盘宽度0.55mm焊盘长度0.6mm间距0.9mm。转换成mil宽度约21.65mil长度约23.62mil间距约35.43mil。在Pad Designer里我一般会取整宽度22mil长度24mil间距35mil。为什么取整因为Allegro里输入整数比小数方便而且这点误差对0402来说完全可以接受。再拿一个通孔器件举例比如2.54mm间距的排针。成品孔径通常1.0mm钻孔1.1mm到1.2mm。焊盘直径一般是孔径的1.8倍到2倍所以焊盘直径取2.0mm到2.2mm。如果空间允许我取2.2mm焊接更牢固。如果空间紧张取1.8mm也能用但手工焊接时容易掉焊盘。实操心得通孔焊盘的焊盘直径不要小于孔径的1.5倍。我见过有人为了省空间焊盘只比孔大0.2mm结果过波峰焊时焊锡直接顺着孔流走了根本焊不上。2.3 焊盘补偿与SMD焊盘隔热设计SMD焊盘隔热设计这个问题很多人忽略。表贴焊盘如果直接连到大铜皮上回流焊时热量散得太快焊盘温度上不去容易冷焊。解决办法是在焊盘和铜皮之间加隔热连接也就是Thermal Relief。在Allegro里如果你用负片铺铜Pad Designer里设置Thermal Relief就行。如果用正片铺铜就得在PCB Editor里对铺铜设置Thermal Relief连接方式。具体操作Shape → Global Dynamic Params → Thermal Relief选择连接方式设置开口宽度。我的经验是对于0402以下的器件隔热开口宽度取焊盘宽度的0.5倍对于0603以上的取0.6倍到0.7倍。开口太窄散热不够开口太宽连接强度不够回流焊时器件容易立碑。2.4 焊盘命名规范与库管理焊盘命名我见过各种奇葩的比如pad1、pad_0402、p0402_22_24。我的建议是命名要能一眼看出尺寸和类型。比如SMD0402_22X24表示表贴0402焊盘22mil×24mil。通孔的就用TH_1R0_2R2表示通孔孔径1.0mm焊盘2.2mm。这样命名后期在PCB Editor里替换焊盘时一眼就能找到。而且如果你用Allegro的Skill脚本批量处理命名规范了脚本也好写。提示焊盘文件的后缀是.pad封装文件的后缀是.dra和.psm。.dra是绘图文件.psm是编译后的符号文件。每次改完.dra记得在PCB Editor里File → Create Symbol重新生成.psm不然改动不生效。3. 封装符号制作的全流程拆解3.1 新建封装文件与栅格设置打开PCB EditorFile → New选择Package Symbol给个名字比如R0402。然后设置栅格。我的习惯是栅格设成5mil因为大部分焊盘间距都是5mil的整数倍。如果做细间距器件比如0.4mm间距的QFN栅格就设成1mil或者0.5mil。栅格设置Setup → Grids把Non-Etch和All Etch都设成5mil。如果做BGA可能需要设成1mil。栅格太粗放焊盘时对不准栅格太细移动起来太慢。这个得根据器件类型灵活调整。3.2 放置焊盘与引脚编号映射放置焊盘Layout → Pins在Options里选择Padstack然后点焊盘位置。对于0402两个焊盘间距35mil所以第一个放原点第二个放(35,0)。引脚编号放完焊盘要给每个焊盘分配引脚号。Layout → Pin Numbers或者直接在放焊盘的时候在Options里填Pin Number。对于电阻电容一般就是1和2。对于IC就得按手册的引脚定义来。这里有个坑错误:pcb封装usr:usb16对于具有管脚映射的元件无效-非数字管脚编号b8。这个报错的意思是你的封装里用了非数字的引脚编号比如B8、A1这种但你的器件Device文件里没有做引脚映射。解决办法是在PCB Editor里Logic → Part Logic把引脚编号映射到器件引脚上。或者在建封装的时候就用数字编号然后在原理图里做映射。注意BGA封装经常用字母数字的引脚编号比如A1、B2。建封装时引脚编号可以写A1、B2但必须在Device文件里做好映射不然导入网表时会报错。3.3 丝印外框的绘制与线宽选择丝印外框看起来简单但细节不少。首先线宽选多少我的习惯是丝印线宽取6mil到8mil。太细了板厂印不出来太粗了占用空间而且容易和焊盘重叠。丝印外框的尺寸一般比器件本体大0.2mm到0.3mm。比如0402的器件本体是1.0mm×0.5mm丝印外框就画1.2mm×0.7mm。这样既能框住器件又不会压到焊盘。画丝印Add → Line在Package Geometry → Silkscreen_Top层画。画的时候注意不要穿过焊盘。如果空间紧张丝印可以断开但不要压在焊盘上。因为丝印是绝缘的压在焊盘上会影响焊接。allegro丝印被删除了这个问题我遇到过几次。原因通常是在PCB Editor里不小心把Silkscreen_Top层关掉了或者用Delete命令时选错了层。解决办法是在Color Dialog里把Silkscreen_Top打开然后重新画。如果丝印被删了但封装文件还在可以重新打开.dra文件重新画丝印再Create Symbol。3.4 器件高度与Place Bound的设置Place Bound是给布局用的表示器件的占位面积。对于0402Place Bound就画成和丝印外框一样大。对于高度在Package Geometry → Place_Bound_Top层画一个Shape然后设置高度属性。设置高度选中ShapeEdit → Properties添加PACKAGE_HEIGHT_MAX和PACKAGE_HEIGHT_MIN填上器件的高度值。这个值在后期做3D预览和装配检查时很有用。实操心得Place Bound不要画得太大不然布局时器件之间会报错明明可以放下的位置因为Place Bound重叠而放不了。一般比器件本体大0.1mm就够了。3.5 原点设置与封装保存原点设置很关键。我的习惯是把原点设在器件的几何中心。对于0402两个焊盘间距35mil原点就设在(17.5,0)。这样布局时器件的中心就是原点旋转、对齐都方便。设置原点Setup → Change Drawing Origin点一下中心位置。然后File → Create Symbol生成.psm文件。保存.dra文件封装就建好了。注意原点不要设在焊盘上不然布局时对齐很麻烦。也不要设在器件外面不然旋转时器件会跑偏。4. 封装验证、导入与常见问题排查4.1 封装自检与DRC检查封装建完别急着用先自检。我一般做这几件事第一用Padstack检查焊盘尺寸。在PCB Editor里Tools → Padstack → Modify Design Padstack看看焊盘尺寸对不对。第二用DRC检查。Tools → Quick Reports → Design Rules Check看看有没有间距违规、丝印压焊盘等问题。第三用3D预览。View → 3D View看看器件高度、焊盘位置对不对。虽然Allegro的3D预览不如专业3D软件但检查基本尺寸足够了。4.2 从原理图导入封装与网表同步cadence 封装导入pcb这个流程我走过多遍。步骤是在原理图里给每个器件指定封装名。比如电阻指定R0402电容指定C0402。在PCB Editor里导入网表。File → Import → Logic选择网表文件。如果封装路径不对会报错。解决办法是在Setup → User Preferences → Paths → Library里把封装库路径加进去。导入后检查器件是否都放进来了。如果有缺失看报错信息一般是封装名不对或者封装文件不在库路径里。orcad关联allegro这个问题关键是网表格式。OrCAD导出的网表要选Allegro格式不是其他格式。在OrCAD里Tools → Create Netlist选Allegro然后导出。4.3 常见报错与排查速查表报错信息原因解决办法错误:pcb封装usr:usb16对于具有管脚映射的元件无效-非数字管脚编号b8封装用了非数字引脚编号Device文件没做映射在Part Logic里做引脚映射或改用数字编号allegro cell read-only封装文件被设为只读或者被其他进程占用检查文件属性关闭其他Allegro进程allegro铜皮只有轮廓铺铜时选了Outline模式或者铜皮被设为静态改铺铜模式为Solid或更新铜皮cadence瞬态仿真不收敛仿真参数设置不当或者模型有问题调整仿真步长检查模型参数allegro丝印被删除了误操作删除了Silkscreen层或者层被关闭重新打开层重新画丝印4.4 封装替换与版本兼容处理allegro替换单个封装这个操作我经常用。步骤是在PCB Editor里Place → Update Symbols选择要替换的封装然后点Refresh。如果替换后焊盘不对可能是焊盘文件没更新重新生成.psm就行。allegro文件版本降低这个问题Allegro不支持直接降版本。如果高版本文件要在低版本打开只能导出ODB或者DXF然后在低版本里重新导入。但这样会丢失一些属性所以尽量统一版本。提示团队协作时最好统一Allegro版本和补丁号。我见过因为版本不一致封装打开后焊盘错位的情况排查了半天才发现是版本问题。4.5 快捷键设置与效率提升技巧allegro pcb快捷键设置这个我建议把常用的命令设成快捷键。比如F2MoveF3CopyF4DeleteF5Add ConnectF6Slide设置方法在PCB Editor里Tools → Utilities → Keyboard Commands或者直接改env文件。env文件在$HOME/pcbenv目录下用文本编辑器打开加上alias F2 move这样的行就行。allegro skill脚本如果会写的话能大幅提升效率。比如批量改焊盘、批量加丝印用Skill脚本几秒钟搞定。不会写也没关系网上有很多现成的脚本下载下来改改就能用。5. 从封装到生产的最后几公里5.1 出光绘文件前的封装检查清单allegro出光绘文件之前封装必须检查到位。我一般列个清单焊盘尺寸对不对有没有按IPC标准补偿丝印有没有压焊盘线宽够不够Place Bound有没有设高度对不对原点在不在中心旋转方不方便引脚编号和原理图对不对得上有没有多余的层比如Assembly层有没有画这个清单过一遍基本能避免大部分生产问题。5.2 封装库的维护与团队协作封装库不是建完就完了得维护。我的习惯是每个封装建完后在库里加个说明文件写清楚这个封装的来源、尺寸依据、建库人、建库日期。这样后期别人用的时候心里有数。团队协作时库的版本管理很重要。我一般用Git或者SVN管理库文件每次改动都提交这样出问题了能回溯。5.3 从封装到PCBA的工艺对接要点封装建得再好工艺跟不上也白搭。所以建库的时候得和板厂、贴片厂沟通。比如最小线宽线距是多少最小孔径是多少焊盘补偿给多少丝印最小线宽是多少这些参数每个厂都不一样。我一般建库前先问清楚合作板厂的工艺能力然后按他们的能力来建库。这样打样一次过省时省力。实操心得我见过有人按IPC标准建库结果板厂工艺达不到焊盘太小蚀刻不出来。所以标准是参考实际得看板厂能力。5.4 个人建库习惯与效率工具推荐最后分享几个我个人的习惯第一建库时把常用的焊盘和封装做成模板。比如0402、0603、0805的阻容建一次以后直接复制改名字就行。第二用Excel管理封装库。每个封装一行记录名称、尺寸、来源、备注。这样找起来快也方便交接。第三定期备份库文件。我一般每周备份一次存到网盘或者移动硬盘。封装库丢了重新建能让你怀疑人生。第四多逛论坛。吴川斌的博客里有很多Allegro的教程和脚本虽然有些老了但思路值得参考。还有Cadence的官方论坛遇到问题搜一下基本都能找到答案。建库这件事说难不难说简单也不简单。关键是细心、耐心加上一点经验积累。我刚开始建库的时候一个0402的封装建了半小时还建错了。现在五分钟搞定而且一次过。所以多练多踩坑自然就熟了。