跳到主要内容
Agent Platform · D0/DRAFT · Wave 0

Data Oracle · 配对数据与主动学习

为模型训练提供 {设计状态 → 金标结果} 的配对数据。记录每条数据的产生条件、工具版本和适用范围——让训练数据有完整的 lineage。

Agent Platform D0/DRAFT Wave 0
oracle — paired data
# Oracle generates paired training samples
$ oracle generate --design snap_7f3a --tools iPL iSTA
[oracle ] AI prediction recorded   hpwl_est=1.82e6
[oracle ] deterministic gold      hpwl_actual=1.79e6
[lineage] source: snap_7f3a, tool: iPL v2.1, PDK: sky130
$ oracle select --strategy uncertainty_top100
[active  ] top-100 uncertain samples → send to deterministic
→ 100 new {design→gold} pairs added, lineage recorded
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

核心能力

1. Paired Data Generation

对同一设计状态同时记录 AI 预测和确定性金标结果。每当 Agent 通过 Model Router 调用 AI 模型做预测时,Oracle 异步触发同状态上的确定性引擎执行,生成金标 ground truth。每对数据包含:input(设计状态特征)、ai_prediction、gold_result、delta(误差分析)。

2. Active Learning

选择最有信息量的样本送确定性引擎标注。支持三种选择策略:uncertainty(选 AI 预测置信度最低的样本)、diversity(选覆盖未充分代表的 design 区域的样本)、hybrid(综合考虑 uncertainty + diversity)。主动学习循环最小化确定性引擎的计算开销——只对最有价值的样本求金标。

3. Lineage Tracking

记录每条数据的设计来源、工具版本、工艺条件、场景参数。完整 lineage 链:设计来源(design_id + commit)→ 工具版本(tool + version + config_hash)→ 工艺条件(PDK node + corner + temperature)→ 场景参数(utilization、frequency target 等)。数据集的 provenance 完全透明。

4. Applicability

标记每条数据的适用范围。design_family(riscv/vliw/soc/...)、PDK(sky130/nangate45/asap7/...)、scenario_type(congestion_fix/timing_opt/power_reduction/...)。Model Router 利用 applicability 标签判断模型的适用域——训练数据不覆盖的 domain 自动触发 OOD 检测。

5. Quality Gate

数据必须通过 coverage 和 correctness gate 才能进入训练集。Coverage gate:检查数据是否覆盖了新 design/scenario 区域(避免同质化冗余)。Correctness gate:检查金标结果是否来自可信的确定性引擎版本(过期版本的结果标记为 degraded)。通过双闸的数据获得 certified 标签。

Agent 调用方式

Data Oracle 提供两种核心操作——paired data generation(触发配对数据生成)和 active learning sample selection(主动学习采样)。

Python
MCP
Tcl

Python SDK

from ieda.oracle import DataOracle

oracle = DataOracle("http://localhost:9130")

# Generate paired data: record AI prediction + gold result
samples = oracle.generate(
    design_ref="snap_7f3a",
    tools=["iPL", "iSTA"],
    scenarios=["congestion_fix", "timing_opt"],
)
print(len(samples))             # 42 paired samples

# Active learning: select most informative samples
selected = oracle.select(
    selection_strategy="uncertainty",
    top_k=100,
    model_family="congestion_nn",
)

# Check data lineage
lineage = oracle.get_lineage(sample_id="pair_7f3a_042")
print(lineage.design_source)    # "snap_7f3a (commit a1b2c3)"
print(lineage.tool_version)    # "iPL v2.1.0 (config hash: f3a9)"

输入/输出契约

OracleRequest

字段类型必需说明
design_refstring目标设计快照引用
tools[]string[]需要生成金标结果的确定性工具列表
scenarios[]string[]场景标签——congestion_fix, timing_opt, power_reduction 等
selection_strategy"random" | "uncertainty" | "diversity"主动学习选择策略——random 随机、uncertainty 选最不确定、diversity 选覆盖面

OracleResult

字段类型说明
paired_samples[]PairedSample[]配对数据列表——每条含 input、ai_prediction、gold_result、delta
lineage_manifestobject血缘清单——design_source、tool_version、pdk_node、scenario_params
selection_metadataobject采样元数据——strategy、uncertainty_scores、diversity_grid

训练数据的质量决定模型的质量

Data Oracle 确保每一条训练数据都有完整的 lineage——从设计来源到工具版本,从工艺条件到场景参数。