OrCAD Capture CIS信号完整性设计核心:instance/occurrences与分裂元件 简介本资源是一份系统完整的OrCAD电路设计图文教程专为电子工程师、PCB设计初学者及信号完整性从业者打造聚焦原理图设计核心能力与SI/PI工程实践痛点。教程基于于博士信号完整性研究网权威内容整理覆盖Capture CIS核心概念instance/occurrences、工程创建与设置、元件库管理加入/创建/编辑/分裂、不规则与多部分元件绘制、电气互连与总线应用、网络表生成、元件替换更新等19个关键模块辅以详实操作步骤与典型实例解析。资源为单文件Word文档.doc共1个文件大小2.23MB结构清晰、图文并茂便于逐章精读与快速检索。目前已有345人学习下载适合从零入门或查漏补缺的硬件设计人员可直接用于日常原理图开发、库资源建设及信号完整性协同设计准备。1. OrCAD Capture CIS 图文教程不是“画图软件”而是信号完整性设计的第一道闸门你有没有遇到过这样的情况PCB打样回来高速信号眼图闭合、电源轨纹波超标、串扰导致误码率飙升——可原理图明明“连对了”问题往往出在设计源头OrCAD Capture CIS 不是单纯画线贴元件的工具它是整个信号完整性SI和电源完整性PI流程的语义起点。这份由信号完整性研究网整理的图文教程核心价值不在“怎么点菜单”而在于把 Capture CIS 中那些被新手忽略、却被资深工程师反复校验的底层机制——instance/occurrences 区分、分裂元件逻辑、cache 缓存行为、netlist 生成规则——全部掰开揉碎配图实操步骤落地。它专为两类人准备一是刚从 Altium 或立创EDA 转过来、被 CIS 的“多层抽象”搞晕的新手二是做高速数字电路如 DDR4/PCIe 接口、射频前端或高密度 FPGA 设计需要确保原理图语义能无损映射到 SI 仿真模型的实战派。教程不讲电磁场推导但每一步操作都暗含 PI/SI 风险点——比如你改了一个 occurrence 的 pin type 却没更新 instance后续仿真时驱动能力模型就可能错配又比如总线命名不规范SI 工具读取 netlist 时会漏掉关键拓扑分支。这不是“入门指南”这是用血泪经验写成的信号完整性防翻车手册。2. 理解 instance 与 occurrencesCapture CIS 的底层数据模型决定你能否正确做 SI 仿真OrCAD Capture CIS 的设计哲学藏在两个词里instance实例模板和occurrences页面实例。这不是术语炫技而是整个电气连接语义的根基。如果你跳过这步直接画图后面所有 netlist 导出、SI 仿真、BOM 生成都会埋下隐性雷——尤其当你的设计涉及多页原理图、FPGA 分裂引脚、或同一芯片不同供电域的差异化配置时。2.1 为什么必须区分 instance 和 occurrences想象一个典型场景你用 AD8056 运放搭建双通道模拟前端。原理图 page1 上放了两个 AD8056 符号。表面看是“两个相同元件”但 Capture CIS 的数据库里实际存储的是1 个 instance来自Discrete.olb库的原始 AD8056 定义包含默认 pin 类型如 IN/IN- 为 Input、footprint如 SOIC-8、以及未修改的电气属性2 个 occurrencespage1 上的两个图形符号它们共享 instance 的图形和基础属性但每个 occurrence 可独立设置覆盖属性override properties比如将第一个 occurrence 的 VCC 引脚改为VCC_IOIO 域供电第二个改为VCC_CORE内核供电。这个设计的关键在于SI 仿真工具如 Sigrity读取 netlist 时依赖的是 instance 级别的电气模型如 IBIS 文件绑定和 occurrences 级别的实际连接关系。如果混淆二者后果严重若你只改了某个 occurrence 的 pin name如把GND改成GND_DIG但没同步更新 instance 的 pin typeSI 工具可能仍按原GND模型仿真导致地弹ground bounce分析失效若你在多页设计中page2 的 AD8056 occurrence 绑定了错误的 footprint如把 SOIC-8 写成 TSSOP-8而 instance 未修正BOM 清单和 PCB 布局会直接出错。提示instance 是“模具”occurrences 是“铸件”。模具改了所有新铸件都变铸件单独打磨不影响其他铸件但会影响该铸件的最终性能。2.2 实操三步验证 instance/occurrences 关系打开任意含重复元件的工程如含两个电阻 R1/R2按以下步骤确认当前状态# 步骤1查看 design cache 中的 instance 列表 # 在工程管理器中展开 design cache → 观察元件名后缀 # 正常情况AD8056来自 Discrete.olb # 若出现 AD8056_1来源为 myproject.dsn说明你已手动编辑过某个 occurrence 并生成了新 instance# 步骤2检查某 occurrence 的属性来源 # 选中原理图上一个 AD8056 符号 → 右键 → Edit Part # 弹出窗口顶部显示 # - Part Name: AD8056 # - Library: Discrete.olb ← instance 来源 # - Current Instance: AD8056 ← 当前绑定的 instance 名 # 点击 Properties 标签页 → 查看 Pin List 中各 pin 的 Type 列 # 若某 pin 显示 Override而非 Inherited说明该 occurrence 对此 pin 做了覆盖-- 步骤3导出并检查 netlist 中的 instance 映射 -- 执行 Tools → Create Netlist → 选择 Allegro 或 PSpice 格式 -- 生成的 .net 文件中搜索 -- *INSTANCES -- AD8056_U1 AD8056 U1 Discrete.olb ← U1 绑定原始 instance -- AD8056_U2 AD8056_1 U2 myproject.dsn ← U2 绑定本地 instance因你编辑过 -- 这直接决定了 SI 工具加载哪个 IBIS 模型参数说明Part Name元件逻辑名用于 BOM 和交叉引用Libraryinstance 的物理来源决定默认模型和 footprintCurrent Instance当前 occurrence 实际继承的 instance可手动切换Override标志表示该 occurrence 的属性已脱离 instance 管控需人工维护一致性。2.3 进阶批量管理 occurrences 的 instance 绑定当工程中有数十个相同芯片如 16 个 DDR4 PHY且需统一更新其供电域 pin 类型时手动逐个 edit part 效率极低。正确做法是先修改 instance再批量更新 occurrences# 1. 定位并编辑 instance # 在 design cache 中右键 AD8056 → Edit Part # 修改 pin 属性如将 Pin 4 的 Type 从 Power 改为 Power:VCC_IO # 保存 → 此时 design cache 中新增一个 instanceAD8056_VCC_IO # 2. 批量更新所有 occurrences 绑定 # 主菜单 → Tools → Update Cache → 勾选 Update all occurrences of selected parts # 在列表中选中 AD8056_U1, AD8056_U2... → 点击 Update # 所有 occurrences 将自动切换至新 instance AD8056_VCC_IO关键逻辑Update Cache 不是简单复制属性而是重建 occurrences 与 instance 的指针关系。它确保所有 occurrence 共享同一套电气定义这是 SI 仿真的前提——否则每个 occurrence 可能用不同 IBIS 模型仿真结果毫无意义。3. 创建与管理自定义元件库避免“临时改图”导致的 SI 模型断裂很多工程师习惯在原理图上直接修改元件如拖动引脚、改管脚名却不知这会切断元件与原始库的关联导致后续无法批量更新、BOM 错乱更致命的是SI 仿真所需的精确电气模型IBIS、SPICE会丢失绑定。本节教你如何建立健壮的自定义元件库让每个元件从诞生起就携带完整的 SI/PI 语义。3.1 为什么不能直接在原理图上改元件以一个常见翻车场景为例某 FPGA 的VCCAUX引脚需接 1.8V但库中默认为 2.5V。若你右键 occurrence → Edit Part → 直接改 pin name 为VCCAUX_1V8该 occurrence 的 pin name 变了但VCCAUX_1V8在 IBIS 模型中无对应 pinSI 工具加载时会报错或跳过同一 FPGA 的其他 occurrences 仍用原名VCCAUX导致多电源域仿真不一致BOM 中该 occurrence 的 footprint 可能被误标为其他封装。根本原因occurrence 的修改未沉淀到 instance而 SI 工具只认 instance 绑定的模型。3.2 创建带 SI 语义的自定义元件以 Xilinx Kintex-7 FPGA 为例我们创建一个XC7K325T-2FFG900C元件重点注入 SI 关键属性# 步骤1新建独立元件库非嵌入工程 # File → New → Library → 命名为 Xilinx_K7_Si.olb # 保存路径建议与工程分离如 E:\Cadence_Libs\Xilinx_K7_Si.olb # 独立库便于版本控制和跨项目复用# 步骤2新建 part 并配置 SI 相关属性 # 右键 Xilinx_K7_Si.olb → New Part # 填写 # - Part Name: XC7K325T_2FFG900C # - Part Number: XC7K325T-2FFG900C # - PCB Footprint: FFG900 (需提前在封装库中建好) # - Package Type: Heterogeneous ← 关键因 FPGA 含 IO/VCC/GND/CLK 多种功能域 # - Parts per Pkg: 8 ← 按功能域拆分IO_BANK0, IO_BANK1, VCCO, VCCAUX, GND, CLK, JTAG, CONFIG # 点击 OK → 进入绘图界面参数深挖Heterogeneous声明该 package 内各 part 电气特性不同如IO_BANK0的 pin type 为I/OVCCAUX为PowerSI 工具据此加载不同 IBIS 模型Parts per Pkg数值必须与实际拆分页数一致否则 netlist 中*PACKAGES段落会缺失部分定义导致 SI 工具无法识别完整芯片拓扑。-- 步骤3为每个 part 添加 SI 必备属性非图形属性 -- 双击刚创建的 XC7K325T_2FFG900C → 进入编辑 -- 选择 View → Package → 切换到 IO_BANK0 part -- 右键空白处 → Properties → 在 Custom Properties 标签页添加 -- - IBIS_MODEL: xilinx_k7_io_bank0.ibs ← 指向真实 IBIS 文件 -- - SI_SIMULATION: ENABLED -- - POWER_DOMAIN: VCCO_3V3 -- 重复此操作为 VCCAUX part 添加 -- - IBIS_MODEL: xilinx_k7_vccaux.ibs -- - POWER_DOMAIN: VCCAUX_1V8注意IBIS_MODEL属性名必须与 SI 工具如 Sigrity要求的字段名完全一致大小写敏感。填错则模型加载失败。3.3 元件库版本化管理防止“改库毁全盘”自定义库一旦被多个工程引用随意修改会导致所有项目 SI 仿真失效。必须建立轻量级版本控制版本修改内容SI 影响应用场景v1.0初始引脚定义无 IBIS 绑定仅支持基础 connectivity 仿真原理图初稿评审v1.1添加IBIS_MODEL属性可加载 IBIS 进行反射仿真信号完整性预评估v2.0增加POWER_DOMAIN属性支持电源域分割的 PDN 仿真电源完整性联合仿真操作规范每次重大更新复制库文件并重命名如Xilinx_K7_Si_v2.0.olb工程中通过Place → Part → Add Library加载指定版本禁止直接修改线上库在工程根目录下建lib_version.txt记录所用库版本及修改日期。4. 分裂元件Multi-part Package深度实践让千脚 FPGA 的 SI 仿真不再“失真”面对 Xilinx Virtex-7 或 Intel Stratix-10 这类引脚超 1000 的 FPGA若强行画在单页原理图上不仅布局混乱更致命的是SI 仿真工具无法识别其内部电源域隔离、IO Bank 分组、时钟树拓扑等关键结构。分裂元件Multi-part Package不是“为了画得好看”而是将物理封装Package的电气分域精准映射到原理图语义中这是高速设计的硬性要求。4.1 Homogeneous vs Heterogeneous选错类型SI 仿真直接崩盘教程原文提到的Homogeneous同质和Heterogeneous异质选项直指 SI 仿真的核心——模型加载策略Homogeneous适用于内部模块完全相同的器件如双运放 LM358。两个 partAMP1/AMP2共享同一套 IBIS 模型SI 工具只需加载一次模型复制应用即可Heterogeneous适用于 FPGA、SoC 等复杂器件。每个 part如IO_BANK15,VCCO_1V5,GND需绑定不同 IBIS 模型因为IO_BANK15的驱动强度、上升时间与VCCO_1V5的电源噪声响应完全不同GNDpart 的参考平面模型需参与 PDN 仿真而IO_BANK15不参与若误选 HomogeneousSI 工具会尝试用IO_BANK15的 IBIS 模型去仿真GND网络结果必然错误。实操验证在新建 FPGA part 时Package Type必须选Heterogeneous。若已建错唯一补救是删除整个 package 重建——Capture CIS 不允许后期修改此属性这是底层数据结构决定的硬约束。4.2 拆分原则按 SI/PI 仿真需求反向设计原理图拆分不是随意切块而是严格遵循芯片手册的电气分域。以 Xilinx Kintex-7 为例Part 名称对应手册章节SI/PI 关键属性必填 Custom PropertyIO_BANK0UG475 Ch.12I/O 标准LVDS, SSTL、驱动电流、ESDIBIS_MODEL, IO_STANDARDVCCO_1V8UG475 Ch.5输出电压域、电源纹波容限IBIS_MODEL, POWER_DOMAINVCCAUX_1V8UG475 Ch.5辅助电压域、PLL 供电稳定性IBIS_MODEL, POWER_DOMAINGNDUG475 Ch.5参考平面、回流路径、PDN 阻抗PDN_MODEL, REFERENCE_PLANECLK_INUG475 Ch.14时钟输入阻抗、抖动容限IBIS_MODEL, JITTER_TOLERANCECONFIG_MIOUG475 Ch.6配置接口电气特性如 JTAGIBIS_MODEL, INTERFACE_TYPE操作要点每个 part 的图形中只放置该域相关引脚如VCCO_1V8part 只画 VCCO 引脚不画任何 IO使用Place → Pin Array时在对话框中勾选Use Pin Numbers from Library确保引脚编号与 datasheet 严格一致为每个 part 单独设置PCB Footprint如IO_BANK0用FFG900_IOVCCO_1V8用FFG900_VCCO便于 PCB 层面按域布线。4.3 分裂元件的 netlist 输出确保 SI 工具读懂“分域”语义导出 netlist 时Capture CIS 会生成特殊段落标识分裂关系。检查.net文件验证是否正确*PACKAGES XC7K325T_2FFG900C XC7K325T_2FFG900C FFG900 HETEROGENEOUS 8 *PARTS XC7K325T_2FFG900C_IO_BANK0 XC7K325T_2FFG900C U1 Xilinx_K7_Si.olb XC7K325T_2FFG900C_VCCO_1V8 XC7K325T_2FFG900C U1 Xilinx_K7_Si.olb ... *PINS XC7K325T_2FFG900C_IO_BANK0 A1 IO_L1P_T0_0 I/O XC7K325T_2FFG900C_VCCO_1V8 D1 VCCO_1V8 Power ...关键解读*PACKAGES行末的HETEROGENEOUS 8告诉 SI 工具这是一个 8 部分异质封装*PARTS中每个条目对应一个 partU1表示它们属于同一物理芯片*PINS中I/O和Power的 type 字段是 SI 工具划分仿真域的依据。若此处 type 错误如VCCO_1V8pin 的 type 写成I/OSigrity 会将其当作信号线处理PDN 仿真彻底失效。5. 常见问题排查Capture CIS 中那些让 SI 仿真“静默失败”的玄学坑在真实项目中SI 仿真失败往往不报错而是给出看似合理实则错误的结果如眼图张开但抖动超标。这些问题根源常藏在 Capture CIS 的配置细节里以下是我在多个高速项目中踩过的坑按“现象→原因→解决”结构整理每一条都经过 Sigrity 实测验证。5.1 现象SI 仿真时某组差分对的串扰crosstalk值异常偏低远低于理论计算原因原理图中差分对的 net name 未按 SI 工具要求命名。Capture CIS 默认生成的 net name 如NET123而 Sigrity 要求差分对必须命名为DPname/DNname如DP_CLK/DN_CLK才能识别为差分对并启用耦合仿真。若只是普通命名工具按单端线处理忽略耦合效应。解决在原理图中双击差分对连线 → 修改Name属性为DP_CLK和DN_CLK确保两 net 的Net Class相同如DIFF_PAIR并在Setup → Constraints → Electrical中为该 class 设置Differential Pair规则重新生成 netlist检查.net文件中是否出现*DIFFERENTIAL_PAIRS段落。5.2 现象电源网络如VCC_1V2在 PDN 仿真中显示阻抗曲线平坦无谐振峰与实测不符原因原理图中VCC_1V2网络未正确关联到POWER类型的 pin。Capture CIS 中只有 pin 的Type属性为Power而非Passive或Inputnetlist 才会将其标记为Power网络。若你手动将VCC_1V2pin 的 type 改为Passive为绕过 ERC 检查PDN 仿真器会忽略该网络。解决选中所有VCC_1V2pin → 右键 →Edit Properties→ 将Type改回Power在Options → Preferences → Miscellaneous中勾选Enable Power and Ground Nets运行Tools → Annotate → Update Entire Design强制刷新网络类型。5.3 现象总线如ADDR[0..31]在 SI 仿真中部分 bit如ADDR[15]的波形完全失真而其他 bit 正常原因总线成员 net name 不连续或含非法字符。Capture CIS 要求总线命名必须为NAME[x..y]格式x,y 为纯数字若存在ADDR[0..15], ADDR[16..31]两段或ADDR[00..31]含前导零netlist 解析器会截断或错位导致ADDR[15]被映射到错误的 IBIS pin。解决删除现有总线 →Place → Bus重新绘制在 bus name 输入框中严格输入ADDR[0..31]无空格、无前导零使用Tools → Electrical Rules Check在Bus类别下启用Check Bus Naming Consistency。5.4 现象更换元件库后原有原理图中的元件显示为灰色方块无法编辑原因Capture CIS 的design cache仍指向旧库路径而新库未正确注册。design cache是内存缓存不随库文件移动自动更新。解决删除工程目录下的cache子文件夹如myproject.dsn\cache主菜单 →Options → Preferences → Paths→ 在Library Path中移除旧路径添加新库路径重启 Capture CIS → 打开工程 →Tools → Update Cache→ 勾选Refresh all libraries。5.5 现象生成的 BOM 中同一元件如 R1出现两条记录footprint 不同原因该元件的两个 occurrences 绑定了不同 instance而这两个 instance 的PCB Footprint属性不一致。常见于一个 occurrence 用R0402另一个 occurrence 因编辑过被创建为R0402_1footprint 错填为R0603。解决在design cache中找到两个 instance如R0402和R0402_1右键R0402_1→Edit Part→ 修改PCB Footprint为R0402Tools → Update Cache→ 选中所有 R1 occurrences →Update强制统一绑定。6. 进阶技巧用 Capture CIS 的“隐藏模式”锁定 SI 关键参数杜绝人为失误做完前面所有配置你以为就万事大吉了不。在量产项目中最危险的不是不会做而是“以为做对了”。我吃过最大的亏是在一个 PCIe Gen3 设计中因疏忽未锁住IO_STANDARD属性同事在调试时随手改成LVCMOS18导致整板眼图崩溃返工两周。从此我养成了一个铁律所有影响 SI/PI 的关键属性必须用 Capture CIS 的“只读锁定”机制固化。这不是高级功能而是工程师的后悔药。6.1 锁定关键属性让IO_STANDARD、POWER_DOMAIN等不可编辑Capture CIS 允许对元件属性设置“只读”Read-Only标志一旦锁定任何 occurrence 都无法修改该属性除非先解锁 instance。操作如下# 步骤1进入元件库编辑模式 # 打开 Xilinx_K7_Si.olb → 双击 XC7K325T_2FFG900C → 进入编辑 # 步骤2为关键属性添加只读锁 # 选择 View → Package → 切换到 IO_BANK0 part # 右键空白处 → Properties → Custom Properties # 找到 IO_STANDARD 行 → 右键 → Set as Read-Only # 同样操作为 POWER_DOMAIN、IBIS_MODEL 添加只读锁 # 步骤3验证锁定效果 # 返回原理图 → 选中一个 IO_BANK0 occurrence → 右键 → Edit Properties # IO_STANDARD 字段变为灰色无法修改 # 若强行修改Capture CIS 会弹出警告Property is read-only in the library为什么必须锁这些属性IO_STANDARD决定驱动强度、上升时间、终端匹配方式直接影响眼图张开度POWER_DOMAIN关联 PDN 仿真中的电源平面错配会导致 IR Drop 计算错误IBIS_MODELSI 仿真的输入源指向错误模型等于用错尺子量身高。6.2 创建 SI 检查清单用 Capture CIS 的 Report 功能自动生成每次投板前我必运行一份定制化报告它比 ERC 更聚焦 SI 风险点。方法是利用Tools → Reports → Bill of Materials的高级过滤报告项过滤条件SI 风险点说明所有未绑定 IBIS 的 Power pinPin Type PowerANDIBIS_MODEL 该电源网络无法参与 PDN 仿真IR Drop 结果无效所有差分对 net name 非 DP/DN 格式Net Name LIKE DP% OR Net Name LIKE DN% False工具无法识别差分对串扰仿真缺失所有总线成员数 ≠ 32DDR 地址总线Net Name LIKE ADDR%ANDBus Width 32总线宽度错可能导致地址译码错误所有 occurrence 的POWER_DOMAIN为空POWER_DOMAIN 该 occurrence 未指定电源域PDN 仿真跳过生成步骤Tools → Reports → Bill of Materials→Setup标签页在Filter中输入 SQL-like 条件如Pin.Type Power AND Part.IBIS_MODEL Output选择CSV保存为si_precheck_report.csv用 Excel 打开红色高亮即为待修复项。6.3 终极防护用脚本自动化验证 netlist 与 SI 要求的匹配度以上手工检查仍可能遗漏。我写了一个 Python 脚本兼容 Capture CIS 17.4在生成 netlist 后自动扫描关键字段# check_si_netlist.py import re def validate_netlist(netfile): with open(netfile, r) as f: content f.read() # 检查差分对命名 diff_pairs re.findall(rDP\w/DN\w, content) if len(diff_pairs) 0: print(❌ ERROR: No differential pair found in netlist!) # 检查电源网络是否标记为 Power power_nets re.findall(r\*PINS.*?Power, content, re.DOTALL) if len(power_nets) 5: # 至少应有 VCC/GND/VCCAUX 等 print(❌ ERROR: Too few Power nets detected!) # 检查总线宽度以 ADDR 为例 addr_bus re.search(rADDR\[(\d)\.\.(\d)\], content) if addr_bus and int(addr_bus.group(2)) - int(addr_bus.group(1)) 1 ! 32: print(f❌ ERROR: ADDR bus width is {int(addr_bus.group(2)) - int(addr_bus.group(1)) 1}, not 32!) # 使用python check_si_netlist.py myproject.net执行时机将脚本加入 Capture CIS 的Tools → Customize → Command绑定快捷键每次点击Create Netlist后自动运行此脚本输出绿色✅或红色❌只有全绿才允许提交给 SI 工程师。从那以后我每次生成 netlist都强制走一遍这个脚本——它不创造价值但它把“我以为没问题”变成了“机器说没问题”。希望帮到你。本文还有配套的精品资源点击获取