ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AD转Allegro封装库迁移:ASCII导入、库路径配置与避坑

AD转Allegro封装库迁移:ASCII导入、库路径配置与避坑

简介:这份Word文档聚焦Altium Designer封装向Cadence Allegro迁移与复用,面向已具备两套EDA工具基础、希望减少重复建库的PCB设计人员,针对封装格式不互通、库文件分散且难以统一管理的问题,给出可参照的整理思路与检查框架。文档以单份docx交付,压缩包约63KB,仅1个文件,轻量便于随查随用;内容围绕封装迁移后的symbol、shape与焊盘归类、库路径组织、封装尺寸与连接一致性复核,以及中文路径、ASCII中间文件等易错环节展开,并补充生成文件的归档位置与加载前的检查要点,兼顾整体流程与落地细节。目前已有1475人学习。读者可从中获得跨软件封装复用的流程脉络、库文件落位方法与常见问题排查方向,提前规避路径和文件归类带来的返工,适合作为封装库整理、迁移及复用工作的参考材料。

1. 从一份封装搬运文档说起:为什么 AD 转 Allegro 值得单独记一笔

上个月帮一个做工业控制板的朋友收拾器件库。项目要从 AD 迁到 Allegro,硬件负责人丢过来一句话:封装照着旧图重画。三十多个异形连接器、十几个定制电感,重画一轮少说两天,还容易在焊盘尺寸上翻车。其实他们手里有现成的 Altium Designer(下称 AD)库,缺的只是一条从 PcbDoc 到 .dra/.psm 的搬运链路。

这份文档记的就是这条链路:AD 侧建空板、把封装摆到原点、另存 PCB ASCII,Allegro 侧走 CAD Translators 导进来,再把 Export Libraries 吐出来的 dra、psm、ssm、pad 分门别类塞进三条库路径。链路本身六步,真正决定成败的是路径命名、原点位置和层映射这三件小事。适合手上已有 AD 库不想从零画封装的人,也适合接手迁移项目、被「封装对不上」折腾过一轮的人。

2. 转换链路的前置条件:ASCII 中转、路径约束与 AD 侧的空板导出

动手之前得先把一件事想明白:Allegro 的 Altium PCB 转换器不是万能的格式兼容层,它本质上是一个「文本记录解析器 + 几何重建器」。喂给它的东西不符合它的解析预期,它不会报错给你看,而是安静地导出一块空板,或者只导进来一半器件。后面所有步骤的严谨程度,都是围绕这个特性展开的。

2.1 转换器只吃文本:ASCII 与二进制 PcbDoc 的差别

AD 默认保存的 .PcbDoc 是 OLE 复合文档,里面是二进制流,包含图形缓存、3D 模型、敷铜多边形、图层堆栈等一大堆附加数据。转换器读的是另一种东西:AD 在「另存为」时能导出的 PCB ASCII File,同一个 .PcbDoc 扩展名下其实是纯文本,用记事本打开能看到|RECORD=Board、|RECORD=Component、|RECORD=Pad这样按竖线分隔的记录行。

两种格式的差别不只是编码。ASCII 版本会把每个对象的属性摊平成键值对,焊盘的位置、尺寸、形状、层、孔径、镀铜属性全在文本里;二进制版本里这些信息埋在流结构中,还带压缩和索引。转换器解析 ASCII 时是按记录类型逐条重建的,所以只要有一条记录它不认识,通常就是跳过加一条 warning,而不是整体失败。

这也解释了一个很常见的现象:明明在 AD 里看着好好的封装,导进 Allegro 之后焊盘少了一圈、丝印跑到了装配层。不是转换器坏了,是那些对象在 ASCII 里被写成了转换器不认识的记录类型,被静默丢弃了。所以后面每一步都要留出核对的时间,别指望一键完成。

还有一个细节值得提前知道:ASCII 文件会比二进制大好几倍,几十个封装的板子导出后可能上百 MB。磁盘空间和路径长度都要提前留余量,Windows 上路径超过 260 字符,AD 保存时可能直接失败,或者保存成功但文件被截断。

2.2 建一块只有封装的空 PCB:原点、参考点与清理

这一步是整个流程里最容易被敷衍、也最容易在后面付出代价的环节。我的做法是新建一块专门用来「过桥」的空板,只放要搬的封装,其他一概不放。

先把工作目录建起来,路径里不要有中文、空格、括号、#、&。这类字符在 AD 里也许能正常保存,但转换器写日志、Allegro 读库路径时经常在这里断掉。

