ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AD封装库跨工具迁移到Allegro:焊盘重建与批量脚本实战

AD封装库跨工具迁移到Allegro:焊盘重建与批量脚本实战 上个月我接到一个挺头疼的活把一块老产品的AltiumDesigner封装库整体搬到allegro环境里项目进度压得紧板卡又要马上开始重排。AD和allegro是两套完全不同的EDA体系封装数据模型差异巨大直接硬导基本上都会出幺蛾子。我前后折腾了大概一周踩了不少坑也试出了一些行之有效的流程今天把这套从AD封装到allegro封装的完整思路和具体操作写出来给同样要跨工具迁库的工程师做个参考。1. 迁移场景与核心认知AD和allegro封装模型哪里不一样1.1 什么情况下必须做封装跨工具迁移很多设计团队会遇到这种局面公司原本用AltiumDesigner做设计后来因为高速仿真、团队协同或者客户要求整体切换到Cadence的allegro平台。PCB文件可以找转换工具或者重排但最难受的是元器件封装库——几十个甚至上百个封装如果全部手工重建既枯燥又容易出错。我做这次迁移的时候系统里大概有小两百个封装覆盖了电阻电容、连接器、BGA、QFN、DIP等常见类型。一开始我也天真地以为用allegro自带的Import功能能一键搞定结果试完才发现导入过来的“封装”只能算是“几何图形”焊盘结构、热焊盘、阻焊开窗这些底层信息全都不对。最后我走的路线是官方导入作为初始参考手工/半自动重建作为最终落地方案。1.2 AD和allegro封装数据模型的本质差异要想把封装转得准先得搞清楚两边建封装时的底层逻辑。AD里的封装PcbLib本质上是一堆图层对象的集合焊盘、丝印、装配层、阻焊、助焊、3D体都在同一个文件里。焊盘的尺寸和形状定义非常“扁平”表贴焊盘基本就是“顶层铜箔阻焊开窗助焊层开窗”通孔焊盘再加一个贯穿钻孔。allegro这边完全不一样它的封装被拆成两个东西.pad焊盘文件和**.dra封装符号文件**。一个焊盘文件不仅定义了顶层铜箔还要定义中间层、底层、热焊盘Thermal Relief、Anti Pad反焊盘、阻焊层、助焊层、钻孔参数。封装符号文件通过引用这些pad文件来放置引脚。这种“焊盘和封装分离”的架构让allegro在铺铜和制造环节有更大的控制力但也正是跨工具迁移时最容易出问题的根源。1.3 动手之前先想清楚这三件事迁移只覆盖你正在用的封装别把整库无脑全转很多老封装早就不用了转过来只会污染新库。先确认目标版本allegro是哪一代17.2、17.4还是22.1不同版本对导入功能的支持差异很大。留出足够的修正时间。我的经验是100个封装的转换和修正至少预留三个完整工作日。2. 先试官方通道allegro自带的Altium导入功能到底能用吗2.1 官方Import功能的实际表现新版本allegro PCB Editor确实提供了File - Import - Altium的菜单入口我也看到网上不少教程说可以直接把AD的.PcbLib转进来。实际操作之后我的结论是能用但别指望直接拿生产。这个导入功能更擅长处理PCB板级文件的转换对库文件的处理比较“粗暴”。在allegro 17.4版本上我尝试直接导入AD的.PcbLib结果软件直接提示不支持PcbLib格式让我先转换.PcbDoc。后来我把AD封装放到一个临时PCB文件里再导入虽然封装能够显示出来但焊盘全部变成了简单的形状丢失了热焊盘和Anti Pad丝印层文字也发生了偏移。如果你公司版本刚好支持直接导入库文件我的建议是把它当作“参考底图”来用导入后测量尺寸、查看焊盘分布然后在allegro里重新走一遍建库流程。这比自己拿着数据手册重新画要快得多毕竟AD封装本身就是经过验证的。2.2 为什么官方转换出来的焊盘结构会丢原因在于AD的焊盘模型没有allegro那么“多态”。AD焊盘只有一个铜箔形状到了allegro里同一个Padstack需要同时描述正片连接Regular Pad、花焊盘连接Thermal Relief和隔离区Anti Pad。这仨参数在AD里根本不存在所以工具只能给你生成一个“裸”焊盘。如果PCB设计里用到了负片平面或者有大面积铺铜地网络这种焊盘就会导致连接不良或散热异常。所以我的建议很明确如果只是做样板打样、简单双面板、对散热和电源完整性要求不高官方导入后的封装勉强能用但如果是多层板、负片层、大电流设计焊盘结构必须重建。2.3 导入操作的正确姿势如果确实想用官方导入作为起始点操作顺序这样走比较稳在AD里新建一个临时PCB把所有需要迁移的封装均匀分布在板上间距拉大一些避免重叠。另存为较新的.PcbDoc格式allegro对旧版本文件兼容性不好容易出现“not recognized or version is too old”这类提示这是网上最常见的问题之一。在allegro里用File - Import - Altium选择刚才的PCB文件导入。导入完成后用Tools - Padstack - Modify Design Padstack去查看每个焊盘的结构你会发现大量焊盘被标记为“同一种默认形状”这就是需要逐个修复的对象。3. 手把手重建SOIC-8封装从AD到allegro的完整落地流程3.1 在AD中提取封装关键信息当你决定手工重建时第一步是在AD里把原封装的信息完整摘出来。以最常见的SOIC-8为例在AD封装编辑器里双击任意焊盘Pad Editor中可以看到焊盘尺寸、形状、层叠、阻焊开窗等参数。同时切换到Top Overlay层查看丝印框尺寸切换到Top Assembly层查看装配体外形。把以下数据记录到一个Excel或文本里参数SOIC-8典型值mm焊盘间距E1.27焊盘宽度0.6焊盘长度1.5左右两侧焊盘中心距离6.2本体宽度4.0本体长度5.0丝印线宽0.25这里要特别提到一点AD焊盘坐标显示的是焊盘中心位置而一个封装内的焊盘可能会有旋转角度。像SOIC这种两侧排列的封装通常左侧焊盘旋转90度右侧也旋转90度实际放置时要注意角度一致性。3.2 在allegro中创建焊盘Padstack打开allegro PCB Editor新建一个Package Symbol文件然后通过Tools - Padstack - Modify Design Padstack或者直接打开Padstack Editor来创建焊盘。以刚才SOIC-8的矩形表贴焊盘为例要注意的关键设置Units选择Millimeter精度设为4位小数避免误差累积。Layer选项卡里需要定义BEGIN LAYER顶层、DEFAULT INTERNAL中间层、END LAYER底层的Regular Pad。表贴焊盘通常把中间层设为None底层也设为None或热焊盘。SOLDERMASK_TOP阻焊开窗通常比铜箔单边大0.1mm这样焊盘周围露铜才够。PASTEMASK_TOP助焊层与铜箔同尺寸这个就是钢网开窗的依据。没有通孔时Drill列保持None这就成了标准的SMD焊盘。如果你面对的是DIP这类通孔器件Padstack Editor里就需要指定Drill直径、Plating类型PTH/NPTH、以及内层的热焊盘和Anti Pad。热焊盘尺寸一般取Regular Pad内缩0.2~0.3mmAnti Pad取Regular Pad外扩0.3~0.5mm这些数值会影响负片层的绝缘间距和焊接散热不能瞎填。3.3 在allegro中放置焊盘和绘制封装外形焊盘文件创建完成后在Package Symbol编辑器里通过Layout - Pins放置引脚。放置时输入X/Y坐标和旋转角度。SOIC-8左侧四个引脚中心坐标大概是-3.1, 0.635、-3.1, 1.905、-3.1, 3.175、-3.1, 4.445右侧对应镜像X坐标为3.1。每个引脚需要指定Padstack名称和Pin Number1到8。放完焊盘后用Add - Line在SILKSCREEN_TOP层画丝印外框用Add - Rectangle或Polygon在ASSEMBLY_TOP层画装配体边界再用Labels - RefDes放置位号字符。装配层的器件本体边界要尽量反映真实尺寸因为DFM检查时依赖它判断器件间距是否足够。Place Bound占位区也需要画没有这个区域allegro在放置器件和检查碰撞时会找不到参考。3.4 保存与生成.psm符号文件封装图形编辑完成后File - Save会生成.dra文件同时后台自动生成.psm文件。psm就是allegro PCB设计时引用的封装符号。可以在File - Create Symbol或者Check Database后确认一下psm是否正常生成。我在实际工作中还会额外勾选Include Pin Data和Include Route Data选项这样在PCB设计里能看到引脚长度和飞线连接关系对布局布线效率帮助很大。4. 整库迁移报表驱动脚本批量的工程化思路4.1 为什么手工重建撑不起整库迁移手工重建一个简单封装需要五到十分钟一个复杂封装可能要半小时。面对一两百个封装时手工方案显然不现实。所以整库迁移的工程化思路必须上脚本。allegro有一套挺高效的机制通过Script或Skill脚本可以自动执行菜单操作。本质上手工建封装时的每一步操作都可以录制为脚本指令。我们不必去记忆复杂的Skill API只需要手工录制一段建库宏然后分析宏脚本里的参数格式再用Python批量生成不同尺寸的脚本文件即可。4.2 用Python把AD封装数据转换为allegro脚本首先需要把AD封装库的信息结构化导出来。AD的PcbLib没有直接的Excel导出功能但可以通过AD自带的脚本语言或者用Report功能生成一些焊盘信息的报告。我在项目里是用了一个比较“土”但有效的方法在AD封装库中逐个打开封装利用Report生成焊盘坐标列表和丝印尺寸再复制到Excel里。得到一份包含焊盘坐标、旋转、Padstack尺寸的表格后写Python脚本生成对应的allegro脚本文件。核心逻辑大概是下面这个样子# 生成allegro script的Python伪代码示例 data read_excel(sop8_footprints.xlsx) for row in data: x row[pad_x] y row[pad_y] rotate row[pad_rotate] padstack row[padstack_name] print(fplace pin at ({x}, {y}) rotation {rotate} with padstack {padstack})实际生成的不是print输出而是一行行的allegro命令。你可以先手工录制一次“放焊盘”的宏然后找到坐标在脚本文件里的位置和格式再让Python按同样格式去填充。这种做法不需要你精通Skill语言只需要懂一点反射式的宏替换门槛比想象中低很多。4.3 批量绘制的脚本结构设计一个完整的批量建库脚本逻辑顺序应该是这样打开allegro并新建Package Symbol文件。设置绘图单位。依次放置焊盘每放一个焊盘脚本里包含坐标、旋转角度、Padstack名称、Pin Number。画丝印根据Excel里的丝印框坐标逐个画线段。画装配层同样从Excel提取坐标数据。放置位号Label。保存文件并生成psm。脚本写完后可以用allegro的File - Script - Replay来执行。整个库两百个封装我一个下午就全部生成完了。当然前提是Excel数据准备得足够齐全pin坐标、丝印框、焊盘类型全部正确不然脚本跑完你会发现一堆“畸形”封装返工更痛苦。4.4 自动检查不是可选项是必选项批量跑完脚本后没有任何人敢拍胸脯说这库没问题。allegro自带的Database Check工具菜单下可以检查封装符号的完整性比如焊盘是否存在、pin number是否有重复。另一个是Manufacturing - Design Rule Check虽然更多用于PCB检查但在封装上也能发现一些丝印越界、占位区缺失等低级问题。我的习惯是每个封装跑一遍Database Check记录error和warning数量。Warning可以酌情忽略但error必须清零。清零之后还要在PCB里批量Place几个封装用自动布线验证一下引脚是否都能连上。5. 最容易翻车的五个细节尺寸、焊盘、层叠与CAD工具的隐性差异5.1 单位与精度陷阱AD默认使用mil还是mm取决于模板allegro虽然也支持两种单位但文件里通常混合使用。我自己就吃过亏——AD里一个焊盘写的是“2mm”到了allegro里因为模板是mil直接输入2后实际变成了2mil尺寸缩水了近40倍。所以每次新建焊盘和封装时第一步必须是看右下角的坐标/单位提示确认单位是mm还是mil。allegro里单位精度设置建议到4位小数避免输入1.27这种间距时出现累计误差。5.2 热焊盘与Anti Pad缺失问题前面提过AD的焊盘模型没有Thermal Relief和Anti Pad概念。手工重建时很多人只设置了Regular Pad导致大面积铺铜连接时焊盘和铜皮“全连接”散热过快导致虚焊或者负片层间距不足导致短路。正确做法是给所有连接电源或大地的通孔焊盘都配上Thermal Relief和Anti Pad。在allegro的Padstack Editor中这两个参数位于Spoke和Anti Pad列Spoke数量一般选4Spoke宽度取焊盘宽度的20%~30%。5.3 阻焊开窗与助焊层差异AD的焊盘属性里阻焊开窗默认比焊盘大2.5mil或0.1mm不同版本有差异助焊层默认与焊盘等大。allegro的Padstack里SOLDERMASK_TOP仍然需要手动输入比Regular Pad大的数值PASTEMASK_TOP则等于Regular Pad。如果你在allegro里设置阻焊开窗与焊盘等大板厂会默认放大或按最小开窗处理倒也不会报废但BGA类器件可能出现开窗过大的问题导致焊接时桥连风险。标准做法是单边扩0.1mm。5.4 特殊焊盘槽孔、金手指、异形焊盘AD里很容易画出椭圆孔和异形焊盘但allegro处理起来比较严格。椭圆孔需要定义Drill Slot和Slot Size参数异形焊盘则可能需要多个Shape组合不能简单地用单个矩形代替。我在迁移一个DC插座的封装时就遇到这种情况AD里焊盘本体是“圆角矩形半圆弧”allegro里单焊盘文件没法表达这种形状。后来我的处理方式是把焊盘拆分成几个独立的Shape对象放到封装符号的Geometry层里再配合连接层处理电气连接。5.5 3D模型怎么处理AD封装可以关联STEP模型allegro也支持STEP模型关联。但直接导入的STEP模型在allegro里位置会偏移因为AD的模型原点通常不在器件封装原点。解决方法是先Place - 3D Body导入STEP再用右键Move调整到正确位置。如果你是强迫症希望在库里保存好3D模型坐标建议在Excel里给每个封装记录一个“模型原点相对于封装原点的偏移量”在脚本里统一设置不然一个个拖拽也是巨大的工作量。6. 迁移后的体检不只是能放上去还要能生产6.1 用Database Check做基础体检每个封装生成后我会在allegro里File - Open选择.dra文件然后执行Tools - Database Check。重点关注三类错误缺失焊盘引用、非法几何比如自相交线段、pin number重复。错误清零后再用Report菜单里的Symbol Report查看封装信息确认焊盘数量与真实器件手册一致。6.2 在测试PCB中批量验证建一个空PCB把迁移后的封装批量放到板子上每条网络随便连线跑一遍DRC。这一轮主要验证的是封装之间的间距、焊盘到板边的距离、以及丝印是否重叠。我这次迁移中发现有几颗连接器的丝印框小了一圈就是在这个环节被抓出来的如果直接进布线生产贴装时操作员多半会反馈丝印与实物不符。6.3 和AD原封装做“背靠背”尺寸对比这个土办法最有效。把AD原版封装导出一张DXF到11比例同时把allegro的新封装也导出一张DXF两张叠加对比。焊盘位置、丝印框、装配层边界任何偏差都能一眼看穿。对于高精度器件比如BGA和0.5mm间距的连接器这个方法能帮你快速发现0.05mm级别的坐标偏移。6.4 实战小结与个人建议跨工具的封装迁移最核心的其实不是一个“神奇工具”而是你对两套EDA系统的理解深度。AD侧重快速、直观allegro侧重规则和制造控制两者模型不同生搬硬套必然出问题。我这次最终的路线是官方导入当参考 半自动脚本批量建库 逐项检查修正虽然前期花了两三天写Excel和脚本但后面整个库交付得很顺手后续新增器件也积累了一套模板化的建库流程。最后分享一个小技巧allegro的手工建库宏录制功能是真的好用建一个简单封装时顺手录一次宏以后同类封装全都可以靠这个宏改参数批量输出。别一上来就想搞复杂的Skill程序先用宏把流程跑通再逐步往工程化方向演进这才是大多数硬件工程师最务实的路径。
返回列表