用 OrCAD 画原理图,第一个坎儿往往不是软件装不上,而是打开 Capture 后发现:想放个电阻都找不到合适的东西。系统库里确实有 R,但那只是个通用符号,没有阻值、没有封装、没有厂商料号,等你导到 PCB 那边一堆问题全冒出来。我在带新人时最常说一句话:在 Cadence 里,自己建库不是可选项,是必选项。
这篇把我用 Cadence 17.2 建原理图库、画元器件整套流程完整过一遍,以电阻为例从零画出一个可以直接拿来画板子的元件。整个过程不长,但每一步背后的逻辑我会讲清楚,为了让你不光是会操作,还能理解为什么必须这么干。新手照着做就行,中间几个坑我会单独标出来。
1. 为什么劝你别再用系统库硬撑:底层逻辑先掰扯清楚
很多人从 Altium 转过来后极不适应,Altium 里拖元件太爽了,Cadence 的 Capture 却要自己搭。但 Cadence 这套“自建库”机制背后是有道理的,想通了你就会觉得它的设计才是真正干活的思路。
1.1 Capture 里的“库”到底是什么
Capture 的库文件后缀是.olb,它不是一个元件一张图,而是一个“元件容器”。一个.olb文件里可以装几十上百个元件。你画原理图时从库里面“调取”的其实是这个元件的“符号”,也就是我们常说的symbol。
一个原理图符号由三部分构成:图形(shape)、引脚(pin)、属性(properties)。图形决定了你在原理图上看到的形状,引脚决定了电气连接点在哪里,属性则是网表导出、PCB导入、BOM生成的依据。三者各司其职,缺一不可。
很多新手只画了个图形、放了引脚,属性不填,结果导入 Allegro 时元件全部变成未放置状态。这个后面我会重点讲。
1.2 系统库“够用”但是“不好用”
Cadence 自带了一个叫TITLE的库文件?那当然不是。自带库一般在安装路径下的tools/capture/library里,打开 Capture 的元件选择器(按Z键或菜单 Place Part)能看到的DISCRETE.olb、CONNECTOR.olb、OPAMP.olb这些,确实覆盖了常见分类。
但实际项目里你发现没有,自带库里的元件几乎都没有 PCB Footprint 属性,Value 默认也是个空值。也就是说你即使放上去了,后续还是得一个个补。与其反复改,不如一开始就建自己的一套库,一次投入长期复用。
另外,Cadence 自带库里的元件标准参差不齐,不同库之间同类元件的画法不一致。混用多了,原理图风格混乱不说,导网表时引脚类型冲突就能把你折腾到怀疑人生。
1.3 建库的本质是“设计标准化”
自己建库的最大意义是:你定义标准,然后团队跟着你的标准走。比如电阻用哪个符号、引脚怎么排列、Value 写10k还是10K、位号从R?开始、封装名跟 Allegro 封装库里的名字必须一模一样。这些如果每个人各搞一套,整个项目后期就是灾难。
我见过最典型的翻车案例:原理图里电阻的 PCB Footprint 写的是0603,但 Allegro 封装库里定名是R0603,结果导入 PCB 后所有电阻全部报错找不到封装。最后只能批量改网表属性,那个过程要多恶心有多恶心。建库阶段多花十分钟做规范,后期能给你省一天。
所以,下面要讲的这套流程,不只是“教你画一个电阻”,而是给你一套可以直接套用到所有元件的标准方法。
2. 建库前的三件事:格点、命名和库文件位置
正式开始画之前,有几个准备工作必须做。这几个细节直接影响你后面画出来的元件是否规范。
2.1 格点设置:没有格点,引脚就废了
在 Capture 里画原理图库,最重要的一个设置就是Snap to Grid。Capture 的格点系统默认主格点是 100 mil,细格点是 10 mil。引脚必须落在格点上才能正常拉线,如果你画的时候没对齐格点,放到原理图上引脚边缘会带一个小白方块,连线连不上或者导线路径不对齐。
设置路径:Options -> Preferences -> Grid Display。我习惯把 Schematic Page 和 Part and Symbol 两个都保持默认:主格点勾选,细格点不勾选。画库元件时引脚一般落在 100 mil 倍数的位置上,既美观又方便对齐。
有一种情况要注意:如果你画的是引脚密度极高的 BGA 芯片,引脚间距可能需要更密的格点。这时可以在Part and Symbol里启用细格点 10 mil,但这种情况极少见,对新手来说直接用默认格点就够了。
2.2 库文件命名:用一种一眼懂的方式来管库
命名规则决定了你一年后还能不能找到想要的元件。我自己的习惯是:按项目建库,按元件类型前缀命名。
比如我现在做一个电源板项目,就会建一个PWR_2024_lib.olb,里面放电阻、电容、MOS管、控制IC。库名包含项目名和年份,而不是叫my_lib.olb这种无意义的名字。元件名则用R_0603、C_0805、U_TPS5430这种“类型+封装/型号”的结构,查找效率极高。
这里要特别提醒:元件名不要用中文。虽然 Cadence 17.2 理论上能支持,但网表导出、第三方工具导入时经常出乱码,风险大,收益为零,完全没必要。
2.3 库文件保存位置:跟着项目走,别放 C 盘
.olb文件建议放在项目目录下的library子目录里,或者放在公司统一的服务器路径下。千万不要放在 C 盘默认路径里,一旦系统重做,你的所有心血直接清零。
如果是团队协作,建议库设只读共享,由专人维护更新。否则几个人同时改一个.olb文件,改完互相覆盖,最后元件属性乱七八糟,还没法追溯。
我以前吃过这个亏:和同事共用一套库,他改了一个电容的封装名,我在不知情的情况下画完一整板原理图,结果网表导过去十几个电容匹配不上封装,最后只能一个个手动挂。血的教训。
3. 电阻元件完整绘制流程:从新建库到保存
下面进入正题,我们以最经典的0603封装电阻为例,完整走一遍绘图流程。
3.1 新建库文件与元件符号
打开 OrCAD Capture,执行File -> New -> Library,界面左侧的空板上会出现一个library1.olb的文件节点。右键选择Save As,把它存到你项目目录下,命名为My_Lib.olb。
文件建好之后,右键这个.olb文件,选择New Symbol,弹出属性窗口:
- Name:填
R_0603,这就是你以后在元件选择器里搜到的名字 - Type:默认是
Schematic Symbol,保持不动 - Part Reference Prefix:填
R,这决定你放元件时的位号前缀。填了R,放出来后默认位号就是R?,Annotate 后变成R1、R2……
确认后进入元件编辑界面。先看一眼右侧的工具栏,有一个红色的矩形、一根像针一样的图标、还有大写字母 A 和一个电气符号。这些就是我们接下来要用的工具。
3.2 了解元件编辑界面:为什么引脚要“头朝里”
进入编辑界面的第一件事,别急着画,先理解这个界面的坐标系。中间的十字虚线交点就是原点,元件就围绕这个原点来画。元件的图形要画在原点附近,并且尽量以原点为中心对称,这样在原理图上旋转、移动时很顺手。
再看一下刚才新建的元件,左侧有一根短引脚,编号1,名称是空。这其实是 Cadence 给你的默认引脚,它其实不在格点上。我们绘制时建议先把这根默认引脚全选删掉,后面统一用正确的方式重新放置,避免遗留奇怪的引脚属性和坐标。
在继续之前,介绍一下引脚的关键概念。引脚分成两部分:电气连接端和本体端。电气连接端就是那个细头,放置时它必须朝外(原理图连线时连接到这个头),本体端必须朝内(在元件边框内部)。用生活中例子来类比:引脚就像插头,露在外面的金属片才是被插座接纳的地方。你如果把“金属片”藏进元件框里了,外面什么也插不上。
3.3 绘制电阻本体:先画外形,再放引脚
电阻的符号是长方形,两道短横线是它的国际标准画法。不过我们做原理图库时,很多公司直接用一个矩形表示电阻,简洁清晰,用来画 0603 电阻完全够用。
点击工具栏里的Rectangle图标(红色矩形),在坐标原点附近画一个矩形。我画的尺寸是:宽度 600 mil,高度 200 mil,用格点捕捉保证两端坐标正好落在 100 mil 的倍数点上。
画完选中矩形,右键选择Edit Properties,把Line Style里的Line Width改为1,这样在原理图上看起来粗细适中,打印出来也清晰。如果你是画复杂器件(比如 IC)则不需要这一步,保持默认即可。
接下来放置引脚。点击工具栏里的Pin图标(像针那个),或者用快捷键P,弹出放置引脚对话框。在这里输入:
- Name:输入引脚名
1(电阻引脚不需要名称,直接和编号一致就行) - Number:输入
1 - Shape:选择
Short(短引脚) - Type:选择
Passive(无源) - Width:保持
Scalar即可
点击 OK 后,引脚会悬浮在鼠标上,这时右键可以旋转方向。注意一点:引脚放置时,那个尖头(电气连接点)朝哪,外部连线就从哪边接入。我现在想让引脚 1 从矩形左侧伸出去,那么尖头朝左,将引脚放在矩形左侧边的中间位置,让矩形的左边线和引脚本体重合。
一个电阻有两个引脚,引脚 2 放在矩形右侧,尖头朝右。放第一根引脚时可以直接再次按P来放第二根,此时不需要重新输入对话框,直接把编号改成2即可。
3.4 让引脚位置更精准:通过坐标对齐代替肉眼
新手极易出现的问题是把引脚放得“差一点”——差 1 mil 对着网格看着没感觉,但在原理图连线时可能会引起 DRC 报错。稳妥的做法是直接观察右下角的坐标值,把矩形左边的 X 坐标和引脚本体的 X 坐标设置为一致。
还有一种更快的对齐方法:放完引脚后选中它,按Alt+Enter打开属性对话框,里面的Pin Length是默认值,而引脚的位置参数Pin to Pin 的坐标直接在图上拖动就行。用格点+对齐保证坐标准确,比肉眼精确得多。
3.5 调整边框线宽与元件整体外观
画完引脚之后,把矩形框选中,右键 ->Edit Properties,里面可以调整:
- Line Style->
Line Width:同事看习惯用 1,太粗会影响打印辨识度 - Line Style->
Line Style:默认实线
有些公司画电阻符号时会保留两根竖线,有些公司用矩形加两端短线的符号,其实都行。关键是统一。你自己库里所有元件风格一致,就是成功的库。
3.6 保存库文件:什么时候保存都有讲究
把编辑完的电阻元件保存,方式是右键库文件 ->Save,或者直接按Ctrl+S。如果你发现保存后库文件名旁边有个星号,说明还没存上。
有一个细节:保存前一定确认当前处于元件编辑界面,而不是原理图页面。很多人画完元件没保存库,直接关了 Capture,以为元件存下来了,结果重新打开什么都没有。Capture 会提示你保存的是Library还是Design,必须选Library才能存住.olb里的内容。
4. 元件的灵魂:属性定义与 PCB 封装关联
图形和引脚只是元件的外壳,属性才是元件真正能驱动流程的“灵魂”。在 Capture 里放一个没有属性的元件,等于在 PCB 阶段给自己埋雷。
4.1 必备的三个属性:Value、位号、封装名
打开元件编辑界面,按下Alt+Enter(或菜单Options -> Package Properties),在属性列表里确认以下三个关键项:
| 属性名 | 作用 | 电阻示例值 |
|---|---|---|
Value | 元件值,显示在原理图上 | 10k(或具体阻值) |
Reference Designator | 位号前缀,原理图自动编号的依据 | R? |
PCB Footprint | Allegro 封装库里的封装名,必须完全一致 | 0603 |
如果你用Place Part从库中调取元件时,看到的Value是空白,那说明编辑时没填。建议在库编辑阶段就把 Value 设为典型值。比如建一个10k元件,Value 直接填10k,后面放的时候可以按需改。
封装名的坑前面已经提到过,这里再次强调:PCB Footprint 的内容不是给人看的,是给网表工具和 PCB Editor 做匹配用的。新建一个 Allegro 封装名为0603,你就必须原样填写0603,多一个空格、大小写不一致都可能导致匹配失败。
4.2 引脚类型决定了 DRC 会不会找茬
电阻两个引脚的 Type 设置成Passive是常规操作。为什么不用Input或Power?因为在 Capture 里:
Input/Output/Bidirectional类型的引脚在网络连接上有方向限制,DRC 时如果误接到错的方向会报警Power类型引脚通常不参与信号逻辑检查,适合电源和地引脚Passive是“无源”的意思,适用于电阻、电容、电感这类不分方向的元件
如果你把电阻的一个引脚设成Output,画原理图时给它接了电源也可能触发 DRC 逻辑矛盾。所以,无源元件一律用 Passive,不要去折腾别的类型。
4.3 添加自定义属性:BOM、料号、精度
如果你公司要求 BOM 里带上厂商料号、精度、功率等信息,可以在属性列表里自行添加。操作方法:在元件属性对话框中先点击New,输入属性名如Manufacturer Part Number,输入属性值,然后保存。
需要注意:不要给属性起过于宽泛的名字,比如Name、Model。因为在 Capture 里有些属性名是保留的,名字一冲突,网表导出时行为就不可预期了。我之前加过一个属性叫Part,结果网表导出时被当成特殊字段处理,导出了乱七八糟的数据,排查了很久才发现是名字撞了保留字。
4.4 封装名的标准化与“测试性调用”
在.olb库里建元件时,你只是定了一个字符串。真正能验证这个字符串有没有写错的唯一办法,就是把这个元件放到原理图上,然后生成网表导入 PCB Editor 看看能不能匹配上。
所以我在建库时有个习惯:每建完一批元件,立刻新建一个测试用原理图,把这些元件挨个放上去,然后跑一遍Create Netlist,在 Allegro 里导入验证封装。这样做虽然多花两三分钟,但能够尽早把库的错误暴露在设计早期,比画了一个月原理图后才发现封装名错了一堆要强得多。
5. 把新库挂进原理图:一个让功能生效的隐藏步骤
这一步是新手最容易忽略的。很多人画完元件、保存库,然后打开原理图按Z打开元件选择器,结果搜不到自己刚画的R_0603。原因很简单:这个库还没被添加到设计项目里。
5.1 在项目里添加 .olb 库
在项目右侧的项目管理器窗口(Project Manager)中,展开.dsn设计文件,找到Libraries文件夹,右键选择Add File,定位到你保存的My_Lib.olb,确认。
此时再按Z打开 Place Part 窗口,Libraries列表里就会出现My_Lib,选中它后在中间搜索栏输入R_0603,元件就会显示在预览窗口里。双击或点击Place Part就能把它放到原理图上。
另一个技巧:Place Part 窗口还有一个Search模式,可以跨库搜索元件名。如果你建的库多了,直接搜名字比在列表里翻找高效得多。
5.2 全局默认库列表:和项目列表的区别
需要注意 Capture 有两个库列表:一个是全局默认库列表(Options -> Design Template里可以配置),一个是当前项目的库列表。全局列表对每个新设计都生效,项目列表只对当前.dsn生效。
如果你希望自己的库让所有新项目都能直接用,就在Options -> Design Template里把库加进去。不过对团队协作来说不建议这么做,因为不同项目用的元件版本可能不同,库一旦全局化后多人改动就会失控。
5.3 为什么放到原理图后元件没有网络连接
有时候你把电阻放上去,试图连线时发现导线拉不到引脚上,或者引脚上出现个红叉。有一半可能是引脚方向放反了,另一半可能是引脚没有完全落在格点上。最典型的场景:引脚尖头没有朝外,外部导线找的不是电气连接点,自然连不上。
此时回到库编辑界面,选中引脚,右键Mirror Horizontally或Mirror Vertically调转方向,保存更新后再回到原理图。注意,这里涉及一个 Capture 的“库更新”机制。
5.4 库更新后,原理图里的老元件怎么同步
在库文件里修改了元件并保存后,原理图里已经放置的元件不会自动更新。你需要在原理图页面执行Place -> Update Symbols,在弹出的对话框里勾选Library Symbol里的文件名,然后点击 OK,已放置的元件就会同步刷新成最新版本。
这里有个很容易踩的坑:Update Symbols 会把你手动修改过属性的元件也覆盖。比如你在原理图上把某个电阻的 Value 改成了4.7k,但库里默认 Value 是10k,执行一次Update Symbols后,原理图上所有该元件的 Value 又会被打回10k。所以执行前一定要确认库里已经是最终版本,或者更新后逐个检查。
6. 从电阻到复杂元件:引脚阵列与属性批量处理
电阻只是最简单的两个引脚元件。等你开始画 IC、连接器,一次要放几十上百个引脚时,如果还是一根一根地放,那就真的干到天荒地老了。这一章把进阶操作一并讲了。
6.1 Pin Array:一次性放置一组引脚
在放置引脚时,弹出的对话框右下角有一排Pin Array参数。勾选Add Pin Array,就可以一次性连续放置多根引脚。具体参数含义:
- Pin Count:一次放几根
- Increment:引脚编号的间隔,一般是 1
- Spacing:引脚间距,通常填 100(即 100 mil)
- Starting Number:起始编号
比如我要放一个 8 引脚的排针,Start Number 填 1,Pin Count 填 8,Spacing 填 100,它会自动生成编号 1 到 8 的引脚,排列整齐。这个操作对画单片机、连接器、逻辑芯片效率提升极大。
6.2 引脚名称和编号不完全一致时的处理
引脚数较多的元件,名称往往不等于编号。比如一个 MCU 的PA0引脚,物理编号可能是23。在放置引脚对话框里,Name 填PA0[0],Number 填23即可。
注意:如果引脚名带方括号(如D[0]),Capture 会默认把方括号识别为总线索引。如果不需要总线效果,可以关闭Options -> Preferences -> Miscellaneous -> Allow区段命名或在属性里改。否则网表导出时可能会出现怪异的网络命名。
6.3 多个子部件(Heterogeneous)问题
一些芯片内部逻辑上有多个独立单元,比如双运放 LM358 包含两个运放,四与门 74HC08 包含四个门。这类元件在 Capture 里有两种做法:
- 同质封装(Homogeneous):四个门图完全一样,引脚编号区分,画原理图时每放一次就能自动切到下一个 Unit(
U?A、U?B)。适合逻辑器件。 - 异质封装(Heterogeneous):每个 Unit 图形不同,适合内部包含电源、逻辑等不同结构的混合器件。
对新手来说,优先建议做成同质封装,操作简单原理图也好读。在元件属性里设置Parts Per Package能控制一个 IC 分几个 Unit。
6.4 像画电阻一样画完一个库图的检查清单
画复杂元件比画电阻更考验细心。我给自己定的检查清单如下,每次画完复杂元件都会照着过一遍:
- 引脚数量对不对,编号是否连续无重复
- 每根引脚的物理位置落在格点上
- 引脚方向是否都朝外,没有反的
- 电源脚类型是否设成 Power、其余逻辑脚有没有设对方向
- Value、位号、封装名是否已经填写完整
- 元件名是否规范,符合团队命名规则
7. 新手最容易踩的坑:从网表报错反推库问题
最后这部分全是实战中见过最多的问题。它不发生在画元件时,而是发生在你把原理图导出网表、导入 PCB Editor 那一刻。每个坑都是可以提前预防的。
7.1 网表报错“Pin number not found”等
用Tools -> Create Netlist生成网表时,如果不报错一般没问题。但常见的一种错误是:某个元件引脚编号与实际网表数据不匹配,导致 PCB Editor 导入时报错。
这时候先在原理图里/查找这个元件,Alt+Enter打开属性,看它的引脚编号是否连续且不与引脚名冲突。问题是:如果你画库时把引脚编号填成 0 或重复了,软件会在网表阶段才告诉你,绝不在画库界面报错。这也是为什么我强烈建议你画完一个元件后就立刻做一次网表测试,而不是等原理图画完了再统一验证。
7.2 Allegro 导入后元件散落原点,找不到封装
把网表导入 PCB Editor 后,所有元件都没有放置在板框内,而是堆在坐标原点附近。第一反应不是去手动挪板子,而是先检查 PCB Footprint 属性。
最常见原因就是封装名不匹配。你可以在 Allegro 的Setup -> User Preferences -> Design_paths -> padpath / psmpath里验证封装文件路径是否指向了正确的封装库目录。然后在 Capture 里检查元件的PCB Footprint值是否和封装库里的.dra文件同名。
有个快速排查法:在 Allegro 命令行输入dump symbol 元件名,如果报Can't find symbol,说明封装名和路径都有问题;如果提示找到但放置失败,则可能是封装里的引脚数与网表不一致。
7.3 引脚类型引发的 DRC 报错
前面提到了Passive的重要性。新手画电阻电容时如果用了Input类型,原理图 DRC 会报网络连接错误,比如 “Multiple Output Pins Connected”。这是因为这类引脚在逻辑上不允许并联复接。
实际板子里,电阻可以并联,电容可以并联,它们不受这个限制。正确做法是把所有无源元件的引脚 Type 都设为Passive,DRC 不会再无缘无故报错了。
7.4 位号重复导致更新失败
有时候库元件画完,放了一个,Annotate 后却出现重号。原因大概率是库编辑时Reference Designator属性里填了一个具体数字(比如R1),而不是通配符R?。这会导致 Capture 默认该元件位号已经是R1,后面另一个元件 Annotate 时又分配R1,就撞了。
所以库里元件默认位号一定要填R?、C?这种带问号的形式,让软件去自动分配,不要手动指定。
7.5 关于重复引脚的经典教训:一个元件两个引脚同名
设计变压器或光耦时,引脚名经常有重复需求,比如初级侧两个引脚可能同名。Capture 在原理图库中默认不允许同一元件内有两个同名引脚(有时允许,取决于版本配置),但这个限制在网表阶段会被放大。
最稳妥的方案是:同名引脚给个不同的编号,然后在原理图上添加网络标签(Net Alias)让它们在电气上实现连接。别试图在库里绕过同名限制,否则导网表时不知道哪个引脚该连到哪。
8. 几个让库更好用的进阶习惯
如果你已经能把电阻、电容、IC 画得超快,那你已经入门了。下面这些习惯是我在大量项目里沉淀出来的,不一定在官方文档里能找到,但确实很顶用。
8.1 给元件加“版本说明”属性
我在每个库里都会加一个自定义属性LibVersion,填上V1.0、V1.1之类的版本号。后续修改库时同步升版本号,配合 Git 或者服务器文件版本,可以快速定位是哪个版本导入的原理图。
这招在公司团队协作中特别管用。原理图里每个元件都带版本号,万一后来发现封装有问题,可以直接查哪些原理图用了旧版库。
8.2 利用 Capture 的 “Import/Export” 在库间迁移元件
Capture 支持在.olb之间复制元件。最省事的做法:打开两个.olb,直接在左侧元件列表里把元件从一个库拖到另一个库。Cadence 17.2 下默认支持这个操作,但复制完一定要检查属性有没有丢失。
如果是更大规模的迁移,比如从旧版本软件升级到 17.2,建议用File -> Import -> Legacy Design转换整个库。转换后同样要抽查元件属性,因为部分旧版属性字段在 17.2 里可能已经改名了。
8.3 一个库一个“万能模板元件”
我建库时会在每个.olb里放一个“模板元件”——通常是一个有标准引脚间距、标准 Line Width、标准属性字段的空白元件。后续画新元件时,直接复制这个模板再改,效率极高。
为什么不用软件默认的用户模板?因为 Capture 的默认模板文件位置深,不同版本路径不一样,而且模板里如果不小心带了旧版本的属性,反而会拖累整个新元件。不如就在库里放一个看得见的“实体模板”,谁都能看到、谁都能用。
8.4 定期用 Capture 自带的 DRC 检查库文件
Cadence 17.2 的 Capture 提供一个专门检查元件库的工具路径:File -> Design Properties里能设置设计规则,然后在原理图页面执行Tools -> Design Rules Check。但这是针对原理图设计的。对元件库本身的检查,官方提供的方式是通过“测试原理图”间接完成。
所以我的例行动作是:每画完几个新元件,就“放”到一个临时测试原理图页上,然后跑一次 DRC、跑一次网表生成,全绿才算通过。
画一个电阻本身十几分钟就能学会,难的是把“画库”这件事当成系统工程来对待。你把这个流程跑顺了,Cadence 对你来说就不再是“原理图画图工具”,而是“完整设计流程的起点”。建库阶段多操点心,后面画板子、出网表、做 BOM、贴片回板,每一步都会顺畅不少。