ARTICLE DETAIL

资讯详情

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

Cadence Capture CIS元件库建立与管理:以K9F2G08U0M NAND Flash为例

Cadence Capture CIS元件库建立与管理:以K9F2G08U0M NAND Flash为例 搞硬件的人心里多半都有过这样一个画面项目赶进度原理图库却乱成一锅粥。新来的同事从共享盘里随便拖了一个电容符号封装写成0603结果BOM一出料号对不上你想用一颗NAND Flash翻遍内部库只找到一个“大概差不多”的符号引脚类型全是PassiveDRC一跑全是警告。这种问题太常见了尤其是在Cadence Capture CIS这种库管理自由度很高的工具里规则定不好后面全在还债。今天我不讲虚的就用手头一颗非常典型的存储器件——三星K9F2G08U0M单颗NAND Flash48脚TSOP封装带你从零走一遍在Cadence Capture CIS里建库、整理、接入CIS数据库的完整流程。顺便聊聊大家特别关心的“AD封装库原理图库”转Cadence的思路。这颗芯片在路由器、机顶盒、工控板里到处都是拿它当样板既能把库管理的套路讲透又能实际落地到项目里。1. 库管理到底管的是什么先看清Cadence Capture CIS的库体系很多人第一次用Capture画原理图会有一个很直观的困惑为什么别人建的库用起来那么顺手自己建出来的符号总感觉不对劲其实大多数问题不是画图手法的问题而是没搞明白Capture这套库体系背后的逻辑。1.1 Capture CIS的库与AD的库有什么不一样用过Altium Designer的朋友应该知道AD里很多人习惯把封装库和原理图库打包在一起用集成库IntLib的方式来管理。这个方式单机用很舒服拖出来就能画符号和封装自动关联。但到了团队协作环节问题就出来了集成库的更新、权限控制、版本管理都得额外操心时间一长共享文件夹里就会出现一堆“最终版”“最终版2”“新建文件夹”这样的库文件谁也不确定哪个能用。Cadence的思路不一样。Capture CIS把“符号”和“数据”拆开原理图符号放在.olb文件里负责“画得对”封装信息、料号、厂商、价格这些放到后端的CIS数据库里负责“查得准”。一个符号对应多个厂商物料或者一个物料对应多个符号都能在规则层面处理而不是靠人肉碰运气。对团队来说这个拆法的好处是画原理图的人只管调用符号采购和BOM的人去维护数据库各干各的互不干扰。还有一个容易被忽略的差异AD里的原理图符号对引脚顺序的要求相对宽松Capture则要求引脚编号必须和实际封装一一对应。这个差异在从AD迁移的时候尤其明显后面section 4我会详细讲。1.2 原理图符号、仿真模型、CIS数据库分别是什么角色Cadence Capture CIS体系里有三类文件最容易混淆我见过很多刚入门的朋友把.olb和.lib搞混然后到处问为什么原理图放不进去。文件类型作用常见扩展名使用场景原理图符号库存放元件符号用于原理图绘制.olb画原理图时从库里放Part仿真模型库存放PSpice仿真模型.lib做模拟仿真、信号完整性分析CIS数据库配置连接外部元器件数据库定义字段映射.dbc通过CIS菜单放置器件并带出属性设计文件原理图本身.dsn实际电路设计简单理解.olb是“脸面”决定元件在原理图上长什么样.lib是“内功”决定仿真时怎么算CIS数据库是“档案室”决定元器件从哪来、有什么属性。一个元件入库这三样完全可以分开维护但最终在原理图里要能通过某种方式关联起来。1.3 为什么选K9F2G08U0M当样板K9F2G08U0M是三星一颗2Gbit的NAND FlashTSOP-48封装3.3V工作电压8位I/O口。这颗芯片在嵌入式产品里非常常见但它的引脚数量多功能又不复杂非常适合用来演示“按功能分组建库”的思路。更关键的是NAND Flash这种器件有一个特点地址、数据、命令全部复用同一组IO口。这个特性会逼着你去认真对待每一个引脚的Type属性而不是偷懒全部选Passive。如果你能把K9F2G08U0M的库建明白以后再建单片机、DSP、FPGA这类复杂器件流程就是一样的套路。还有一个原因它是单逻辑器件。所谓单逻辑器件就是指一个封装对应一个原理图符号不需要像74HC00那样把一个封装拆成四个门电路Part。单逻辑器件的建库流程是其他所有复杂器件的基础先把这一步走通比什么都有用。2. 动手建库K9F2G08U0M原理图符号全流程建库这件事我最深的体会是画符号只占整个工作量的两成剩下的八成都在前期的资料整理和后期的属性维护上。很多新手一上来就打开软件画框、放引脚画到一半发现引脚分配错了又得重来。2.1 建库前先看数据手册把引脚整理成Excel表拿到K9F2G08U0M的数据手册不要急着画图。先把数据手册翻到“Pin Configuration”或者“Pin Description”那一章把48个引脚全部抄到表格里。这一步看似笨拙实际上是最能避免返工的环节。我整理引脚表至少会包含这几列引脚编号引脚名称类型功能描述网络归属备注以数据手册为准IO0Bidirectional数据/地址/命令复用Data[0]引脚数量以实际封装为准以数据手册为准CLEInput命令锁存使能Control需接控制器以数据手册为准nCEInput片选低有效Control注意上拉以数据手册为准VCCPower电源Power3.3V以数据手册为准VSSGround地GND—以数据手册为准NCPassive空脚—建议保留这张表就是整个建库的“图纸”。后面画符号、填属性、写CIS数据库全部围绕这张表展开。有了它你随时可以对照检查不会漏脚也不会搞错类型。2.2 引脚分组从48个引脚里理出逻辑模块K9F2G08U0M的48个引脚虽然多但归完类其实只有四组数据面IO0~IO78根双向地址/数据/命令复用。这部分放在符号的左侧按顺序排列方便后面连总线。控制面CLE、ALE、nCE、nRE、nWE、nWP、R/B7根。前六个都是输入R/B是输出开漏使用时通常要接上拉电阻。这部分放右侧逻辑清晰。电源地VCC、VSS若干。放顶部或底部用Power/Ground类型。空脚NC引脚。单独放一个区域类型设为Passive。在Capture里画符号时引脚顺序不需要和封装物理顺序一样但引脚编号Pin Number必须和封装一一对应。这也是Capture比某些工具严格的地方你可以在符号上把IO0放在左上角但它的Number必须和数据手册一致。2.3 在Capture CIS中创建.olb并绘制符号打开Capture CIS按下面这几步走就能把一个符号建出来。第一步File New Library创建一个新库。在项目管理器里右键这个库选New Part。第二步在弹出的窗口里填Name为“K9F2G08U0M”Part Reference Prefix填“U”Parts per Pkg填1。这里“Parts per Pkg”就是前面说的“单逻辑器件”概念如果一个封装里有多个功能单元比如六反相器74HC04就填6K9F2G08U0M这种一个封装只有一个完整功能的就填1。第三步用Place Rectangle画一个外框。外框大小不用太讲究能放下引脚就行一般画个宽4格、高8格左右的矩形就够用。第四步Place Pin放引脚。每次放置都会弹对话框里面有几个关键属性Name引脚名称比如IO0、CLENumber引脚编号必须和数据手册一致TypePin Type决定DRC时的连接规则Shape引脚形状普通信号选Line时钟信号可以选Clock第五步按照第二步的分组把IO口放在左侧控制脚放右侧电源地放顶部或底部。放的时候注意Pin Spacing默认100mil就行太小了原理图会显得拥挤。第六步逐个设置Type。这是最核心的一步我直接给出一份可以参考的配置引脚Type理由IO0~IO7Bidirectional数据双向传输CLE/ALE/nCE/nRE/nWE/nWPInput都是控制器输出的控制信号R/BOutput器件状态输出开漏VCCPower电源引脚VSSGround接地引脚NCPassive无电气连接第七步保存文件得到K9F2G08U0M.olb。到这里符号的“形”就算完成了。2.4 属性填充让符号不只是“光秃秃”的方块画完符号只是完成了一半。真正体现库管理水平的是元件属性有没有填完整。在Part上右键选Edit Properties把下面这些属性至少填清楚ValueK9F2G08U0MManufacturerSamsung三星Manufacturer Part NumberK9F2G08U0MPCB FootprintTSOP48要和PCB封装库里的名字完全一致Datasheet数据手册链接这里要特别提醒一个坑Capture里元件的封装靠的是PCB Footprint这个属性字符串去关联Allegro里的封装名。如果你的Allegro封装库里的焊盘文件叫tsop48.psm而你在原理图库里填的是TSOP48大小写不一致导入网表的时候就会报“footprint not found”。所以建库之前最好先统一封装命名规则或者在填的时候跟Layout工程师确认过。属性填得越规范后面生成BOM、做物料选型越省事。我在项目里见过不少“符号画得漂漂亮亮、属性全空”的库结果Layout同事拿到网表后只能哭着去猜封装这就是典型的前期偷懒后期填坑。3. 库组织的核心方法论让库从“能用”变得“好用”一个库能用和好用完全是两个概念。能用是指你拖出来一个元件引脚没错能连线好用是指团队里任何一个工程师拿到同一个库都能快速找到想要的器件属性完整BOM准确DRC一次通过。要达到好用的程度必须在三个层面下功夫命名、结构、数据库。3.1 命名规范一劳永逸的关键决策命名规范这件事越早定越好。一旦库里的器件数量超过几百个再回头改命名就是一场噩梦。我比较推荐“类型规格关键参数”的写法。举例来说器件类型命名示例说明电阻R-0402-10K-1%封装-阻值-精度电容C-0603-100NF-50V封装-容值-耐压NAND FlashU-K9F2G08U0M-48PIN器件名-引脚数连接器CON-HDMI-19P类型-名称-引脚数符号名、封装名、CIS数据库里的MPN三者的命名规则也要提前统一。我在实际项目里定的规矩是原理图符号用“器件型号全称”封装用“封装类型尺寸”数据库里用“厂商型号”。这样每个器件有三个层面的标识各管各的不会混。3.2 目录结构库文件应该怎么放库文件不能全堆在一个文件夹里。按我踩过的坑来看最稳的目录结构是“公司级公共库项目级私有库”两层。公司级公共库存放标准器件比如电阻、电容、二极管、常用逻辑芯片这类器件所有项目通用由专人维护只有维护人员有写入权限。项目级私有库存放项目定制的器件比如主控芯片、专用连接器、定制电感项目结束后经过评审再合并到公共库。在Capture项目管理器里可以同时加载多个.olb文件所以我建议把一个.olb文件按器件大类拆分比如Resistor.olb、Capacitor.olb、IC.olb、Connector.olb。每个文件里再按厂商或系列用Part命名前缀区分。不要把所有器件塞到一个“MyLib.olb”里文件大了以后打开卡顿不说多人同时编辑还容易冲突。3.3 CIS数据库从“翻库”升级到“查库”Capture CIS最值钱的功能就是这个“CIS”。它本质上是通过ODBC连一个外部数据库Excel、Access、SQL Server、Oracle都行然后在原理图里通过Place Database Part直接查询并放置器件放置的同时自动带入所有属性。配置流程不复杂但步骤多我简单梳理一下。第一步准备数据源。最简单的方式是Excel在Excel里维护一张物料表每个器件一行列包括Manufacturer、MPN、Value、Footprint、Description、Price、Stock等。把文件存成.xlsx后在Windows的ODBC数据源管理器里添加一个Excel数据源注意32位和64位的坑Capture如果是32位的ODBC也得配32位。第二步在Capture里配置CIS。从Options CIS Configuration进入新建一个DBC文件选择ODBC数据源然后把Excel的列映射到Capture的元件属性。第三步保存DBC配置后从Place Database Part打开数据库浏览窗口输入K9F2G08U0M就能查到这颗料选中放置后原理图里的元件自动带上所有数据库属性。这个流程走通之后原理图库就彻底从“文件夹里翻文件”升级成了“数据库里查器件”。关联AD封装库原理图库的管理方式对比起来AD的集成库是“先封装好再调用”CIS数据库则是“先查数据再关联”后者更贴近电子制造企业里物料管理的真实逻辑。4. 从Altium Designer迁移到Capture CISAD封装库和原理图库的转换思路这几年从Altium Designer转到Cadence的团队越来越多原因不外乎几个团队规模大了AD的版权成本高PCB设计复杂度上来了Allegro的约束规则和仿真能力更专业或者是客户指定要Cadence格式的交付文件。不管哪种原因大家最头疼的问题基本都是同一个AD封装库原理图库怎么转过来。4.1 为什么说AD的库不能直接“搬”过来AD的集成库IntLib是把原理图符号、PCB封装、3D模型、仿真模型打包在一个文件里用起来确实方便。但Cadence这边是分开管理的原理图符号归Capture管.olbPCB封装归Allegro管.psm/.pad两者靠网表里的封装名字符串关联。这意味着即便你在AD里把一切都做好了也没法一键导入Cadence直接变成可用的全套库。能直接导入的只有一部分较新版本的Capture支持File Import Altium导入AD的原理图设计文件导入过程中会尝试生成.olb原理图库。但实测下来这个导入对简单元件还好遇到复杂器件就会出现引脚类型丢失、属性映射错乱、隐藏引脚处理不干净的问题。所以我的建议是AD设计文件可以作为参考导入但最终还是要按照Capture的规则重新检查和修正。4.2 AD原理图库转Capture的具体步骤就我自己的经验靠谱的转换路线是这样的第一步在AD里打开原来的原理图库文件SchLib导出一份引脚清单。AD里可以用Reports Component Report或者直接复制Components面板里的引脚表格把所有引脚名称、编号、类型导出成Excel。第二步拿到这个Excel后按照本文section 2里的流程在Capture里重建符号。这一步看起来繁琐但实际上很多团队现在就是这么干的与其指望不靠谱的自动转换不如拿一份干净的引脚表手动重建。对于阻容感这类无极性元器件重建一个符号只需要一两分钟复杂芯片可能要一小时但换来的是干净可靠的库。第三步处理PCB封装。AD的.PcbLib没法被Allegro直接打开。常见做法是在AD里把PCB封装做一个“导出”生成中间格式再到Allegro里导入。以IPC-2581或者ODB这种中间格式为例在AD里把封装库转成PCB文件再导成IPC格式最后在Allegro的File Import里选对应格式。如果你的公司有正版Cadence还可以用OrCAD PCB Designer自带的Altium导入向导成功率会高一些。4.3 转换后的核对清单每次我做完库迁移不管过程多顺都会给自己列一个核对清单挨个打勾之后再正式发布给团队原理图符号的引脚编号与原始封装是否一一对应每个引脚的Type是否正确尤其是电源和地是否有隐藏引脚隐藏后在DRC时网络是否正确PCB Footprint属性文字是否和Allegro里的封装名完全一致封装焊盘尺寸、原点位置、丝印层是否与数据手册一致器件属性里是否带上了厂商、料号、Datasheet链接这个清单看起来基础但每一步都有人跳过然后翻车。尤其是“隐藏引脚”这一步AD和Cadence的处理方式差异大最容易出问题。5. 常见问题与排查技巧实录建库和用库的时间长了总会遇到一些反复出现的坑。我把自己在实际项目中踩过的一些典型问题整理成速查表简单直接希望能帮大家少走弯路。5.1 引脚类型设错导致DRC误报最常见的问题就是引脚Type设置不对。比如把IO口设成Input结果在原理图里连了双向数据总线DRC就会报“Output connected to Input”之类的警告。反过来如果所有引脚都设成PassiveDRC就形同虚设什么问题都检查不出来。我的建议是严格按照器件真实电气特性来设有输入有输出的设Bidirectional纯控制信号设Input开漏输出设Output。如果你的库里Passive类型的引脚占比很高就要警惕了说明建库的人当时图省事这种库在复杂项目里埋雷的概率极大。5.2 隐藏电源地引脚的坑Capture里可以把Power和Ground类型的引脚设置为隐藏Pin Visible不勾选这样在原理图上不显示但是连到同名网络上。听起来很方便但坑在于如果两个不同器件的隐藏电源脚名字不一样比如一个是VCC一个是3.3V它们就不会被连接到同一个网DRC却不一定能报出来。我见过一个真实案例一块板子上某颗芯片的电源脚叫VDD其他所有芯片的电源网络都叫VCC结果整板有一半电源没有连上上电冒烟。解决这件事没有捷径建库时统一电源脚命名并且把隐藏引脚的网络关系在设计评审时专门核对一遍。5.3 CIS数据库连接不上CIS配置完成后Place Database Part打开报错十有八九是ODBC数据源的问题。最常见的是32位/64位不匹配。Capture如果是32位的你就要在“管理工具”里找到32位的ODBC管理器一般在C:WindowsSysWOW64odbcad32.exe添加数据源而不是用默认的64位管理器。另外CIS数据库不推荐多人同时写Excel容易锁表。团队用的话建议至少放到SQL Server或者用Access再不行也要放到共享盘上并约定好更新时段。5.4 库文件冲突与备份.olb文件是二进制的Git和SVN对它的diff支持很差两个人都改了同一个库文件合并时基本只能靠手动覆盖。所以我的建议是把大库拆小、按模块分文件并且规定同一时间只能由一个人编辑某个.olb改完上传时写清楚版本说明。备份上定期把整个库文件夹压缩归档不要只依赖网盘同步因为网盘同步有时候会把之前的错误版本同步回去。5.5 封装名与Footprint不匹配这个在section 2.4提过但这里再强调一下。Capture里元件的PCB Footprint属性是一段字符串Allegro导入网表时用它去找对应封装。如果你有两个封装名字看起来一样但一个是A另一个是aAllegro直接报错。如果你填的封装名在封装库里不存在也会报错。解决办法是建库的时候就制定一张“原理图库封装名与Allegro封装名对照表”由负责建原理图库的人和负责PCB封装库的人核对无误后再签字发布。这种看似繁琐的流程恰恰是防止低级错误最有效的手段。最后再分享一个我自己的习惯每次新建器件库我都会在确认全部步骤走完之后再把原始的引脚Excel表和库文件一起归档用日期和版本号命名。比如K9F2G08U0M_20250101_V1.olb。这样过几个月哪怕出了什么问题也能回头查到当初建库的依据。这套流程看起来慢但实际坚持下来库会越用越顺手项目的图纸质量也会跟着提升不少。
返回列表