# 建立一条干净的转换工作区,所有路径只用字母数字和下划线 BASE=/d/ad2allegro mkdir -p "$BASE"/{work,ascii,brd,lib/{symbol,shape,pad,flash},log} ls -R "$BASE"

这段脚本建了五类目录,各自职责要分清:work放 AD 的二进制中间文件,ascii放导出的文本板,brd放 Allegro 侧生成的工程,lib下面四个子目录分别对应 symbol、shape、pad、flash 四类库文件,log单独存日志。分开放的理由很简单——转换一次会产出几十个同名不同后缀的文件,混在一个目录里,后面根本分不清哪个是这一次生成的。

板子建好后,放置封装的顺序有讲究。我的习惯是先Place → Component,从 AD 库里挑封装,放下去之后立刻做三件事:

第一,把封装的参考点拖到坐标原点附近。AD 里封装的参考点默认在器件的某个引脚或者本体中心,这个点会变成 Allegro 里 symbol 的原点。如果封装摆在离原点 3000mil 的地方,导进 Allegro 后器件放置时会出现一个巨大的偏移量,你以为是 Allegro 的问题,其实源头在这里。

第二,多个封装之间留足间距,至少 200mil,别叠在一起。转换器按包围盒重建几何,重叠的图形会被合并或者裁剪,丝印和阻焊开窗就乱了。

第三,删掉一切与封装无关的对象:走线、敷铜、3D body、尺寸标注、自由字符串、Room 定义。3D body 转换器基本不认,留着只会拖慢导出速度;敷铜多边形在 ASCII 里记录很重,转换器处理起来容易出 warning。

提示:如果一次要搬几十个封装,别贪心全放一块板上。按封装类型分 3 到 5 批,每批十来个,转换失败时排查范围小得多。

2.3 另存 ASCII 与落地目录的命名约束

封装摆好之后,File → Save As,保存类型选PCB ASCII File (*.PcbDoc)。这里有个坑:AD 的另存为对话框里,文件名扩展名仍然是 .PcbDoc,跟二进制版本一模一样,只有类型下拉框不同。存完之后一定要用记事本打开验证一下,看到开头是|RECORD=...的文本行才算成功;如果看到一堆乱码字符,说明类型没选对,存成了二进制。

文件名本身也要立规矩。我一般用conv_批次号.PcbDoc这种形式,全小写,只用下划线分隔。原因不是洁癖——Allegro 转换器在生成 symbol 名时会直接拿 AD 里的封装名和文件名做拼接,名字里带中文或空格,生成的 .dra 文件名就可能带非法字符,后面 Export Libraries 那一步会报「invalid file name」,而且报错信息不会告诉你是哪个文件。

转换批次和封装的对应关系,建议单独记一张表,别靠脑子记。等到后面库路径配好、放置验证时发现某个封装尺寸不对,你得能立刻定位它是哪一批、从哪个 AD 库来的。

批次ASCII 文件封装数量用途备注
B01conv_b01.PcbDoc8连接器类异形焊盘多,单独一批
B02conv_b02.PcbDoc12阻容感标准封装,风险低
B03conv_b03.PcbDoc6定制电感带槽孔,需人工核对

表里「备注」这一列别省。转换过程中遇到的每一个异常,事后都会变成排查线索,而人对三天前的事情记性是很差的。

3. Allegro 侧导入:CAD Translators 的参数核对与日志解读

AD 侧的东西准备干净了,Allegro 这边反而是整条链路里最省事的一段——前提是你会读日志。转换器把该说的话全写在 log 文件里了,问题是有的人导完看到板子上有东西就关掉对话框,等放置器件时才发现丝印没了、焊盘编号全乱。

3.1 新建 brd 与导入入口

先建工程。File → New → Board,选一个干净的模板(没有预置层叠和约束的空白模板最稳),保存到前面建好的brd目录,命名跟 ASCII 文件对应,比如conv_b01.brd。别拿现成项目的 brd 当容器,那里面已有的层定义、约束管理器设置、网络类会跟导入内容打架,出问题很难分清是谁的责任。

导入入口在File → Import → CAD Translators → Altium PCB。不同版本的菜单层级会差一到两级,有的版本放在File → Import → CAD Translators下面,有的直接在File → Import里就有 Altium 条目,找不到就在 Import 菜单里翻一遍,名字里一定带 Altium。

