简介:这份文档面向使用 Altium Designer 与 Cadence Allegro 的 PCB 设计人员,尤其是需要跨平台复用封装、减少重复建库工作的中初级工程师。内容围绕 AD 封装迁移到 Allegro 的完整流程展开,涵盖在 AD 中新建 PCB 并放置目标封装、另存为 PCB ASCII 文件、在 Allegro 中通过 CAD Translators 导入、导出 Library,以及将 symbol 的 dra、psm 文件、shape 的 dra 与 ssm 文件、焊盘文件分别归入对应库路径后加载使用等关键环节,并提示路径避免中文字符等易错细节。资源包共 1 个 docx 文件,约 63KB,以图文步骤记录为主,便于按序对照操作。目前已有 1473 人学习,适合需要快速打通 AD 与 Allegro 封装转换链路、排查导入后文件归属与库加载问题的读者参考。
1. 跨工具搬封装:为什么 AD 转 Allegro 值得单独写一篇
上周帮朋友处理一块板子,他手里有一批在 Altium Designer 里画好的异形连接器封装,想在 Cadence Allegro 里直接复用。结果他按网上零散帖子操作,导出来的 symbol 能放进去,焊盘却全飘了,折腾一下午没定位到问题。这类跨 EDA 工具的封装迁移,看着只是“另存为再导入”两步,实际卡人的地方全在路径、文件分类和单位换算上。这篇就把 AD 封装导入 Allegro 的完整链路拆开:从 AD 侧准备 ASCII 文件,到 Allegro 的 CAD Translators 导入,再到 dra、psm、ssm、pad 这些产物怎么归位,最后给几个我踩过的坑。适合手里有存量 AD 封装、又必须交付 Allegro 工程的 PCB 工程师,新手照着步骤能跑通,熟手能对一下自己的参数边界。
2. AD 侧准备:把封装压进一个干净的 ASCII 文件
2.1 为什么必须新建空 PCB 再放封装
很多人图省事,直接拿现有工程里的 PCB 去另存,结果导入 Allegro 后多出一堆无关的网络、铜皮和板框,symbol 里混进奇怪的东西。正确做法是新建一个空白 PCB,只把目标封装放进去。原因是 Allegro 的 Altium 转换器解析的是整个 PCB 文档,它不区分“这是库还是板子”,文档里有什么它就尝试转什么。空板加封装,等于给转换器一个最小输入集,产物干净,后面归位也省事。
新建后先别急着放封装,把 PCB 的坐标原点设到板外或封装中心附近,单位统一成 mil 或 mm 其中一种。AD 默认混用英制和公制时,转换器对焊盘尺寸的解读容易出偏差,这是后面焊盘偏移的常见诱因。
2.2 放置封装与路径的硬性约束
从 AD 的 Libraries 面板找到目标封装,Place 到空白 PCB 上。放的时候注意两点:一是封装自带的 3D 体、机械层标注尽量保留,Allegro 转换器会把它们映射到对应的层;二是放置位置无所谓,但不要旋转成非 90 度倍数的角度,部分版本转换器对任意角度封装的解析会丢旋转信息。
保存路径必须是纯英文、无空格、无中文。这不是玄学,是转换器内部用文件路径拼临时文件,中文路径在部分环境下会截断,导致导入中途报错或产物缺失。我一般会在 D 盘建一个ad2allegro_work目录,所有中间文件都丢里面,用完整个删掉,不留垃圾。
2.3 另存为 PCB ASCII File 的操作与参数
在 AD 里执行 File → Save As,文件类型选PCB ASCII File (*.PcbDoc)。注意不是普通的 PcbDoc,ASCII 格式才是 Allegro 转换器认的输入。保存时如果弹出“是否包含库信息”之类的选项,保持默认即可,转换器只读几何和层信息。
# 目录结构建议(纯英文路径) D:/ad2allegro_work/ ├── src/ # AD 侧产物 │ └── connector.PcbDoc # ASCII 格式 └── out/ # Allegro 导入产物落点这段目录约定看着简单,但它是后面所有归位操作的前提。src 和 out 分开,导入产生的 dra、psm、ssm、pad 全在 out 下,方便你按类型批量移动,也方便出问题时回滚重来。参数上唯一要盯的是文件大小:一个封装转出来的 ASCII 通常几十 KB 到几百 KB,如果只有几 KB,多半是封装没真正放进去或保存成了二进制格式,回去检查。
3. Allegro 侧导入:CAD Translators 的选项与产物解读
3.1 新建 brd 与导入入口
打开 Allegro PCB Editor,File → New 建一个空白 brd,路径同样放英文目录。然后走 Import → CAD Translators → Altium PCB。这个入口在不同版本里位置略有差异,有的在 Import 下直接叫 Altium,有的收在 CAD Translators 子菜单,找不到就用命令altium in调出对话框。
导入对话框里最关键的是源文件路径和目标库路径。源文件指向刚才的 ASCII PcbDoc,目标库路径指向out/。下面几个勾选项值得留意:Convert Pads 保持勾选,否则焊盘不生成;Convert Shapes 勾选,异形铜和阻焊开窗靠它;Layer Mapping 如果封装用了非标准层名,先在这里手动映射到 Allegro 的对应层,不然层会丢。
3.2 导入日志怎么读
导入完成后 Allegro 会生成一个 log 文件,放在目标路径下。这个 log 是排错的黑匣子,别跳过。重点看三类信息:Warning: pad not converted说明某个焊盘形状转换器不支持,通常是自定义花焊盘或槽孔;Layer xx not mapped说明层映射缺失;Symbol created with errors说明 symbol 生成了但几何有问题。有 warning 不一定是致命错,但每一条都要能解释清楚,解释不了就回去改 AD 侧再导一次。
3.3 产物分类:dra、psm、ssm、pad 各是什么
导入成功后,out 目录里会出现几类文件,很多人在这里翻车,因为不知道哪个该放哪。用一张表说清楚:
| 文件类型 | 典型文件名 | 作用 | 归位目录 |
|---|---|---|---|
| Symbol dra | xxx.dra | 封装符号的图形定义 | 自定义 symbol 库路径 |
| Symbol psm | xxx.psm | 封装符号的编译产物 | 同上,与 dra 同目录 |
| Shape dra | xxx_shape.dra | 异形铜/开窗的形状定义 | shape-symbol 库路径 |
| Shape ssm | xxx_shape.ssm | 形状编译产物 | 同上 |
| Pad | xxx.pad | 焊盘定义 | pad 库路径 |
关键点是 dra 和 psm 必须成对放在同一目录,Allegro 加载 symbol 时先找 dra 再找 psm,缺一个就报“symbol not found”。shape 的 dra 和 ssm 同理成对放 shape-symbol 目录。pad 单独放 pad 目录。这三类目录在 Allegro 的 User Preferences → Paths → Library 里配置,配好之后 Place → Manually 就能在库列表里看到新封装。
# 在 Allegro 命令行检查库路径是否生效 skill getSkillPath() # 或直接看环境变量 echo $ALLEGRO_SITE上面命令只是确认路径配置的入口,实际库路径在 User Preferences 的 Library 分类下逐项设置,symbol、shape、pad 各占一行。设置完重启 Allegro 或执行reload让库列表刷新,否则新放的 dra 不会出现在放置对话框里。
4. 避坑与排查:五条血泪经验
4.1 焊盘整体偏移或尺寸不对
现象:symbol 放进去后焊盘位置整体偏了几十 mil,或焊盘比 AD 里小一圈。原因多半是 AD 侧单位混用,转换器按默认单位解读了尺寸。解决:回 AD 把 PCB 单位统一成 mil,重新另存 ASCII 再导;导入对话框里确认单位选项与 AD 一致,不要用 auto。
4.2 导入报错“cannot open file”但路径明明存在
现象:选好 ASCII 文件点导入,立刻报打不开。原因通常是路径含中文或空格,转换器拼临时路径时截断。解决:把源文件和目标目录都挪到纯英文短路径下,比如D:/ad2allegro_work/,重试。
4.3 symbol 能放但 shape 丢失
现象:封装放进去只有焊盘,异形铜和开窗没了。原因:shape 的 dra 和 ssm 没成对放进 shape-symbol 目录,或目录没在 Preferences 里注册。解决:检查 out 目录里 shape 相关文件是否齐全,成对移动到 shape-symbol 路径,刷新库列表。
4.4 放置时提示“symbol has no psm”
现象:库列表里能看到封装名,放置时报缺 psm。原因:只移动了 dra 没移动 psm,或两者放到了不同目录。解决:dra 和 psm 必须同目录,批量移动时用通配符一起搬,别手动挑。
4.5 层映射错乱导致丝印跑到铜层
现象:导入后丝印、装配层内容出现在走线层。原因:AD 的非标准层名在导入时没映射,转换器按默认规则猜错了。解决:导入对话框的 Layer Mapping 里逐项核对,把 AD 的 Mechanical/Overlay 层显式映射到 Allegro 的 Silkscreen/Assembly 层,再执行导入。
5. 进阶:把一次性导入变成可复用的封装迁移流程
单次导入跑通只是起点,真正省时间的是把它固化成流程。我现在的习惯是:每批要迁的封装先在 AD 里集中放到一个空白 PCB,按功能分组,一次导完,产物按前缀命名,比如conn_开头的一批、ic_开头的一批。这样 out 目录里文件虽多,但按前缀能快速分流到 symbol、shape、pad 三个库路径,不用一个个点。
验证环节别省。导入后不要直接上正式板子,先建一个测试 brd,把新封装逐个放上去,用 Measure 工具量关键尺寸:焊盘间距、外形长宽、定位孔位置,和 AD 里的原始值对一遍。我一般会列一张对照表,AD 侧记一组数,Allegro 侧量一组数,偏差超过 1 mil 就回去查单位或层映射。这一步花十分钟,能挡掉后面改板返工的大麻烦。
还有一个容易被忽略的点:pad 文件的命名冲突。不同封装如果用了同名焊盘但尺寸不同,后导入的会覆盖先导入的,导致某个封装焊盘悄悄变了。规避办法是导入前清空 pad 目录,或给每批封装加统一前缀,让焊盘名带批次标识。这个习惯是从一次批量迁移后某颗连接器焊盘莫名变小的翻车经历里逼出来的,从那以后我每次批量导封装,都强制先清 pad 目录再导,导完抽查三个封装的焊盘尺寸才继续。希望这些步骤帮到你,少走一遍我走过的弯路。
本文还有配套的精品资源,点击获取