客户甩过来一份Cadence Allegro的.brd文件,让你三天内改成某个方案继续打样,而你电脑上装的是Altium Designer——Allegro转AD这种操作,我这些年少说也折腾了几十回。网上教程基本都是同一套话术:File > Import > Allegro,完事。可真正转过板的人都懂,这里面的坑多到能写一本书。本文就把Allegro转AD的几条路一次讲透:直接导入怎么操作、网表重建怎么做、DXF和Gerber兜底方案什么时候用、以及导入后那些高频报错和细节问题怎么处理。不管你是初次转板的新手,还是被版本兼容性折磨的老工程师,这份清单都能帮你省下至少一个通宵。
1. 转板思路先行:先看清手里的文件,再选转换方案
1.1 Allegro文件都有哪几类,哪类能直接转
很多人拿到一个压缩包,里面一堆后缀名,第一反应就是懵。其实Allegro相关文件就那几类:.brd是PCB数据库文件,也就是我们要转的核心目标;.dsn是OrCAD Capture的原理图设计文件,这个AD可以直接导入;.pad、.psm、.flm、.bsm则是封装库相关文件,.dra是封装编辑器用的图形文件。还有一些.log、.art之类的过程文件,基本不用管。
拿到文件后先分清楚:你手里到底是只有一个.brd,还是整个工程都齐全?这决定了后续路线。只有.brd没有原理图,那你能走的就只有“直接导入.brd”或者“Gerber/ODB++逆向”这两条路;如果有.brd还有配套的OrCAD原理图工程,恭喜你,可以走网表重建的高保真路线,转换质量会好很多。
还有一种常见情况:对方发来的是一份Gerber文件。这种文件严格来说不算Allegro工程,它只是生产数据。你拿到Gerber想“转成AD”,那属于逆向重建,复杂度完全不同。这部分我放在第4章讲,千万别上来就用Gerber去转,那是最后手段。
1.2 三种转换路线对比,别一上来就点Import
先看一张我整理的路由表,后面所有操作都围绕这三条线展开:
| 转换方案 | 保真度 | 工作量 | 适用场景 |
|---|---|---|---|
| AD直接导入.brd | 高(电气网络、铜皮、走线都在) | 低 | 版本匹配、文件完整且能正常打开 |
| 网表+坐标文件重建 | 最高(原件库、网络、规则都可控) | 高 | 有原理图工程,或直接导入失败 |
| DXF/DWG、Gerber/ODB++兜底 | 低到中(只保几何或部分网络) | 高 | 只要外形、只做查看、修改个别细节 |
我推荐绝大多数人优先选第一种,原因很简单:快、省事、电气属性基本能完整保留。但如果你导入时报错、或者导入进去发现飞线全无,那就别硬扛,及时切到第二条路线。第二种方案虽然费时间,但它能让我在重建过程中把原理图和PCB的对应关系重新理一遍,后续改版、出量产文件都会更顺手。
DXF和Gerber这两条兜底路线,说实话我平时不太愿意碰。它们要么只能转机械外形,要么会把PCB的电气信息丢个精光。什么时候才用?后面第4章我会把判断标准说清楚。
1.3 版本兼容账本:Allegro 16.6几乎是万能出口
Allegro版本号很杂,16.2、16.3、16.5、16.6、17.2、17.4、22.1都有公司在用。Altium Designer这边,早期的AD16、AD17、AD19对Allegro 16.x的导入支持还凑合,从AD20开始官方称支持17.2,但实际体验下来,17.4以上的.brd文件在AD里导入经常翻车,报错信息最常见的就是那句让人血压升高的“Allegro design file not recognized, or version is too old”。
这句话有两层意思,一层是文件版本太新AD不认,另一层是版本太老AD也不认。比如Allegro 15.7以前的老古董格式,AD的导入器根本没法解析。所以我在实际项目里定了一条铁律:不管对方发来的是什么版本,我都先在Allegro里导出成16.6版再转AD。16.6是Allegro生命周期最长、最稳定的版本,AD对它的兼容性打磨得也最成熟。
如果没有安装完整版Allegro,可以装一个Allegro X Free Viewer 16.6免费查看器,它能打开.brd文件看版本、层叠、网络数量这些基础信息,但注意它只能看不能改也不能导出降版本。真正降版本还是需要一台装完整版Allegro的电脑,一台就够,改完把文件拷回来继续用。
2. 直接吞下.brd:AD导入Allegro原文件的完整操作
2.1 降版本怎么操作,为什么要降到16.6
降版本这个动作在Allegro里叫Downrev Design,路径是:File > Export > Downrev Design。操作界面会弹出一个版本选择列表,直接选16.6,输出一个.new.brd或者直接覆盖原文件。有人问能不能降到更低,比如16.2?可以,但没必要,AD其实不支持太老的Allegro版本,16.6才是兼容性最好的中间格式。
有一个细节必须提醒:降版本之前,一定先在Allegro里执行一次Tools > Database Check,也就是常说的dbdoctor。这个工具会扫描当前.brd文件的数据库完整性,勾选Check Geometry和Check Shapes这两项再点执行。如果扫描报错,先让Allegro自动修复,修复通过后再降版本。我见过有人拿一个带隐性错误的.brd直接降版本,结果导出过程走到一半就崩了,原文件也跟着变得打不开,最后只能让客户重新发文件,非常尴尬。
如果菜单里的Downrev Design是灰色的点不了,通常是许可限制了该功能。这时候别折腾,找个装了完整License的同事或者对方公司的人帮你导一次,几分钟的事。另外,有人用skill脚本做降版本,原理其实一样,就是调用内部命令重写文件版本头,效果差不多,但我不建议在关键项目上用来路不明的脚本,官方功能最稳。
2.2 导入向导里的关键选项怎么勾
文件降到16.6之后,在AD里执行File > Import > Allegro Design,选择.brd文件,这时会弹导入配置界面。不同AD版本界面略有差异,但核心选项就那么几个,我按经验说一下怎么勾。
单位建议保持Auto,让AD按原文件的单位识别,不要手动改成Mil或mm,避免坐标缩放出差错。层的映射一般不用动,AD会自动把ETCH/Top映射到Top Layer、ETCH/Bottom映射到Bottom Layer,但导入完成后一定要在Layer Stack Manager里核对一遍,特别是有内电层的四层板以上设计,偶尔会有层顺序错位的情况。
铜皮相关的选项,如果出现Merge Copper或类似功能,我建议先不要勾。Allegro的静态铜和动态铜在导入后大概率会变成独立的铜箔区域,强行合并反而会让编辑变得笨重。导入过程中如果卡顿,把“导入设计规则”这类重选项先关掉,等板子进来了再手动补规则,优先级更高。
导入进度条走完后,第一眼看到的板子可能颜色很乱,这是正常的。Allegro的显示颜色配置不会一起迁移,你可以在AD里按L打开视图配置,或者直接用View > Board Planning Mode看层叠结构。别被颜色问题吓到,电气数据没问题才是关键。
2.3 导入完成后立刻要做的4项自检
直接导入完成不等于结束,我每次都会在十分钟内完成四项检查,少了哪一项后面都会出事。
第一,网络数量校验。打开PCB面板切到Nets视图,数一下网络列表数量,再和原Allegro的log文件或者网表里的网络总数对比。对不上就说明导入过程丢了网络,这事可大可小。
第二,飞线显示。在AD里按N,选择Show All,或者按快捷键Un-Route All?不需要路由,只是显示飞线。正常情况下所有焊盘之间会有密密麻麻的飞线,这代表连接关系还在。如果屏幕干干净净,那基本说明网络关系没导入成功,赶紧回第3章走网表重建。
第三,跑一遍DRC。Tools > Design Rule Check,把Short-Circuit Constraint和Un-Routed Net这两项打开,立刻跑一遍。开路、短路报错会在Messages面板里列出来,这是判断转换质量最直观的依据。
第四,3D视图检查。按3进入3D模式,看元件高度、封装方向、板框外形是否正常。很多元件在Allegro里有3D模型,但AD不一定能自动关联,后期需要手动补Step模型。这一步主要是发现“封装缺失、元件悬浮”这类大问题。
3. 保真度最高的方案:网表+坐标文件在AD里重建
3.1 从Allegro那边导出哪些文件
当直接导入失败,或者说你希望转换后的工程干净、规则可控,那网表+坐标重建就是正解。这个方案的前提是你手上有完整的原设计数据,至少包括:原理图工程(.dsn/.opj)、Allegro的.brd文件、坐标文件、以及一份完整的PDF图纸。
具体导出拿什么?首先是网表。如果你用的是OrCAD Capture画原理图,在原理图编辑器中Tools > Generate Netlist,格式选择Allegro,生成.net文件。这一步和平时投板前导网表一样,能生成一份包含所有元件位号、封装、网络连接关系的文本文件,AD可以直接识别。
其次是坐标文件。在Allegro里File > Export > Placement,弹窗里选择Mounted模式(只导出已装配元件),格式选默认的Allegro,输出一个.placement文件。这个文件内容大概是这样的格式:
REFDES, DEVICE, X, Y, SIDE, ROTATION C1, 0.1uF_0402, 100.000, 150.000, TOP, 90然后是PDF图纸和BOM。Allegro可以通过File > Export > PDF直接输出图纸,也可以从OrCAD Capture出原理图PDF。BOM用Report > Bill of Materials生成。这两样东西在重建工程时是用来做人工核对的标准答案。
3.2 坐标文件格式转换:从exp_placement到Pick-and-Place
Allegro导出的.placement文件不能直接被AD导入,AD用的坐标格式是Pick and Place的CSV,字段顺序一般是:
Designator, Comment, Footprint, Mid X, Mid Y, Layer, Rotation转换其实不复杂,用Excel就能搞定。把Allegro的.placement文件打开,按逗号分列,然后把REFDES、DEVICE、X、Y、SIDE、ROTATION这六列按AD需要的顺序重排,加一个Footprint列,Comment列可以从BOM里填进去,SIDE字段直接映射成TOP或BOTTOM。单位也要确认清楚,Allegro默认可能是mil,AD工程如果设成了mm,要在转换时统一除以39.37,不然所有元件会飞到一个奇葩位置。
如果你习惯写脚本,我提供一个AD的DelphiScript思路,放在PCB脚本系统里运行,可以直接读取转换好的CSV并批量修改板上元件的坐标:
procedure TForm1.ImportPlacementButtonClick(Sender: TObject); var Board: IPCB_Board; Iterator: IPCB_BoardIterator; Component: IPCB_Component; F: TextFile; Line: String; Ref, Footprint, Side: String; PosX, PosY, Rot: Double; begin Board := PCBServer.GetCurrentPCBBoard; AssignFile(F, 'D:\placement.csv'); Reset(F); while not Eof(F) do begin ReadLn(F, Line); // 按逗号解析:Ref, Comment, Footprint, X, Y, Layer, Rotation // 遍历Board中的元件,找到匹配的Ref后设置Component.XLocation/YLocation/Rotation end; CloseFile(F); ResetAllComponents; // 刷新视图 end;这个脚本只是骨架,实际使用时需要补上字符串解析和元件搜索逻辑,但思路就是这么个思路。有了坐标导入,元件能快速按原设计摆回正确位置,比肉眼看着PDF一个个拖靠谱得多。
3.3 在AD里重建工程和验证连通性
坐标文件处理好的前提下,工程重建流程就比较顺了。
先在AD里新建一个PCB工程,然后把OrCAD原理图导入:File > Import > OrCAD Capture,选择.dsn文件。AD对OrCAD Capture的导入兼容性还是不错的,大部分元件、网络、注释都能保留。导入后再在原理图编辑器里执行Design > Update PCB Document,AD会自动在PCB里生成一堆元件和飞线。这个时候元件位置是乱的,不要慌,用第3.2节做好的坐标文件把元件都摆到指定位置。
板框可以用DXF导进来,路径是Design > Board Shape > Define from selected objects,把DXF里的Outline线条选中并转成新的板框。接着按PDF图纸逐一核对极性元件、连接器方向、螺丝孔位置。最后回到网络管理器,确认网络列表和原Allegro设计一致,再跑一遍DRC。
我实际做过一个四层ARM核心板的重建,整个过程大概花了一天半。听起来比直接导入慢很多,但好处是:原理图在AD里是可编辑的,后续改版、调整BOM、更新封装都方便,规则也能完全按AD的习惯重新配置,不用担心带入Allegro那些奇怪的约束。如果你的项目以后还要持续迭代,我强烈推荐走这条路。
4. 逼不得已才用的兜底方案:DXF/DWG与Gerber/ODB++
4.1 DXF只用来搬外形,别指望搬电路
DXF/DWG这类格式只能保存几何图形,没有任何电气属性,所以它的定位就是“搬外形”,不是“搬电路”。什么时候用?你只需要板框、安装孔、螺丝柱、非金属化槽的时候,或者想用原设计的机械外形配合结构软件做干涉检查,这时候DXF是最合适的。
Allegro导出DXF的操作:File > Export > DXF,在弹出的配置窗口里选择需要导出的层。推荐至少勾选Board Geometry里的Outline、Dimension、Mechanical、Constraint区域,如果你还要丝印定位,可以把Package Geometry的Silkscreen也勾上。单位选择要看接收方需求,AD和机械工程师常用mm,但Allegro老工厂里很多还习惯用mil,导出前一定要确认清楚。
AD导入DXF时是File > Import > DXF/DWG,会弹层映射和单位设置界面。这里有个高频坑:缩放比例不对。如果你的单位选错了,板子导入后会变成25.4倍或者39.37倍的大小,第一眼看不出来,一测量就露馅。我自己的习惯是先导一个非常简单的矩形框试一下,确认尺寸比例无误后,再导完整的Outline。
导入后如果只想保留板框线条,可以选中线条后在AD里执行Design > Board Shape > Define from selected objects,一键生成板框。然后你就可以在板框内新建走线、放置元件了。
4.2 Gerber/ODB++逆向:能看、能补、不建议深改
当手头只有Gerber或者ODB++时,逆向成AD PCB是最后的退路。先说结论:这个方案能用来查看、能用来补两块小铜皮、能用来出一份预览图,但别指望优雅地改版。
如果拿到的是ODB++,AD可以直接File > Import > ODB++。ODB++比Gerber强的地方在于它保留了网络信息和层叠结构,导入后能看到网络名,铜皮、焊盘形状大多能还原成可编辑对象,但很多细节会变成线条、圆弧、区域填充的堆叠,远不如原生.brd导入干净。
如果只有Gerber文件,AD的File > Import > Gerber Files可以先打开每一层图形,然后你在CAM文档里复制图形、粘贴到PCB的对应层。这个流程极其繁琐,一个四层板你可能要粘一晚上。还要注意,Gerber里没有元件属性,没有网络,只有铜箔形状和丝印线条。导入后的所谓“PCB”本质上是一堆几何图形,你无法用它做网络检查、无法直接出BOM、无法规则约束。
所以我通常劝客户:Gerber逆向只用来“看”,不要用来“改”。真要大改,宁可拿着Gerber和PDF重新画一版,也比逆向修图快。这一行最大的幻觉就是觉得Gerber能“无损变回源文件”,它真不能。
4.3 顺带提醒:Allegro启动不弹Product Choice这类小问题
做转换时经常碰到Allegro本身的毛病,比如热词里提到的“Allegro 17.2打开.brd时不弹出Allegro PCB Designer Product Choice”。这个弹窗是Allegro用来让你选择打开模式的,不弹很可能是安装不全或者双击文件时走了别的入口。解决办法很简单:别双击.brd,直接去开始菜单打开Allegro PCB Designer,然后在里面通过File > Open选择文件;也可以到安装目录下右键allegro.exe用管理员身份运行一次,把产品注册信息刷新一下。
这类小问题看起来和工作内容关系不大,但实际项目中特别耽误时间。如果你只是想知道这个.brd是什么版本、层数多少、网络多少,装个Allegro X Free Viewer 16.6就够了。它能打开文件并显示基本属性,配合后面我用到的文件体检流程,能让转换过程少走弯路。
5. 导入后高频问题与排查实录
5.1 “Not recognized or version is too old”的两种应对
这个报错是Allegro转AD最经典的拦路虎,我在网上看到过一堆人问。解决办法要先分方向:文件太新就用Downrev Design降到16.6再导入;文件太老,比如15.x,AD确实解析不了,这时候需要找一台能打开老版本的Allegro,把它另存为16.6后再导入。如果Allegro自己也打不开,那就是文件损坏,先用dbdoctor扫描修复,修不好只能找对方重发。
还有一种容易被忽略的情况:文件本身没问题,但AD导入器因为某种原因没能识别.brd的文件头。遇到这种我建议关闭AD,重新启动,然后不要用双击打开的方式,而是File > Import > Allegro Design指定路径选择文件。用“打开”菜单去开.brd很可能会让AD把它当普通文档处理,导致报错。
报错信息里如果还带着“version is too old”后面一串十六进制编号,基本是文件版本和导入器预期不符。我建议把报错信息截图发给你身边的Allegro老手看一眼,通常一眼就能判断是太新还是太旧。版本问题解决后,导入成功率能提升九成。
5.2 网络飞线全丢、铺铜变成碎片怎么办
导入后飞线全无,先打开Net列表确认网络信息是否真空了。如果是空的,有两种可能:一是原.brd本身没有网络属性,这种文件多半是从Gerber或者第三方工具重建出来的“图形板”;二是AD导入时选项没勾对,重新导入一次并在配置里勾选Net相关的选项试试。
网络空掉之后,唯一正规的补救办法就是走第3章的网表重建。有人想手动一个个连网络,这种操作对小模块也许可行,但面对几百个元件的板子完全是浪费时间,而且极容易漏连。
铺铜变碎片则是另一个经典问题。Allegro的动态铜在AD里经常会变成一堆孤立的小铜皮,看起来非常惊悚。解决逻辑是:别试图修这些碎片,直接删掉重铺。在AD里用Polygon Pour重新画一块铺铜区域,指定网络,设置好规则,然后Tools > Polygon Pours > Repour All。重铺之前务必保存,因为大面积重铺时AD有时会卡十几秒甚至崩溃,先保存一份不会吃亏。
5.3 封装库、3D模型、丝印位号缺失的处理
导入后的封装问题分两种情况:一种焊盘位置和尺寸都对,只是AD不认识Allegro封装名,元件在PCB上显示成黑色方块,这种其实不影响生产,制板厂认的是焊盘和丝印,不是封装名;另一种是焊盘全部变成未知形状,这大概率是封装库没有同步过来,需要手动重建或替换。
封装名映射这块,AD从AD20开始提供了Library Migrator,可以迁移Cadence/Allegro的封装库到AD集成库,但实际用过的朋友都知道,库里的标准件还好,公司私有封装经常迁移失败。我自己的土办法是导出一份“元件库对照表”,把Allegro封装名和AD封装名做一张Excel映射表,然后在PCB List里批量替换Footprint。慢是慢点,但准确可控。
3D模型缺失就更普遍了。AD里给元件添加3D封装的方法是:双击元件进入Footprint Editor,然后Place > 3D Body,选择Generic STEP Model,导入厂商提供的Step文件,设置好偏移和高度。如果你只关心结构干涉,可以只给连接器、大电容、屏蔽罩这些关键器件补3D模型,阻容类小封装可以不补。
丝印位号缺失或者跑到奇怪层去了,同样是高频问题。Allegro里丝印可能在Package Geometry/Silkscreen层,导入AD后不一定自动映射到Top Overlay。你可以在PCB面板里用Filter选中Silkscreen相关的字符串,然后统一改到Top Overlay层。如果位号图在Allegro里就被删了,需要回Allegro执行Manufacture > Silkscreen重新生成一次,再导出。
5.4 铺铜避让、过孔开窗这些细节怎么调
转板完成后,很多人会遇到“AD在铜皮里面走线不避让”的情况。这其实不是没避让,而是多边形铺铜没有重新Pour,或者Clearance规则没设置。正确的处理顺序是:先在Design > Rules里新建一条Clearance规则,Query条件写成IsPolygon,间距按你需要的值填,比如0.3mm或0.25mm;然后Tools > Polygon Pours > Repour All,强制所有铺铜重新填充。刷新后走线就会在铜皮内自动“让”出一条通道。
关于“Allegro PCB背面的绿油露铜处理”,说白了就是阻焊开窗。在Allegro里露铜是在Bottom Solder Mask层画形状,导入AD后要检查Bottom Solder层是否保留了同样的开窗图形。如果没有,就手动在Bottom Solder层用Fill或Polygon补上。过孔盖油的问题类似,Allegro的过孔盖油由自身属性控制,转AD后经常变成默认开窗,需要全选过孔后,在属性里设置Solder Mask Expansion,或者统一修改阻焊规则。
另外,如果你导入后发现走线角度很别扭,注意检查圆弧走线是否被离散成多段折线。AD遇到Allegro的圆弧走线通常会保留为弧段,但偶尔也会变成一堆小线段。这种主要是显示精度和导入精度的设置问题,可以在Preferences里把Arc Approximation调高,然后重新导入一次试试。走线角度检查如果特别在意,可以在AD的Find Similar里选所有Track,按层和线宽筛选,再用属性面板扫一遍角度。
6. 转板完成后的自检习惯与经验分享
6.1 转换后的第一件事:DRC+飞线+3D视图
转换完成不等于工作完成,每次我都会给自己定一个“三查”流程:DRC、飞线、3D视图。DRC能查出短路、开路和间距违规;飞线能看出网络是否完整;3D视图能暴露元件冲突、高度超标、反向装配这些电气规则查不出来的物理问题。这三样都没问题后,再考虑出Gerber或者继续改板。
还要做一次网络表和BOM的对照。把AD生成的BOM和网络表导出来,和原Allegro的BOM、网表逐项比对,位号数量、封装尺寸、极性方向都要一致。这个步骤看着繁琐,但能在量产前拦住一堆低级错误。我自己吃过亏,一个电源芯片的Pin1方向转了180度,功能测试时才被发现,从那以后每次转换我必对位号图。
6.2 常用小工具与脚本(不是广告)
除了AD和Allegro这两个主力软件,我平时还留了几个小工具在硬盘里。Allegro X Free Viewer用来快速查看.brd版本和层叠信息,不装完整版Allegro也能应急;Excel坐标转换模板用来把exp_placement转成AD的Pick-and-Place格式,模板里写好公式,拉进去就能出来;还有一个自己写的DelphiScript脚本,专门负责批量导入坐标到PCB,整个流程跑一遍大概十分钟。
如果你不想写脚本,AD自带的PCB List面板也够用。先把所有元件的坐标导出成CSV,在Excel里修改,再通过PCB List的粘贴功能把X/Y/Rotation批量写回去。这个方法不需要任何编程基础,处理一两百个元件完全够用。
有个细节值得强调:无论用什么工具,做完转换后一定要保留一份Allegro原文件的完整备份,包括.brd、.dsn、封装库、输出文件。转换过程有可能出现不可预期的问题,备份是最后的后悔药。
6.3 我的个人体会与建议
Allegro转AD这件事,我从入行到现在做过太多回了。最初我也迷信直接导入,觉得点一下菜单就能搞定,后来被各种版本兼容问题教育过,才慢慢总结出“先体检、再转换、后核对”这套流程。所谓体检,就是用免费查看器或者Allegro打开文件,确认版本、层数、网络数、元件数、动态铜区域数量,把这些基础数据记下来。转换完了再逐项核对,哪里对不上马上就知道。
还有一个建议是时间规划。转板任务看起来是个小活,但实际上你永远不知道文件会在哪一步翻车。我在项目排期的时候,一般会给转换和验证留出至少一天缓冲。如果接的是交付期很紧的活儿,宁可提前跟客户要一份16.6版本的.brd以及配套的网表和PDF,也别自己扛着高版本文件硬转。
最后再分享一个判断经验:如果对方发来的.brd特别大,层数特别多,还带着大量动态铜和高速规则,直接导入AD的成功率其实不高。这种复杂板子,我更推荐直接走网表重建,虽然慢,但稳定。转板这件事,快不是目标,稳才是。