点开之后是一个转换向导,核心就三个输入:源文件(刚导出的 ASCII PcbDoc)、输出设计(目标 .brd 路径)、日志文件路径。日志路径一定要显式指定到log目录,别用默认值——默认值经常落在源文件旁边,转换完一堆文件堆在一起,log 就被淹没了。

3.2 对话框里要逐项核对的四个参数

向导里的选项各版本叫法不完全一致,但需要核对的内容是固定的四类:

核对项常见默认值我一般怎么设设错的后果
源文件类型Altium PCB ASCII保持 ASCII,不要选 binary选错直接空板,无报错
输出 brd 路径与源文件同目录指到独立 brd 目录覆盖同名工程,前功尽弃
单位与精度mil / 1:1与源设计一致,不改比例焊盘尺寸整体缩放,最难发现
层映射方式按名称自动匹配先自动,再人工核对一遍丝印、阻焊跑到不存在的层

单位这一项要重点说。AD 库里的封装可能用 mil,也可能用 mm,转换器默认按 mil 解析。如果源封装是 mm 建的,导进来会整体放大 39.37 倍,肉眼一看就知道不对;但如果只是部分焊盘用了 mm,比如一个连接器的定位孔,那就很难发现,等打样回来才发现孔位偏了。所以转换前在 AD 里统一一次单位,比事后核对省事得多。

层映射是第二个重灾区。AD 的层体系和 Allegro 的 class/subclass 不是一一对应,转换器只能按名字猜。常见的对应关系大致是这样:

AD 层Allegro class / subclass说明
Top LayerETCH / TOP顶层走线
Bottom LayerETCH / BOTTOM底层走线
Mid Layer 1~30ETCH / L2~L31内层,序号可能错位
Top OverlayPACKAGE GEOMETRY / SILKSCREEN_TOP丝印
Top SolderPACKAGE GEOMETRY / SOLDERMASK_TOP阻焊开窗
Top PastePACKAGE GEOMETRY / PASTEMASK_TOP钢网
Multi-Layer贯穿孔焊盘通孔
Keep-Out LayerROUTE KEEPOUT禁止布线区
Mechanical 1 / 13 / 15通常丢弃需人工确认是否有用信息

最后一行是重点:AD 里大量设计信息塞在 Mechanical 层里,比如器件外形、装配说明、高度标注。转换器对 Mechanical 层的处理策略是「不认识就丢」,而且丢的时候只在 log 里写一行 warning。如果这些信息对你有用,得在 AD 里先把它们挪到 Top Overlay 之类的标准层再导出。

3.3 读日志:分清致命、可忽略、必须回改

转换跑完,先别急着看板子,打开 log。日志条目大概能分成三档:

致命错误,出现就说明这次转换白做了。典型的是Unable to open input file(路径有问题)、Unrecognized file format(存成了二进制)、No components found(板子上没东西或者全被过滤了)。

必须回改的警告,出现说明结果不完整。典型的是Padstack xxx not created(焊盘没生成,器件放下去会缺焊盘)、Symbol xxx has no pins(封装引脚全丢)、Duplicate symbol name(两个同名封装被合并成一个)。

可以放过的提示,多数是信息性输出。比如Layer Mechanical 15 ignored、Text object skipped、3D body not supported。这些只要你自己确认过不影响使用,忽略就行。

日志量大时用命令行过滤,比在编辑器里翻快得多:

# 只看必须处理的问题,忽略信息性提示 grep -nE "ERROR|not created|no pins|Duplicate|Unable" /d/ad2allegro/log/conv_b01.log # 统计各类警告出现次数,判断是哪类对象集中出问题 grep -oE "WARNING: [A-Za-z ]+" /d/ad2allegro/log/conv_b01.log | sort | uniq -c | sort -rn

第一条命令把致命和需回改的条目揪出来,-n保留行号方便回查上下文。第二条按警告类型聚类,如果Padstack相关的警告出现几十次,基本可以断定是 AD 里那批焊盘用了转换器不支持的形状(比如自定义多边形焊盘、圆角矩形、带偏移的槽孔),这时候别硬扛,回 AD 里把那几个焊盘改成标准形状再导一次,比在 Allegro 里手工补要快。

注意:log 文件默认可能被写成.log也可能是.txt,转换完先ls一下输出目录确认文件名,别对着空文件读半天。

4. 生成物落地:dra / psm / ssm / pad 的分类与三条库路径

