简介:这份文档面向使用 Altium Designer 与 Cadence Allegro 的 PCB 设计人员,聚焦跨平台封装复用这一常见痛点,讲解如何把 AD 中已有的封装迁移到 Allegro 环境中继续使用,适合具备一定 EDA 软件操作基础、需要减少重复建库工作的工程师参考。资源包共 1 个 docx 文件,压缩后约 63KB,内容围绕封装导入的完整流程展开,涵盖在 AD 中新建 PCB 并放置封装、另存为 ASCII 格式、在 Allegro 中通过 CAD Translators 导入、导出库文件以及将 symbol、shape 与焊盘分别归入对应库路径等关键环节,并提示了路径命名等易错细节。目前已有 1473 人学习,读者可据此掌握一套可复用的封装迁移思路,降低跨软件协作时的重复劳动,提升建库与设计效率。
1. 从一次封装迁移翻车说起:AD 到 Allegro 的转换到底难在哪
上周帮某实验室的 A 同学处理一块板子,他要把 Altium Designer 里攒了两年的封装库搬到 Allegro 里复用,结果导入完打开一看,焊盘全飘了,丝印和本体错位,有几个 QFN 的散热焊盘直接消失。他以为是 Allegro 版本问题,重装了两次,问题照旧。其实这类翻车在 AD 封装导入 Allegro 的场景里非常典型——问题往往不在软件本身,而在转换前的准备和转换后的文件归位。Altium Designer 和 Cadence Allegro 是两套设计哲学完全不同的 EDA 工具,前者封装以库文件形式内嵌管理,后者靠 dra、psm、pad、ssm 一堆分散文件拼装,中间靠一个 PCB ASCII 文件做桥。桥搭得对不对,决定了你后面是十分钟搞定还是折腾一整天。这篇笔记面向的是手里有 AD 封装、需要在 Allegro 里继续用的人,从环境准备、ASCII 导出、转换器导入到文件归位和验证,一步步走完,中间该避的坑我都标出来。
2. 转换前的环境准备:版本、路径与文件格式三件事
2.1 软件版本怎么选,别在版本上赌运气
这套流程涉及两个软件协同:Altium Designer 负责导出 ASCII PCB,Cadence Allegro 负责用自带的 CAD Translators 做转换。版本上我一般建议 AD 用 17 及以上(AD17、AD18、AD19、AD20 都行),Allegro 用 17.2 或 17.4,这两个版本对 Altium 转换器的支持比较稳。太老的组合,比如 Allegro 16.6 配 AD 高版本导出的 ASCII,转换器偶尔会报解析错误;太新的组合也不是不能跑,但转换器行为可能有细微变化,新手不好判断是转换问题还是操作问题。所以稳妥做法是:AD 侧不要用太新的 nightly 构建,Allegro 侧优先 17.2/17.4 这两个长期被验证过的版本。
转换器本身不需要单独安装,它就在 Allegro 的菜单里:File -> Import -> CAD Translators -> Altium PCB。如果你在菜单里找不到这一项,先确认安装 Allegro 时勾选了 CAD Translators 组件,部分精简安装会漏掉。另一个容易忽略的点是 license——转换器属于 Allegro 基础功能,一般不需要额外授权,但如果你的环境是浮动 license,转换时确保 license 服务器可达,否则菜单能点开、执行到一半报授权失败。
提示:转换前把两个软件都关掉重开一次,避免上一次转换残留的临时文件干扰。转换器会在工作目录下生成中间文件,工作目录建议单独建一个空文件夹。
2.2 路径里不能有中文,这是硬约束
AD 另存 ASCII 文件时,保存路径不能含中文字符,这是整个流程里最容易被忽视、又最容易导致转换失败的一条。原因不玄学:转换器内部调用的一些解析模块对非 ASCII 路径处理不完整,路径里有中文时,轻则转换器读不到文件,重则生成一堆空文件还不报错。我一般会在 D 盘或用户目录下建一个纯英文路径,比如D:\ad2allegro\work,AD 的临时 PCB、ASCII 文件、Allegro 的 brd 工程全放这个目录下,转换完再往正式库路径搬。
除了路径字符,路径长度也要留意。Windows 下路径超过 260 字符时,部分老版本工具会截断文件名,导致 dra 和 psm 对不上号。工作目录尽量浅,别嵌套五六层文件夹。
2.3 先把封装在 AD 里“摆干净”
转换前还有一步准备工作:在 AD 里新建一个空 PCB,把要迁移的封装逐个放置到这个空板上。放置时注意几点:封装的本体、焊盘、丝印、机械层都要完整,别只放个 3D 体;封装的参考原点(Reference Point)要设好,Allegro 转换后 symbol 的原点位置直接受它影响;如果封装里有多余的机械层图形或注释文字,转换后可能变成莫名其妙的 shape,建议先在 AD 里清理掉。
这一步的本质是:转换器不是按“库”转换,而是按“板上实际存在的对象”转换。你板上放了什么,它就转什么。所以空 PCB 上只放你要的封装,别混入测试用的走线、覆铜或无关器件,否则转换出来的库会带一堆垃圾。
3. 从 AD 导出 ASCII:另存为 PcbDoc 的正确姿势
3.1 新建空 PCB 并放置目标封装
打开 AD,File -> New -> PCB,新建一个空白 PCB 文档。保存到前面准备好的纯英文路径下,文件名也用英文,比如temp_convert.PcbDoc。然后打开你的封装库(.PcbLib),在 PCB Library 面板里选中目标封装,右键Place,把它放到空板上。多个封装可以一次全放上去,转换器会按板上对象逐个生成 symbol。
放置完成后,用Edit -> Origin -> Set把原点设到一个合理位置,通常设在封装中心或 1 脚焊盘中心。这个原点会成为 Allegro 里 symbol 的放置原点,设偏了后面摆放器件会很难对齐。放好后按Ctrl+S保存。
3.2 另存为 PCB ASCII File 的格式细节
关键一步:File -> Save As,在保存类型里选PCB ASCII File (*.PcbDoc)。注意这里有两个容易混淆的点。第一,扩展名看起来还是 .PcbDoc,但内容已经是 ASCII 文本,不是二进制;第二,AD 的 Save As 对话框里可能同时有PCB ASCII File和PCB Binary File两个选项,一定选 ASCII 那个。保存到同一个英文工作目录,文件名比如temp_convert_ascii.PcbDoc。
保存后可以用文本编辑器打开瞄一眼,正常应该能看到类似|RECORD=Board这样的文本记录。如果打开是乱码,说明存成了二进制格式,回去重存。这一步验证花十秒钟,能省掉后面转换器报“无法识别文件格式”的排查时间。
# 转换前检查工作目录,确认 ASCII 文件存在且非空 ls -lh /d/ad2allegro/work/ # 期望看到类似: # -rw-r--r-- 1 user 1.2M temp_convert_ascii.PcbDoc上面这条命令在 Windows 的 Git Bash 或 WSL 里都能跑,目的是确认文件确实生成、大小合理。一个只放了几个封装的空板,ASCII 文件通常几百 KB 到一两 MB;如果只有几 KB,多半是保存时没把封装放进去,或者存成了空板。
3.3 转换前先备份原始封装库
这一步不是流程必需,但属于血泪经验:AD 里的原始封装库先复制一份到别处。转换过程中如果发现某个封装在 Allegro 里尺寸不对,你还能回 AD 对照原始尺寸排查,而不是对着转换后的残骸猜。我一般会在工作目录下建backup_pcblib文件夹,把涉及的 .PcbLib 整个拷进去,转换出问题时直接对比。
4. Allegro 侧导入:CAD Translators 的参数与文件生成
4.1 新建 brd 工程并调用 Altium PCB 转换器
打开 Allegro PCB Editor,File -> New,新建一个 brd 文件,同样放在英文工作目录下,比如convert_work.brd。这个 brd 只是转换用的容器,转换完成后可以删掉,但转换过程中必须有,因为转换器是往当前设计里导入对象再导出库。
然后走菜单:File -> Import -> CAD Translators -> Altium PCB。弹出的对话框里,Input file指向刚才 AD 导出的 ASCII 文件(temp_convert_ascii.PcbDoc),Output directory指向一个空的英文子目录,比如D:\ad2allegro\work\allegro_out。输出目录一定要空,转换器不会覆盖同名旧文件,残留文件会导致你拿到的是上一次的结果。
对话框里还有几个参数值得留意。Units一般选 mil 或 mm,跟你在 AD 里用的单位保持一致,选错会导致尺寸整体缩放;Import layers默认全选,如果你只想转特定层,可以在这里筛,但新手建议全选,转完再清理。点Translate开始转换,过程几秒到几十秒,取决于封装数量。
4.2 转换器生成了哪些文件,各自什么用
转换完成后,输出目录里会出现几类文件,理解它们的分工是后面归位的前提:
| 文件类型 | 典型扩展名 | 作用 | 归位目标 |
|---|---|---|---|
| Symbol 图形 | .dra | 封装的电气符号图形定义 | symbol 库路径 |
| Symbol 编译结果 | .psm | Allegro 编译 dra 后生成的二进制 | 与 dra 同目录 |
| Shape 图形 | .dra | 铜皮/异形焊盘等 shape 定义 | shape-symbol 路径 |
| Shape 编译结果 | .ssm | shape dra 编译后的二进制 | 与 shape dra 同目录 |
| 焊盘 | .pad | 独立焊盘定义 | pad 路径 |
| 日志 | .log | 转换过程记录,排错用 | 保留备查 |
这里有个容易混淆的地方:symbol 的 dra 和 shape 的 dra 扩展名一样,但内容类型不同,靠文件名和所在子目录区分。转换器通常会把它们分开放,比如 symbol 相关在一个子目录、shape 相关在另一个。打开输出目录先看结构,别一股脑全拷到一个文件夹里。
4.3 用日志确认转换有没有“静默失败”
转换器跑完不一定弹成功提示,有时候表面完成、实际有对象没转过来。这时候看日志:输出目录里的 .log 文件记录了每个对象的转换结果,搜ERROR和WARNING。常见的警告包括“unsupported object type”(某些 AD 特有对象 Allegro 不认识)和“pad stack not found”(焊盘定义缺失)。警告不一定致命,但 ERROR 通常意味着对应封装不完整,需要回 AD 检查该封装是否有异常对象。
# 快速筛查转换日志中的错误和警告 grep -iE "error|warning" /d/ad2allegro/work/allegro_out/*.log | head -50这条命令把日志里的错误和警告行抓出来看前 50 条。如果 ERROR 集中在某几个封装名上,说明问题出在 AD 侧那几个封装本身,而不是转换器。我遇到过一种情况:AD 封装里用了 Allegro 不支持的填充类型,转换时该焊盘被跳过,日志里就是一条 pad 相关 ERROR,回 AD 把填充改成实心铜皮再转就正常了。
5. 文件归位与库路径配置:dra、psm、pad、ssm 各回各家
5.1 先搞清楚 Allegro 的库路径体系
Allegro 不像 AD 那样一个库文件包打天下,它按文件类型分路径管理,核心是几个环境变量或配置项指向的目录:symbol 路径(放 dra 和 psm)、pad 路径(放 pad)、shape 路径(放 shape 的 dra 和 ssm)。这些路径在Setup -> User Preferences里配置,对应padpath、psmpath、devpath等条目。转换出来的文件如果没放进这些路径指向的目录,Allegro 就“看不见”它们,放置器件时会提示找不到 symbol 或 pad。
我一般不去动全局配置,而是在工作目录下建一套本地库结构,转换验证通过后再合并到正式库。结构如下:
# 本地库目录结构示例 mkdir -p /d/ad2allegro/lib/symbol mkdir -p /d/ad2allegro/lib/pad mkdir -p /d/ad2allegro/lib/shape # 归位:symbol 的 dra + psm cp /d/ad2allegro/work/allegro_out/symbol/*.dra /d/ad2allegro/lib/symbol/ cp /d/ad2allegro/work/allegro_out/symbol/*.psm /d/ad2allegro/lib/symbol/ # 归位:shape 的 dra + ssm cp /d/ad2allegro/work/allegro_out/shape/*.dra /d/ad2allegro/lib/shape/ cp /d/ad2allegro/work/allegro_out/shape/*.ssm /d/ad2allegro/lib/shape/ # 归位:焊盘 cp /d/ad2allegro/work/allegro_out/pad/*.pad /d/ad2allegro/lib/pad/上面这段是归位的骨架,实际路径按你的输出目录结构调整。要点是 dra 和它对应的 psm 必须同目录,shape 的 dra 和 ssm 也必须同目录,分开会导致编译失败。焊盘单独放 pad 目录,因为 symbol 编译时会按 padpath 去找焊盘定义。
5.2 在 User Preferences 里挂上本地库路径
文件放好后,打开 Allegro,Setup -> User Preferences,在Paths -> Library下找到padpath、psmpath、devpath等条目,把本地库目录加进去。多个路径用分号分隔。加完后建议重启一次 Allegro,让路径生效。
这里有个参数取舍:psmpath和padpath是必须配的,devpath用于器件文件(.txt 格式的 device 定义),转换器不一定生成,但如果你后续要做网表导入,建议一并配上。路径顺序上,把本地验证库放在正式库前面,这样同名文件优先用你刚转的,验证没问题再调整顺序或合并。
5.3 编译 dra 生成 psm 的时机
正常情况下转换器已经生成了 psm,不需要手动编译。但如果你改了 dra 或者 psm 缺失,需要在 Allegro 里打开 dra 文件,File -> Create Symbol重新编译生成 psm。编译时如果报“pad not found”,说明对应焊盘没放进 padpath 指向的目录,回去检查 pad 文件是否归位。编译成功后再File -> Save,psm 会更新到 dra 同目录。
注意:不要用文本编辑器改 dra 文件,dra 虽然是文本格式,但内部结构有校验,手改容易导致编译失败。要改封装尺寸,回 AD 改原始封装重新转换,或者用 Allegro 的 Padstack Editor 改焊盘。
6. 避坑与排查:五条转换现场的真实记录
6.1 现象:转换器菜单点开,选完文件点 Translate 没反应
原因通常是输入文件格式不对或路径含中文。先确认 AD 导出的是 ASCII 格式而非二进制,用文本编辑器打开看开头是不是可读文本;再确认输入输出路径全英文。还有一种情况是 Allegro 当前没有打开任何 brd,转换器需要有一个活动设计作为容器,先File -> New建一个 brd 再执行转换。
6.2 现象:转换成功,但放置器件时提示 symbol 找不到
先查 psmpath 是否包含 dra/psm 所在目录,再确认 dra 和 psm 是否同目录、文件名是否一致(有些情况下转换器生成的 psm 文件名和 dra 不完全对应)。如果路径和文件都没问题,打开 dra 看能否正常显示,显示异常说明 dra 本身损坏,回 AD 重新导出该封装再转一次。
6.3 现象:焊盘尺寸整体偏大或偏小
单位不一致导致的。AD 导出时用的单位和 Allegro 转换器里选的 Units 不匹配,比如 AD 用 mm、转换器按 mil 解析,尺寸就会差 25.4 倍。回转换对话框把 Units 改成和 AD 一致,重新转换。转换前在 AD 里确认板子的单位设置(View -> Toggle Units可切换查看),记下来再选。
6.4 现象:QFN 或 BGA 的散热焊盘、异形焊盘丢失
这类焊盘在 AD 里可能是用填充或特殊 shape 画的,转换器识别不了,日志里会有对应 WARNING 或 ERROR。解决办法是在 AD 里把该焊盘改成标准 pad 定义(圆形/矩形/异形用 pad 而非填充图形),重新导出转换。如果必须保留异形,转换后在 Allegro 里用 Shape 工具手动补,补完记得重新编译 symbol。
6.5 现象:丝印和本体错位,或器件原点偏移
根源在 AD 封装的原点设置。转换器按 AD 里设定的参考原点映射到 Allegro symbol 原点,原点设偏了,放置时本体和丝印的相对位置看着就不对。回 AD 打开该封装,Edit -> Set Reference -> Pin 1或Center重新设原点,保存后重新放置到空板、重新导出转换。已经转坏的 symbol 删掉重来,别在 Allegro 里手动挪丝印,挪了下次转换又乱。
7. 装完怎么验证:三步确认封装真的能用
转换和归位做完,别急着往正式设计里用,先做三步验证。第一步,在 Allegro 里Place -> Manually,从本地库路径下找到刚转的 symbol,放置到空白区域,看本体、焊盘、丝印是否完整显示,有没有缺层或错位。第二步,打开Tools -> Padstack -> Modify Design Padstack,逐个检查焊盘尺寸和钻孔,和 AD 原始封装对照,重点看单位换算后的数值是否吻合。第三步,用Display -> Measure量几个关键尺寸,比如引脚间距、本体长宽,和 AD 里的测量值比对,误差应在可接受范围内。
# 验证前快速核对文件完整性:每个 symbol 应有 dra 和 psm 成对出现 cd /d/ad2allegro/lib/symbol for f in *.dra; do base="${f%.dra}" if [ ! -f "${base}.psm" ]; then echo "缺失 psm: ${base}" fi done这段脚本扫一遍 symbol 目录,把只有 dra 没有 psm 的封装列出来。成对出现是基本要求,缺 psm 的封装放置时会报错。shape 目录同理,dra 和 ssm 要成对。我一般还会在验证通过后,把这一批封装单独打一个压缩包存档,标注转换日期和 Allegro 版本,下次再迁移同类封装时可以直接参考当时的日志和参数。
从那以后我每次做 AD 到 Allegro 的封装迁移,都强制走一遍“英文路径建工作目录、AD 里清干净再导出、转换后先看日志再归位、归位后三步验证”的固定流程,不再凭感觉跳步。这套流程不复杂,但每一步都有它存在的理由,跳过哪一步,后面就可能用双倍时间补回来。希望帮到你。
本文还有配套的精品资源,点击获取