1. 为什么封装迁移这件事值得单独拿出来讲
画过板子的人都有一个共识:原理图可以自己画,网络表可以自己连,唯独封装这件事,能直接决定一块板子是顺利投产还是反复打样。尤其是现在很多中小团队和独立开发者,选元器件的起点往往是立创商城——型号全、现货多、价格透明,还能直接拿到现成的封装库。但问题也随之而来:立创商城提供的封装格式,主流是Altium Designer(下称AD)的集成库或者PcbLib,而不少公司、不少项目实际用的却是Cadence Allegro。这两套工具之间的封装迁移,看起来只是"导一下",真上手才知道坑有多深。
我自己前后做过不下几十次从立创商城到Cadence的封装迁移,从早期的Cadence 16.6到现在的17.4,从简单的0603电阻到几百个引脚BGA,各种情况基本都踩过一遍。这篇内容就是把这套流程完整拆开,讲清楚每一步为什么这么做、哪里最容易出错、怎么验证迁移结果是否可靠。适合三类人看:一是刚从AD转到Allegro、手里攒了一堆立创封装要搬家的工程师;二是团队里负责建库、需要批量处理封装的管理者;三是对封装格式本身感兴趣、想搞明白焊盘和符号底层结构的技术爱好者。哪怕你之前没碰过Allegro,跟着走一遍也能把这件事做扎实。
需要先明确一个前提:封装迁移不是简单的文件格式转换,它本质上是几何数据、层定义、焊盘栈、文本属性四套信息的重新映射。AD和Allegro对同一个物理焊盘的组织方式完全不同,所以任何"一键转换"工具都只能解决一部分问题,剩下的必须靠人工核对和参数重建。想清楚这一点,后面的操作才不会走偏。
2. 迁移前的整体思路与方案选型
2.1 三条主流路线,各自适合什么场景
从立创商城拿到封装,最终落到Cadence Allegro里,实际可走的路线有三条,我按使用频率和可靠性排个序。
第一条是AD中转法:立创商城下载AD格式封装,在AD里整理规范,再通过Allegro的导入接口转成Allegro封装。这条路线最通用,适合绝大多数场景,尤其是封装数量多、需要批量处理的时候。缺点是中间多了一道AD处理,如果AD里的封装本身不规范,问题会被带进Allegro。
第二条是纯手工重建法:把立创商城的封装当成参考,直接在Allegro的Pad Designer和Package Designer里从零建。适合引脚少、结构简单的封装,比如SOP、SOT、0603这类。优点是干净可控,缺点是费时间,一个0402电阻重建加验证大概要十分钟,几百个器件就是几十小时。
第三条是第三方转换工具法:市面上有一些库转换工具,能直接读AD的PcbLib输出Allegro的dra。我实测下来,这类工具对简单封装的转换成功率还行,但遇到异形焊盘、多焊盘组合、特殊层定义就容易丢数据,而且转换后的焊盘栈经常需要手动修。所以我的建议是:简单封装可以试试工具,复杂封装老老实实走AD中转或者手工重建。
提示:不管走哪条路线,迁移前一定要先确认目标Allegro版本的焊盘栈命名规则和单位制。16.x和17.x在焊盘命名上有差异,单位制(mil还是mm)也要和项目统一,否则后面导入PCB时会报一堆找不到焊盘的错。
2.2 为什么优先推荐AD中转而不是直接转换
很多人第一反应是找个工具直接转,省事。但我更推荐AD中转,原因有三个。
第一,立创商城的AD封装本身质量参差。有些是原厂提供的,规范;有些是用户上传的,焊盘尺寸、丝印位置、原点设置都可能有问题。在AD里过一遍,正好是检查和修正的机会。如果直接转,这些问题会原封不动进到Allegro,而且因为Allegro的编辑逻辑和AD不同,改起来更麻烦。
第二,AD的封装编辑能力对新手更友好。AD里看焊盘、量尺寸、调丝印都很直观,网格吸附、对齐工具也顺手。在AD里把封装整理干净,再转Allegro,等于把最脏的活放在最顺手的工具里干。
第三,AD到Allegro的导入接口相对成熟。Allegro自带从AD导入的转换器,虽然不完美,但对标准焊盘、标准层的识别率很高。配合手工修正,效率比纯重建高得多。
2.3 迁移工作的整体流程
把整个迁移拆成六个阶段,后面每个阶段都会展开讲:
- 从立创商城下载并筛选AD封装,确认版本和单位制;
- 在AD里做封装规范化处理,统一原点、层、丝印、焊盘命名;
- 用Allegro的转换接口把AD封装导入,生成dra和pad;
- 在Allegro里核对焊盘栈、层映射、文本,修正转换误差;
- 建立封装与原理图符号的对应关系,验证引脚映射;
- 导入测试PCB,做DRC和实际尺寸核对,确认可用。
这六步里,第三步和第四步是技术难点,第五步是最容易被忽略但后果最严重的环节。下面逐个拆。
3. 从立创商城到AD:封装下载与规范化处理
3.1 立创商城封装下载的正确姿势
立创商城的元件页面,一般会提供多种格式的封装下载,常见的有AD、PADS、Allegro、KiCad等。这里有个细节:优先下载AD格式,而不是Allegro格式。原因在于立创提供的Allegro封装往往是早期版本导出的,焊盘栈命名和层定义经常和当前Allegro版本对不上,导入时报错概率高。而AD格式相对稳定,且方便二次编辑。
下载下来通常是一个压缩包,里面包含PcbLib(封装库)、SchLib(原理图符号库),有时还有3D模型(step文件)。解压后先别急着打开,用AD的库查看器或者直接双击PcbLib,确认里面封装的命名和你要的型号一致。立创的封装命名一般是"型号+封装类型",比如"STM32F103C8T6-LQFP48",核对清楚再往下走。
注意:有些元件页面提供的封装是"通用封装",比如"LQFP48-0.5mm",这种封装不一定和你的具体型号引脚定义完全匹配,尤其是散热焊盘的位置和尺寸。遇到这种情况,要么找原厂datasheet核对,要么在AD里手动调整。
3.2 AD里必须做的五项规范化处理
封装下载下来直接转Allegro,十有八九会出问题。在AD里必须做五件事,我按重要性排序。
第一,统一原点位置。AD封装的原点默认可能在封装中心,也可能在某个焊盘上,甚至在第一脚。Allegro对原点很敏感,导入后如果原点不对,器件在PCB上的放置位置会偏。我的习惯是把原点设在封装几何中心,或者第一脚焊盘中心,具体看项目规范。在AD里用Edit > Set Reference > Center或者Pin1来设置。
第二,检查焊盘尺寸和间距。立创的封装焊盘尺寸有时偏小,尤其是手工焊接场景。用AD的测量工具量一下焊盘长宽、相邻焊盘间距,和datasheet对比。如果偏小,在AD里直接改焊盘属性。这一步在AD里做比在Allegro里做快得多,因为AD的焊盘编辑是所见即所得。
第三,清理多余的层和元素。立创的封装里经常有多余的机械层线条、注释文本、甚至隐藏的3D体。这些在AD里不影响使用,但转到Allegro后会变成一堆莫名其妙的元素。用AD的PCB Filter或者直接框选,把不需要的层元素删掉,只保留Top Layer、Top Overlay、Top Paste、Top Solder、Mechanical这几层的关键内容。
第四,规范丝印。丝印线宽建议统一到0.15mm或0.2mm,丝印不能压在焊盘上,器件外形轮廓要清晰。立创的丝印有时线宽不一,或者有缺口,在AD里用Find Similar Objects批量改线宽,用对齐工具调整位置。
第五,确认焊盘命名。AD的焊盘命名默认是"Pad1、Pad2...",Allegro导入后会沿用。如果封装里有多个相同功能的焊盘(比如散热焊盘),命名要区分开,否则Allegro里会合并或者报错。
3.3 单位制和精度的统一
这一步单独拎出来讲,因为它是最容易被忽略、后果又最严重的环节。
AD默认单位可能是mil,也可能是mm,取决于封装来源。Allegro项目通常有统一的单位制,比如很多公司用mil,有些用mm。迁移前必须确认两边单位制一致,否则焊盘尺寸会差25.4倍,直接报废。
在AD里,用View > Toggle Units切换单位,然后在Preferences里确认默认单位。如果封装是mil制的,而项目是mm制,建议在AD里先转成mm再导出,避免转换过程中的精度损失。AD的转换精度是够的,但要注意小数位数,一般保留4位小数(0.0001mm)就足够。
精度方面,Allegro对焊盘坐标的精度要求比AD高。AD里焊盘坐标可能是0.01mm精度,Allegro里如果精度不够,会出现焊盘重叠或者间隙。建议在AD里把所有焊盘坐标和尺寸都设成至少0.001mm精度,导出时就不会丢数据。
4. AD到Allegro的转换实操与核心参数
4.1 Allegro的AD导入接口怎么用
Allegro从17.x开始,自带了从AD导入的转换器,入口在File > Import > CAD Translators > Altium。16.6版本没有这个菜单,需要用第三方工具或者手工重建,所以如果你还在用16.6,建议先升级到17.2以上,转换效率会高很多。
导入流程大致是这样:打开Allegro PCB Editor,新建一个空的brd文件,然后走File > Import > CAD Translators > Altium,选择AD的PcbLib文件或者整个PrjPcb工程。转换器会弹出一个对话框,让你选要转换的封装、目标库路径、单位制等。
这里有几个关键选项:
- Source:选PcbLib还是PrjPcb。如果只是转封装,选PcbLib就行;如果要连原理图符号一起转,选PrjPcb。
- Output:指定输出目录,转换后会生成dra(封装文件)和pad(焊盘文件)。
- Units:选mil还是mm,必须和AD里的单位制一致。
- Layers:映射AD的层到Allegro的层。默认映射一般够用,但Top Overlay到Silkscreen_Top、Top Solder到Soldermask_Top这些要确认。
点OK后,转换器会跑一段时间,封装越多越慢。跑完后去输出目录看,dra和pad文件应该都在。如果某个封装没转出来,转换器会生成一个log文件,里面会写原因,常见的是"unsupported pad shape"或者"layer not mapped"。
4.2 焊盘栈的核对与重建
转换出来的pad文件,不能直接用,必须逐个核对。Allegro的Pad Designer是专门编辑焊盘栈的工具,打开一个pad文件,你会看到几个关键参数:
- Units:单位制,确认和项目一致。
- Padstack:焊盘类型,有Through、Blind/Buried、Single等。表贴器件一般是Single。
- Layers:每一层的焊盘形状和尺寸。Top层是实际焊盘,Soldermask层是阻焊开窗,Paste层是钢网开孔。
核对的重点是尺寸和形状。AD里的焊盘可能是圆形、矩形、圆角矩形、异形,Allegro导入后有时会把异形焊盘简化成矩形,或者把圆角矩形变成直角矩形。遇到这种情况,在Pad Designer里手动改回正确形状。Allegro支持Circle、Square、Oblong、Rectangle、Octagon等标准形状,异形焊盘需要用Shape符号或者多边形绘制。
阻焊开窗和钢网开孔也要核对。一般阻焊开窗比焊盘大0.05-0.1mm(每边),钢网开孔和焊盘一样大或者略小。立创的封装有时阻焊开窗偏大,导入后要调回来。
提示:Allegro的焊盘栈命名有规范,一般是"形状+尺寸+类型",比如"R0603_1608"表示矩形0603焊盘。转换出来的pad命名可能很乱,建议批量重命名,方便后续管理和复用。
4.3 层映射的常见问题
AD和Allegro的层定义不是一一对应的,转换时容易出现层错位。最常见的几个问题:
- 丝印层错位:AD的Top Overlay对应Allegro的Silkscreen_Top,但有时会映射到Assembly_Top或者Package_Geometry。丝印跑到装配层,PCB上就看不到丝印了。
- 阻焊层丢失:AD的Top Solder对应Allegro的Soldermask_Top,如果映射没做对,阻焊开窗会丢失,焊盘被绿油盖住。
- 机械层混乱:AD的Mechanical层在Allegro里没有直接对应,一般映射到Package_Geometry或者Board_Geometry。如果封装里有多个机械层,要确认哪个是器件外形、哪个是装配轮廓。
解决方法是转换后在Allegro里打开dra,用Display > Color/Visibility打开层显示,逐层检查。丝印应该在Silkscreen_Top,阻焊在Soldermask_Top,钢网在Pastemask_Top,器件外形在Package_Geometry。发现错位,用Edit > Change或者直接改元素的层属性。
4.4 文本和丝印的修正
转换后的丝印文本,经常出现字体不对、大小不对、位置偏移的问题。Allegro的文本编辑在Edit > Text或者直接双击文本。要检查的几点:
- 字体:Allegro默认用Vector字体,AD的TrueType字体转换后可能变成乱码或者方块。建议统一改成Vector字体。
- 大小:丝印文本高度一般0.8-1.0mm,线宽0.15mm。转换后可能偏大或偏小,批量改。
- 位置:位号(RefDes)一般放在器件轮廓外,靠近第一脚。转换后位置可能乱,手动调。
- 内容:确认位号文本是"RefDes"占位符,而不是具体的"R1"、"C2"。封装里的位号应该是占位符,实际位号在PCB里由Allegro自动分配。
5. 封装与原理图符号的对应与验证
5.1 引脚映射的核对
封装转好了,不代表就能用。封装和原理图符号的引脚映射必须一致,否则PCB里网络会连错。这一步是最容易被跳过、后果最严重的。
核对方法:打开Allegro的dra,数一下焊盘数量和编号;打开原理图符号(在Cadence Capture或者OrCAD里),数一下引脚数量和编号。两边必须一一对应。比如一个SOP-8的芯片,封装有8个焊盘,编号1-8;原理图符号有8个引脚,编号1-8。如果封装里焊盘编号是A1-A8,原理图引脚是1-8,就对不上。
立创商城的封装,焊盘编号一般和datasheet一致,但原理图符号的引脚编号有时会简化或者重排。遇到不一致,要么改封装焊盘编号,要么改原理图引脚编号,以datasheet为准。
注意:有些封装的散热焊盘(EPAD)在原理图符号里可能没有对应引脚,或者对应到一个单独的引脚(比如Pin9)。这种情况要在原理图符号里补上,或者在Allegro里把散热焊盘设成和某个引脚同网络。
5.2 在Allegro里建立封装库和符号库的关联
Allegro的封装库(.dra)和原理图符号库(.olb)是分开管理的,需要在项目里建立关联。具体做法:
- 在Allegro里,Setup > User Preferences > Paths > Library,把封装库路径加进去。
- 在Capture里,Options > Preferences > Design Template,把符号库路径加进去。
- 在Capture的元件属性里,指定PCB Footprint为Allegro里的封装名。
这样导入网表时,Allegro才能根据封装名找到对应的dra文件。如果找不到,会报"footprint not found"。
5.3 导入测试PCB做DRC验证
封装迁移的最后一步,是导入一个测试PCB,做DRC和实际尺寸核对。具体做法:
- 在Capture里建一个简单的测试原理图,放几个待验证的器件,连上网络。
- 导出网表,导入Allegro。
- 在Allegro里放置器件,检查封装是否正确加载、焊盘是否对齐、丝印是否清晰。
- 跑DRC,看有没有焊盘间距违规、丝印压焊盘、阻焊开窗异常等问题。
- 用Allegro的测量工具,量一下关键尺寸,和datasheet对比。
这一步能发现前面所有环节的遗留问题。我自己的习惯是,每迁移一批封装,都建一个测试板跑一遍,确认没问题再放进正式库。
6. 常见问题与排查技巧实录
6.1 转换报错速查表
| 报错信息 | 常见原因 | 解决方法 |
|---|---|---|
| unsupported pad shape | 异形焊盘无法识别 | 在AD里改成标准形状,或在Allegro里手工重建 |
| layer not mapped | 层映射缺失 | 在转换器里手动指定层映射 |
| footprint not found | 封装库路径不对 | 检查Allegro的Library路径设置 |
| padstack not found | 焊盘栈缺失 | 确认pad文件在封装库路径下 |
| duplicate pin number | 焊盘编号重复 | 在AD里改焊盘编号,确保唯一 |
| text overflow | 丝印文本超出封装范围 | 调整文本大小或位置 |
6.2 几个我踩过的坑
坑一:单位制混用。有一次从立创下载的封装是mil制,项目是mm制,转换时忘了改,结果焊盘尺寸差了25.4倍,0603电阻的焊盘变成了1.6mm×0.8mm的巨无霸。后来养成习惯,转换前先看单位制,转换后再量一次尺寸。
坑二:散热焊盘丢失。QFN封装的散热焊盘,在AD里是一个大的矩形焊盘,转到Allegro后有时会变成几个小焊盘,或者直接丢失。原因是AD里的散热焊盘可能是用多个焊盘拼的,转换器识别不了。解决方法是在AD里把散热焊盘合并成一个,或者在Allegro里手工重建。
坑三:丝印压焊盘。立创的丝印有时会压在焊盘上,AD里看不出来,转到Allegro后DRC报错。解决方法是在AD里用Design > Rules > Manufacturing > Silkscreen Over Component Pads检查,提前修掉。
坑四:原点偏移。AD封装的原点如果在第一脚,转到Allegro后原点可能跑到封装外,导致器件放置时位置偏移。解决方法是在AD里统一原点,或者在Allegro里用Edit > Move调整。
坑五:焊盘编号和原理图引脚不匹配。这个最隐蔽,PCB画完了才发现网络连错。解决方法是迁移后立刻核对引脚映射,别等到画完板子再查。
6.3 批量迁移的效率技巧
如果封装数量多,逐个处理太慢,可以用几个技巧提速:
- 批量转换:Allegro的转换器支持一次选多个封装,前提是它们在同一个PcbLib里。
- 脚本处理:Allegro支持Skill脚本,可以批量改焊盘命名、层属性、文本大小。网上有现成的脚本,也可以自己写。
- 模板复用:把常用的焊盘栈(比如0603、0805、SOP-8)做成模板,新封装直接套用,不用每次重建。
- 库管理:建一个统一的封装库,按器件类型分类,比如Resistor、Capacitor、IC、Connector。迁移好的封装直接归档,下次用直接调。
7. 迁移后的库管理与长期维护
封装迁移不是一次性工作,建好的库需要长期维护。几个经验:
命名规范:封装名要能看出器件类型、引脚数、间距。比如"R0603"、"C0805"、"SOP-8_1.27mm"、"QFN-32_0.5mm"。别用"新建封装1"这种名字,过两个月自己都不认识。
版本管理:封装库要版本化,每次修改记录变更内容。可以用Git或者SVN管理,也可以简单点,用日期命名文件夹。
定期核对:立创商城的封装有时会更新,如果项目里用了旧版封装,要定期核对datasheet,确认焊盘尺寸没变。尤其是批量生产前,一定要再核对一遍。
文档记录:每个封装的来源、修改记录、验证结果,都记在一个表格里。下次有人问"这个封装哪来的、改过什么",直接查表。
我个人在实际操作中的体会是,封装迁移这件事,快就是慢,慢就是快。花时间在AD里把封装整理干净,比转到Allegro后反复修要省事得多。尤其是批量迁移的时候,前期规范化做得好,后期几乎不用改;前期偷懒,后期每个封装都要返工。另外,别迷信一键转换工具,复杂封装该手工重建就手工重建,省下的那点时间,不够后面排查问题的。最后再分享一个小技巧:迁移完一批封装后,建一个测试板,把所有封装放上去,跑一遍DRC,量一遍关键尺寸,确认没问题再归档。这个习惯帮我挡掉了至少三次批量性的封装错误。