导入成功只意味着几何进了 brd,还不等于「能当封装用」。Allegro 的封装是三套文件配合工作的:图形源文件、编译后的可放置文件、焊盘定义。少任何一套,放置时要么找不到器件,要么放下去是个空壳。

4.1 四类文件各管什么

先把这个对应关系理清楚,后面配路径就不会乱:

文件类型扩展名作用放在哪条路径
Package symbol 源文件.dra可编辑的封装图形,含丝印、装配、占位区psmpath
Package symbol 编译文件.psm放置时实际读取的二进制封装数据psmpath
Shape symbol 源文件.dra异形焊盘、特殊铜皮的图形定义psmpath
Shape symbol 编译文件.ssm放置时读取的 shape 数据psmpath
Padstack.pad焊盘的孔径、尺寸、层结构定义padpath
Flash symbol.fsm散热焊盘、花焊盘连接图形psmpath

关键认知:.dra是给人改的,.psm是给工具读的。只放 dra 不放 psm,Allegro 在放置时找不到器件,报Could not find symbol;只放 psm 不放 dra,能放但改不了,而且没法在 Symbol Editor 里打开检查。两个必须成对出现,且文件名主干一致。

.ssm和.pad的关系也一样。一个异形焊盘在 AD 里可能只是一个多边形填充,转换到 Allegro 之后会拆成一个 padstack(定义层结构和孔径)加一个 shape symbol(定义平面轮廓)。这两者任意一个缺失,焊盘就会显示成一个方块或者干脆不显示。

4.2 Export Libraries 的实际操作与输出核对

导入生成的 brd 里已经有封装了,接着把它们导成库文件。在打开的这个 brd 里走File → Export → Libraries,弹窗里指定输出目录,也就是前面建的lib目录。这个操作会一次性把板子上所有器件拆成 symbol、padstack、shape、flash 四类,按子目录分开写。

导完之后立刻核对数量,别直接进下一步:

# 核对四类文件是否成对、数量是否与源封装匹配 cd /d/ad2allegro/lib echo "== dra 文件 =="; ls symbol/*.dra shape/*.dra 2>/dev/null | wc -l echo "== psm 文件 =="; ls symbol/*.psm 2>/dev/null | wc -l echo "== ssm 文件 =="; ls shape/*.ssm 2>/dev/null | wc -l echo "== pad 文件 =="; ls pad/*.pad 2>/dev/null | wc -l # 找出只有 dra 没有 psm 的孤立封装,这类放置时必然报错 for f in symbol/*.dra; do base="${f%.dra}" [ -f "${base}.psm" ] || echo "缺 psm: $f" done

这段脚本干了两件事:一是统计各类文件数量,二是用后缀替换的方式做配对检查。数量对不上、或者配对检查吐出文件名,说明某几个封装在编译阶段失败了——常见原因是封装里有零长度的线段、重复的焊盘编号、或者丝印压到了焊盘上触发了内部检查。这些在 log 里通常也有一条对应记录,回去翻。

配对检查这一步我是强制做的。曾经有一次导了二十多个封装,其中一个 .psm 没生成,当时没查,等到画板子放到那个器件时才开始怀疑人生,回头一层层找才发现是 source 里有个焊盘编号写成了空字符串。

4.3 三条库路径怎么配

Allegro 找库文件靠三个用户变量:padpath、psmpath、devpath。前两个是必须的,第三个在需要 device file 时用。配置入口在Setup → User Preferences → Paths → Library,也可以直接改 env 文件。

env 文件里加这么几行:

# 库路径配置片段,路径用正斜杠,不要加引号 set padpath = . D:/ad2allegro/lib/pad set psmpath = . D:/ad2allegro/lib/symbol D:/ad2allegro/lib/shape set devpath = . D:/ad2allegro/lib/symbol

几个必须遵守的规则:

路径分隔用正斜杠/,即使跑在 Windows 上。反斜杠会被当成转义符,整行配置失效。

路径里绝对不能有空格。Allegro 解析 env 文件时按空格切分,D:/my lib/pad会被切成D:/my和lib/pad两段,两段都无效,而且不报错,只是默默找不到文件。

每行的.表示当前工程目录优先,这个别删。它保证工程本地库的优先级高于全局库,避免不同项目的同名封装互相覆盖。

改完 env 要重启 Allegro 才生效。这一点很多人在第一次配路径时踩过——改完直接去放置,发现还是找不到,以为路径配错了,其实是没重启。

