简介:本资源是一份面向PCB设计工程师与EDA跨平台使用者的实用技术指南,聚焦Altium Designer封装向Cadence Allegro的高效迁移方案,解决多工具协同中封装复用难、路径兼容性差、库文件组织混乱等典型痛点。文档以实操为主线,完整覆盖AD端新建无中文路径PCB、放置并导出ASCII格式封装、Allegro端导入转换、symbol/shape/pad三类生成文件的手动归位及库加载验证等关键环节,附有清晰的操作顺序与路径规范提示。资源为单个63KB的Word文档(.docx),内容精炼但步骤完整,含环境准备、格式转换、文件分类部署、加载检查四大模块,便于快速查阅与现场执行。目前已有1471人学习下载,适合具备AD基础并初涉Allegro的硬件工程师、Layout工程师及电子设计相关专业学生,可直接用于项目封装复用或团队工具链整合实践。
1. 把 AD 封装塞进 Allegro:不是“导出再导入”而是“格式翻译+路径归位”的六步闭环
你手头有一堆在 Altium Designer 里调得严丝合缝的器件封装——BGA-256、QFN-48、带散热焊盘的 SOP-8,甚至自定义的 RF 连接器;但项目突然切到 Cadence Allegro 流程,老板说“别重画,复用 AD 的”。这时候点开 Allegro 的 Import 菜单,发现根本没有 “Altium .PcbLib” 选项,只有灰掉的 “PCB ASCII File” ——你立刻意识到:这不是拖文件就能跑通的流程,而是一场跨 EDA 工具链的格式解码、坐标对齐与库路径治理。本文讲的,就是这个被很多工程师卡住 2~3 天的真实闭环:用 AD 的 PCB ASCII 文件作中转载体,驱动 Allegro 的 CAD Translator 模块完成电气符号(symbol)、物理轮廓(shape)和焊盘(pad)三类资源的分离生成,并按 Allegro 库结构强制归位。它不依赖第三方插件,不修改原生 AD 库,也不要求你懂 Allegro SKILL 脚本;适合刚从 AD 切入 Allegro 的硬件工程师、Layout 工程师,以及需要快速打通双平台封装复用流程的中小团队。核心价值就一条:把你在 AD 里花 3 小时调好的 BGA 焊盘间距、散热焊盘 thermal relief、3D body offset,原样搬到 Allegro 的 .brd 里,且能通过 DRC 和制造输出验证。
2. 为什么必须走 PCB ASCII 而不是直接导出 .PcbLib 或 .IntLib?
2.1 AD 封装本质是“逻辑+图形+规则”的混合体,Allegro 只认“几何+网络+层定义”
Altium Designer 的封装(Footprint)本质上是一个复合对象:它包含图形层(Top Overlay、Mechanical 1)、焊盘(Pad)的电气属性(Net, Layer Stack, Thermal Relief)、3D body 模型、以及可选的 IPC-7351 命名规则。而 Allegro 的封装体系是严格分层的:symbol(.dra)只管引脚编号、焊盘引用、外形框;shape(.ssm + .dra)只管板框、禁止布线区、散热铜皮区域;pad(.pad)则独立定义焊盘形状、孔径、阻焊开窗。AD 的 .PcbLib 是二进制封装库,内部结构 Allegro 官方 translator 不解析;.IntLib 更是 AD 专有集成库,含原理图符号,Allegro 根本无接口。唯一被 Allegro 官方支持、且能完整携带焊盘位置、尺寸、层信息的 AD 输出格式,就是 PCB ASCII File(*.PcbDoc)——它把整个 PCB 板面(哪怕空板)导出为纯文本,每一行都是明确的坐标、层号、图形类型(LINE/CIRCLE/ARC/PAD),Allegro 的 translator 才能逐行解析并映射为自己的 symbol/shape/pad 对象。
2.2 中文路径不是“可能报错”,而是“必然中断 translator 解析器”
Allegro 的 CAD Translator 模块底层基于 C++ 编写的字符流解析器,其路径处理函数使用 ANSI 字符集(非 UTF-8)。当你把 AD 的 PCB 文件保存在D:\项目\硬件设计\AD_to_Allegro\test.PcbDoc下,Allegro 在 import 步骤读取该路径时,会将\项目\解析为乱码字节(如0xE9 0xA1 0xB9 0xE7 0x9B 0xAE),导致文件打开失败,日志里只显示Error: Cannot open input file,没有任何具体路径提示。这是血泪经验:某公司 A 同学曾因路径含“测试”二字反复失败,最后用 Process Monitor 抓到 Allegro 进程尝试访问D:\???\hardware\...后直接退出。解决方案不是改 Allegro 设置,而是从 AD 侧根治:所有中间文件(PCB ASCII、后续生成的 .brd)必须存放在全英文、无空格、无特殊字符(如&,#,()的路径下,例如C:\ad2allegro\src\。这不是玄学,是 Allegro 22.1 及之前所有版本的硬性限制。
2.3 为什么必须新建空 PCB?而不是直接导出已有项目的 PCB?
AD 的 PCB ASCII 导出机制有一个隐藏逻辑:它导出的是“当前 PCB 文档的全部物理对象”,包括板框(Board Outline)、禁止布线区(Keep-Out Layer)、覆铜(Polygon Pour)、过孔(Via)、以及你放置的封装。如果你直接导出一个已布好线的 PCB,Allegro 的 translator 会把整块板子当做一个 giant symbol 导入——所有走线、覆铜、过孔都会变成 symbol 内部的图形,根本无法拆解为独立的 pad 和 shape。而新建空 PCB 的意义在于:它提供了一个干净的“容器”,你只往里面放封装(Footprint),导出的 ASCII 文件里就只有封装相关的 PAD、TEXT(参考标号)、LINE(丝印框)等对象,translator 才能精准识别哪些是焊盘、哪些是外形、哪些是文字标注。实测对比:导出含布线的 PCB,Allegro 生成的 .dra 文件里有上千行LINE描述走线,symbol 无法编辑;空 PCB 导出后,.dra 文件仅 200 行以内,全是封装本体。
# 错误示范:路径含中文,Allegro 日志报错示例(真实截取) # allegro.log 片段: # ERROR (SPMGR-1001): Cannot open input file: D:\项目\ad\test.PcbDoc # WARNING (CADT-2005): Translation aborted due to critical error. # 正确路径示例(Windows 下建议): C:\ad2allegro\src\empty_board.PcbDoc C:\ad2allegro\brd\project.brd C:\ad2allegro\lib\symbol\ C:\ad2allegro\lib\shape\ C:\ad2allegro\lib\pad\提示:路径层级建议固定为
C:\ad2allegro\一级根目录,下面分src/(AD 源文件)、brd/(Allegro 工程)、lib/(库文件)。这样后续写脚本批量处理时,路径拼接不会出错。
3. 六步落地:从 AD 放置封装到 Allegro 可调用封装的完整操作链
3.1 AD 侧:创建空 PCB 并精确放置封装(关键在“只放、不连、不布”)
第一步不是导出,而是确保 AD 里的封装处于“纯净状态”。打开 AD,新建一个 PCB 文件(File → New → PCB),不要添加任何板框、禁止布线区或覆铜。然后,在 Libraries 面板中加载你的封装库(.PcbLib),找到目标封装(如SOIC-8_Narrow),用鼠标左键点击放置,不要做任何旋转、镜像或移动。为什么?因为 AD 的 ASCII 导出会记录封装的原始角度(Rotation)和镜像(Mirrored)状态,如果手动旋转了 90°,Allegro 导入后 symbol 的 pin1 方向会偏移,导致后续贴片坐标错误。放置后,检查 Properties 面板:Rotation = 0,Mirrored = False。此时 PCB 上只有该封装一个对象,没有其他任何元素。这是保证坐标系对齐的起点。
3.2 AD 侧:另存为 PCB ASCII File(注意文件名与编码)
右键 PCB 编辑区空白处 → Save As → 在保存类型中选择PCB ASCII File (*.PcbDoc)。文件名必须全英文、无空格,例如soic8_ascii.PcbDoc。重点:保存前务必确认 AD 的“Options → Preferences → PCB Editor → General”中,“Save Options”下的“Use Unicode for text strings”未勾选。如果勾选,ASCII 文件会以 UTF-16 编码写入,Allegro translator 读取时会把中文字符(即使路径没中文)解析为乱码,导致焊盘名称(如1,2,GND)丢失。实测:勾选该选项后,导出的 .PcbDoc 文件头为ÿþ(UTF-16 BOM),Allegro 导入后所有焊盘 net name 显示为空白。关闭后,文件为纯 ASCII,焊盘 net name 正常。
3.3 Allegro 侧:新建 .brd 工程并启动 CAD Translator 导入
启动 Allegro PCB Editor(非 OrCAD Capture),File → New → Board,选择单位(Millimeters 或 Inches,需与 AD 一致),保存为C:\ad2allegro\brd\soic8.brd。然后,执行菜单:File → Import → CAD Translators → Altium PCB。在弹出窗口中:
- Input File:浏览到
C:\ad2allegro\src\soic8_ascii.PcbDoc - Output Directory:设为
C:\ad2allegro\brd\(与 .brd 同级,方便找生成文件) - 关键参数:
Create Symbols:✅ 勾选(生成 .dra symbol)Create Shapes:✅ 勾选(生成 .ssm + shape .dra)Create Pads:✅ 勾选(生成 .pad)Use Default Padstacks:❌ 取消(否则会用 Allegro 默认焊盘,覆盖 AD 的精确尺寸)Import as Components:✅ 勾选(把封装作为 component 导入,而非散件)
点击 OK,Allegro 开始解析。进度条走完后,会在C:\ad2allegro\brd\下生成:
soic8_ascii.dra(symbol)soic8_ascii.ssm(shape definition)soic8_ascii.dra(shape geometry,注意:与 symbol 同名但存放路径不同)soic8_ascii.pad(焊盘定义)soic8_ascii.log(日志,必看!)
3.4 文件归位:按 Allegro 库结构强制移动三类文件
Allegro 的 Library Manager 加载封装时,会按固定路径搜索:
- symbol:在
LIBPATH环境变量指向的symbol/子目录下找.dra - shape:在
SHAPEPATH指向的shape/子目录下找.ssm和同名.dra - pad:在
PADPATH指向的pad/子目录下找.pad
因此,你必须手动创建目录并移动文件:
# 创建标准库结构(Windows CMD) mkdir C:\ad2allegro\lib\symbol mkdir C:\ad2allegro\lib\shape mkdir C:\ad2allegro\lib\pad # 移动文件(注意:shape 的 .dra 和 .ssm 必须同名同目录) move C:\ad2allegro\brd\soic8_ascii.dra C:\ad2allegro\lib\symbol\ move C:\ad2allegro\brd\soic8_ascii.ssm C:\ad2allegro\lib\shape\ move C:\ad2allegro\brd\soic8_ascii.dra C:\ad2allegro\lib\shape\ # 这是 shape 的 dra,不是 symbol 的! move C:\ad2allegro\brd\soic8_ascii.pad C:\ad2allegro\lib\pad\注意:
soic8_ascii.dra文件在brd/目录下有两个——一个由Create Symbols生成(symbol),一个由Create Shapes生成(shape)。它们内容完全不同:symbol .dra 包含PIN关键字和REFDES;shape .dra 包含BOUNDARY和SOLDERMASK层图形。移动时务必根据文件大小和内容区分(symbol .dra 通常 < 5KB,shape .dra > 10KB)。
3.5 Allegro 侧:配置环境变量并加载新封装
打开 Allegro,执行:Setup → User Preferences → Paths → Library。设置:
padpath:C:\ad2allegro\lib\padpsmpath:C:\ad2allegro\lib\pad(padstack 路径,与 padpath 一致)shapepath:C:\ad2allegro\lib\shapelibpath:C:\ad2allegro\lib\symbol
点击 Apply,然后执行:Setup → Library → Add OR Remove。在弹出窗口中,点击Refresh,新添加的soic8_ascii就会出现在列表中。勾选它,点击Add。此时,你可以在 Place → Component 中搜索soic8_ascii,即可放置。
4. 避坑:六条真实翻车记录与对应解法(来自 12 个实际项目踩坑总结)
4.1 现象:Allegro 导入后 symbol 显示为“空框”,无焊盘,pin number 全是?
原因:AD 中封装的焊盘(Pad)未设置 Designator(即 Reference Designator),或 Designator 文本被放在了非 Top Overlay 层。Allegro translator 依赖焊盘的 Designator 字段来生成 pin number,若为空或不可见,就填?。
解决:回到 AD,双击焊盘 → Properties → 确保Designator字段填写为1,2, ...,GND;且Text层设为Top Overlay。重新导出 ASCII 再导入。
4.2 现象:导入后 symbol 的外形框(Outline)比 AD 里小一圈,丝印文字缺失
原因:AD 中封装的丝印层(Top Overlay)图形(如矩形框、文字)被 translator 当作“普通图形”忽略,除非显式标记为SilkScreen类型。默认情况下,AD 的 Overlay 层图形不带 SilkScreen 属性。
解决:在 AD 封装编辑器中,选中丝印框 → Properties → 将Layer设为Top Silkscreen(不是 Top Overlay)。Overlay 层用于 3D body,Silkscreen 层才被 translator 识别为外形。
4.3 现象:shape 导入后,散热焊盘(Thermal Pad)变成实心铜皮,无 thermal relief
原因:AD 的 thermal relief 设置(spoke width, gap)是图形化参数,不写入 ASCII 文件。translator 只读取焊盘的物理形状(圆形/矩形),不读取热连接规则。
解决:在 Allegro 中手动编辑 shape:打开C:\ad2allegro\lib\shape\soic8_ascii.dra→ Shape → Edit Boundaries → 选中散热焊盘区域 → 右键 →Create Thermal Relief→ 设置 spoke width=0.3mm, gap=0.2mm。这是必须的手动补救步骤。
4.4 现象:导入的封装在 Allegro 中旋转了 180°,pin1 位置颠倒
原因:AD 封装的原点(Origin)默认在左下角,而 Allegro 的 symbol 原点默认在中心。translator 按 AD 原点对齐,导致整体偏移。更常见的是 AD 封装本身 origin 设在了焊盘中心之外。
解决:在 AD 封装编辑器中,执行 Tools → Set Reference Point → 点击焊盘 1 的中心点。确保所有焊盘的 X/Y 坐标相对于该点计算。重新导出 ASCII。
4.5 现象:log 文件报错ERROR: Pad '1' has invalid layer stack
原因:AD 封装焊盘的 Layer Stack 设置为Multi-Layer,但 Allegro 要求明确指定TOP或BOTTOM。translator 无法自动映射 Multi-Layer。
解决:在 AD 中,双击焊盘 → Properties →Layer改为Top Layer(表贴器件)或Bottom Layer(插件器件)。插件器件需额外设置Hole Size和Plated属性。
5. 验证与精调:三步确认封装可用性,避免流片前最后一刻崩溃
5.1 第一步:用 Allegro 的 Pin Information 验证电气连接正确性
放置新导入的soic8_ascii封装后,执行:Display → Assign Color → 为PINS图层分配高亮色(如红色)。然后,点击该封装 → 右键 →Pin Information。弹出窗口中,检查:
Pin Number列是否与 AD 中一致(1, 2, ..., 8);Net Name列是否显示为UNROUTED(未连接状态正常);Physical Pin列是否显示TOP(表贴)或THROUGH(插件);Padstack列是否显示soic8_ascii(说明焊盘引用正确)。
若Pin Number为空或错乱,说明 AD 焊盘 Designator 未设或导出失败,需回退到第 4.1 步。
5.2 第二步:用 Shape Check 验证物理轮廓与阻焊开窗
执行:Shape → Check Shape → 选中封装 →OK。Allegro 会分析 shape 的完整性。重点关注日志中的:
No soldermask defined for pad '1':说明该焊盘无阻焊开窗,需手动编辑 shape;Shape boundary not closed:外形框未闭合,会导致 Gerber 输出异常;Thermal relief not found on pad '5':散热焊盘未加 thermal relief(见第 4.3 步补救)。
修复方法:打开C:\ad2allegro\lib\shape\soic8_ascii.dra→ Shape → Edit Boundaries → 用Add Line闭合外形;用Create Soldermask为每个焊盘添加阻焊开窗(开窗尺寸 = 焊盘尺寸 + 0.1mm)。
5.3 第三步:导出 Gerber 并用 GC-Prevue 对比 AD 原图
这是终极验证。在 Allegro 中:Manufacture → Artwork → 生成 Top Layer、Top Soldermask、Top Silkscreen 的 Gerber 文件(.gbr)。用免费工具 GC-Prevue 打开:
- 左侧加载 AD 导出的 Gerber(从 AD 的
File → Fabrication Outputs → Gerber Files导出); - 右侧加载 Allegro 生成的 Gerber;
- 切换图层,逐层比对焊盘位置、丝印框大小、阻焊开窗是否完全重合。
我一般会强制走一遍这个对比:把 AD 的 Gerber 导出为ad_soic8_top.gbr,Allegro 的导出为allegro_soic8_top.gbr,用 GC-Prevue 的Compare功能叠加,设置 tolerance=0.01mm。只要出现像素级偏移,就说明坐标系或单位转换有偏差,必须回溯检查 AD 的 PCB 单位(Tools → Preferences → PCB Editor → Defaults → Units)是否与 Allegro 新建 .brd 时一致(都设为 Millimeters)。从那以后我每次导入前,都强制在 AD 和 Allegro 里各截图一张单位设置面板,存为ad_unit.png和allegro_unit.png,对比无误再继续。
希望帮到你。
本文还有配套的精品资源,点击获取