我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

Cadence BOM导出全流程:从原理图属性到Excel实战

Cadence BOM导出全流程:从原理图属性到Excel实战 1. 为什么BOM导出这件事值得单独写一篇画完原理图只是完成了硬件设计的一半剩下那一半里把BOM准确无误地导出来交给采购和产线是每个硬件工程师都绕不过去的坎。我见过太多项目卡在这个环节原理图看着没问题导出的BOM里封装列全是空的采购拿着表去询价供应商回一句你这个型号对应什么封装然后就是来回扯皮。更离谱的是有一次小批量试产BOM里某个电容的封装写的是0402实际焊盘画的是0603贴片机直接抛料整条线停了两个小时。Cadence这里主要说的是OrCAD Capture CIS和Allegro这套工具链的BOM导出功能其实很强大但它的强大建立在你前期把属性填对了这个前提上。很多人用Cadence画图很熟练一到导BOM就抓瞎根本原因是没搞清楚Capture里的属性体系和Allegro里的封装体系是怎么对应的。这篇内容就是把这个链路从头到尾捋一遍从原理图属性填写、到BOM模板配置、到Excel后处理、再到常见报错的排查全部走一遍。不管你是刚接触Cadence的新手还是用了几年但BOM总是靠手动整理的老人应该都能从里面找到能直接用的东西。核心关键词先摆出来Cadence、BOM、原理图、Excel、PCB_Footprint。这几个词贯穿全文后面每个环节都会围绕它们展开。2. 导出前的准备工作属性体系先理清楚2.1 Capture里的关键属性到底有哪些在动手导BOM之前你得先明白Cadence Capture里一个元件身上挂着多少属性。打开一个原理图页面双击任意元件弹出的属性编辑器里能看到一堆字段。很多人只填了Value和Reference然后就觉得完事了这是BOM出问题的根源。对于BOM导出而言真正核心的属性是这几个Reference位号比如R1、C2、U3。这个不用多说必填。Value值比如10k、100nF、STM32F103C8T6。这是采购最关心的信息之一。PCB Footprint封装名比如R0402、C0603、LQFP48。这是和Allegro对接的关键字段也是BOM里最容易出问题的一列。Part Number或叫Part_Number、PN物料编号很多公司用内部编码比如RES-10K-0402-1%。这个字段不是Cadence默认就有的需要自己建。Description描述比如贴片电阻 10kΩ ±1% 0402。Manufacturer和Manufacturer Part Number原厂和原厂料号批量采购时非常重要。Tolerance、Voltage、Power等这些是可选属性但对于某些品类比如电容的耐压、电阻的功率是必须的。注意Cadence默认的元件库比如Discrete库里很多元件只带了Reference、Value、PCB Footprint这三个属性。Part Number、Manufacturer这些需要你在建库或者画图时手动添加。建议在项目初期就统一规划好属性模板不要等到导BOM时才发现缺字段。2.2 属性在哪里填、怎么批量填单个元件填属性很简单双击就行。但一个板子上几百个元件一个个填是不现实的。Cadence提供了几种批量处理的方式第一种用Spreadsheet批量编辑。在Capture里选中整个页面CtrlA然后右键选择Edit Properties会弹出一个类似Excel的表格界面。所有元件的所有属性都在这个表里你可以像操作Excel一样批量复制粘贴。这个功能我用了很多年效率极高尤其是从别的项目复制属性的时候。第二种用Update Properties功能。如果你的属性信息存在外部文件里比如一个Excel表可以通过Tools菜单下的Update Properties把外部文件的信息导入到原理图中。这个功能适合已经有完整物料库的团队。第三种在元件库层面就把属性建好。这是最根本的解决办法。在建立原理图符号Symbol的时候就把Part Number、Manufacturer这些属性作为默认属性加进去。这样每次从库里调元件属性自动带出来不需要重复填写。缺点是前期建库工作量大但一劳永逸。2.3 PCB Footprint字段的填写规范PCB Footprint这个字段值得单独拿出来说因为它是原理图和PCB之间的桥梁也是BOM里最容易出错的地方。这个字段的值必须和Allegro里实际使用的封装名完全一致。比如你在Allegro里用的电阻封装叫R0402那原理图里就必须写R0402不能写0402也不能写RES0402。大小写敏感一个字符都不能差。我建议在项目开始前先和PCB工程师确认好封装命名规范然后把这个规范写成文档所有人在填原理图属性时都参照这个文档。常见的命名规范是这样的元件类型封装命名示例说明贴片电阻R0402、R0603、R0805R尺寸代码贴片电容C0402、C0603、C0805C尺寸代码钽电容TC-A、TC-B、TC-CTC壳号电感L0603、L0805L尺寸代码ICLQFP48、QFN32、SOP8封装类型引脚数连接器HDR-2X5-2.54类型排数间距提示如果你的公司有自己的封装库命名规范优先遵循公司规范。上面这个表只是一个通用参考。关键是全项目统一不要出现同一个封装有两种写法的情况。3. 从原理图导出BOM的完整操作流程3.1 使用Bill of Materials功能导出Cadence Capture里导BOM的入口在Tools菜单下叫Bill of Materials。点开之后会弹出一个配置窗口这个窗口里的选项决定了你导出的BOM长什么样。先说要填的几个关键位置Header和Line Item这两个是定义BOM表头和行内容的。Header定义的是每一列的表头文字Line Item定义的是每一列对应的属性名。比如你想让第一列是位号就填{Reference}第二列是值就填{Value}第三列是封装就填{PCB Footprint}。花括号是Cadence的变量语法必须带上。Combined Property String这是最核心的配置项。它决定了BOM里每一行显示什么内容。一个典型的配置是这样的{Reference}\t{Value}\t{PCB Footprint}\t{Part Number}\t{Description}这里的\t是制表符用来分隔不同的列。导出成Excel后制表符会自动变成列分隔。Combined Property String的进阶用法如果你想把多个元件的位号合并到一行比如10个10k电阻合并成一行位号显示为R1,R2,R3...R10需要在配置里勾选Combine identical items或者类似的选项。具体选项名称在不同版本的Cadence里可能略有差异但核心逻辑是一样的。3.2 导出格式的选择Cadence的BOM导出支持多种格式最常用的是CSV和Excel.xls。我的建议是优先选CSV原因有两个一是CSV是纯文本不会因为Excel版本不同出现兼容问题二是CSV可以用任何文本编辑器打开排查问题时更方便。导出CSV后用Excel打开时要注意一点如果Value字段里有逗号比如10k, 1%CSV会把它当成列分隔符导致列错位。解决办法是在导出时把分隔符改成制表符Tab或者在Excel里用数据-分列功能手动指定分隔符。如果你直接导Excel格式Cadence会调用本地的Excel组件生成文件。这种方式的好处是格式基本不用调坏处是如果本地Excel版本和Cadence的兼容性不好可能会导出失败或者格式错乱。我遇到过几次导Excel直接卡死的情况后来就一律用CSV了。3.3 导出后的Excel后处理CSV导出来之后直接交给采购是不行的还需要做几步处理第一步检查封装列是否完整。按PCB Footprint列排序看看有没有空值。空值意味着这个元件在Allegro里找不到对应的封装必须回去补填。第二步检查位号是否有重复。用Excel的条件格式或者公式查重确保没有两个元件用同一个位号。位号重复在原理图里可能不会报错但到了PCB阶段就是灾难。第三步合并同类项。如果导出时没有自动合并可以在Excel里用数据透视表或者手动整理把相同Value和封装的元件合并成一行位号用逗号隔开。这一步能大幅减少BOM行数方便采购询价。第四步补充采购信息。根据公司的物料库把Part Number、Manufacturer、Manufacturer Part Number这些字段补全。如果公司有ERP系统这一步可能是导入ERP后自动完成的。第五步格式化。加上公司Logo、项目名称、版本号、日期、页码等信息调整列宽和字体让BOM看起来专业一点。这一步看似不重要但一份整洁的BOM能减少很多沟通成本。4. 常见问题与排查技巧实录4.1 封装列为空或显示错误这是最常见的问题没有之一。表现是导出的BOM里PCB Footprint列要么是空的要么显示的是PCB Footprint这个属性名本身而不是值。原因通常有三个一是原理图里确实没填这个属性二是属性名拼写不对比如写成了PCBFootprint或者pcb footprint三是属性填在了错误的层级上比如填在了Part层面而不是Instance层面。排查方法在Capture里选中元件打开属性编辑器确认PCB Footprint这个属性有值。如果值是空的补填即可。如果属性名不对用Spreadsheet批量修改。如果是层级问题在属性编辑器里切换到Instance视图看看值是不是在那里。实操心得我习惯在画完原理图后先导一次BOM做检查专门看封装列。这个时候发现问题还来得及改等到PCB layout阶段再发现就麻烦了。4.2 位号重复或缺失位号重复的情况通常出现在复制粘贴元件的时候。比如你复制了一个电阻R1粘贴出来的新电阻可能还是叫R1如果没有及时重新编号就会重复。Cadence提供了自动编号功能在Tools菜单下的Annotate里。可以选Reset part references to ?先全部重置再选Incremental reference update重新编号。编号规则可以自己定比如按从左到右、从上到下的顺序。位号缺失的情况比较少见但如果你在原理图里放了元件但没有分配位号显示为R?、C?导BOM时这些元件可能会被忽略或者显示为问号。解决办法同样是跑一次Annotate。4.3 同一元件在BOM里出现多行这种情况通常是因为元件的某些属性不一致。比如两个10k电阻一个的Tolerance是1%另一个是5%Cadence会认为它们是不同的元件分成两行显示。如果你希望它们合并成一行需要确保所有用于区分元件的属性都一致。在BOM配置里可以指定哪些属性参与合并判断。默认情况下Cadence会根据Value和PCB Footprint来判断是否合并但不同版本的默认行为可能不同。我的建议是如果两个元件的电气参数确实不同比如精度不同就应该分成两行不要强行合并。采购需要知道这个区别。4.4 导出的CSV用Excel打开乱码这个问题通常是编码格式引起的。Cadence导出的CSV默认可能是ANSI编码而Excel在某些语言环境下默认用UTF-8打开就会乱码。解决办法用记事本打开CSV另存为时选择UTF-8编码然后再用Excel打开。或者在Excel里用数据-从文本/CSV导入手动指定编码格式。4.5 常见问题速查表问题现象可能原因解决方法封装列为空属性未填或拼写错误检查并补填PCB Footprint属性位号重复复制元件后未重新编号运行Annotate自动编号同一元件多行显示属性不一致统一属性或调整合并规则CSV乱码编码格式不匹配转换为UTF-8后打开导出失败Excel组件兼容性问题改用CSV格式导出元件缺失位号未分配或被过滤检查Annotate状态和导出过滤条件5. 进阶技巧让BOM导出更高效5.1 建立公司级的BOM模板如果你在公司里负责硬件设计流程强烈建议建立一个标准的BOM模板。这个模板里预定义了所有需要的列、表头格式、公司Logo位置等。每次导BOM时只需要把CSV数据粘贴进去格式自动套用。这个模板可以是一个Excel文件里面用宏或者公式自动完成合并、查重、格式化等操作。我之前的团队就做过这样一个模板把原本需要半小时的BOM整理工作压缩到了五分钟。5.2 用脚本自动化处理如果你会一点编程可以用Python或者VBA写脚本自动完成CSV的读取、清洗、合并、格式化。比如用Python的pandas库几行代码就能完成BOM的合并和查重。import pandas as pd # 读取Cadence导出的CSV df pd.read_csv(bom_raw.csv, encodingutf-8) # 按Value和Footprint分组合并位号 df_grouped df.groupby([Value, PCB Footprint]).agg({ Reference: lambda x: ,.join(sorted(x)), Description: first }).reset_index() # 导出整理后的BOM df_grouped.to_excel(bom_final.xlsx, indexFalse)这段代码的逻辑很简单读CSV按值和封装分组把位号合并成逗号分隔的字符串然后导出Excel。实际使用时可以根据公司的字段需求调整。5.3 和Allegro的交叉检查BOM导出后最好和Allegro里的封装做一次交叉检查。方法是在Allegro里导出网表Netlist然后对比网表里的封装名和BOM里的封装名是否一致。如果不一致说明原理图里的PCB Footprint字段填错了。这个检查在项目后期尤其重要因为一旦投板封装错误意味着整个板子报废。我一般会在投板前做三次检查原理图DRC一次、BOM对比网表一次、Allegro DRC一次。6. 一些踩过的坑和最后的建议说几个我实际踩过的坑希望能帮你省点时间。第一个坑属性名大小写。Cadence的属性名是大小写敏感的PCB Footprint和PCB footprint是两个不同的属性。如果你在BOM配置里写的是{PCB Footprint}但原理图里填的是{PCB footprint}导出来就是空的。这个坑我踩过不止一次后来养成了统一用Cadence默认属性名的习惯。第二个坑多页面原理图的位号冲突。如果一个项目有多个原理图页面不同页面里的元件位号可能会冲突。比如第一页有个R1第二页也有个R1。Cadence在导BOM时会把它们当成同一个元件导致BOM里少了一个电阻。解决办法是在项目级别运行Annotate让Cadence统一分配位号。第三个坑隐藏属性的丢失。有些元件属性在原理图里是隐藏的比如Manufacturer如果导出时没有勾选包含隐藏属性这些信息就不会出现在BOM里。所以在BOM配置里要确保所有需要的属性都被包含。最后一个建议BOM导出不是一次性的工作而是一个持续的过程。从项目开始就规范属性填写中间定期导出检查投板前做最终核对。把它当成设计流程的一部分而不是最后才想起来的一个任务。这样能避免绝大多数BOM相关的问题。另外如果你用的是Cadence 17.4或更高版本BOM导出功能有一些改进比如支持更灵活的模板配置和更好的Excel兼容性。如果还在用16.6建议至少升级到17.2体验会好很多。
返回列表