ARTICLE DETAIL

资讯详情

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

Cadence元件库实战:从符号到封装再到CIS数据库管理

Cadence元件库实战:从符号到封装再到CIS数据库管理 很多刚接触 Cadence 的朋友拿到软件后第一件事就是想赶紧画原理图、摆封装、出光绘结果一打开新建工程反而蒙了元件库在哪怎么建为什么别人的原理图里元件都带 PCB Footprint、厂家料号和仿真模型而我放出来的电阻就是一个光秃秃的方块这篇内容就是专门解决“Cadence 元件库到底是个什么东西、应该怎么建、怎么管、怎么用”这个问题。我会基于目前主流的 Cadence 16.6、17.2、17.4 版本结合 OrCAD Capture 原理图工具和 Allegro PCB 工具来拆解。无论你是学生、刚转岗的硬件助理还是想规范团队库管理的硬件主管这篇文章都值得花十分钟看完。里面涉及的不只是“点哪里建库”更多的是我这些年实际踩坑踩出来的经验比如为什么封装导不进 PCB、为什么仿真时报器件未定义、CIS 数据库的 ODBC 数据源到底怎么配。这些内容常规教程很少讲全。1. 元件库的整体认知Cadence 的库到底包含什么1.1 原理图符号、PCB 封装与关联属性的关系先建立一个最基础的认知Cadence 的元件库不是一个“文件”而是一整套“描述一个元件需要哪些信息”的体系。具体拆开看至少有这几层原理图符号库.olb 文件这里的元件符号表示逻辑关系比如引脚号、引脚名称、门电路内部结构等。画原理图时从 .olb 里调用的符号决定了你图纸上看的“样子”。PCB 封装库.pad 焊盘文件 .psm 封装文件这是给 Allegro PCB 用的。封装定义了元件的物理尺寸、焊盘大小、丝印、装配层等信息。关联属性Value、PCB Footprint、Manufacturer、Part Number 等一个完整的元件必须把原理图符号、PCB 封装、BOM 属性串起来否则后面做 PCB 导入、导出物料清单时一定出问题。理解这一层之后再看网上很多人说的“Cadence 元件库怎么用”其实问的是两层问题一层是“画原理图时从哪里调符号”另一层是“画完原理图怎么把元件映射到 PCB 封装”。这两个问题必须分开解决。1.2 个人库和团队库该怎么规划很多人习惯把公司公共目录下的 .olb 文件复制到自己电脑上或者干脆在自己本地 D 盘建了一堆杂乱无章的库文件。短期看是能画图时间一长就会发现这个电阻在这个工程里叫 R0603在那个工程里叫 RES_0603封装更是五花八门。这些问题本质上不是工具不会用而是库的规划出了问题。我比较推荐的做法是这样本地个人库用于学习和小项目目录下区分 Symbol、Footprint、Datasheet 三个子目录。团队库必须放在服务器或共享盘上有专人维护按元件类别划分分立器件、连接器、集成电路、电源模块等。库中每个元件必须包含原理图符号、PCB 封装、数据手册、属性模板包括厂家、料号、单价、是否替代料等。这样规划的好处是任何时候新项目启动直接调用公共库不需要重复造轮子而且导出的 BOM 可以直接用于采购和贴片不用再人工整理。1.3 和 Cadence HDL、Virtuoso 库的区分搜索热词里能看到不少人搜“cadence hdl库”和“cadence virtuoso”。这里说清楚避免混淆。Cadence 产品线里做原理图捕捉的至少有两条线一条是 OrCAD Capture也有叫 Capture CIS 的这是大多数硬件工程师用的另一条是 Design Entry HDL简称 DEHDL是传统上用于团队大型项目、和后端流程结合更紧密的工具。它们的元件库格式不同、界面不同、甚至连设计思路都有差异文章里讲的元件库如果不特别说明都是指 OrCAD Capture 和 Allegro 这一套流程。而 Virtuoso 主要用于模拟集成电路设计IC 设计它的库体系又是另一个世界常见的有 analogLib、gpdk 工艺库等。你要是做芯片设计搜“Virtuoso 元件库”才有意义要是做板级硬件就别把精力花在那边。2. 原理图符号库从创建到规范化2.1 新建符号库和元件的完整步骤先说原理图符号库怎么建。在 Capture 里通过 File - New - Library 新建一个 .olb 文件然后右键这个库文件选择 New Part就能进入符号编辑界面。需要注意的几件事Part Name 一定要和后续元件命名规则一致比如 EEPROM_24LC02、RES_0402、CON_DSUB9。不要用中文不要用特殊字符。Part Reference Prefix 要正确电阻填 R电容填 C芯片填 U连接器填 J。这个前缀在画原理图时自动编号填错会导致位号混乱。PCB Footprint 属性要在这里先填一个默认值。比如你建的是 0402 电阻PCB Footprint 属性就写 R0402。这个属性和封装库里的封装名必须完全一致包括大小写否则后面导网表、导入 PCB 时会出大问题。编辑符号时用 Place Pin 放引脚。引脚间距建议默认用 100mil 网格不要随意改小。引脚命名方面电源引脚叫 VCC、VDD、VSS、GND信号引脚按数据手册命名。这里有个经验引脚的编号必须和封装焊盘编号一一对应比如数据手册第 3 脚叫 SDA原理图符号的第 3 脚也必须是 SDA顺序错了后面对应关系全乱。2.2 引脚规划和电源地的处理技巧高中低频电路对符号引脚排列的要求不太一样但有一条通用原则尽量让引脚分布和数据手册一致同时方便原理图阅读。不要做成长条状把所有引脚一字排开最好按照功能分区左侧输入、右侧输出、上面电源、下面地。这样原理图画出来可读性高评审和调试的时候心情也好。电源引脚有两种处理方式一种是直接画出来可见另一种是隐藏起来靠全局电源符号自动连接。两种做法我实际都用过给个建议对于数字芯片VCC 和 GND 如果数量多比如 FPGA、DDR 芯片隐藏引脚并用电源符号统一连接原理图会干净很多。对于模拟芯片电源引脚通常和去耦电容的位置强相关建议可见方便 layout 参考原理图时理解电源滤波路径。隐藏引脚不是不连接而是在 Edit Part 里做好 Power Pins 标记并填好 net name。很多初学者画完原理图跑 DRC 时报一大堆“GND has no driver”或者“VCC floating”多半就是隐藏引脚没设置对。这个坑几乎人人必踩提前了解能省很多时间。2.3 处理 intersheet references 报错和跨页引用热词里有“cadence 添加 intersheet references 报错”这个让我印象很深。Capture 里跨页连接器Off-page Connector后面有个功能叫 Intersheet References用来在图纸上自动标注某个网络是从哪一页来的、要到哪一页去。用 Place Off-Page Connector 放好连接符之后执行 Add Intersheet ReferencesCapture 会自动帮你加页码标注。但这个功能报错很常见常见原因有几个某根网络在原理图上只有一端连了 Off-Page Connector另一端漏了软件无法配对。网络名不一致比如该连的写成了 SPI_CS另一页写成了 SPI_CS0。原理图分页编号没有设置好有些页 Title Block 里的页码为空。层次式设计中跨页引用不能跨越不同层次的模块只能在同一层级中使用。遇到报错我的排查顺序是这样的先看错误列表里报的是哪个网络名回到原理图用 ShiftS 高亮所有同名网络再全局检查 Off-Page Connector 数量确保所有跨页网络至少有两个连接符最后看一眼 Title Block 里 Page Count 和 Page Number 是否填写正确。90% 的情况都出在这三点上。3. PCB 封装库从数据手册到 PCB 落地的关键步骤3.1 焊盘尺寸的计算逻辑创建 PCB 封装之前必须先把焊盘Pad做好。Allegro 里焊盘文件是 .pad 后缀独立于封装文件存在。焊盘做错后面封装做得再漂亮都是白搭。焊盘尺寸不是拍脑袋定的常用的依据是 IPC 标准和实际焊接工艺。简单说焊盘长宽至少要比引脚宽度宽出一个“可焊接余量”。以贴片电阻电容为例比如 0603 封装的焊盘尺寸常见的经验值是焊盘宽度 元件端子宽度加 0.2mm 到 0.4mm。焊盘长度 元件端子长度加 0.2mm 到 0.5mm具体视焊接工艺而定。如果是直插元件钻孔直径 引脚直径加 0.2mm 到 0.3mm焊盘外径一般是钻孔直径的两倍左右。打样的板厂一般会要求你控制最小焊盘和最小孔径所以开封装前最好先问清楚板厂的能力参数别等发板了才改封装。Allegro 里新建焊盘用 Pad Designer选好单位一般用 mm设置钻孔尺寸、焊盘各层尺寸。初学者最容易犯的一个错是只设置了 Default internal 层而忘了设置 Soldermask阻焊层和 Pastemask钢网层结果做出来的板子该露铜的地方被阻焊盖住或者贴片机上不了锡。这三个层在 Pad Designer 里必须都有尤其注意我的习惯是阻焊层焊盘比焊盘大 0.1mm 左右钢网层焊接盘大 0.1mm 左右。3.2 封装创建的实操流程焊盘文件准备好之后用 Allegro Package Editor 创建封装。具体到 Allegro 17.4 里打开 Allegro Package Designer 后可以通过 File - New选择 Package Symbol输入封装名。需要注意的步骤Setup - Design Parameters 里先设置单位和精度确保和焊盘文件一致。放置焊盘Layout - Pins在 Options 里选择做好的焊盘文件输入引脚编号按坐标放置。这一步务必仔细每个引脚都要按数据手册的推荐焊盘图案来放。添加丝印Add - Line 画元件外框放在丝印层Silkscreen Top。注意丝印线不要压在焊盘上否则会影影约约影响外观。添加装配层和 Place Bound 区域这是很多新手忽略的一步。Place Bound元件占地区域在自动布局和干涉检查时会用到必须在 Assembly Top 或 Place Bound Top 层画好大小一般比元件实体外轮廓大 0.5mm 左右。封装命名也要有规则。我见过最乱的项目里同一个连接器封装叫法有七八种CONN_2P、J2、USB_5P、USB_MINI_5P、USB_MICRO_B。这里强烈建议统一一下比如使用“类型_引脚数_关键特征”的命名方式J_USB_MINI_5P、J_HDR_2X5_2.54、R_0603、C_0805、D_SOD123。命名规则确定后团队成员之间只要看封装名基本就能知道元件大概长什么样。3.3 封装名不一致导致无法导入 PCB 的排查原理图画好后生成网表然后在 Allegro 里导入网表时看不到元件或者一堆符号变成灰色无法放置绝大多数原因是原理图元件的 PCB Footprint 属性值和封装库里的封装名不一致。比如原理图里你写的是 R0603但封装库里叫 R_0603那一定对不上。而且 Allegro 对大小写敏感千万别以为 R0603 和 r0603 是同一个东西。解决办法很简单但很容易忽略打开 Capture 的原理图选中全部元件在 Edit Properties 里检查 PCB Footprint 这一列保证所有值都在封装库中存在。批量核对技巧把 PCB Footprint 列复制到 Excel和库目录下的文件列表做一次 VLOOKUP找出无匹配项。我每完成一个项目发板之前都会做这一步已经成了固定动作免得到了 PCB 才发现缺失封装临时补封装非常被动。另外一个相关的问题是封装库路径。Allegro 通过 Setup - User Preferences - Design Paths 里的 padpath 和 psmpath 来指定搜索目录。没有把共享库目录加进去的话就算封装文件在电脑里Allegro 也可能找不到。库路径配置好后建议重新启动 Allegro 再试因为部分路径设置需要重启才能生效。4. 元件库管理从手工维护到 CIS 数据库4.1 为什么要把元件属性做成数据库如果你只是自己画板元件库的维护可以简化.olb 文件和封装文件放本地就行。但如果团队里有好几个硬件工程师同时在用而且物料又要对接采购、PMC、贴片厂那靠人工在原理图里手动填厂商和料号效率低而且容易出错。Capture CIS 的 C 其实就是 Component Information System它的核心思路是把元件的原理图符号、封装、厂家、料号、单价、生命周期状态等信息统一存在一个数据库里。工程师画图时通过 CIS 界面按照条件筛选器件选中后放置到原理图上时所有属性自动带入。这样做的直接好处有两个从源头保证 BOM 的一致性不会出现“原理图上是这个料号采购按另一个料号买”的情况。方便做元件优选和替代料管理禁用物料、停产物料在数据库里标记好就没人会误用。CIS 数据库可以基于 Access、Excel、SQL Server 或 Oracle。小团队可以直接用 Access 或 Excel 搭一个轻量的库几十上百号人的公司建议用 SQL Server。4.2 配置 ODBC 数据源的全过程热词里有“cadence 怎么设置 odbc 数据源”这其实就是 CIS 数据库连接的关键步骤。很多人卡在这里是因为不知道 Capture CIS 读取数据库是要先通过 Windows 的 ODBC 管理器配置一个系统 DSN。以 Windows 10 加上 Access 数据库为例操作流程如下打开 Windows 的“ODBC 数据源管理器64位”注意Capture 是 32 位还是 64 位版本要选对应的 ODBC 管理器。64 位的 Cadence 对应 64 位 ODBC32 位的 Cadence 对应 32 位 ODBC弄反了一辈子配不上。在“系统 DSN”标签页点添加选择 Microsoft Access Driver填一个数据源名比如 CIS_ACCESS_DB。点选择按钮选中你的数据库文件.mdb 或 .accdb如果有密码还要在配置里填好。回到 Capture CIS打开 Options - CIS Configuration新建或修改配置文件把 Database 类型选为 ODBC然后在“Data Source Name”里填 CIS_ACCESS_DB。配置好 symbol、footprint 对应的数据库字段映射关系确定哪些列显示在 CIS 浏览器里。配置完以后打开 CIS Explorer 能正常读取到元件列表并且放置元件时能自动带入封装和属性就说明 ODBC 配置成功了。要是打开时提示“Database cannot be opened”或者查不到数据一般来说三个方向去查ODBC 位数和 Cadence 位数不匹配、数据库路径变了导致 DSN 失效、数据库文件本身有密码或损坏。4.3 BOM 导出时属性设置对流程的影响元件库管得好不好最后都会反映在 BOM 上。很多人导出的 BOM 只有位号和 Value没有器件型号、封装、甚至没有厂家料号。采购拿到这种 BOM 基本没法用。要让 BOM 信息完整本质上在建库时就要把对应属性做进去。我的建议是每个元件至少要包含这些属性Value标称值或型号比如 10K 0603、STM32F103C8T6。PCB Footprint封装名必须和封装库完全一致。Manufacturer原厂名。Manufacturer Part Number原厂完整料号。Supplier Part Number比如得捷、贸泽的订货号按公司需求决定是否需要。Minimum QuantityMOQ、Price如果需要采购参考可以加。在 Capture 生成 BOM 时选 Bill of Materials按自己需要勾选 Combined property string把需要的属性放进列表顺序排好。CIS 数据库的好处是这些属性在元件放置时就已经自动填好了手工建库的话就得靠设计者自觉维护。这也是为什么我一直劝大家有条件还是尽量把库做成 CIS 数据库一步到位。5. 常见问题与排查技巧实录5.1 报错“This application has quit unexpectedly”怎么处理Cadence 偶尔会不稳定尤其是复制元件、重开工程时会弹出“This application has quit unexpectedly. To help Cadence detect and analyze the problem...”这种提示。遇到这种崩溃提示先不要慌也不要立刻重装软件。出现这个弹窗的大概率原因有几种软件异常退出后残留了日志文件和临时文件某些库文件被占用显卡驱动兼容性问题环境变量路径配置错误。我的排查顺序先点“确定”关闭弹窗重新打开软件看能否正常进入。如果反复退出把当前工程目录下的临时文件删掉比如 Capture 产生的 .DBK 备份文件和 .cpm 文件。检查电脑上的用户环境变量名特别是 HOME、TEMP 等有些精简版安装没配好变量会导致绘图界面异常。更新显卡驱动并把 Allegro 的硬件加速关掉试试。很多绘图崩溃都是显卡驱动太新或太旧引起的。这里多说一句Cadence 这类 EDA 工具的稳定性受系统环境影响很大建议在专用工作机上只装必要的软件杀毒软件尽量关闭文件实时监控尤其不要用各种优化工具去清理注册表和临时目录不然很容易把授权文件或环境变量弄坏。5.2 仿真报“器件未定义”和瞬态不收敛的元件库根源热词里有“cadence仿真器件未定义”和“cadence瞬态仿真不收敛”。元件库在这两个问题里扮演的角色比很多人以为的要大。Pspice 仿真时如果提示某个器件未定义十有八九是这个元件没有对应的 PSpice 模型属性或者模型文件。Capture 里放置的每个仿真元件都要在 Model 属性里指定模型名并且模型库路径要能被全局找到。你可以这么做检查元件属性里有没有 PSpiceTemplate有没有 MODEL 和 PKGREF 等仿真相关属性。如果是自己从零画的符号要手动指定 PSpice 模型。简单器件可以在模型编辑器里写一个模型复杂芯片只能去找厂家提供的仿真模型文件。模型文件.lib 文件要在 Simulation Settings - Configuration Files 里加载或者添加到全局库路径。瞬态仿真不收敛Time step too small 之类的错误一是模型参数的问题二是电路本身的收敛性问题。这个可以从元件库层面改善的地方是确保电源和地符号来自正确的库确保所有信号都有明确的参考地避免悬空输入引脚。尤其很多自己画的芯片符号隐藏引脚没有正确接电源或地跑仿真时器件内部节点悬空就会出现奇异点导致不收敛。5.3 器件库文件与 PCB 封装导入的联动检查最后再讲一个非常头疼的问题网表导进去但是 PCB 里元件是空心的或者压根不显示。这往往是封装文件没找到。Allegro 导入网表后如果没有找到封装不会立刻把整个流程中断而是把没找到封装的元件记为 missing symbol放到未放置列表里。打开 Allegro看右下角消息窗口或者 Display - Status 里未放置元件数点鼠标右键选择 Show Element查看具体报错路径确认报错里写的封装名。然后做两件事确认封装文件确实存在于库路径下。确认 psmpath 和 padpath 配置正确特别是焊盘文件路径Allegro 找不到焊盘文件时封装即使存在也读不出来。我见过一个朋友折腾了半天的案例封装文件放在同一目录下但他是通过别人的工程复制过来的焊盘文件没复制全导致所有贴片元件的封装都开不出来只有直插元件正常。后来把整个 libraries 目录完整拷贝再指定路径问题立刻解决。所以如果有人给你传递封装库一定记得连同 pad 文件和 psm 文件一起给缺一个都不行。6. 元件库拓展参考开源资源与跨工具迁移现在网上有不少开源硬件项目的元件库比如一些开发板的完整 Cadence 工程可以直接从中复制成熟元件库尤其是常见连接器、电源芯片这类自己画容易出错的器件。做这件事的时候有两点要提醒从开源工程里复制的元件不要直接当标准库用。先检查封装命名是否符合你的规则再核对引脚定义和数据手册是否一致。开源项目虽然经过测试但不同软件版本之间可能会有兼容性问题毕竟别人画的也可能有笔误。跨工具迁移也常见。比如用 KiCad 的元件库转到 Cadence或者在 AD 和 Cadence 之间相互转换符号和封装。这类转换没有官方的一键方案大多需要借助第三方工具或者脚本处理。转换后务必要仔细抽查几个关键元件的引脚编号和焊盘位置不要整个库直接拿来用否则很容易出现某个引脚下错位置板子直接报废的情况。我的经验是库这个东西“拿来”可以“白嫖”不行。就算用了开源资源也一定要按照自己的规范过一遍把它变成自己的库。这个流程看起来费时间实际上是在给后面的设计过程买保险。7. 写在最后建库这件事值得认真对待我在实际做项目的过程中越来越觉得Cadence 元件库的管理水平很大程度上决定了硬件开发的效率。有些团队能在两个星期内完成一块功能复杂的板子不是因为他们原理图画得有多快而是库做得好——所有元件调出来就能用封装不会错BOM 不用返工仿真模型齐备PCB 导入一次成功。反观一些项目拖了很久大部分时间不是在画图而是在跟元件较劲这个封装缺了那个器件没有模型BOM 对不上料号……这些问题几乎都能追溯到建库阶段没有下功夫。所以做项目的时候别把建库当杂活。花点时间把你的元件库建好、验证好、管理好这对整个开发流程的影响比多掌握几个快捷键大得多。如果现在你的库还比较乱建议从下一个项目开始按照文中的思路重新整理一套规则先立规矩再扩充器件用两三个项目迭代下来库就能逐渐稳定和好用了。
返回列表