
搞硬件的都知道AD、立创EDA和Cadence Allegro三套工具来回切换最头疼的就是封装库迁移。我最近正好把一个攒了好几年的立创EDA封装库往Allegro搬顺便把AD封装转Cadence的全流程彻底梳理了一遍。这篇教程适合想从AD或立创EDA转到Allegro的硬件工程师也适合手里有一堆老封装想在新平台复用的朋友。我会从底层格式差异讲起把封装在两边到底哪里不一样、要怎么转、转完怎么验、踩了哪些坑一次性说清楚。先说结论封装转换这件事核心不是“文件后缀改一下”而是要理解AD和Cadence对元件封装的描述方式完全不同。AD里一个封装就是一张“图”焊盘、丝印、阻焊都画在同一个图里Cadence则把封装拆成三套独立文件焊盘文件是焊盘文件图形符号是图形符号最终封装符号再把它们拼起来。转换的过程本质上就是把这套“一张图”拆成“一套文件”再重新组装。理解了这一层后面所有操作都不会懵。1. 转换前必须搞懂的底层差异AD封装和Cadence封装根本不是一回事1.1 同一个0805封装在AD里是一张图在Allegro里是一堆文件很多新手第一次在Allegro里做封装会被它的文件结构吓一跳。一个贴片0805电阻在AD里就是一个PcbLib文件里的一个Footprint双击进去所有东西都在同一个画布上。但在Cadence里情况完全不同焊盘单独一个文件用Pad Designer工具创建后缀是.pad里面定义了焊盘顶层、内层、底层的尺寸形状包括热风焊盘和隔离焊盘。元件本体和丝印单独一个文件在PCB Editor里画后缀是.dra保存后生成.psm文件这个才是你在PCB里能调用到的“封装符号”。如果是通孔元件还需要定义钻孔符号和Flash焊盘这些也是一套独立文件。就拿0805封装尺寸来举例AD里你只要画一个矩形焊盘在Top层再画一圈丝印就行了Cadence里你要在Pad Designer里创建两个焊盘分别设置好顶层表层焊盘尺寸、阻焊层扩展值然后在封装编辑器里把这两个焊盘按0.95mm间距放好再画丝印外框、加装配层、加Placement Bound。同一个封装工作量和文件结构完全不同但好处是复用性极强一个焊盘文件可以被N个封装调用改起来也方便。1.2 层叠命名和单位映射是转换的第一个大坑AD的层名和Cadence的层名看起来像实际对不上。AD里叫Top Layer、Bottom Layer、Top Solder、Bottom OverlayCadence里叫ETCH TOP、ETCH BOTTOM、PSTOP、SSTOP、SILKSCREEN_TOP。转换工具能处理大部分映射但总有例外尤其处理老版本AD文件或者带有自定义层的文件时经常会漏掉。单位的问题更坑。国内用AD的基本都是公制毫米Cadence虽然也能用毫米但很多老工程师和官方库默认走密尔。转换时如果单位没有处理好焊盘间距差0.1mm放出来的封装脚位对不上去贴片就是一堆不良。我一般建议统一使用毫米在Allegro里用Setup - Design Parameters把原点单位和显示单位都设成Metric再导入。1.3 Cadence封装的“三位一体”结构pad、dra、psm我强烈建议你在做转换前先把Cadence封装运行机制搞清楚。Cadence的封装体系可以简单理解成“三层结构”Padstack.pad只描述引脚与电路板连接的所有金属结构包括各层焊盘、阻焊开窗、助焊层、钻孔尺寸。它不关心这个焊盘是电阻还是电容。Drawing.dra封装编辑器的源文件包含焊盘引用、丝印线段、元件实体范围、助焊参考点。你编辑封装时改的是dra。Symbol.psm由dra生成的可使用文件PCB Editor的Placement菜单只能调用psm而且psm是只读的改封装只能改dra再重新生成。这意味着从AD转过来的东西如果只生成了psm但没有保留对应的dra和pad后续要改动非常痛苦。我见过有人用免费转换工具转完得到一个psm焊盘还全是缺失的想改却连dra都没有只能全删了重画。所以转换流程里一定要确保把“源头文件”完整转出来不能只盯着最终能不能用。2. 转换前准备工作立创EDA导出AD格式时的几个关键选择2.1 立创EDA导出Altium文件选专业版还是标准版如果你跟我一样封装库是从立创EDA起家的第一步是从立创EDA导出Altium Designer能识别的文件。这里有一个很容易踩坑的点立创EDA标准版和立创EDA专业版在导出格式上不一样。标准版一般是通过“导出 - Altium”生成一个工程压缩包解压后是.PcbDoc和.SchDoc专业版则是直接导出AD格式的工程和库文件。无论哪个版本建议导出前先确认你的封装在源工程里是“完整”的特别是3D模型和立创EDA里的“设计规则”不会带过来但焊盘、丝印、位号这些基本盘会。导出时有一个选项要注意立创EDA会问你“导出PCB封装库还是原理图库”如果目标是复用到Cadence做PCB一定要勾上PCB封装库。同时建议“同时导出3D模型”的选项也打开能省掉后面去重新找Step模型的时间。2.2 AD打开立创EDA文件的兼容性检查导出的.PcbDoc在AD里一般能直接打开但偶尔会有部分器件封装因为坐标原点异常、焊盘形状特殊变成“坏封装”。建议在AD里做一次快速的DRC检查顺便把每个封装在AD的PCB Library面板里过一遍重点看焊盘是不是有重叠或者偏离丝印框太夸张。顶端和底层焊盘有没有意外连接到一起立创EDA转AD时偶尔会把SMD焊盘转成通孔。原点是否合理。很多用立创EDA绘制的封装原点不在中心转到Allegro后放置时会发现抓不到中心特别难受。是否带3D模型。AD里每个元件可以挂Step模型后续在Cadence里做3D布局需要用到。2.3 工具版本选择AD建议用哪个版本、Cadence用哪个版本更稳转换这件事工具版本影响很大。我自己的实测经验AD版本建议至少18以上因为AD到Cadence的导出功能更成熟Cadence方面Allegro 17.2和17.4都支持File - Import - Altium Designer这条路16.6虽然能用但偶尔会有导入后丝印位置整体偏移的玄学问题。如果你手里只有AD老版本比如AD15、AD16也别慌。可以先用AD把PcbLib打开另存为较新的格式或者直接只用AD打开原始.PcbDoc再另存为“Copy”版本再进Cadence导入。多个老项目转过来时建议统一用“先整理再转换”的思路不要一个文件一个文件零散处理。3. 实操全流程从AD封装到Allegro封装一步一步来3.1 第一步在AD里导出Cadence可读文件这一环节很多人误会了以为要转成某种神秘中间格式。实际上Cadence的Allegro PCB Designer是直接支持导入AD封装库和PCB文件的。所以你的核心动作不是“导出”而是“让AD把文件整理好让Cadence来读”。操作路径是这样的在AD里打开目标封装库.PcbLib确认要转换的封装都在列表里。如果有多个库先通过AD的Library面板把要转的封装复制到一个独立的PcbLib里避免导入后文件散落。保存后不要关闭AD。如果同时装了Cadence和AD建议文件路径不要有中文和空格否则Cadence读取时容易报错。打开Allegro PCB Editor新建一个空的BRD文件然后File - Import - Altium Designer。文件类型选.PcbLib或.PcbDoc选中你准备好的AD文件。左侧面板里可以看到AD文件里的所有封装名称选择你要转的封装或者直接全选。如果你是纯从立创EDA起步中间没有AD参与其实也可以把立创导出的.PcbDoc直接拖进Allegro读我试过部分版本能解析但稳健性不如“立创-AD-Allegro”这条链路。路径长一层但少很多幺蛾子。3.2 第二步导入后先别急检查封装源文件是否齐全导入完成后Allegro默认会把AD封装放在一个从原文件路径转换得到的目录里。强烈建议你在导入前先配置好Library路径Setup - User Preferences - Design Paths把pad_path和psm_path指到一个专门放库的文件夹。否则转进来的焊盘文件会落在临时目录等过几周或者重装系统后再打开PCB发现封装全是“missing symbol”。导入之后别急着用先顺手验证一下生成结果有没有生成.dra文件到库目录里看看。如果没有dra说明转换工具只导出了psm这种要立即回到AD检查或者手工重建封装源文件。有没有生成.pad文件打开Pad Designer逐个点开看焊盘尺寸、阻焊扩展和热风焊盘参数对不对。打开.dra文件检查封装的中心有没有在原点附近。这一阶段常见的问题Allegro导入AD封装后丝印线全在另一层比如AD的Top Overlay映射成了SILKSCREEN_TOP正常但老版本AD里有些自定义丝印层被映射到了BOARD GEOMETRY_SILKSCREEN也能用但要习惯。这类“图层漂移”问题几乎每次都出现建议在封装单独打开时把所有层显示出来看一眼比到PCB里再发现要省事得多。3.3 第三步用Pad Designer修正焊盘和热风焊盘AD封装里的表面贴焊盘相对简单就是一个Top层矩形加上阻焊开窗。Cadence的Pad Designer里需要确认的参数包括顶层Regular Pad尺寸等于元件焊盘尺寸比如0805电阻焊盘宽0.6mm、长0.9mm这是常规值具体还要看你用的焊盘库标准。阻焊层一般是Regular Pad基础上四周各扩展0.05mm到0.1mm如果是立创EDA来的库它的阻焊扩展值通常跟随嘉立创工艺规范0.08mm左右。Thermal Relief和Anti PadSMD焊盘用不到但如果导入后某些焊盘被转成过孔形式就要额外检查。对于通孔元件还要检查钻孔尺寸Drill Diameter和成品孔径的匹配关系。AD里通孔焊盘的“孔径”概念跟Cadence基本一致但Cadence对钻孔公差更敏感如果你常规打样用的钻孔最小0.2mm转换后有的孔变成0.15mm板厂就会来找你加钱。一个特别隐蔽的坑AD里如果同一封装内有两个相同位置的焊盘比如定位孔和螺丝孔共用转换到Cadence后会报“duplicate pin”错误。遇到这种我通常是直接在dra里删掉其中一个再手动放一个机械孔符号。否则后面敷铜或DRC时非常容易炸。3.4 第四步修正封装符号dra手动整理丝印和装配层焊盘没问题之后双击打开转换过来的.dra封装文件开始图形层面的修正。这一步兼职要命因为AD的丝印线条宽度、文字高度、文字位置跟Cadence习惯完全不同。举几个亲眼见过的案例AD里丝印线宽默认0.2mm转过来在Cadence里0.2mm“能看”但风格跟标准库格格不入如果你公司的Allegro标准是0.15mm就要全选丝印层全局改线宽。位号字符RefDes在AD里通常放在Top Overlay转进Cadence大概率落在SILKSCREEN_TOP这没问题。但字体可能变的很怪要重新在Text Edit里把字体改成标准笔画字体如vector font不然出光绘时字符变成空心方块。装配层Assembly在AD里经常是空的转到Allegro后Placement层也是空的。如果你要做装配图或者DFM检查务必补上元件本体范围框。建议在修正前就打开所有显示层把转换结果和AD原图对照着看。重点检查引脚1标记、极性标记、位号、丝印外框和烫手警告符。这些看似不重要实际是量产和维修时的救命信息。3.5 第五步关联Step 3D模型Cadence里给封装加3D模型一般是在封装编辑器里用Setup - Step Package Mapping把对应的Step模型关联到封装上。立创EDA导出的工程里通常带Step模型文件但路径经常是乱的我建议统一拷贝到一个“model”目录然后在Allegro里手动指定一次指定以后所有盘都用这个映射。另一个方法是编辑封装的.prop文件在dra里添加“STEP_MODEL”属性填上模型名称和映射坐标。两种方法都可行我更推荐图形界面操作因为你能直接看到3D预览和旋转方向是否正确。对于Step模型坐标小经验是先用0,0,0试装如果飞了或者斜了再去调整旋转角度通常就是0°、90°、180°、270°里挑一个。3.6 第六步批量转换多个封装提升效率如果你要转的封装有几十个甚至上百个一个一个导入再修会崩溃。我实操下来的批量思路是这样的把AD里的.PcbLib文件整理成“一个库只放一批要转的封装”然后Allegro导入时一次性选择所有封装。导入完成后先不要急着逐个修细节先把所有封装统一跑一遍层颜色和格点修正。用Allegro自带的Skill脚本可以实现批量修改线宽、统一字高。比如; 批量将当前所有SILKSCREEN_TOP层线宽设为0.15mm axlClearSelSet() axlDBSelect(?match SILKSCREEN_TOP ?selectLines t) foreach(sel axlGetSelSet() when(sel-objType line sel-lineWidth 0.15 ) ) axlAddSimpleRMC(axlUIViewFile(Updated SelSilkLines))这段别直接抄需要根据你实际库名调整。但思路值得借鉴凡是重复性劳动优先想办法用Script/Skill自动化而不是靠肉眼一个个点。4. 常见问题与排查技巧实录4.1 封装转进来后引脚全挤在一起或者飞没了这个情况八成是AD焊盘使用的层信息没有被Cadence正确识别导致通孔焊盘的钻孔信息丢失或者SMD焊盘的顶层信息丢失。先打开Pad Designer看焊盘定义如果发现焊盘尺寸是0直接手动改掉。还有可能原因是在AD中焊盘只画在Multilayer层Cadence不认这种“一锅端”焊盘需要拆分成Top、Inner、Bottom三层定义。如果只是个别引脚飞了最快的方法是打开dra文件用一个已知正常的同名焊盘替换掉异常引脚对应的.pad然后另存为新的psm。4.2 焊盘顶层底层连成一片隔离焊盘失效AD的封装治理里焊盘各层是“同一个焊盘栈画成什么就是什么”。到Cadence里如果你做一个过孔焊盘顶层、内层、底层的Regular Pad是分别定义的而且要做热风焊盘才能在大面积铜皮上形成隔离。从AD转过来的通孔焊盘Thermal Relief和Anti Pad经常是空的导致铺铜时焊盘直接跟铜皮“长死”看着像连成一片。解决办法在Pad Designer里给通孔焊盘补上Thermal Relief参数一般建议外径Regular Pad外径0.3mm内径钻孔直径0.2mm开口宽度根据电流和工艺需求调整。补完重新生成psm然后替换PCB里原有封装。4.3 丝印文字变大、方向反了或者跑到板子外面文字是转换的重灾区。AD的位号默认是一个整体的Text对象Cadence导入后有时候会变成一堆线段因为AD导出时把字符转成了path。这样其实也能用就是编辑时很麻烦。如果想保持可编辑的文本最好在AD里先重新放置文本对象别用特殊字体转过去会更顺利。文字方向反了通常是因为坐标系统差异。在转换工具中设置镜像翻转偏移时如果基准点偏差会导致整个封装整体翻转。这在导入选项里可以通过“Mirror”参数纠正。每转完一个库拿两三个封装在PCB里放置测试一下文字方向是不是面向板边一致的方向。4.4 导入时报错cell read-only如果你在打开dra时看到“cell read-only”说明封装符号被锁定了。可能是因为之前生成psm后没有正常关闭或者源目录权限不对。最简单粗暴的办法把要修改的dra另存一个新名字修改完再通过File - Create Symbol重新生成psm。注意不要改完就关要先Create Symbol再退出否则不生效。4.5 转换后在PCB里放置封装找不到或位置偏离很远放置时找不到九成是psm_path没有配置好。到User Preferences里把psm_path和pad_path都指到你的库目录重新启动Allegro再试。位置偏离很远一般是封装的Symbol原点不在设计原点附近这是AD封装原点习惯跟Cadence不一致造成的。解决方法是打开dra后Draw - Symbol - Edit Origin把原点重新放到器件几何中心或者第一脚位置项目要求不同但一定要在库里统一好规则。4.6 网友高频问题速查现象原因快速处理立创EDA导出后AD打不开版本兼容问题换.epcb格式或重新用专业版导出Zip压缩包Allegro导入时提示找不到网络导入的是原理图而非PCB库确认导入文件是.PcbDoc或.PcbLib而不是.SchDoc焊盘尺寸对但贴片立碑多阻焊开窗过小或焊盘不对称在Pad Designer里统一阻焊扩展值并检查两焊盘中心距封装里3D模型不显示Step模型未关联或路径失效在Step Package Mapping里重新指定Step文件转换后过孔内径全变0.15mmAD钻孔公差字段未映射在Pad Designer里逐个修正Drill DiameterAllegro快捷键用不上旧环境配置没加载在env文件里重新定义快捷键并重启软件5. 延伸技巧转换后的维护、Skill脚本提效和与KiCad的对比5.1 库维护是长期工程转换回来要建立自己的规则转换完成不是结束而是开始。我建议把转过来的封装全部整理进一个统一的库目录比如“company_lib”库里按元件类型分目录每种封装命名遵循“类型_封装名_间距_版本”的规则。比如“R_0805_095_RevA”。命名规范统一了后续在PCB里替换单个封装、查找封装都会省心很多。日常维护中还有一个容易被忽略的点Cadence封装的Revision信息。打开dra后在Setup - Design Parameter Edit里把Revision改成A、B、C等版本号确保每次修改都留下记录。这招在项目评审时特别管用别人看到你的封装库是有版本追溯的信任度直接拉满。5.2 Skill脚本批量处理把重复劳动交给机器Allegro的Skill脚本是提升效率的法宝。比如我经常用的一个需求批量给所有封装添加Step模型映射。你可以在dra里用axlForm控件实现批处理也可以直接改封装属性文件。小规模的用Script录制的宏就行大规模的一定要上Skill。举一个日常改线宽的例子script mode record variable line_width 0.15 然后手动操作一个封装把丝印线宽改了 等所有封装都改成一样的停止录制 保存成Script以后遇到同样问题直接回放。这个比让新人手动改几百个封装靠谱一万倍。如果你懂一点Skill语法还能用axlDBGetMatchingComponents、axlDBChangeDesign等函数做更复杂的找差异、批量修改工作。比如有这样一个需求找出所有0805封装里中心间距不是0.95mm的并标记出来用Skill批量遍历一遍可能一分钟就能出结果远比肉眼核对快且准。5.3 立创EDA和KiCad谁更适合做封装库中转这个问题经常被问。我的实际感受是如果你最终目标是用Cadence那立创EDA当“库来源”挺合适因为嘉立创的封装库基于自己工厂的工艺标准SMD焊盘、阻焊扩展数值都和生产贴合。缺点是需要导出再转换多一道工序。KiCad的封装库是社区维护的SixM、KiCad官方库很规范而且KiCad本身能导出与AD兼容的格式或者通过第三方脚本直接转Allegro。但如果你只想快速搭个封装库出来用立创EDA比KiCad更省事因为它自带海量库且搜索方便KiCad的优势在于开源生态和库结构透明。对我这种从AD转过来的用户来说立创EDA上手成本最低KiCad最大的价值反而是它的官方库文件可以被很多其他工具直接引用规避了“库格式被锁死”的问题。5.4 Cadence里禁止铺铜区、铜皮优先级和替换单个封装的小知识转换完成后很多朋友会在新的PCB设计里卡在铺铜这块。先说“禁止铺铜区”在Allegro里用Shape - Manual Void / Cavity或Route Keepout来实现跟AD里的Keepout不是一个思路需要在Setup - Constraints里设置禁布区然后铺铜时会自动避让。具体来说如果你在电源层不想让某一块区域铺铜直接用Add - Keepout画一个Route Keepout然后铺铜时它会自动被排除在外。“铜皮优先级”也是Cadence里独有的概念不同Dynamic Shape之间有优先级高级别的shape会覆盖低级别shape。这个在多层电源设计里极其重要常见的操作是先铺大块GND铜皮作为低优先级再铺小块3.3V铜皮作为高优先级二级电源网络自动“浮在”GND铜皮上面。顺序反了GND会把3.3V区域吃掉甚至造成短路。我用Cadence六层板画电源时几乎每次都要检查shape priority。另外替换单个封装也是一个高频需求。转换后发现在PCB里某个器件摆错了型号不需要删掉重新放直接在Placement Edit模式下右键器件选择Replace Padstack或Replace Symbol把封装替换成库里的正确版本。需要注意替换后要重新跑一遍DRC尤其是位号和装配层文字是否跟着变。6. 实操总结我在整个转换流程里的几点真实体会最后说几点个人感受也不算总结就是踩过几次坑之后留下的肌肉记忆。第一转换前一定要先把源文件“洗干净”。我在AD里处理了不下五十个从网上下载的封装库很多库焊盘和丝印重叠、原点乱飞、3D模型缺失。花半天时间把所有要转的封装在AD里检查一遍比转到Cadence之后一个个补焊盘、修原点要快一倍以上。转换工具不是万能的源文件质量直接决定目标质量。第二永远保留一套原始库的备份并且把转换过程写成文档。我见过太多人转完库就把AD那边的旧库删了结果Cadence版本升级后封装库路径变了想回去查原始数据都找不到。我的习惯是原始PcbLib压缩后归档转换后的Cadence库另存到一个“转库_日期”文件夹线上使用前先在一台测试机上验证没有DRC错误和缺失才正式切换。第三焊盘和钻孔的参数一定要用自己公司的工艺规则再过一遍。立创EDA的库是按嘉立创工艺来的适合板厂打样但如果你换一家别的主流板厂或者做特殊工艺比如盘中孔、背钻、树脂塞孔焊盘和钻孔参数就要重新算。转过来之后顺便把高压储能类、电机驱动类大电流焊盘的电流容量也检查一轮比临时抱佛脚再改封装划算得多。第四如果遇到实在改不动的封装不要死磕。Cadence重画一个普通贴片封装熟练之后十五分钟就能搞定花三小时去修一个转坏的封装完全不值得。判断标准很简单在dra里如果六个焊盘中有两个要重建层栈直接删掉重画耗时会比你想象的低很多。这套流程我最近已经跑了三轮累计转了大概两百个封装目前在公司新项目上运行稳定。如果你也准备从AD或者立创EDA往Cadence迁移照着这个顺序来能帮你省下至少一整周的返工时间。后面我再把Cadence封装批量审核和Skill自动化的部分单独写一篇有兴趣的可以先关注着。