ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Allegro 17.4封装库导出与复用实战:从依赖打包到路径配置

Allegro 17.4封装库导出与复用实战:从依赖打包到路径配置 做Allegro 17.4的PCB设计最让人心里发虚的时刻不是布线不是出Gerber而是换电脑、开新项目、或者临时要把板子交给同事时发现封装库带不全打开设计到处是找不到焊盘、找不到symbol的报错。Allegro的封装库不像某些工具那么“集中”它是由多个文件类型拼起来的一套体系平时画板的时候感觉不到它的存在一旦要导出、归档、复用麻烦就全冒出来了。这篇内容就围绕Allegro 17.4里封装库的导出和复用把我实际跑过的流程、踩过的坑、最后沉淀下来的那套操作讲清楚。不管你是刚接触Cadence的新人还是在团队里负责建库和归档的老手都适用。很多人觉得导出封装库嘛就是把整个库文件夹拷给别人就行了实际上这个做法在Allegro里非常不可靠。因为你画板时用到的封装可能来自本机多个库路径有公司公共库的有项目专属库的还有临时改的。别人拿到你的拷贝路径对不上照样打不开。好在这个问题Allegro自己是有解的就是File菜单下的Export Libraries功能。我大概在两年前开始用17.4大规模做项目从那时候起把导出、复用、归档的流程彻底理顺了今天完整拆开来讲。1. 导出封装库前先搞清楚Allegro的库到底由什么组成1.1 一个完整封装涉及的5类文件Allegro里所谓“封装库”并不是一个文件而是一组配套文件。每个放在PCB上的封装符号至少牵扯到下面几类东西symbol文件扩展名是.psm这是封装符号本身包含了引脚的相对位置、丝印、装配层、位号、器件高度等信息PCB上放置的每一颗料最终调用到的就是.psm。焊盘文件扩展名是.pad描述每一个引脚的焊盘尺寸、钻孔大小、层叠、热风焊盘连接方式等。一个封装里有几个引脚就对应几个焊盘文件。flash symbol扩展名是.fsm也就是动态散热焊盘通常叫thermal relief在电源层和地层连接的铜皮上用这种动态花焊盘来连接引脚避免大面积铜皮散热太快导致焊接不良。封装源文件扩展名是.dra它是封装编辑器的源文件用Package Symbol Editor打开后才能修改封装.psm是由它生成出来的。还有一个容易被忽略的东西就是device文件。在早期Allegro和OrCAD的流程里device文件用于描述逻辑封装和物理封装的对应关系虽然现在大部分流程已经弱化device文件但老项目里遇到“Device Not Found”的报错基本都是它的问题。所以当你说“帮我导个封装库”时专业的回应应该是问清楚要.psm还是.pad还是连.dra源文件一起给。只拷一个.psm别人顶多能在PCB上放置这个封装但没法修改它也没法补焊盘和flash。1.2 为什么说“拷贝board文件”不等于“有了封装库”有些工程师图省事换电脑或者交接项目的时候直接把.brd文件发过去觉得我能打开你应该也能打开。这是典型的误区。Allegro在打开.brd文件时是根据你当前机器的psmpath封装符号路径、padpath焊盘路径去逐个查找元件引用的库文件的。如果目标机器上没有对应路径下的.psm和.pad系统就会报错提示找不到symbol或者打开后元器件变成没焊盘的“幽灵”状态。换句话说.brd文件里保存的只是封装符号的“引用关系”不是封装数据本身。想要PCB文件在别的电脑上能100%还原必须把用到的所有库文件一并带上并且让对方把这套库添加到他的库路径里。这也是导出Libraries这个操作存在的核心价值它能把设计里真正用到的所有封装、焊盘、flash文件从各个分散路径里“收拢”到一起输出成一套完整可迁移的目录。1.3 导出Libraries功能到底帮你做了什么Allegro的File → Export → Libraries本质上就是一个依赖打包工具。指定它从当前打开的设计里分析所有元件的引用关系然后自动把这些引用到的symbol、padstack、flash symbol复制到你指定的输出目录。导出的文件会按类型分好.psm文件、.pad文件、.fsm文件各归各的目录同时还会生成一个log文件里面记录了整个导出过程有没有遗漏、有没有失败项。这个log很多人不看实际上它是检查导出是否成功的唯一硬指标。我自己的习惯是每次都把log清掉重导一次然后确认最后一行没有WARNING和ERROR才罢休。2. 动手之前的准备环境检查、路径规划和方案选型2.1 先梳理当前设计的库依赖清单不要一上来就输出先看一眼当前设计到底用了多少个封装、多少种焊盘。方法很简单打开.brd后用Tools → Reports这个功能生成一份Symbol Report或者Library Report。这类报告会列出当前设计使用的所有封装名称、焊盘名称、flash名称相当于一张“依赖清单”。拿到清单后你就能大致预估导出的内容规模。如果一个板子有200个器件symbol数量可能有100种出头pad数量通常比symbol多比如qfp封装有4种焊盘bga可能有十几种pad。这些信息后面用来核对导出目录是否齐全非常有用。我一般会把这份报告存成txt放进导出目录里作为归档的一部分。2.2 目录规划一个建议的库归档结构导出封装库不是把文件乱糟糟丢到一个文件夹就算完。Allegro查找库文件靠的是路径规则所以目录结构越清晰后面复用越省心。我自己在项目里强制用下面这个结构项目名/ libraries/ symbols/ pads/ flash/ source/ # 放.dra源文件可选 manufacturing/ # 放Gerber、坐标、BOM等实际导出时我会把输出目录直接指到libraries下让Allegro自动生成symbols和pads这些子目录。如果某些.dra源文件需要额外拷贝就放到source目录里。这样整个项目移交给别人时只需要把libraries目录整个发过去再让对方把这三个子目录的路径加进库路径即可干净利落。2.3 从设计导出还是从库文件导出Export Libraries对话框中有一个关键选项Export From里面有Design和Library两种源头。很多人第一次看会疑惑我到底该选哪个。选Design的意思是从当前打开的板子里提取所有被引用的库文件不管这些库原来分散在什么位置都会复制过来。这是我最常用的方式因为它最贴合实际需求板子里用到的就是我要导出的没用到的不搬省时省力。选Library的意思是从一个现成的库文件本身去导出这个操作常见于维护标准库的场景。比如你拿到一个公司统一库的.psm想把它和它的焊盘、flash配套导出给其他项目用就可以切到Library模式然后手动指定库里的符号文件。普通layout工程师日常用不到这个模式了解即可。2.4 导出方案的选型建议我用一张表把常见的几种封装库交付场景和推荐做法列出来你可以直接对照着选。场景推荐做法说明换电脑继续画同一个板子File → Export → Libraries从Design导出导出当前板用的全套库随.brd一起带走项目归档未来可能改版导出Libraries 额外备份.dra源文件只有.psm的话改版会很痛苦公司内部共享标准库用Library模式从公共库导出可以按封装名重新组织目录交给打样厂/装配厂通常只需要.brd和Gerber不必给库除非对方要求做DFM分析同步给同事做评审导出Libraries placement文件方便对方无报错打开板子3. 快速导出封装库17.4版实操步骤3.1 File → Export → Libraries面板参数逐项讲在17.4里操作路径很直接先打开需要导出封装库的.brd文件确认没有报错然后点菜单File → Export选择Libraries弹出导出对话框。对话框顶部最显眼的就是Export From区域默认是Design通常保持默认即可。下面的选项复选框里和我们相关的有这么几组Placement这个选项会同时导出一个文本格式的元件坐标文件后缀通常是.txt或.plc里面记录的是位号、封装名、X坐标、Y坐标、旋转角度、所在面。很多工程师只把它当成SMT贴片用的坐标文件实际上它在布局复用里也有大用后面第4章会详细说。Symbols导出封装符号.psm文件必选。Padstacks导出焊盘文件.pad必选。Flash Symbols导出散热焊盘文件.fsm。如果板子的电源层、地层有大面积铜皮连接这个必须选否则对方打开板子后相关引脚在电源层上会显示异常。注意对话框下方还有一个Output Directory这里要指定输出目录我建议直接选到项目目录下的libraries文件夹。如果目录不存在Allegro会提示你创建与否确认创建即可。3.2 我惯用的一套导出勾选组合我导出库时基本固定勾选Placement、Symbols、Padstacks、Flash Symbols四项。有时候项目比较小连flash都没有勾上也无所谓反正没有就不会生成。输出目录里还会产生一个log文件这个文件虽然不参与后续使用但务必保留。log里面记录了导出过程中的所有信息包括复制了哪些文件、哪些symbol找不到源文件、哪些焊盘缺失等。如果你的板子里曾经引用过已经被删除或移动的库文件导出后log里会直接给出告警这时候就要回到原设计修复库引用而不是硬着头皮往下走。输入文件名称前缀那一项如果没有特殊要求就留空。Allegro导出时会以设计文件名为基础来生成相关文件我自己不太喜欢额外加前缀因为加前缀可能导致symbol名称和封装内的调用名不完全一致给后续排错增加干扰。3.3 导出后如何验证文件是否齐全导出完成后别急着关对话框先点开log看一眼再回到资源管理器里数一数文件。第一个检查项log里有没有ERROR。任何ERROR都要处理常见的有“Padstack xxx not found”、“Symbol xxx not found”这表示设计里引用了库文件但Allegro在当前环境路径里找不到它。解决办法是先把缺失文件找回来或者把原来的库路径临时加到User Preferences里再重新导出。第二个检查项文件数量是否和之前用Reports生成的依赖清单对得上。比如清单里列了127个symbol导出的symbols目录里就应该有127个.psm。少了任何一个都要追查原因。从实际经验看最容易少的是flash文件因为不是所有器件引脚都用到flash有时被忽略了但这恰恰是回归出来的板子在负片层出问题的根源。第三个检查项关键封装是否能够独立打开。随机挑几个复杂封装用Allegro的Package Symbol Editor打开.psm文件确认引脚焊盘引用正常、丝印完整。如果是包含BGA、DDR、连接器这类复杂封装的板子这一步值得做我遇到过一次DDR封装导出的.psm引用的焊盘路径还是原来机器上的绝对路径导致对方打开后焊盘尺寸变成默认值的情况。3.4 顺带导出一份器件坐标和BOM导出Libraries时勾选了Placement之后得到的.txt坐标文件不要只当贴片文件用。我一般会把它和BOM一起放进归档目录。原因很简单项目改版或者做仿真分析时经常需要把原始坐标和物料清单对照着看这两份东西放在一起省得到时候到处找。关于BOMAllegro 17.4可以直接在Tools → Reports里生成也可以用OrCAD Capture那边关联导出来。真正归档的时候我更推荐从原理图导出BOM因为PCB上只能看到已经放置的器件有些DNP不贴装或后来修改过的器件还是原理图信息最准。坐标文件从PCB导出BOM从原理图导出组合在一起就是一套完整的生产交接资料。4. 在新设计里复用封装库路径配置与调用4.1 把库文件“安放”到新项目里的几种方式拿到一套导出的封装库后要让它在新项目里生效不是把文件放在C盘就算完关键是让Allegro知道去哪找。Allegro查找库文件的机制是按路径列表依次寻找所以你可以把库文件放在多个位置只要路径列表里有就能被引用。个人项目库放在本机适合单兵作战。简单粗暴直接把整个libraries目录放到项目文件夹下再在User Preferences里指定路径。公共标准库放在服务器或公共盘所有工程师共享。适合团队协作但需要注意文件访问速度和权限问题我之前见过公共盘网络波动导致打开板子时库加载不全的情况。项目锁定库放进项目svn/git仓库版本跟着项目走。最推荐的方式封装库和原理图、PCB一起版本控制任何人检出后路径一致不容易出错。4.2 配置padpath、psmpath、flashpath的关键步骤Allegro里的库路径配置在Setup → User Preferences弹出后找到Design Paths这个类别展开就能看到三个关键项Pad Path对应焊盘文件.pad的搜索路径。PSM Path对应封装符号.psm的搜索路径。Flash Path对应flash符号.fsm的搜索路径。这三个路径在配置时有一个容易踩的坑Allegro的路径匹配是“先到先得”如果同一个封装名在多个路径下都存在它默认使用先找到的那个而不会提示你冲突。所以配置路径时要把项目专属库放在列表靠前的位置公共库放后面避免项目里改了封装却被公共库里的旧版本覆盖掉。保存User Preferences后建议关掉当前设计重新打开一次.brd再执行一次Reports验证确保所有封装都能正常解析。有时候路径配了但没生效是因为Preferences有两个作用域一个是home目录一个是当前项目优先级不同。我习惯在home级别配置公共库路径在项目级别配置项目专属路径这样冲突小很多。4.3 在OrCAD/Allegro环境里关联新库很多人把封装库导出和复用理解成“文件放对了就行”但做完整流程时原理图那边的Footprint属性也得同步对上。OrCAD Capture里每个器件都有Footprint属性这个属性的值必须和封装库里的.psm文件名称完全一致。Allegro在导入网表时就是靠这个属性去psmpath里找对应封装。所以新项目复用封装库的正确顺序是把导出的库文件放到项目目录并配好psmpath和padpath。在OrCAD Capture里确认或修改每个器件的Footprint属性填写封装名。生成netlist导入Allegro这时候Allegro会自动根据库路径匹配并放置封装。如果网表导入时报“Gateway Device not found”或“Symbol not found”一类的错多半是psmpath没找到对应的.psm首先要检查的就是封装名是否多了一个空格、大小写是否一致。4.4 如果要复用整机布局placement文件怎么用导出Libraries时带出的placement文件除了给贴片机用还有一个高级玩法在新板子上恢复整机布局。假如你有一个标准化的电源模块或者背板布局想在新的空白板子里快速摆出和原来一致的位置关系可以利用Allegro的File → Import → Placement功能选择之前导出的.txt坐标文件按位号把器件放到指定坐标。需要注意导入placement时如果新板子和原板子的原点、板框位置不一致坐标会整体偏移。我的处理方式是在导入前先把新板子的原点和原板子设置为一致或者把坐标文件里的坐标整体加一个偏移量。这个操作对电源模块、MCU最小系统、DDR走线区域的复用特别有用可以把一个成熟项目的核心部分搬到新项目里省掉大量手动摆放时间。5. 封装库复用路上的坑问题与排查技巧实录5.1 放置元件时提示找不到封装或Symbol这种报错在新项目里非常常见尤其是刚拿到同事导出的库时。第一个检查点psmpath里有没有把你放库的目录加上。很多人把.psm文件拷到了项目文件夹但psmpath里压根没有这个目录Allegro当然找不到。第二个检查点文件名和原理图Footprint属性是否完全匹配。Allegro对大小写不区分但对空格和符号敏感比如属性填的是R0402文件实际叫R_0402那就会报错。这种肉眼很难看出来我一般会把原理图生成的网表文件和目录下的.psm文件名用文本对比工具过一遍一秒钟就能发现问题。5.2 焊盘或Flash丢失焊盘显示成空心或报错现象是板子能打开封装也有但某个引脚没有焊盘或者在负片层上出现异常连接。这种九成是padpath和flashpath配置不全导致的。Allegro在加载封装时读到.psm文件里的引脚信息后会根据引脚名去padpath里找对应.pad文件如果找不到它不会立刻让你打不开板子而是用一个默认焊盘顶替或者直接不显示焊盘等你出光绘时才炸出来。所以导库的时候一定要连.pad和.fsm一起导出配置路径时也要把pads目录和flash目录分别加到padpath和flashpath里。不要试图把.pad文件放到symbols目录然后只配一个psmpathAllegro不会自动跨类型去找。5.3 库文件read-only封装无法更新用17.4时间长了会遇到一个很烦的情况从版本库检出或者从公共盘复制来的.dra文件和.psm文件带了只读属性封装编辑器打开后标题栏会出现read-only标记所有修改保存不了。解决办法分两步。如果只是文件系统只读在资源管理器里右键去除只读属性即可。如果文件属性正常但在Allegro里仍然只读多半是目录权限问题比如公共盘上你只有只读权限这时候把文件复制到本地workspace目录再改。有些公司在流程管理工具里做了文件锁定比如Cadence的Library Manager之类的环境这时需要先check out文件再修改。顺带提一句导出Libraries操作本身不受只读影响因为它只是读取和复制但如果源文件只有只读权限复制出来后的文件可能仍然保留只读属性需要在导出目录里统一去掉否则后面复用时会很被动。5.4 想要替换单个封装别硬删很多工程师问“Allegro怎么替换单个封装”这里要区分两个需求。如果你的封装改版了焊盘尺寸或丝印调整过了在PCB上希望全部或者部分器件刷新成新版封装正确操作是Place → Update Symbols然后选择Package symbols勾选你想更新的封装名再点Refresh。更新时注意Options面板里的选项比如是否保留位号位置、是否更新焊盘、是否保留铜皮连接这些别全勾容易把板上微调过的丝印位置全部打乱。如果你是要把一个封装类型换成完全不同的封装比如要从插接件换成贴片连接器那就不要用Update Symbols硬换。因为封装变了引脚数和引脚名都变了网络连接关系可能匹配不上强行替换会让你原有走线、铜皮全部乱掉。更稳的做法是回到原理图修改Footprint属性重新生成网表再导进来。这个流程虽然麻烦但不会留下隐性问题。5.5 库路径配好后重启失效以及和OrCAD对不上路径配置好当时没问题重启Allegro之后又找不到库了。这种通常出现在把路径配在了当前项目级别的Preferences里而项目文件换过位置或者配置文件没有写入权限。我的建议是统一在home级别的User Preferences里维护公共库路径项目专属库路径则写进项目启动的env文件里然后用快捷键启动环境时自动加载。另一个容易对不上的情况是和OrCAD Capture关联。有时候PCB这边库路径完全正常但OrCAD的Capture.ini里配置的库路径却是旧地址一生成网表Footprint属性匹配到的是旧库里的封装导致PCB导入网表时反复找不到文件。遇到这种问题干脆把Capture.ini里的路径统一成新库目录两边的Footprint名称以psmpath里实际存在的文件为准来核对。5.6 常见问题速查表我把上面涉及的问题整理成一张速查表方便你出问题的时候对照处理。现象大概率原因快速处理放置时报Symbol not foundpsmpath未配或封装名不匹配加路径核对名称引脚无焊盘padpath未配或pad文件缺失补导出.pad配置padpath负片层表现异常flash文件缺失补导出.fsm配置flashpath封装只读无法修改文件或目录权限受限去除只读复制到本地同一封装版本不对多个库路径下存在同名文件调整路径顺序项目库优先重启后路径失效配到项目级而非home级在home级Preferences里配更新封装后走线乱Update Symbols选项勾选过多只勾需要更新的内容导入坐标整体偏移板子原点不一致统一原点或做坐标偏移6. 这几次折腾之后我的个人习惯现在每做一个新项目我会在项目创建当天就把libraries目录结构搭好路径配置写进home环境里后面画板过程中有新封装入库版本管理都跟着项目走。板子第一次投板回来、确认功能和工艺都没问题之后我会花十分钟做一次Archive用File → Export → Libraries把当前设计用到的全部封装、焊盘、flash导出一份连同坐标文件和BOM归档到项目服务器上。这个动作短期看似乎有点多余但遇到改版、换电脑、同事接手、客户要参考设计的时候你就知道多值了。别人还在那里对着报错信息一个个找缺失文件你直接把整个库目录发过去打开板子干干净净。Allegro 17.4的封装库导出并不是什么高深功能之所以很多人用不好多半是没搞懂整套文件的关联关系。把.psm、.pad、.fsm、.dra这一套逻辑理清楚再配合上规范的目录和路径配置这个工具就能成为你项目流程里最省心的一个环节。最后再分享一个很小的技巧导出Libraries之后在输出目录里建一个README.txt把导出的时间、源设计文件版本、使用的Allegro版本、封装的命名规则写进去。不用写太长几行就行。过了半年你回头翻归档目录就知道这个习惯能省多少回忆成本。
返回列表