Core capabilities
1. Paired Data Generation
Record both AI predictions and deterministic gold labels for the same design state. When an Agent calls an AI model via Model Router, Oracle asynchronously runs the deterministic engine on the same state to produce ground truth. Each pair includes input (design-state features), ai_prediction, gold_result, and delta (error analysis).
2. Active Learning
Select the most informative samples for deterministic labeling. Three strategies: uncertainty (lowest AI confidence), diversity (underrepresented design regions), hybrid (uncertainty + diversity). Active learning minimizes deterministic engine cost—gold labels only for the most valuable samples.
3. Lineage Tracking
Record design source, tool version, process conditions, and scenario parameters for each sample. Full lineage: design source (design_id + commit) → tool version (tool + version + config_hash) → process (PDK node + corner + temperature) → scenario (utilization, frequency target, etc.). Dataset provenance is fully transparent.
4. Applicability
Tag applicability for each sample: design_family (riscv/vliw/soc/...), PDK (sky130/nangate45/asap7/...), scenario_type (congestion_fix/timing_opt/power_reduction/...). Model Router uses applicability tags for domain checks—domains not covered by training data trigger OOD detection.
5. Quality Gate
Data must pass coverage and correctness gates to enter the training set. Coverage gate: ensure new design/scenario regions are covered (avoid redundant homogeneity). Correctness gate: gold labels must come from trusted deterministic engine versions (stale versions marked degraded). Data passing both gates receives the certified label.
Agent invocation
Data Oracle provides two core operations—paired data generation and active learning sample selection.
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)"
Input/output contract
OracleRequest
| Field | Type | Required | Description |
|---|---|---|---|
design_ref | string | Yes | Target design snapshot reference |
tools[] | string[] | Yes | Deterministic tools for gold-label generation |
scenarios[] | string[] | Yes | Scenario tags—congestion_fix, timing_opt, power_reduction, etc. |
selection_strategy | "random" | "uncertainty" | "diversity" | Yes | Active learning strategy—random, uncertainty (most uncertain), diversity (coverage) |
OracleResult
| Field | Type | Description |
|---|---|---|
paired_samples[] | PairedSample[] | Paired sample list—each with input, ai_prediction, gold_result, delta |
lineage_manifest | object | Lineage manifest—design_source, tool_version, pdk_node, scenario_params |
selection_metadata | object | Selection metadata—strategy, uncertainty_scores, diversity_grid |