4.4 放一个器件验证

路径配好、重启之后,Place → Manually,在弹出的面板里勾选Library,展开库列表,找到刚导进来的封装,放到板子上。

放下去之后按顺序检查五件事,任一不对就说明转换有问题:

原点。选中器件看坐标,原点应该在本体中心或者 1 脚位置,不该有几百 mil 的偏移。偏移大说明 AD 侧封装没摆到原点附近。

1 脚方向。丝印上的极性标记、引脚编号 1 的位置,跟 AD 里对照看。AD 和 Allegro 的旋转方向定义不同,转换器有时会整体镜像,尤其是 Bottom 层的封装。

焊盘编号。用Display → Element点焊盘看编号,跟原理图符号的引脚号对上。编号错乱是 ASCII 记录解析出错导致的,只能回 AD 重新导。

丝印与阻焊。打开PACKAGE GEOMETRY/SILKSCREEN_TOP和SOLDERMASK_TOP两个 subclass,看有没有图形。空的说明层映射那一步丢了。

占位区。PACKAGE GEOMETRY/PLACE_BOUND_TOP里应该有器件外形轮廓,没有的话后面做布局检查会一直报错。

5. 避坑与排查:五条血泪记录

这条链路上真正花时间的从来不是正常流程,是那些不报错、不提示、等到打样才发现的问题。下面五条是我自己踩过的,按「现象 → 原因 → 解决」记下来,遇到对得上的直接照方子抓药。

5.1 转换跑完是块空板,log 里只有一行开头的记录

现象:点完转换,几秒钟就结束,生成的 brd 打开后什么都没有,log 文件只有几行头部信息,没有报错。

原因:AD 另存时类型没选对,存成了二进制 PcbDoc。转换器读不进去,也不认为这是错误,直接按空输入处理。

解决:用记事本打开 ASCII 文件看头部,正常的应该以|RECORD=开头的文本行起始。是乱码就回 AD 重存,注意「保存类型」下拉框里要选PCB ASCII File (*.PcbDoc),而不是默认的PCB Files (*.PcbDoc)。这两个选项在对话框里挨着,很容易点错。

5.2 器件能放,但一放就飞到板子外面

现象:从库里放置封装,鼠标点下去器件瞬间出现在坐标 (3000, 2500) 之类的位置,要 Zoom Fit 才找得到。

原因:AD 侧建空板时封装摆在远离原点的地方,那个位置被记录成了 symbol 的原点。Allegro 放置时以 symbol 原点对齐鼠标位置,原点偏了,器件自然飞。

解决:回 AD,把封装整体移动到坐标 (0,0) 附近,重新导出。已经导进来的如果不想重来,可以在 Allegro 的 Symbol Editor 里打开 .dra,用Move把图形整体挪到原点,再Create Symbol重新编译出 psm。后者能救急,但批量处理时还是重导更稳。

5.3 丝印全没了,log 里一堆 Mechanical 层被忽略

现象:封装放下去焊盘正常,就是没有丝印框、没有极性标记,打开SILKSCREEN_TOP是空的。

原因:AD 库里这些图形画在了 Top Overlay 之外的层上,比如 Mechanical 1、Mechanical 13,转换器对 Mechanical 层一律丢弃。

解决:在 AD 里全选这些图形,用Edit → Move → Move To Layer或者直接在 PCB 面板里改层,统一挪到 Top Overlay,重新导出。如果器件很多,可以在 AD 里写个脚本批量改层,比一个个点快。挪完之后记得检查有没有把装配说明也一起挪过去了,那类文字会变成丝印,打样时印在板子上很难看。

5.4 焊盘尺寸对不上,差了一个固定比例

现象:封装放进 Allegro,跟旁边手工建的封装一比,焊盘明显大一圈或小一圈,比例大概是 39 倍。

原因:单位不一致。AD 里部分焊盘用 mm 建,转换器按 mil 解析,1mm 被当成 1mil 处理,整体缩小 39.37 倍;反过来则是放大。

解决:在 AD 里统一单位后再导出。AD 的View → Toggle Units只是切换显示,不改底层数据;要真正统一,得在 PCB 面板里选中所有焊盘,在属性面板里把单位改成一致。导出前拿游标量一个已知尺寸的焊盘(比如 0402 的 0.6mm × 0.6mm),换算成 mil 记下来,导入后在 Allegro 里量同一个焊盘对比,一眼就能看出有没有缩放。

