做个硬件设计的人应该都有过这种经历:原理图里放一个电阻,先去翻Excel表看有没有库存料号,再去资料盘里搜规格书PDF确认封装,最后还要到封装库找Footprint名,一个器件放下来五分钟就没了。OrCAD里的Capture CIS就是专门解决这个问题的,它把元器件所有信息——标称值、封装、符号、厂商、料号、规格书链接——全部集中到一个数据库里,设计者在原理图界面直接查询、过滤、放置,器件放到图纸上时属性就自动带全了。但CIS能不能跑起来,第一步并不是配置软件,而是把那个“数据库”准备好。最常用、最适合个人和中小团队的方案,就是用Microsoft Access创建一个.mdb数据库文件,再通过ODBC让Capture CIS去读它。
这篇文章我会完整走一遍我在实际项目中配库的全过程:从表结构设计、Access建库、ODBC数据源配置,到Capture CIS里建立数据库关联,再到符号和封装映射验证,最后是多人协作时的维护注意事项。每一步不光给你步骤,还会把“为什么这么做”和“最容易踩的坑”一起讲清楚。适合刚开始用Cadence CIS、或者已经装了CIS但一直没挂上数据库的人。
1. 为什么元器件库必须走数据库:CIS不是Excel的替代品
1.1 CIS的工作原理决定了“库”的形态
Capture CIS全称是Component Information System,它在OrCAD Capture里的定位很特殊:原理图编辑本身由Capture完成,但CIS是独立的一套器件管理系统。它的工作方式不是把元器件表塞进原理图,而是让设计者在放置器件时,从一个外部数据库中检索元器件记录,选中后CIS自动调出对应的原理图符号,并把数据库里的字段作为属性附加到该器件上。
这就带来一个硬性要求:CIS必须能稳定地、可过滤地、批量地读取外部数据。这里说的“外部数据”不是.txt,也不是Excel文件,而是能通过ODBC接口访问的关系型数据库。ODBC是Windows上跨程序访问数据库的一套标准接口,Capture CIS本身不直接解析.mdb文件,而是通过ODBC驱动去读。所以你会发现,后面所有配置的核心就是三个东西:.mdb数据库文件、ODBC数据源名(DSN)、以及CIS的配置文件(.dbc)。三者缺一个,CIS就报错。
1.2 Excel管理器件库的三个致命伤
很多工程师第一反应是用Excel当库,因为建表方便、能排序。我见过不止一个团队用几十兆的Excel管理几千种物料,刚开始还行,到后面必然出问题。
第一个是并发问题:Excel文件放在共享盘,一个人打开编辑,其他人只能以只读方式打开,想同时更新料号还要等别人关文件。更麻烦的是Excel意外崩溃后会留下锁文件,其他人连只读都打不开,最后只能让管理员去删.lock文件。
第二个是数据质量问题:Excel没有任何约束机制,同一个料号可以出现在两行,VALUE字段可以写成“10K”也可以写成“10 kΩ”,封装名有的带前缀有的不带。等这些数据进了CIS,原理图上就会出现两个长得不一样的“同一个器件”,BOM对不上封装,采购想骂人。
第三个是ODBC稳定性:Windows自带Jet/ACE驱动虽然可以读Excel,但CIS在反复查询、过滤时对Excel的稳定性非常敏感。库一大,查询就变慢,还经常出现“外部表不是预期的格式”这类报错,排查起来极费时间。
1.3 Access数据库和.mdb格式的定位
Microsoft Access是Windows自带的Office套件之一,它能创建真正的数据库文件,支持主键、索引、约束、SQL查询,这些正是CIS做可靠查询的基础。而.mdb是Access 2003及更早版本使用的文件格式,Cadence CIS的ODBC驱动对.mdb的支持非常成熟,所以网上的教程和官方文档里几乎都让你建.mdb。
这里有个细节你可能已经踩过:Access从2007年开始默认保存格式是.accdb,很多新装Access的人建完数据库发现后缀是.accdb,结果到CIS里选不到表或者驱动报错。虽然新版本Cadence也能兼容.accdb,但第一次做器件库,还是老老实实选.mdb最稳。方法是在Access里【另存为】时选择“Access 2002-2003格式(.mdb)”。还有一个很多人不知道的点:.mdb文件本质上是Jet数据库引擎的文件格式,Windows系统从XP到Win11都自带该引擎的旧版驱动,而.accdb需要额外安装ACE驱动,如果一台电脑没装全,库就打不开。
2. 动手建库:表结构和字段设计决定后面所有工序的效率
2.1 Access环境准备与新建数据库
建库本身没有太多门槛,任何版本的Microsoft Access都行,包括Microsoft 365里附带的Access。如果你电脑上确实没有Access,可以先去Office安装器里把Access勾选上,或者用Access Runtime免费版创建和编辑数据库,只是Runtime版界面精简一些,功能足够用。
打开Access后,选择“空白数据库”,文件名建议直接命名为CisComponents.mdb,保存路径可以放在一个专门的库文件夹,比如D:\CIS_DB\。这里提醒一句:不要把数据库放在桌面或C盘系统盘,一方面权限问题容易导致无法写入,另一方面重装系统时容易丢。建完后Access会自动生成一个名为“表1”的表格,不用管它,直接在左侧导航窗格右键删除,然后重新建表。
2.2 核心表结构:每个字段为什么存在
新建表时建议切换到“设计视图”(在Access主界面的“创建”选项卡里,点“表设计”)。设计视图中你可以精确控制每个字段的名称、数据类型、是否主键。我给项目设计的标准表结构如下,你可以直接抄:
| 字段名 | 数据类型 | 长度/说明 | 是否必填 |
|---|---|---|---|
| PART_NUMBER | 短文本 | 30,唯一器件编码 | 是 |
| VALUE | 短文本 | 50,标称值,如10K、100nF | 是 |
| FOOTPRINT | 短文本 | 50,PCB封装名 | 是 |
| SYMBOL | 短文本 | 50,原理图符号名 | 是 |
| MANUFACTURER | 短文本 | 50,制造商 | 否 |
| MFR_PART_NUMBER | 短文本 | 50,厂家料号 | 否 |
| DESCRIPTION | 短文本 | 255,功能描述 | 否 |
| DATASHEET | 短文本 | 255,规格书路径或链接 | 否 |
| STATUS | 短文本 | 20,Active/Inactive | 是 |
| LAST_UPDATE | 日期/时间 | —,最后更新日期 | 否 |
PART_NUMBER是这张表的灵魂,必须设为主键。CIS在查询、关联符号、生成BOM时都靠这一列作为唯一标识。主键的作用就是强制这一列不能重复,一旦重复Access会弹窗拒绝保存,这就从源头避免了Excel里料号重复的问题。
为什么要把VALUE、FOOTPRINT、SYMBOL这三列设为必填?因为在CIS的完整链路里,放一个器件到原理图上,VALUE会变成元器件的Value属性,FOOTPRINT会在生成网表时传给PCB Editor去调用封装,SYMBOL则决定CIS去哪个符号库里拉符号。这三项缺任何一个,器件都放不完整,后面排查错误会很痛苦。DATASHEET字段建议直接填PDF文件所在路径或者公司内部网页链接,这样在CIS界面里选中器件时,可以直接点击打开规格书,省去翻资料盘的时间。
2.3 字段命名和数据类型的具体避坑
字段命名是我踩过最多坑的地方。第一,绝对不要用中文列名。虽然Access和ODBC能支持中文列名,但CIS在生成SQL查询语句时对中文编码的处理有时会出幺蛾子,特别是在Cadence老版本上,报错还没什么明确提示。第二,列名不要带空格和特殊符号,比如“Part Number”这种名字,在SQL语句里必须写成[Part Number]加方括号,CIS的映射配置里容易弄错。建议全部用大写字母加下划线,PART_NUMBER、VALUE、FOOTPRINT,清晰又安全。
数据类型方面,所有文本字段都设成短文本而不是长文本。很多人喜欢把DESCRIPTION设成“长文本”类型,但Access的长文本对应ODBC的备注类型,CIS读取时偶尔会出现截断或不显示的问题。短文本的255字符上限对器件描述已经完全够用。PART_NUMBER长度设30其实也够,除非你们公司料号规则特别长。日期字段用“日期/时间”格式,以后做库存生命周期管理时可以直接按时间过滤“最近新加了哪些料”。
2.4 测试数据的准备工作
表结构建好后,先别急着录入几千行正式数据。我的经验是:先手工录入5到10条测试数据,覆盖不同类型的器件,比如一个0603电阻、一个SOT-23三极管、一个LQFP封装的主控芯片、一个接插件。这样在后面验证CIS全链路时,能快速发现符号库、封装库、字段映射中的问题,而不是等问题被几千行数据淹没。
测试数据里要特别注意FOOTPRINT和SYMBOL这两个值,它们必须和你们公司实际的封装库、符号库里的名字严格一致。比如PCB Editor封装库里叫R0603,那FOOTPRINT字段就填R0603,不要填成0603或RES_0603。大小写也要注意,Cadence封装库对大小写不敏感,但建议统一大写,省得以后麻烦。保存表时表名取CIS_COMPONENT,这个名字后面在CIS配置里要反复使用。
3. ODBC数据源配置:CIS访问.mdb的桥梁和经典大坑
3.1 为什么必须通过ODBC访问数据库
CIS没有内置的Access解析模块,它用的是微软在Windows系统层提供的ODBC接口。ODBC相当于一个翻译官:CIS说标准SQL语言,ODBC翻译成Jet/ACE数据库引擎能懂的指令,然后去读写.mdb文件。所以你要做的不是让CIS直接打开.mdb,而是在Windows里配置一个“数据源名称”(DSN),把DSN指向某个具体的.mdb文件,然后在CIS配置里填入这个DSN。
打个比方:.mdb文件是仓库里的一批货,ODBC数据源是一张出库单,上面写着“仓库位置:几号库几号架”,CIS凭着这张出库单去取货。如果出库单上的仓库位置写错了,或者货已经挪走了,CIS就报“找不到数据源”。理解了这一步,后面排查错误就有的放矢了。
3.2 32位和64位ODBC:最容易翻车的环节
新版Capture CIS虽然运行在现代操作系统上,但软件本身是32位程序。这是Cadence历史包袱造成的,直到目前大多数版本仍是32位。问题就来了:64位的Windows系统里有两套ODBC管理器,一套在C:\Windows\System32\odbcad32.exe(64位),一套在C:\Windows\SysWOW64\odbcad32.exe(32位)。32位程序只能调用32位的ODBC数据源,64位程序只能调用64位的。
很多人在64位的ODBC管理工具里配好了DSN,打开CIS却发现“Data source name not found and no default driver specified”(找不到数据源名称,且未指定默认驱动程序)。原因就是:你配的DSN是给64位程序用的,32位的CIS根本看不见。正确做法是运行C:\Windows\SysWOW64\odbcad32.exe,也就是从SysWOW64目录里打开ODBC管理器。你可以按Win+R键,直接输入完整路径,也可以先打开这个目录再双击。
判断自己打开的是哪个版本,可以看管理器标题栏:32位版会显示“ODBC数据源管理器(32位)”,64位版则没有“(32位)”字样。这个环节我建议写成团队操作手册的第一行,因为几乎每个新来的人都会在这里卡一次。
3.3 配置DSN的完整步骤
以64位Windows 10/11为例,完整的一次DSN配置流程是:
- Win+R,输入C:\Windows\SysWOW64\odbcad32.exe,回车打开32位ODBC数据源管理器。
- 切换到“系统DSN”选项卡,点“添加”。系统DSN比用户DSN范围更广,所有登录这台电脑的用户都能用,适合团队协作时统一环境。
- 在驱动列表里选择“Microsoft Access Driver (*.mdb,.accdb)”,如果你的电脑上显示的只有“Microsoft Access Driver (.mdb)”,也选它。点“完成”。
- 弹出的“ODBC Microsoft Access安装”对话框中,数据源名填CIS_DB,描述可空。
- 在“数据库”分组中点“选择”,找到之前创建的CisComponents.mdb文件,选中确认。
- 点“确定”保存这个DSN。此时回到管理器列表,能看到CIS_DB这一行。
- 可选步骤:选中CIS_DB,点“配置”,在数据库分组里可以点“测试”,系统会提示连接成功。
有一个细节:如果你的.mdb文件设置了打开密码,在“ODBC Microsoft Access安装”界面的“高级”里可以输入密码。但强烈建议器件库不要设密码,因为CIS在调用时,每次查询、刷新都要验证一遍密码,配置稍微有点问题就会失败。器件库的安全性靠文件系统权限控制即可,而不是靠Access的库密码。
3.4 驱动版本问题:Jet和ACE的区别
Windows自带的ODBC驱动列表里,有些电脑显示“Microsoft Access Driver (.mdb)”,这是老版Jet驱动,只支持.mdb格式。另一些装了Office 2013及以上版本的电脑,会显示“Microsoft Access Driver (.mdb, *.accdb)”,这是新版ACE驱动,同时支持.mdb和.accdb。两者都能用,但如果你在老版本Cadence上遇到“驱动程序不支持此功能”的报错,可以尝试换成ACE驱动。
ACE驱动一般在安装了完整版Office或单独装了Microsoft Access Database Engine时出现。如果系统里没有ACE驱动,可以到微软官网搜“Microsoft Access Database Engine 2016 Redistributable”下载安装。这里又一个经典坑:下载时要注意区分32位和64位版本。既然CIS是32位程序,就要装32位的ACE驱动,不然驱动装上了CIS还是找不到。
4. 在Capture CIS中建立数据库关联:从配置到放置第一个器件
4.1 打开CIS配置工具与新建配置
这一步是真正考验耐心的环节。在Windows开始菜单里找到Cadence文件夹,启动“Capture CIS”,注意别启动成普通的“Capture”,两者界面虽然看起来很像,但只有CIS版本才有数据库相关菜单。打开后新建一个空白原理图工程,或者直接打开一个已有工程,然后进入菜单栏【Options】→【CIS Configuration】。
CIS Configuration界面是一个独立的配置窗口,左侧是配置树,右侧是数据库相关选项。如果你是第一次配置,需要新建一个配置文件。点击【New】,先选择配置文件保存位置,Cadence默认的配置文件后缀是.dbc,这是Capture的数据库配置文件,不是数据库本身。建议把.dbc文件也放在D:\CIS_DB\目录下,和.mdb文件放一起,方便备份和迁移。
4.2 数据库连接参数的具体含义
在CIS配置界面里,需要填或选以下几组参数,我把每一组的含义解释清楚:
第一组是数据库类型。下拉菜单里能看到Oracle、SQL Server、Microsoft Access等选项,这里选Microsoft Access。
第二组是数据源名称。这里就是之前配置的DSN名CIS_DB。如果下拉列表里没有,先别急着强制输入,回到ODBC管理器检查是否用了32位版本、DSN是否创建成功。CIS这里读DSN列表时,只显示32位管理器中的条目。
第三组是表和标识列。表处选择CIS_COMPONENT,标识列(Identifier Column)选PART_NUMBER。这一列会在放置器件时作为唯一的记录标识,默认情况下CIS会把它映射为Part Number属性。
第四组是字段映射。CIS的配置界面里能维护一个映射表,将数据库字段映射到原理图器件属性。常见映射如下:
| 数据库字段 | CIS/原理图属性 |
|---|---|
| PART_NUMBER | Part Number |
| VALUE | Value |
| FOOTPRINT | PCB Footprint |
| SYMBOL | Symbol |
| MANUFACTURER | Manufacturer |
| MFR_PART_NUMBER | Manufacturer Part Number |
| DESCRIPTION | Description |
| DATASHEET | Datasheet |
映射完之后,当你在原理图上放置器件,这些属性会自动写入器件属性列表。没有映射的数据库字段不会出现在原理图上,但依然可以在CIS库里查询过滤。
4.3 符号库和封装库的映射设置
数据库配置只是第一步,CIS光有数据还放不出器件,它还要知道符号从哪里来、封装从哪里找。
符号库设置在CIS配置界面的“Symbol Libraries”或类似标签页里。点【Add】,选择你们公司原理图符号库文件(.olb)。注意这里有两种情况:如果你的数据库里有SYMBOL字段,并且每条记录都写明了对应符号名,那么CIS会根据符号名去这些.olb库中查找;如果SYMBOL字段留空,CIS会尝试用Part Number去匹配符号名。显然后者更容易出错,所以我前面才强调SYMBOL列必须填且必填。
封装库设置在类似“PCB Footprint”选项里。这里要指定PCB Editor的封装搜索路径,也就是.psm库文件的查找目录。CIS在生成网表后,PCB Editor会根据原理图器件上的Footprint属性去这些路径搜索对应封装文件。封装名和实际文件必须严格一致,否则PCB Editor在导入网表时会报“footprint not found”。
4.4 全链路验证:放置一个测试器件
配置完成后,保存.dbc文件。如果CIS弹出提示说配置成功,恭喜,数据库关联已经建立。现在来验证整个链路是否真的通了。
在CIS的菜单栏中选择【Place】→【Database Part】(或直接按Z键,快捷键因版本而异),打开数据库零件浏览器。这个界面左侧是过滤条件,右侧是数据库记录列表。第一次打开时,如果所有记录都显示不出来,检查右上角的查询模式是不是“开始于”或类似默认条件,先设成“包含”并填一个空值,或者直接在过滤条件里选一个VALUE字段,比如在“值”里输入10K,点【查询】。
查询出测试数据后,选中一行,点【Place】,然后到原理图工作区点击放置。此时你会看到:原理图符号被调出来了,同时该器件的属性列表里已经带着Part Number、VALUE、FOOTPRINT、Manufacturer等所有映射过的字段。双击器件打开属性看一遍,确认每一项都正确。
再做一个关键验证:把器件放置完成后,尝试生成网表。在【Tools】菜单里生成Netlist,选择Allegro格式,确认PCB Editor能正确接收,并且Footprint属性对应的封装能在封装库里找到。到这一步,全链路才算真正的通了。
4.5 常见报错和排查思路
我在多个版本的Cadence上配过CIS库,最常遇到的报错有这么几类:
报错“Data source name not found and no default driver specified”,十有八九是ODBC位数不对,或者DSN名称打错了。排查思路:打开32位ODBC管理器,看系统DSN里CIS_DB是否存在;再把CIS配置里的DSN名复制过来,确认一模一样。
报错“Not a valid table name”,一般是表名填错了。检查Access里实际表名是不是CIS_COMPONENT,注意Access表名虽然不区分大小写,但名称前后不能有多余空格。另外如果存在同名的查询对象,也可能被误解析。
报错“Could not find symbol”,说明SYMBOL字段指定的符号名在符号库里不存在。用Cadence的Symbol Editor打开.olb文件,搜索确认符号名;注意.olb库文件里同一个符号名可能存在多个版本,CIS会选哪一个不一定,建议保持库的唯一性。
还有一个隐蔽的坑:数据库的DATASHEET字段如果填的是本地局域网路径(如\server\share\xxx.pdf),CIS的链接打开没有问题;但如果填成C:\local\xxx.pdf,其他电脑上的用户点击链接会出现“找不到文件”。这种数据应该在入库阶段统一用UNC路径或者公司内部的文档管理系统链接。
5. 从个人自用到团队共用的进阶操作
5.1 共享路径下的并发策略
器件库做出来后,下一步通常就是放到共享盘让团队一起用。Access和多用户并发天生不对付,并不是说Access不能多人同时访问,而是它同时支持多个读、但只允许一个写。对于CIS的使用场景——绝大多数时间是查询、放置器件——读并发完全没问题。真正有风险的是有几个元件库管理员同时去改同一个库文件。
建议的部署方式是:把.mdb文件放到一个共享文件夹,如\server\shared\CIS_LIB\,ODBC数据源路径指向这个共享文件。普通工程师通过CIS查询和放置器件,库文件的访问是只读的,Access在这种模式下表现稳定。元件库管理员在维护期间,需要注意先通知“正在更新库,请勿查询”,维护完成后再把控制权交出去。这种模式在小团队(10人以内)运行几年都没问题。
5.2 数据导入和批量更新
正式启用之前,肯定要把历史Excel数据导入Access。Access自带“外部数据导入”功能,支持从Excel导入到已有表或新表。导入前务必在Excel里做一次“数据清洗”,具体包括:统一VALUE格式(10K还是10000)、统一封装名大小写、剔除空PART_NUMBER行、处理重复料号。否则脏数据一旦进库,CIS里查询出来的结果就是脏的。
清洗时最实用的一招:用Excel的“删除重复值”功能先把PART_NUMBER去重,再加一列检查“封装是否在封装库中存在”。后面这步可以写个VBA宏批量核对,也可以人工抽查,但一定别跳过。
5.3 定期维护:压缩、修复和备份
Access文件用得久了会膨胀,明明删了很多记录,文件体积却不减,查询也越来越慢。原因是Access默认采用延迟写入,删掉的数据页并不会立即释放。解决办法是定期执行“压缩和修复数据库”:在Access中打开库文件,【文件】→【信息】→【压缩和修复数据库】。原理是重建整个数据库文件,把碎片清理掉,腾出空间并重建索引。建议至少每个月压缩一次,更新大量数据后也顺手做一次。
备份是另一条铁律。我的习惯是每次批量更新前,先把当前的.mdb复制一份放到backup目录,文件名加上日期后缀。这样即使导入数据时操作失误,也能快速回滚,而不是靠记忆去修复几千行数据。
5.4 从Access升级到SQL Server的路径
当团队规模增长到几十人,或者数据量到十万级以后,Access的并发和稳定性开始吃紧。这时可以平滑迁移到SQL Server Express,微软的免费版本,搭配Cadence的ODBC驱动完全能跑。
迁移过程不复杂:先用Access的“数据库工具”→“导出”→“ODBC数据库”把CIS_COMPONENT表导出到SQL Server,然后在目标机器上创建新的ODBC数据源,驱动选“SQL Server Native Client”,DSN名称仍然叫CIS_DB,最后在Capture CIS配置里把数据库类型改成SQL Server,重新指向表和标识列就行。因为表结构没变,字段映射不用重做,原理图里已有的器件属性也不受影响——这是CIS另一个设计得很好的地方,数据库底层换了,间接层完全无感。
5.5 给团队配置一个加料流程
库建好之后,最怕的不是没人用,而是被滥用。建议在团队内部定一个流程,而不是直接把库文件权限放开。常见的做法是设两个角色:普通工程师只有只读权限,管库员有写权限。新器件申请走一个简单的邮件或表单流程,管库员负责核对符号、封装、规格书链接是否正确,然后写入库中,STATUS字段标记为Active。停产或者有替代料的,把STATUS改成Inactive而不是物理删除。
这个流程坚持三个月之后,你会发现库里的数据质量比Excel时代高了不止一个档次。因为Access的主键约束加上人工审核流程,把大多数脏数据挡在了门外。
我个人在这些年配库过程中体会最深的一点是:Access建库本身只花二十分钟,真正花时间的是想清楚PART_NUMBER编码规则、封装命名统一、导入数据清洗这些“看不见”的前置工作。它们决定了CIS查询出来的结果是不是可靠。所以如果你是第一天建库,别急着追求快,先把字段设计表打印出来贴在工作站旁边,把测试数据放进去完整跑一遍全链路,再批量导数据。这样后面几百天维护数据库的日子,会轻松得多。