跳到主要内容
Extraction Engine · CURRENT

iRCX · RC 提取

寄生 RC 提取引擎。Agent 可以按 net inspect 提取、仅对 dirty tile 做增量提取——避免全芯片重提取的巨大开销。

开源 EDAAgent 可调用增量提取GPL-3.0
agent — ircx
# Agent-driven RC extraction
[iRCX ] mode       in-design
[iRCX ] nets extracted     12
[iRCX ] incremental       yes
[iRCX ] correlation       0.97
→ spot-extract critical nets only
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model
布线后/签核前关键步骤
Agent可调用
增量+全芯片双模式
GPL-3.0开源许可

核心能力

iRCX(RC Extraction)是 iEDA 的寄生参数提取引擎,负责从版图几何信息中提取互连线的电阻(R)和电容(C)寄生参数,输出标准 SPEF(Standard Parasitic Exchange Format)文件。精确的 RC 提取是 signoff 级时序分析(iSTA)和功耗分析(iPA)的前提——没有准确的寄生参数,所有的 timing/power 计算都是"估算"而非"分析"。

iRCX 对 Agent 的关键价值在于增量提取能力。在全芯片流程中,一次完整的 RC 提取可能需要数十分钟到数小时。当 Agent 在 ECO 阶段修改了少量布线时,重新提取整个芯片的 RC 是巨大的浪费。iRCX 支持增量模式(incremental=true):Agent 可以仅对发生了布线变更的 dirty tile 或指定 net 列表做局部重提取,将结果 merge 回已有的 SPEF 数据库——将提取时间从小时级压缩到秒级。

Agent 在以下场景中使用 iRCX:关键网络精细分析——Agent 列出 timing critical path 上的 net 列表,调用 iRCX.extract(nets=[...]) 仅提取这些 net 的精确 RC,而非全芯片提取;ECO 后增量更新——布线 ECO 修改了若干 net 后,Agent 指定被修改的 net 做增量提取,然后重新跑 STA 验证修复效果;提取模式选择——在流程不同阶段选择不同精度:early 阶段用 estimate 模式(基于线长和统计模型的快速估计)、physical 阶段用 in-design 模式(基于实际 metal 几何的 field solver)、signoff 阶段用 correlated 模式(与商业工具做相关性校准)。

iRCX 的提取算法基于 2.5D 场求解器(field solver)框架,将版图分层为 conductor/dielectric stack-up,对每层金属的宽度、间距、厚度做精确建模。提取结果除了标准 SPEF 外,还输出 iRCX 内部的 RCNetwork 数据结构——Agent 可以直接访问每段 wire segment 的 R/C 值、耦合电容对、以及 RC 树拓扑,用于构建图神经网络(GNN)的输入特征或训练延迟预测模型。

Agent 调用方式

Python
MCP
Tcl
# Agent 调用 iRCX 做 RC 提取
from ieda_client import IEDAClient

client = IEDAClient()

# 全芯片提取(in-design 模式)
rc = client.call("iRCX.extract",
    design_ref="snap_7f3a",
    extraction_mode="in-design")

print(f"Extracted nets: {rc['extracted_nets']}")

# Agent 仅提取关键 net(增量模式)
rc = client.call("iRCX.extract",
    design_ref="snap_7f3a",
    nets=["net_1234", "net_5678", "clk_net"],
    incremental=True)

# Agent 检查提取相关性与精度
rc = client.call("iRCX.extract",
    design_ref="snap_7f3a",
    extraction_mode="correlated")
print(f"Correlation score: {rc['correlation_score']}")
{
  "tool": "iRCX.extract",
  "arguments": {
    "design_ref": "snap_7f3a",
    "nets": ["net_1234"],
    "incremental": true
  }
}
# Tcl 交互式 RC 提取
iRCX::set_design snap_7f3a
iRCX::set_extraction_mode in-design
iRCX::set_incremental true
iRCX::extract -nets {net_1234 net_5678}
iRCX::write_spef -output snap_7f3a.spef
iRCX::report_correlation

输入 / 输出契约

字段类型必需说明
design_refstring设计实例标识符(布线后含 GDS/DEF)
netsstring[]指定提取的 net 名称列表(不指定则全芯片)
incrementalbool是否增量提取(仅提取变更部分)
extraction_mode"estimate"|"in-design"|"correlated"提取精度模式
返回字段类型说明
spef_refstring生成的 SPEF 文件在 iDB 中的引用 ID
rc_networkRCNetworkRC 网络拓扑和参数(可编程访问)
extracted_netsint本次提取的 net 数量
correlation_scorefloat与参考工具的提取相关性(correlated 模式)

在流程中的位置

    ··· 前置步骤 ···
         │
  ┌─────────────┐
  │    iRT      │  布线完成(含金属几何信息)
  │   Routing    │
  └──────┬──────┘
         │  DEF + LEF + tech
         ▼
  ┌─────────────┐
  │   iRCX     │  ← 当前工具:RC 寄生提取
  │ RC Extract   │
  └──────┬──────┘
         │  SPEF
         ├──────────────┬──────────────┐
         ▼              ▼              ▼
  ┌──────────┐  ┌──────────┐  ┌──────────┐
  │  iSTA    │  │  iPA/iIR │  │  iTO     │
  │ Timing   │  │  Power   │  │ ECO Opt  │
  └──────────┘  └──────────┘  └──────────┘
上游:iRT(布线后,含版图几何信息) 下游:iSTA(时序分析)· iPA(功耗分析)· iTO(ECO 优化) 协同:与 iSTA/iPA 的精度直接相关;增量模式与 iTO ECO 闭环配合

相关资源

论文

Nabors K, White J. "FastCap: A Multipole Accelerated 3-D Capacitance Extraction Program." IEEE TCAD, 1991.

查看 →

论文

Choudhury U, Sangiovanni-Vincentelli A. "Automatic Generation of Analytical Models for Interconnect Capacitances." IEEE TCAD, 1995.

查看 →

关联工具

iSTA · 时序分析 —— RC 提取的主要消费者,SPEF 精度直接决定时序 signoff 质量。

iSTA →

关联工具

iPA · 功耗分析 —— 动态功耗计算依赖 RC 网络的充放电能量。

iPA →

关联工具

iRT · 布线 —— 布线几何信息是 RC 提取的输入,ECO 修改布线后触发增量提取。

iRT →

GitHub

iRCX 源代码于 iEDA 仓库相关提取模块路径下。

GitHub →

精确提取、精准分析

增量模式按需提取关键 net——不再为全芯片重提取付出等待时间。