5.5 库路径明明配了,放置时还是提示找不到 symbol

现象:Place → Manually里库列表是空的,或者能看到器件名但一放就报Could not find symbol。

原因:三种可能。一是 env 文件用了反斜杠或路径带空格,整行配置没生效;二是 psm 文件没生成,只有 dra;三是改完 env 没重启 Allegro。

解决:按顺序排查。先在 Allegro 命令行里敲echo $psmpath看实际生效的路径是什么,如果输出跟你写的不一样,就是 env 语法问题;再用前面那段配对脚本确认 psm 是否存在;最后重启软件。三步都过一遍,九成的情况能定位到。剩下的一成是文件权限问题,库目录放在网络盘或者受控目录下,读取被拦了,这种把库拷到本地盘再试。

6. 批量搬运与验收:把一次性转换变成可复用的检查流程

单次转换跑通之后,真正的工作量在批量。一个迁移项目动辄上百个封装,靠手工一批批导、一个个核对,出错概率跟封装数量成正比。我后来的做法是把「验收」这一步脚本化,转换完先跑一遍自动检查,人只看检查不通过的那几个。

检查脚本的核心是三件事:文件配对、命名合法性、关键属性抽样。

#!/usr/bin/env bash # 转换后自检脚本:配对 / 命名 / 空文件 LIB=/d/ad2allegro/lib FAIL=0 # 1. dra 与 psm 必须成对 for f in "$LIB"/symbol/*.dra; do [ -e "$f" ] || continue base="${f%.dra}" if [ ! -f "${base}.psm" ]; then echo "[配对失败] 缺 psm: $(basename "$f")"; FAIL=1 fi done # 2. ssm 与对应的 shape dra 必须成对 for f in "$LIB"/shape/*.ssm; do [ -e "$f" ] || continue base="${f%.ssm}" if [ ! -f "${base}.dra" ]; then echo "[配对失败] 缺 shape dra: $(basename "$f")"; FAIL=1 fi done # 3. 文件名不得含中文、空格、括号 find "$LIB" -type f \( -name "*.dra" -o -name "*.psm" -o -name "*.pad" -o -name "*.ssm" \) \ | grep -nP '[\x{4e00}-\x{9fa5} ()()]' \ && { echo "[命名非法] 上面这些文件含中文或空格"; FAIL=1; } # 4. 空文件检查,0 字节的 psm/ssm 说明编译中断 find "$LIB" -type f \( -name "*.psm" -o -name "*.ssm" \) -size 0 \ -exec echo "[空文件] {}" \; -exec sh -c 'exit 1' \; [ $FAIL -eq 0 ] && echo "自检通过,可以进入放置验证" exit $FAIL

脚本第一段做 dra/psm 配对,第二段反向检查 ssm 有没有对应的 shape dra——注意方向跟第一段相反,因为 shape symbol 的源文件在导出时命名规则不完全一致,从 ssm 反查更可靠。第三段用find加grep -P过滤非 ASCII 文件名,\x{4e00}-\x{9fa5}是常用汉字的 Unicode 区间。第四段查 0 字节文件,编译中断时最容易留下这种东西。

脚本跑通只说明文件层面没问题,几何层面还得抽样看。我的抽样规则是:每批抽三个,优先抽异形焊盘最多的、引脚数最多的、带槽孔的。这三个覆盖了绝大多数转换失败模式。

抽检时在 Allegro 里做一次叠图对比最有效:把 AD 里同一个封装的焊盘中心坐标导出来(AD 的 Reports → Pad Information 能出表),跟 Allegro 里Tools → Reports → Padstack的输出对上,逐个比 X/Y 坐标和孔径。差值在 0.01mm 以内算通过,超过就得查是单位问题还是记录解析丢精度。

还有一个容易被忽略的验收项:器件高度。AD 里的 3D body 转换不过来,Allegro 的PLACE_BOUND_TOP只是个二维轮廓,高度信息全靠Package Geometry → Place_Bound_Top里的Height属性手填。如果项目后面要做3D间距检查或者结构干涉,这一步必须补,否则所有器件默认高度是 0,检查结果全绿但没意义。

从那以后我每次做这类跨工具搬运,都强制走一遍「脚本自检 + 三点抽样 + 高度补齐」的流程,哪怕只搬五个封装也不跳。跳过一次,代价是打样回来发现一个连接器的定位孔偏了 0.3mm,整批板子返工。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进