核心能力
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 调用方式
# 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_ref | string | 是 | 设计实例标识符(布线后含 GDS/DEF) |
nets | string[] | 否 | 指定提取的 net 名称列表(不指定则全芯片) |
incremental | bool | 否 | 是否增量提取(仅提取变更部分) |
extraction_mode | "estimate"|"in-design"|"correlated" | 否 | 提取精度模式 |
| 返回字段 | 类型 | 说明 |
|---|---|---|
spef_ref | string | 生成的 SPEF 文件在 iDB 中的引用 ID |
rc_network | RCNetwork | RC 网络拓扑和参数(可编程访问) |
extracted_nets | int | 本次提取的 net 数量 |
correlation_score | float | 与参考工具的提取相关性(correlated 模式) |
在流程中的位置
··· 前置步骤 ···
│
┌─────────────┐
│ iRT │ 布线完成(含金属几何信息)
│ Routing │
└──────┬──────┘
│ DEF + LEF + tech
▼
┌─────────────┐
│ iRCX │ ← 当前工具:RC 寄生提取
│ RC Extract │
└──────┬──────┘
│ SPEF
├──────────────┬──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ iSTA │ │ iPA/iIR │ │ iTO │
│ Timing │ │ Power │ │ ECO Opt │
└──────────┘ └──────────┘ └──────────┘