
上个月刚帮一个朋友做了一次大规模的封装库迁移他所在团队要从AD和PADS混合环境切换到统一的Allegro平台库里大概有1200多个封装。折腾了差不多一周踩了不少坑也总结出了一套比较顺手的流程。现在很多公司手里同时握着AD、PADS、Allegro几套工具老板一句话说统一就统一但库怎么办这个问题不解决后面所有板子都会卡壳。这篇文章我就围绕“AD和PADS封装库如何高效迁移至Allegro”这件事把底层差异、转换思路、实操流程和踩坑经验一次说清楚给正要跨平台迁移的工程师和库管理员一个可以参考的路线。迁移这种事最怕的就是拿到一个转换工具就开始点结果转完库一打开全是乱码、焊盘消失、丝印飞走。所以我不打算只给步骤我会把每一步背后的原理、参数选择的原因、以及哪些地方最容易出问题都掰开讲。这样你无论用哪个版本的工具遇到问题都能自己排查而不是只靠复制粘贴别人的菜单路径。1. 别急着转先摸清AD、PADS、Allegro封装库的底层差异1.1 三种工具各自怎么存封装很多工程师对自家工具的库很熟但对另外两家的库结构一知半解。先把这个基础打牢后面的转换步骤才有意义。先看Allegro。Allegro的库体系是三家里面最“拆解”的焊盘文件是一个独立文件后缀是.pad它只定义焊盘的几何直径、钻孔大小、各层的热焊盘和Anti-pad封装符号文件是.dra编译之后生成.psm或.dra/图形库供PCB调用。封装符号本身不内嵌焊盘它通过焊盘名称引用外部的.pad文件。所以你在Allegro里做一个SOP8封装必须先做8个或至少几种焊盘文件再在封装编辑器里把它们放上去。这比AD和PADS都麻烦但好处是焊盘可以反复复用而且.pad文件是文本格式可以批量处理这个特性后面有大用。再看AD。AD的封装库叫PcbLib里面是PCB Footprint。它的焊盘定义内嵌在封装里打开封装的Pad Stack每个焊盘可以给Top、Inner、Bottom分别指定不同的形状和尺寸也可以引用一个全局焊盘模板。AD的库还有个特点就是普遍附带3D模型、ROOM定义、装配层、Courtyard等大量额外属性这些东西迁移后未必能全部带过去。然后是PADS。PADS的封装体系比较特别它区分Decal2D封装和Cell3D封装。简单说Decal负责焊盘、丝印、装配层这些传统2D信息Cell则是在Decal基础上挂接3D模型和高度信息供3D Layout和热分析使用。PADS的库文件后缀常见有.pt9VX版本、.pt5老版本也可以用PADS自带的“Library to ASCII”导出成文本格式。PADS的焊盘栈定义也是跟Decal走的通孔、表贴、盲埋孔都在Decal内部管理。这三套体系放一起对比差异就很明显了项目ADPADSAllegro焊盘归属焊盘脚本内嵌在PCB Footprint中焊盘栈内嵌在Decal中独立.pad文件封装通过名称引用封装文件.PcbLib中的FootprintDecal / Cell.dra源文件 .psm符号3D模型STEP/Generic 3D View挂接在封装上通过Cell关联3D独立的.step文件路径 Step映射关系丝印/装配Mechanical Layers和OverlaySilkscreen / Assembly层Package Geometry下的Silkscreen和Assembly原点习惯一般是器件几何中心或Pin1常见为Pin1或器件中心建议放在器件几何中心1.2 为什么“另存为”或“直接换格式”行不通有人会问AD不是可以导出PADS格式PADS不是可以导出Allegro格式吗确实有这些导入导出选项但你要注意这些功能转换的是“PCB板级文件”不是“封装库文件”。也就是说它们做的事情是把整个板子上的符号、焊盘、走线一起转过来而不是把你的库目录一个一个对应过去。这个区别很关键。直接拿库文件去转换经常遇到三类问题第一AD的PcbLib转到PADS后焊盘栈信息丢一半通孔焊盘的钻孔层级、Plated属性错乱第二PADS的Decal转到Allegro时Allegro需要的是独立的.pad文件但转换器通常不会自动给你拆成规范命名的焊盘库而是生成一堆像是“PAD1_1_1_2_0_0_0_0”这种天书名字第三3D模型关联信息基本全丢到了Allegro里你还得手动重新映射一遍STEP文件。所以跨平台封装库迁移不能想成一个“文件格式转换”问题更像一个“数据搬运”问题。你要把每个封装的几何形状、焊盘栈、丝印、装配层、3D模型引用这些信息从源工具的数据模型里抽出来再塞进目标工具的数据模型里。1.3 迁移的本质几何、属性、3D三件事我做了这么多迁移项目总结下来封装库迁移其实就三件事焊盘几何、封装几何和字体层面对齐、以及3D模型引用。焊盘几何是最底层的孔径、焊盘外径、热焊盘、Anti-pad这些必须精确不能有一毫的偏差。封装几何是第二层丝印框、装配外框、位号文字、Courtyard这些虽然不影响电气连接但影响DFM和可制造性转完之后如果丝印线宽变成0.1mil工厂那边要抱怨的。3D模型是第三层做结构干涉检查的时候如果3D模型丢了一多半那这项工作就白做了。所以你在迁移前就该想清楚这三件事各用什么手段去保证。我的经验是焊盘几何靠“样板板法”批量转封装几何靠Allegro的导出库功能重新生成3D模型靠后期统一映射STEP路径来补救。后面章节就是围绕这三条线展开的。2. 迁移前必须对齐的5个关键参数2.1 单位制与精度三个工具默认的单位和精度不一样。AD和老版本PADS常用mil、精度两位小数Allegro默认也是mil但精度可以设到0.01甚至0.001mil很多Allegro模板还倾向用mm。这种差异初看不致命但在跨平台转换时会造成圆角坐标、圆弧分割的微小偏差积累多了BGA焊盘之间的间距检查会乱报警。迁移前我建议先在源工具里统一单位。如果原库是mil绘制的老老实实用mil不要转成mm再导。转换器在单位转换时经常把四舍五入的误差带进焊盘几何0.001mm级别的偏差在Allegro的Valor DFM检查里就可能被标红。更稳妥的做法是在源库里把所有焊盘、丝印、格点都设置成整数mil或常用标准值比如焊盘外径用10mil、20mil这种让转换器做十进制换算别出现诡异的小数点后四位。2.2 焊盘栈的层对应关系AD和PADS的焊盘栈可以细分为Solder Top、Solder Bottom、Inner Layer也可以按孔属性设置盲埋孔顶层和次外层用一套尺寸内层用另一套。Allegro则把焊盘拆成Begin Layer、Default Internal、End Layer三段再通过Paste Mask和Solder Mask两个附加层来定义开窗。转换时最容易出问题的就是这里的层对应关系。AD的每个内层可以独立定义热焊盘到了Allegro里只有Default Internal一段如果你源库内外层焊盘尺寸不一致转换后只能取其一或者生成两个独立的.pad文件这就会导致引用关系断裂。迁移前建议在源工具里做一个“扇出动作”把多层焊盘统一成一致尺寸减少层级差异这样转出来的Allegro焊盘才干净。2.3 阻焊与助焊的扩展规则阻焊开窗Solder Mask在AD里通常按规则统一扩展比如所有焊盘自动外扩4milPADS也类似靠封装内定义的Solder Mask信息或全局规则PADS里叫Solder Mask Expansion。到了Allegro阻焊不是“规则计算出来的”而是每个.pad文件里实际绘制出来的Solder Mask层形状。这意味着从AD/PADS转Allegro时如果源工具依靠的是全局规则而不是显式焊盘定义转换后Allegro可能按照默认值生成阻焊结果就是BGA焊盘的阻焊开窗只比焊盘大0.2mil板厂生产时对位偏移一点点焊盘就被绿油盖住了。我的方法是迁移前在源工具里把阻焊扩展统一设置成明值比如通孔焊盘外扩4mil表贴焊盘外扩2.5mil再跑一遍库生成确保每个焊盘的阻焊数据都已经烘焙进封装内部。2.4 原点与丝印的摆放习惯AD和PADS做封装时原点的选择很随意有人习惯放在Pin1有人习惯放在器件中心还有人直接放在左下角。Allegro社区里比较统一的做法是放在器件几何中心。原点不统一会导致什么转换后Allegro里Symbol原点和你实际想要的参考点不在一个位置Placement时坐标全偏位号文字飞出去几十毫米。迁移前我建议在源工具里写一批脚本把每个封装的原点重新定义到器件外框的中心或者至少统一到一个可预期位置。丝印线宽也提前统一AD里常见的5mil、8mil丝印线宽到了Allegro还算友好如果PADS里某些封装用了Hatch填充块来画丝印转过去会变成一堆难看的闭合图形最好在源端就改成Line。2.5 字体与位号属性这一条很多人忽略但实际影响体感最强。AD的丝印文字默认用TrueType字体笔画宽度是矢量计算的PADS用系统字体或者Hershey矢量字体Allegro用的是它自己的字体系统常见有“reflow”和“stroke”两类。转换之后文字内容能过来但字体、字宽、方向经常乱。最典型的是位号被压扁、倒转或者跑到器件外面老远。迁移前建议把源库里的位号文字全部转成单线、居中、高度统一比如30mil或1mm并检查是否有TEXT与附近走线重叠的情况。Allegro导入后再用Edit→Change批量修正字体样式和文字高度。3. 实操用“样板板法”完成跨平台库迁移3.1 为什么选样板板法我见过有人用各种第三方转换脚本直接转换.PcbLib结果焊盘丢、线宽乱、3D模型全无。真正可靠的方式是用PCB板级文件当中转载体。为什么因为AD、PADS、Allegro这三个工具对板级文件的导入导出支持都维护得比较好“库文件到库文件”的转换器则大多简陋。样板板法的思路很简单在源工具里新建一个空白PCB把你要迁移的所有封装全部摆上去摆成整齐的阵列间距留足然后把这个“样板板”转换成目标工具可读取的板级格式Allegro导入这个板子时会自动为每个摆上去的封装生成符号和焊盘文件最后再用Allegro的“Export Libraries”功能把库导出到一个干净的目录迁移就完成了。3.2 第一步在AD/PADS里生成封装阵列底板先创建一个空的PCB文件板框大小根据封装数量与尺寸调整我习惯四周留2mm以上的间隙。然后通过重新“放置元件”的方式把库里的封装调出来不用管位号随便放但建议按行排列每行放20个封装间距至少3mm避免转换时焊盘与丝印相互干扰。这里有两个细节。第一放在板上的封装必须是你库里的原始封装不能用经过旋转、翻面或者局部修改过的实体否则导出的就是变体。第二如果原库有几百个封装不要一次全摆上去PCB文件太大会让转换器直接卡死或者内存溢出。我建议500个封装一个板生成多个样板板。摆完后做一个完整DRC确认没有间距冲突保存成标准文件格式。AD的话保存为.PcbDocPADS的话保存为.pcb在PADS中新建一张空白板大面积铺封装也是同样思路。3.3 第二步转成PADS格式如果你的源库在PADS这一步可以直接跳过。如果源库在AD接下来的操作要看手头环境。最顺的路子是打开PADS LayoutVX版本在File→Import菜单里选择Altium Designer文件PADS会直接打开AD的.PcbDoc文件并转换成自己的板级格式。注意导入前先把PADS的设计单位设置成和源文件一致避免自动缩放。导入后确认封装数量对不对焊盘是否完整丝印文字是否有乱码。如果你连PADS许可都没有还有一个备选方案AD导出IDF文件再导入Allegro。但IDF天生不适合做封装库迁移它只能带层叠和元件外形焊盘栈信息会大面积丢失。所以我一般不建议工程上宁可先搞一套PADS试用许来中转。3.4 第三步Allegro导入PADS板文件现在到了核心环节。打开Allegro PCB Designer在File→Import里选择PADS指向刚刚导出的.pcb文件。Allegro会弹出一个PADS导入对话框里面有大量映射选项。比较关键的有几个一是单位设置如果你源工具是英制确保导入时单位选Mils而不是毫米二是Symbol/Padstack命名方式Allegro允许你选择按位号命名还是按数值命名我的建议是选择“按数值命名”加上封装名前缀这样后期整理库时焊盘名还有意义三是导入缝隙/热焊盘的处理选项尽量保持“Preserve thermal”之类的默认值。导入过程可能持续几分钟到几十分钟取决于板子的封装数量和复杂性。导入完成后在Allegro里打开板子先不要急着布线直接放大检查几个典型封装确认焊盘形状、孔径、丝印在视觉层面没有明显错乱。特别注意BGA焊盘是否变成方块状、是否有焊盘丢失。3.5 第四步从Allegro导出标准库板子导入成功后库其实已经生成在当前工作目录或系统临时目录里了。但你想要的是一套干净的、可加入版本管理的库所以第二步是把它导出到独立目录。在Allegro中点击File→Export→Libraries会看到一个导出选项面板。选择所有Symbols和所有Padstacks指定导出目录确认后开始导出。导出的结果大致包含.psm封装符号、.pad焊盘文件、.dra封装源文件、以及一些.txt辅助文件。这一步做完你的库骨架就已经成形了。但我建议在导出前先确认一下“封装名称”是否还是源工具里那个名字。因为样板板法里Allegro导入的是整板每个元件位号绑定一个symbol名称这个名称默认可能来自PADS/AD的Decal名或Footprint名如果源工具封装名带了空格、中文、特殊符号Allegro会强制替换成下划线导出时要注意批量改名。3.6 第五步库整理与命名库导出之后你会发现焊盘名字很乱像“PAD127_6_8_0_0_0_0”这种。这没法直接用。我的经验是整理分成两步。第一步把同名封装引用的多个焊盘做成一个清单。在Allegro里打开一个封装列出它引用的所有.pad文件然后按照“封装名引脚功能尺寸”重新分配焊盘名。比如SOP8封装的宽带脚焊盘我可以命名成“PAD-SOP8-1.5X0.6”这样后面一眼能看出这个焊盘是干什么的。第二步把同类型的焊盘合并。一批0603封装用的焊盘经过这次迁移后可能生成了几十个名称不同但几何相同的.pad文件全部分解出来后发现它们尺寸一样就可以批量软链或复制成同一个标准焊盘名这样库的体积和复杂度都下来了。4. 迁移后的焊盘、丝印、3D模型修正细节4.1 焊盘栈核对与批量处理样板板法能保住大部分焊盘信息但有几个地方一定还要返工。第一个是热焊盘和Anti-pad。AD或者PADS的负片层Plane层焊盘定义在Allegro导入时经常被简化为默认值或者干脆丢失。你需要在Allegro的Pad Designer里逐个打开电源地类焊盘检查Inner Layer的热焊盘开口尺寸是否符合板厂要求。第二个是背钻、盲埋孔等特殊焊盘。这类焊盘在源库中存在多个中间层定义导入Allegro后如果发现Default Internal层和源工具内层尺寸不一致说明这一层的信息没转干净需要手动在源模板里重新建。第三个才是重点Allegro的.pad文件是文本文件。你可以用文本工具批量搜索“soldermask_top”等字段批量替换阻焊开窗的尺寸。比如所有表贴焊盘阻焊外扩需要统一改成2.5mil写个小脚本10分钟就能完成整个库的批量修改这在AD/PADS环境下是做不到的也是Allegro让库管理员上头的原因。4.2 丝印、装配层与位号文字修正焊盘整完了接下来是封装的“面子”丝印和装配层。从AD转过来的封装丝印线宽一般能保留但字体变大变小、文字拉伸的问题很常见。从PADS转过来的封装丝印线条正常但很多“2D Line”转换后跑到Package Geometry的“Placement Outline”层去了需要在Allegro的Layer标签里把不必要的Class/Subclass内容重新分配。装配层是另一个经常出问题的地方。Allegro的装配层一般叫Package Geometry下的Assembly_Top但转换工具喜欢把它放到另一个Class下或者直接丢在Board Geometry里。其实装配层的信息主要是给贴片机程序做器件中心参考的如果放错层SMT那边用Allegro输出位号图时会找不到。位号文字的处理我建议在Allegro里一次性选中所有元件的位号用Edit→Change把文字高度统一再把字体切到标准reflow字体。这一步是纯体力活但做完后整个板子的观感会从“转换灾区”变成“正规军”。4.3 3D模型映射与搜索路径样板板法迁移3D模型几乎不可能一步到位因为Allegro的3D模型不是封装内嵌的它靠的是“封装名和STEP文件路径的映射关系”。所以迁移后你手上有一堆.psm封装但打开3D视图一片空白。解决方法是分两步走。第一步把源库里的STEP文件统一收集到一个目录比如“D:\Lib\Steps”文件名按“封装名.step”重命名。第二步在Allegro里进入Setup→Step Package Mapping手动或半自动地把每个封装与对应的STEP文件关联起来。如果你的源库是AD且封装名附带了“3D Body”的偏移信息可以在映射时填Object height和Center offset这样3D模型放在板上的高度和中心位置才不会偏。做这一步时最好用Allegro自带的3D Viewer实时检查几个代表性物料的摆放姿态遇到底部有Die的BGASTEP模型可能还自带了一个Body Center的本地坐标系Allegro映射窗口里的XYZ偏移就是用来补偿这个的。4.4 用SKILL做批量校验的思路当库量到几百上千时靠人工一个个检查不太现实。Allegro有个隐藏利器SKILL脚本。你可以写一个简单的SKILL脚本遍历目录下所有封装符号逐一检查三件事打开.dra时是否有DB Doctor报错、封装内是否引用了不存在的.pad文件、丝印线宽是否小于设定值。跑完输出一个CSV报告哪几个封装有问题一目了然。SKILL脚本不用写太复杂Allegro本身就提供了axlDbOpen、axlDbFindByName这类函数。如果你不会SKILL也可以退而求其次用“Reports→Symbol Report”功能在一个板子上批量生成封装报告再从报告里筛异常。但长期管理库的话SKILL还是值得花时间学的它和.pad文本文件一样是Allegro库管理的两个效率杠杆。5. 让库真正跨平台长期管理规范5.1 目录集中管理symbol、padstack、step、tech分开迁移结束后把库按Allegro的习惯拆成四个目录symbol放.psm/.drapadstack放.padstep放存量3D模型tech放叠层模板和规则模板。四个目录放到服务器的同一个根目录下在allegro.ini或home路径里配置好PSMPATH、PADPATH、STEPLIB这几个环境变量。这样做的好处是“焊盘库”可以被多个封装共享改一个.pad所有引用它的封装同步生效。这在AD里很难做到因为AD的焊盘定义复制到每个封装里。你从AD带过来的习惯可能是“每个封装自己一套焊盘”到了Allegro如果不做合并统一就等于没享受上Allegro的库管理红利。5.2 命名规范与OrCAD的FOOTPRINT字段联动Allegro通常和OrCAD配合使用原理图里每个元件符号的PCB Footprint属性必须和Allegro封装名严格一致多一个空格都放不到板上。所以迁移后的库整理阶段就要把命名规范定下来。我的习惯是封装名用“类型-尺寸-间距-特殊标识”结构比如电阻“R0603-0.85X0.45”、BGA“BGA-144-9X9-0.8”、QFN“QFN-32-5X5-0.5”。焊盘名用“PAD-封装类型-尺寸”引脚名在OrCAD中保持标准。命名字母全大写禁止中文、禁止空格、禁止用括号只允许数字、字母、下划线和横线。这样在OrCAD里输入Footprint时鼻子不用捏着也能保证正确率。5.3 版本管理与变更记录库这个东西最怕“改着改着就乱了”。迁移完成后建议立刻把整个库目录初始化成Git仓库.pad、.dra、.psm这些文件纳入版本管理。Allegro的.dra和.pad都是文本或类文本格式Git的diff功能可以清楚看到哪个焊盘改了参数方便审阅。与Git配套我还会在库根目录放一个“CHANGELOG.md”每次批量修改记录原因和影响范围。比如“2025-06-10 统一定义所有表贴焊盘阻焊开窗外扩2.5mil影响约300个封装”。这算不上高科技但在日常工作里非常实用后续厂里追查“这个焊盘怎么变成这样了”时不用翻聊天记录猜来猜去。5.4 转换前的export配置模板跨平台迁移不是只做一次有些公司业务上有稳定的异构需求进一次库就要走一遍转换流程。我建议把前面走过的每步配置存成模板文件比如Allegro的PADS导入参数、PADS的AD导入参数、样板板的创建脚本全部固化到共享目录。这样下次再入库只要把新封装按规范摆到样板板上跑一遍模板输出结果直接进统一的库目录。规范化流程最大的价值是让“迁移这个事”从一个需要老师傅拍脑袋的手艺活变成一个新人也能执行的标准化工序。6. 高频问题与排查技巧实录6.1 迁移后焊盘丢失表现是Allegro导入板子后某些封装上少了几只引脚特别是从AD转来的封装。仔细查会发现这些引脚往往使用了“过孔”作为表贴焊盘或者焊盘名带了AD内部自动添加的后缀。解决办法是先回到源库检查这类焊盘的PadStack完整性在AD中用“Tools→Convert→Create Padstack”把它显式化再走样板板流程。不要试图在Allegro里手动补数量多了不现实。6.2 丝印飞远、位号乱码这是字体和原点共同导致的。先检查原点在Allegro里用Setup→Change Drawing Origin把原点改到封装外框中心然后选中封装全部实体用Edit→Move精确移动使几何中心对齐原点。再处理乱码如果位号变成“?”说明源库文字编码不是UTF-8Allegro识别失败只能返回源库批量把文字改成英文或把中文替换掉这也是为什么迁移前要清理非ASCII字符的原因。6.3 3D模型不显示先确认STEP文件有没有按“封装名.step”命名并且放进了搜索路径。Allegro的3D映射是通过封装名自动匹配STEP文件名如果源工具封装名带了版本后缀比如“R0603_V2”而STEP文件叫“R0603.step”就匹配不上。解决办法是批量重命名STEP文件或者在Step Package Mapping里手动指定。还有一个低级但是常见的坑把STEP文件放在有中文或空格的目录里Allegro的STEPLIB路径解析不了。库目录一律用英文路径这是铁律。6.4 开孔/挖槽变成了Route Keepout很多PADS库里有定位孔、散热开槽这些在PADS里是板框或铜皮避让区转到Allegro之后却变成Route Keepout或反面的禁布区导致铺铜时出现莫名其妙的挖空。定位孔的孔壁铜皮还在但板厂加工时定位孔处没有外形。问题出在开槽在PADS里通常画在“Board Outline”或“Drill Drawing”层转换工具不知道如何处理这种非标准用法。建议在样板板导出前把这类开槽统一画到PADS的Board Outline层并用“板框挖空”的方式表达。导入Allegro后再手工把它改成Board Geometry下的Outline并添加钻孔标识符确保板厂正确识别。6.5 快速排查速查表现象可能原因排查及解决思路导入后焊盘消失源工具焊盘栈内层定义不完整或非法字符回源库检查焊盘栈显式化后重新样板板位号文字变“?”中文字符或特殊编码源库统一替换为ASCII字符后重建丝印文字整体偏移元器件原点不在几何中心在Allegro中调整原点到外框中心BGA阻焊开窗太小转型时阻焊扩展规则丢失用文本脚本批量改.pad文件Solder Mask3D模型空白STEP文件名不匹配或搜索路径不对统一重命名STEP并设置STEPLIB焊盘名大量重复但几何不同转换器为同名焊盘生成了不同pad抽样对比.pad文件按几何归类合并导入整板时内存溢出样板板一次放置封装过多拆分成多个500封装以内的样板板写在最后踩过几次坑之后我的个人体会是跨平台封装库迁移从来不是“一键转换”的事它本质上是一次数据清洗和标准化重建。样板板法只是绕开工具差异的一种工程技巧真正决定迁移质量的是你在迁移前愿意花多少时间整理单位、原点、阻焊规则和字体。如果这些底层参数没有对齐你后面在Allegro里修库的时间会比转换本身多出几倍。最后一个建议第一次迁移时先拿50个封装跑通全流程做一个测试板去工厂打样确认焊盘、阻焊、丝印、3D模型都没问题再批量迁移剩余封装。不要一上来就全量转不然一旦某个系统性小错误贯穿整个库返工成本会让人后悔当初偷懒。希望这篇文章能帮正在做库迁移的同行少走点弯路。