AD封装导入Allegro:ASCII转换、库路径与验收避坑

发布时间:2026/10/31 18:51:33
AD封装导入Allegro:ASCII转换、库路径与验收避坑 简介一份聚焦 EDA 工具协同的实操文档面向需要在 Cadence Allegro 中复用 Altium Designer 封装库的 PCB 设计工程师与库管理初学者针对两套软件封装格式不互通、重复建库耗时的问题给出可落地的转换路径。内容沿 AD 端新建空 PCB、放置待迁移封装、另存为 PCB ASCII 文件到 Allegro 端新建 BRD 工程、经 CAD Translators 导入 Altium PCB、再导出 Library 的完整链路展开并重点说明 symbol 的 dra、log、psm 文件shape 的 dra 与 .ssm 文件以及焊盘文件应分别归入封装库、shape-symbol 库和焊盘路径的存放规则同时提示导入后核对尺寸、位置与连接一致性的检查要点。压缩包共 1 个 docx 文件约 63KB篇幅精简、按步骤编号组织便于边操作边对照。目前已有 1475 人学习适合希望打通 AD 与 Allegro 封装迁移、减少重复建库工作量的读者快速上手并排查路径设置与文件归类中的常见问题。1. AD 封装导入 Allegro一次迁移值不值先看这三个前提手上一批在 AD 里已经出过三版板子的封装新项目要求用 Allegro 交付重画四十多个封装显然不划算。把 ADAltium Designer的封装导入 Allegro本质是把一个二进制 PCB 数据库翻译成双方都能读的 ASCII 记录再在目标端重建 padstack、package symbol、shape symbol 三套文件最后挂进库路径里被 Place 调用。它适合两类人已经有成熟 AD 封装库、必须切到 Allegro 出图的团队以及只迁移个别难画封装异形连接器、天线馈点、沉板器件的场合。不适合的也要说清楚——封装里堆了大量 3D 体、叠焊盘、复杂铜皮定义的转过去大概率要手工返工那不如直接按 Allegro 的 padstack 规范重画一遍省下的返工时间比硬转更多。2. 迁移链路拆解ASCII、PSM、SSM 与焊盘文件到底在传什么2.1 交换格式为什么锁定 PCB ASCII 而不是二进制 PcbDocAD 的.PcbDoc默认是二进制容器内部带压缩、带版本头、带工具自己的对象索引第三方工具没法直接解析。ASCII 版本则是纯文本记录流每一行对应一个对象pad、track、arc、text、component、polygon转换器读的就是这些记录。真正被翻译的是 component 记录里的三样东西这个封装有哪些焊盘、焊盘各自落在哪一层、焊盘的形状和尺寸参数。转换器拿到这三样后先在 Allegro 里重新生成 padstack.pad再把焊盘实例和图形元素丝印线、装配外框拼成 package symbol.dra→.psm如果封装里还嵌了自定义图形比如异形铜皮做成的 logo 或天线形状会额外生成 shape symbol.ssm。这里有个版本兼容的坑AD 版本越新ASCII 里的记录字段越多老转换器遇到不认识的字段会直接跳过甚至报错。常见做法是拿一份和转换器同代的 AD 版本重新导出而不是硬用最新版存。2.2 一次转换会在磁盘上留下哪几类文件很多人导入完成后看到输出目录里一堆文件就懵了其实只有五类职责分得很清楚扩展名归属作用是否要进库搜索路径.padpadstack焊盘定义含各层尺寸与热焊盘参数必须进 padpath.dra源文件symbol / shape 的可编辑源图不用但要留档.psm编译产物package symbolPlace 时真正被读取的文件必须进 psmpath.ssm编译产物shape symbol异形图形引用时被读取必须进 psmpath.txtdevice file器件映射网表导入时用于匹配引脚建议进 devpath.log日志转换过程记录含跳过的对象和报错不用留着排查最关键的一条.psm是.dra编译出来的产物不是同一个东西。改了.dra里的丝印或焊盘位置如果不重新执行一次生成 symbol 的动作Place 出来的还是老样子。这个机制在 Allegro 里属于典型的黑匣子新手会反复怀疑自己路径配错了其实只是没重建。2.3 三个路径变量与三类目录的对应关系Allegro 找文件不靠“导入”靠环境变量里的搜索路径。装好之后在Setup → User Preferences → Paths → Library里能看到三个关键项padpath找.pad。焊盘找不到时Place 阶段直接报错退出。psmpath找.psm和.ssm。这一项配错封装列表就是空的。devpath找.txt。只有走网表导入才用得上手工放置可以暂时不管。我一般会把三个路径都指向项目根目录下的固定子目录而不是散落在各个导出目录里。团队里更稳的做法是把这三个变量写进项目级的初始化文件让每个人打开工程时路径一致避免“我这里能放你那里不能放”的扯皮。2.4 转换器能带过去什么哪些必须手工补先把预期摆正省得白干对象迁移结果圆形、方形、矩形、椭圆焊盘基本准确需核对尺寸精度阻焊、钢网层开窗跟随焊盘带过去取决于层映射是否配对丝印线与文字带过去字体被替换成 Allegro 的笔画字体字高需复核装配外框、器件高度高度值通常丢失需手工填到 symbol 属性里3D 体丢失不影响电气但影响结构干涉检查叠焊盘顶层-中间层-底层分开定义可能退化成单层焊盘必须逐个检查板级覆铜、设计规则不随封装迁移本来也不该出现在封装里3. AD 侧准备空 PCB、封装摆放与 ASCII 另存的四个规范3.1 新建空白 PCB 的四条硬规矩第一步是在 AD 里新建一个空 PCB把要迁移的封装放上去。听起来简单但这一步决定了后面 80% 的问题四条规矩必须守路径无中文、无空格。整条路径从盘符开始全部用英文和数字目录层级也不要太深。转换器在中途会写临时文件路径里带中文时某些环节会静默失败日志里只留一行语焉不详的报错。这条属于血泪经验别试。原点设在封装的第一脚或者几何中心。AD 里用Edit → Set Reference分别设成 Pin 1 或 Center两种都行但整批封装要统一。如果不设转换器会按 AD 的绝对坐标搬运导入后在 Allegro 里 Place 出来位置会偏得离谱。单位与目标端对齐。AD 的 PCB 单位设成 mil 还是 mm直接决定 ASCII 里记录的小数位数。目标封装要求是 mil 的就在 AD 里切成 mil 再放封装要求是 mm 的就统一 mm 并且保留三位小数。中途混用会引入二次换算误差这个误差在 0.6mm 焊盘上表现为 0.5999肉眼看不出来贴片时能让你怀疑人生。不要带设计规则、不要带网络、不要铺铜。空的 PCB 就是空的规则和网络会让转换器多做一堆无用功某些情况下还会因为规则里的非法对象中断转换。3.2 放置封装的姿势一个封装一个位置用Place → Component从库里挑封装一个一个放。三条操作要点第一每个封装之间留出足够间距别叠在一起。叠放会让转换器把多个封装的图形元素混到同一个 symbol 里或者是后一个覆盖前一个最后只能重来。第二每放一个就把 Designator 改成能认出来的名字比如U1、J1、CONN_A。转换后的 symbol 名字大多来自 Designator 或 Comment命名混乱的话后面在 Allegro 库列表里根本对不上号。我习惯在放之前先在库里把封装名统一成前缀_封装类型_尺寸的格式比如CONN_HDR_2X5_254转换后一个都不用改。第三确认焊盘编号与原理图符号对得上。转换器会照搬 AD 里的焊盘编号编号是1,2,3还是A1,A2,B1直接影响后续网表匹配。有编号缺失或者重复的先在 AD 里改掉。3.3 另存为 PCB ASCII File 的路径与验证方法放完之后File → Save As保存类型选PCB ASCII File (*.PcbDoc)文件名保持和原工程一致另存到一个干净的输出目录。存完做一次验证用任意文本编辑器打开这个文件能看到大量以|RECORD开头的文本行说明确实是 ASCII 格式如果打开是一堆乱码说明保存类型没选对回去重存。文件体积上ASCII 版本通常比二进制大好几倍这个差异本身也是一个快速判断依据。有个细节容易被忽略ASCII 的保存动作会把当前板上的所有对象都写进去包括那些你看不见的、被隐藏的、放在板框外的对象。所以保存前按CtrlA全选看一下状态栏的统计数字跟预期差太多就说明板上还有多余的东西。3.4 导出前的自检表导出前照着过一遍比事后在 Allegro 里排错省事得多检查项合格标准不合格的后果保存路径全英文、无空格、层级浅转换中途静默失败板子内容只有目标封装无网络无覆铜转换缓慢或报错中断封装原点全部统一为 Pin 1 或 Center导入后位置偏移封装间距互不重叠边界清晰symbol 图形互相污染命名统一前缀无中文、无空格、无斜杠文件名非法psm 生成失败焊盘编号与原理图符号一致无重复网表导入匹配失败单位与精度与目标端一致小数位够用焊盘尺寸差 0.01 量级文件格式文本编辑器能读出记录行实际存的还是二进制4. Allegro 侧导入转换器参数、Library 导出与文件归位4.1 新建 .brd 与设计参数的前置设置在 Allegro PCB Editor 里新建一个空白.brd。别急着导入先把设计参数对齐Setup → Design Parameters → Design页里把 User Units 设成和目标封装一致的单位mil 或 mm精度按常规取 4 位小数原点保持默认的 (0,0) 不做偏移。这一步不做的话转换器会拿.brd当前的单位去解读 ASCII 里的数值mil 当 mm 读封装直接放大 39 倍看起来像个巨无霸。转换器本身也有单位选项两处设置必须一致这是最容易翻车的地方之一。另外确认一下转换器组件是否装上了。部分安装选项里 CAD Translators 不是默认勾选的File → Import → CAD Translators下面如果找不到 Altium 相关条目回去补装导入导出组件即可不用重装整个工具。4.2 Altium PCB 转换器的选项逐项拆解路径是File → Import → CAD Translators → Altium PCB弹出的对话框里几个参数值得逐个说Input file选刚才存出来的 ASCII 文件。选不中或者报格式错误多半是文件名后缀被系统藏起来了实际存的还是.PcbDoc二进制。Output directory单独建一个空目录不要和已有库混在一起。转换器会把.brd、日志和一批 symbol 文件全倒进来混在旧库目录里以后根本分不清哪些是这次生成的。Units跟 AD 侧保持一致。AD 用的 mil 就选 mil用的 mm 就选 mm。这一项和 4.1 里的 Design Parameters 必须成对一对错了就得整批重来。Layer mapping这是最需要人工干预的一项。AD 的层名和 Allegro 完全不是一套体系常见映射关系如下AD 层Allegro 目标层说明Top LayerTOP顶层走线/焊盘Bottom LayerBOTTOM底层Top OverlaySILKSCREEN_TOP顶层丝印Bottom OverlaySILKSCREEN_BOTTOM底层丝印Top PastePASTEMASK_TOP钢网Top SolderSOLDERMASK_TOP阻焊Mechanical 13 / 15PACKAGE GEOMETRY / PLACE_BOUND_TOP器件占地必须映射最后一行是重点。AD 里很多人用 Mechanical 13 或 15 画器件外框如果这两层没映射到PLACE_BOUND_TOP导入后封装就没有 place bound布局时器件叠在一起 DRC 也全绿等打样回来才发现装不下。Create library / Extract symbols这一项要勾上否则转换器只生成一个带封装的.brd不给你独立的 symbol 文件后面还得手工从板上再导一次。3D 与铜皮相关选项封装迁移用不上关掉能明显缩短转换时间也少一堆警告。转换跑完后先看日志日志里会列出跳过的对象、替换的字体、失败的焊盘。日志干净不代表没问题但日志里全是 error 就一定有问题。4.3 导出 Library 与文件归位转换器勾了生成库的话输出目录里应该已经有.dra、.psm、.ssm、.pad了。如果没有在 Allegro 里打开转换出来的.brd执行File → Export → Libraries指定一个空目录把 symbol、pad、shape 一次性导出来。接下来是纯体力活按类型把文件分到三个库目录。手工拖动几十个文件容易漏我一般用脚本一次搞定。#!/usr/bin/env bash # 把 Allegro 导出目录里的文件按类型分发到三个库目录 # 用法: ./split_libs.sh 导出目录 symbol目录 shape目录 pad目录 set -euo pipefail SRC${1:?缺少导出目录} SYMDIR${2:?缺少 symbol 目录} SHAPEDIR${3:?缺少 shape 目录} PADDIR${4:?缺少 pad 目录} mkdir -p $SYMDIR $SHAPEDIR $PADDIR # 焊盘定义全部进 pad 目录padpath 只认这里 find $SRC -maxdepth 1 -type f -name *.pad -exec cp -f {} $PADDIR/ \; # package symbolpsm 是 Place 时真正读取的文件dra 一起放便于后期修改 find $SRC -maxdepth 1 -type f -name *.psm -exec cp -f {} $SYMDIR/ \; find $SRC -maxdepth 1 -type f -name *.dra -exec cp -f {} $SYMDIR/ \; # device file有就带上走网表导入时用于引脚匹配 find $SRC -maxdepth 1 -type f -name *.txt -exec cp -f {} $SYMDIR/ \; # shape symbolssm 进 shape 目录 find $SRC -maxdepth 1 -type f -name *.ssm -exec cp -f {} $SHAPEDIR/ \; # 日志留在原地不进库路径 echo 分发完成 printf symbol: %s 个\n $(find $SYMDIR -maxdepth 1 -type f | wc -l) printf shape : %s 个\n $(find $SHAPEDIR -maxdepth 1 -type f | wc -l) printf pad : %s 个\n $(find $PADDIR -maxdepth 1 -type f | wc -l)脚本逻辑很直白按扩展名做白名单复制maxdepth 1保证不递归到子目录里误抓旧文件cp -f覆盖同名文件让重跑是幂等的。四个参数里前三个是必填缺任何一个都会在参数展开时就退出避免拷到一半发现路径写错。这里有个脚本解决不了的歧义要说清楚.dra既可能是 package symbol 的源文件也可能是 shape symbol 的源文件两者扩展名一样。脚本统一丢进 symbol 目录如果某个 shape symbol 的.dra被放错了位置后果是以后想改这个形状时找不到源文件但不影响当前使用因为 Place 读的是.ssm。判断方法是对着.ssm的文件名去找同名.dra找到了就人工挪到 shape 目录。批量迁移几十个封装时我一般先按脚本跑一遍再单独花五分钟人工核对 shape 那部分。4.4 在 Allegro 里加载与放置验证路径配好之后在 Allegro 主界面点Place → Manually右侧面板切到 Package symbols 标签展开库列表能看到刚放进去的封装名就说明路径通了。放一个到板上做首轮验证Display → Measure量一下关键尺寸Tools → Padstack → Modify Design Padstack点开焊盘看参数Show Element点中 symbol 看它的来源路径是不是你刚配的那个目录。三项都过了说明这个封装至少在文件层面是完整的。如果库列表里能列出来但放不下去多半是.pad没找到回去检查 padpath。如果列表里压根没有参考下一章的第一条。5. 避坑与排查五类翻车现场的现象、原因和补丁5.1 库里明明有 psmPlace 列表里却是空的现象三个路径都配了Refresh 也点了好几次Package symbols 下面还是空的。原因三种可能按概率排序。一是psmpath指向了.dra所在的目录而.psm被导出到了别处两个文件不在同一个文件夹里二是转换过程中封装名被改写过.psm的文件名和预期的对不上列表里其实有只是名字不认识三是.psm由更高版本的数据库生成当前 Allegro 版本读不了会静默忽略。解决先find一下.psm的实际位置确认 psmpath 指对了再看导出日志里有没有重命名记录Allegro 对 symbol 名有长度限制超长会被截断截断后的名字和.dra就对不上了最后拿一个.dra用当前版本打开File → Create Symbol重新生成一次.psm能生成就说明是版本问题。5.2 焊盘尺寸差一点点贴片贴不上现象转过来的焊盘标称 0.6mm实际量出来 0.5999mm或者 0.6mm 变成 0.61mm。原因AD 侧和 Allegro 侧的单位换算链路上多了一次往返。AD 用 mm 存 ASCII转换器按 mil 解读再换算回 mm中间的小数位被截断。也可能是 AD 里那个焊盘本身就是按 mil 定义的整数尺寸换成 mm 显示时被四舍五入过。解决AD 侧统一用目标端要求的单位不要中途切换ASCII 保存前把焊盘尺寸的显示精度调到 3 位以上确认一遍转换完成后用 Padstack Designer 逐个核对直径和长宽偏差超过 0.005mm 的手工改掉。批量的话可以导出一份 padstack 参数清单做差异比对比一个一个点开快得多。5.3 原点偏移封装放上去就“跑”现象Place 出来的时候封装离鼠标指针很远或者放到板上后相对板框的位置明显不对。原因AD 里的封装没有设置参考点转换器按 AD 的绝对坐标搬原点就定在了 AD 板子的 (0,0)而不是封装的第一脚。另一种情况是 AD 里设了参考点但放置时是把封装放在板子的任意位置转换器把那个偏移量也带过来了。解决回到 AD对每个封装执行Edit → Set Reference → Pin 1或 Center然后在空白 PCB 里把每个封装的第一脚都放在坐标 (0,0) 附近重存 ASCII 再转一次。已经转完不想重来的可以在 Allegro 里打开.draEdit → Move把图形整体挪到原点附近再File → Create Symbol重新生成.psm。5.4 place bound 缺失DRC 全绿但器件实际干涉现象布局阶段两个高器件在物理上重叠了跑 DRC 一条都不报。原因AD 的器件外框画在 Mechanical 层上转换时层映射没把这一层对到PACKAGE GEOMETRY / PLACE_BOUND_TOP转换器就把这些线当普通图形丢掉了symbol 里根本没有 place bound 形状。没有这个形状Allegro 的间距检查就无从比对。解决短期补丁是打开.dra用Shape → Rectangular在Package Geometry / Place_Bound_Top层画一个包住整个器件的矩形File → Create Symbol重建长期做法是在转换器的层映射里显式把 Mechanical 13/15 指向 Place_Bound_Top一次配好后面所有封装都受益。补完之后记得在板上执行一次Place → Update Symbols让已放置的实例刷新。5.5 改了 dra 没重建 psm板上还是旧封装现象发现丝印压到焊盘在.dra里改好了删掉板上的实例重新放还是老样子。原因Place 读的是.psm.dra只是源文件。改完.dra不执行生成动作.psm一个字节都没变。解决打开.draFile → Create Symbol覆盖同名.psm这是必须走的一步。然后回到板上Place → Update Symbols勾选对应封装刷新已放置的实例。如果刷新后还是旧的检查一下是不是有多个同名.psm分散在不同路径里psmpath 的搜索顺序先命中了另一个副本——这种情况在多人共用一台机器或者库目录有多份拷贝时特别常见。6. 验收用尺寸对照表和文件时间戳把封装验明正身转换完成不等于迁移成功验收这一步不能省。我的做法是拉一张对照表AD 侧和 Allegro 侧各填一遍逐项打钩检查项AD 侧取值Allegro 侧取值允许偏差焊盘直径 / 长宽实测Padstack Designer 读数≤ 0.005mm相邻焊盘中心距实测Measure 工具≤ 0.01mm1 脚相对原点坐标(0,0)Show Element 查看应为 0器件外框尺寸实测place bound 形状≤ 0.02mm丝印外扩实测丝印层线到焊盘距离目视比对器件高度AD 的 Height 属性symbol 的 Height 字段需手工填六个项目里只有“器件高度”这一行大概率需要手工补转换器通常不搬这个值。高度填在 symbol 属性里的用处是布局阶段的 3D 干涉预检不做也行但做了以后结构同事会少找你几次。第二件事是查文件时间戳。.dra改过而.psm没重建是这套流程里最隐蔽的问题靠眼睛看不出来靠时间戳一查一个准#!/usr/bin/env python3 扫描库目录找出 dra 比 psm 新说明改了没重建以及只有单边的文件 import sys from pathlib import Path def scan(root: str) - None: base Path(root) # stem 是去掉扩展名的文件名dra 和 psm 靠它配对 dra {p.stem: p for p in base.rglob(*.dra)} psm {p.stem: p for p in base.rglob(*.psm)} only_psm sorted(set(psm) - set(dra)) # 有 psm 没源文件能放但改不了 only_dra sorted(set(dra) - set(psm)) # 有源文件没 psm根本放不了 stale [] # dra 更新过psm 是旧的 for name in sorted(set(dra) set(psm)): # 留 1 秒容差避免文件系统时间精度导致的误报 if dra[name].stat().st_mtime - psm[name].stat().st_mtime 1: stale.append(name) print(f目录: {base}) print(f 成对 : {len(set(dra) set(psm))}) print(f 缺 psm : {len(only_dra)} {only_dra[:5]}) print(f 缺 dra : {len(only_psm)} {only_psm[:5]}) print(f 待重建 : {len(stale)} {stale[:5]}) if __name__ __main__: if len(sys.argv) ! 2: sys.exit(用法: python check_pairs.py 库目录) scan(sys.argv[1])rglob会递归进子目录所以直接指向库的根目录就行不用管文件分了几层。stem拿的是不含扩展名的文件名.dra和.psm靠它配对这也顺带验证了命名是否一致——“缺 dra”列表里出现的东西往往就是转换器截断名字的受害者。“待重建”列表是重点出现任何一条就说明有人改了源文件忘了重新生成回到 Allegro 里补一次Create Symbol即可。这个脚本我一般挂成提交前的一道检查跑完看到“待重建 0”才放心交付。从那以后我每次把封装从 AD 迁到 Allegro都会强制走一遍“层映射核对、时间戳扫描、尺寸对照表”这三步宁可多花二十分钟也不想在打样回来对着装不上的器件发愣。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询