在使用 Cadence Quantus QRC 进行寄生参数提取时,即使 Extraction Tab 中已正确设置了 RC 和 Coupled 模式,Filtering Tab 中的 Exclude Self Capacitance 下拉框和 MinC 输入窗口仍会在 Form 初次打开时呈灰色(不可编辑)。本文记录该问题的完整现象、根因,以及通过 SKILL 修复的方法。
问题现象
初始状态(Run Form 刚打开):
- Extraction Tab → Extraction Type:
RC,Cap Coupling Mode:Coupled - Filtering Tab →
Exclude Self Capacitance:灰色,固定显示Yes - Filtering Tab →
MinC(绝对值 fF / 相对值 %):灰色,不可编辑
触发操作(绕过灰色的临时方法):
在 Extraction Tab 将 Extraction Type 从 RC 切换为 C Only,再切换回 RC。
切换后状态:
MinC两个输入框亮起,默认填充0.01 fF和0.1 %Exclude Self Capacitance变为可编辑下拉框(选项:No/Yes/Extended)
生成的命令对比
设置 Exclude Self Capacitance = No 时,View Command 新增:
1
2
3
filter_coupling_cap \
-coupling_cap_threshold_absolute 0.01 \
-coupling_cap_threshold_relative 0.001
设置 Exclude Self Capacitance = Yes 时,View Command 新增:
1
2
3
4
5
filter_cap \
-exclude_self_cap true
filter_coupling_cap \
-coupling_cap_threshold_absolute 0.01 \
-coupling_cap_threshold_relative 0.001
[!NOTE]
MinC的相对值0.1%对应命令参数-coupling_cap_threshold_relative 0.001(即 0.1% = 0.001 ratio)。
各选项含义
Exclude Self Capacitance
控制输出网表(DSPF/SPEF)中是否包含自电容(net-to-ground 电容):
| 设置值 | 行为 | 生成命令 |
|---|---|---|
| No | 不排除自电容。这是默认设置 | 无 filter_cap |
| Yes | 从提取输出中排除自电容(仅在耦合寄生电容提取时生效) | filter_cap -exclude_self_cap true |
| Extended | 移除两个 LVS net 之间跨越电阻器件的耦合电容。若同时启用 Ext. Self Cap Recursive,则递归处理通过一串电阻连接的所有 net | filter_cap -exclude_self_cap extended |
[!NOTE] Extended 的关键区别:
Yes排除的是自电容(寄生电容提取意义上的 net-to-ground 分量);Extended进一步将跨电阻器连接的两个 LVS net 之间的耦合电容也视为需要移除的对象。这在含大量串联电阻的 RC 网络(如 ESD 保护结构、金属电阻)中可显著缩减网表规模,但也会丢失这些节点间的耦合信息,需要权衡精度。
MinC(Minimum Capacitance Threshold)
设置耦合电容的过滤下限,低于阈值的耦合电容将被解耦并并入自电容,从而精简网表:
| 参数 | 含义 | 命令参数 |
|---|---|---|
| 绝对值(fF) | 绝对电容量阈值 | -coupling_cap_threshold_absolute |
| 相对值(%) | 相对于自电容的比例阈值(0.1% → 0.001) |
-coupling_cap_threshold_relative |
两个阈值取 OR 关系:满足任一条件的耦合电容均被过滤。
深入分析:为什么文档说 Boolean,实际却是三选项?
观察到的真实行为
用户实测三种选项生成的命令如下,这是最权威的事实:
| GUI 选项 | 生成的命令 | 含义 |
|---|---|---|
| No | (无 filter_cap 行) |
保留全部电容,不过滤 |
| Yes | filter_cap \ -exclude_self_cap true |
排除同 net 内分布式子节点间的自电容 |
| Extended | filter_cap \ -exclude_self_cap extended |
在 Yes 基础上,额外移除跨电阻器件的耦合电容 |
官方文档记录的类型
根据 Quantus Extraction Users Manual(21.x / 22.x / 25.x 各版本一致):
| Text Prompts | Symbol Names | Type |
|---|---|---|
| Exclude Self Capacitance | vuiRCXexcludeSelfCaps |
Boolean |
矛盾的根本原因:文档描述的是”概念类型”,不是 SKILL 控件类型
Cadence 在该字段类型表中的 “Boolean” 描述,指的是底层 CCL 命令参数的逻辑类型(开/关的布尔概念),而不是 SKILL HI Form 控件的实际实现类型。
实际运行时,该字段在 GUI 中是一个 Cyclic(下拉)控件,通过 .choices 属性支持三个离散字符串值:"No" / "Yes" / "Extended"。
这套命名约定在 Cadence 文档中普遍存在:只要某功能的核心语义是”开/关”,文档就把它归为 Boolean,即使其 GUI 实现扩展了第三个非 false/true 的值。
SKILL 回调中的正确写法
基于以上分析,在 vuiUserDefinedRCXFormSetupCB 回调中,该字段必须按 Cyclic 控件处理:
;; ❌ 错误:对字符串型 cyclic 字段赋布尔值
page3->vuiRCXexcludeSelfCaps->value = t
;; ❌ 错误:注释掉 choices 后,cyclic 控件失去选项集合,变灰
;;page3->vuiRCXexcludeSelfCaps->choices = list("No" "Yes" "Extended")
page3->vuiRCXexcludeSelfCaps->value = "Yes" ; 同样有问题
;; ✅ 正确:先设置 choices 激活控件,再赋字符串值
page3->vuiRCXexcludeSelfCaps->choices = list("No" "Yes" "Extended")
page3->vuiRCXexcludeSelfCaps->value = "Yes" ; 或 "No" / "Extended"
[!IMPORTANT] 灰色的真正原因:
choices被注释掉后,Cyclic 控件没有合法选项集合,GUI 将其渲染为灰色(disabled)。.value = "Yes"赋的是字符串,但若.choices未初始化,该赋值无法激活控件。因此正确修复是恢复.choices赋值,而非改为布尔t。
这也解释了为什么切换 Extraction Type 能临时解锁:切换触发 GUI 内部的 form-refresh,Quantus 自身重新为 vuiRCXexcludeSelfCaps 赋了 choices,使控件变为可交互状态。
结论
| 层面 | 类型 | 正确赋值 |
|---|---|---|
| 官方文档描述 | Boolean(概念层) | 描述 on/off 语义 |
| GUI 控件实现 | Cyclic(三选项) | "No" / "Yes" / "Extended" |
| SKILL 回调写法 | 按 Cyclic 处理 | choices = list(...),value = "Yes" |
修复方法
在 quantus_init.il 的 vuiUserDefinedRCXFormSetupCB 回调中,保留并且先执行 .choices 赋值:
;; ✅ 正确修复:choices 必须在 value 之前设置
page3->vuiRCXexcludeSelfCaps->choices = list("No" "Yes" "Extended")
page3->vuiRCXexcludeSelfCaps->value = "Yes" ; 排除自电容
;; 若需设置 Extended(跨电阻器模式):
;; page3->vuiRCXexcludeSelfCaps->value = "Extended"
同理,MinC 字段也应确认其 choices / editable 初始化正确。
参考资料
以下链接均需 Cadence 账号登录访问。
| 文档 | 链接 | 说明 |
|---|---|---|
| Quantus Users Manual 25.10 — Using SKILL to Preset | 链接 | vuiRCXexcludeSelfCaps 字段类型(Boolean)的官方说明及 Sample Program |
| Quantus Users Manual 22.10 — Using SKILL to Preset | 链接 | 22 版本同样记录为 Boolean,跨版本一致 |
| Quantus Users Manual — filter_cap 命令说明 | 链接 | filter_cap -exclude_self_cap true/extended 参数定义 |
| Article: Quantus QRC UI 003 — Working with the Filtering Tab | a1O0V000006AleeUAC | Filtering Tab 各选项行为与 Extraction Tab 依赖关系说明 |
| Article: PVS-Quantus and QCI setup in vuiUserDefinedRCXFormSetupCB | a1Od0000003rWvSEAU | vuiUserDefinedRCXFormSetupCB 回调的官方使用指南,含字段名示例 |
| Article: How to determine field name for presetting Quantus run form | a1OPP000000ALzF2AW | 如何查找 Run Form 各字段的 SKILL Symbol Name |