Core capabilities
1. Summarize
Generate structured summaries for any snapshot: cell/net statistics, critical-path delay distribution, congestion hotspot coordinates, power heatmaps, clock-tree depth and skew. Agents get a high-level design overview without parsing the raw database. Summary output is structured JSON for LLM context or Model Router input features.
2. Diff
Compare structured differences between two snapshots. Output three change sets: which cells changed (position, size, type), which nets were rerouted (topology, layer), and how timing changed (critical-path slack delta, new and resolved violations). Diff results feed Agent Planner as a what-changed signal.
3. Explain
Explain the causal chain of a change. For example: why did resizing this cell slow that path? Observer traces capacitance change → drive strength → transition time → cell delay, outputting readable causal steps. Each step includes quantitative data—not just slower, but +42ps because fanout cap rose from 0.08pF to 0.15pF.
4. Root Cause
Trace violations to root cause. Given a DRC or timing violation, Observer answers: which change introduced it, which Agent proposal caused it, and possible fix paths. Chain: violation → diff → change → candidate → agent intention.
Agent invocation
Observer exposes a unified API for all four primitives; Agents switch modes via the observe_type parameter.
Python SDK
from ieda.observer import DesignObserver obs = DesignObserver("http://localhost:9110") # Summarize: get design overview summary = obs.observe( design_ref="snap_b", observe_type="summarize", ) print(summary.cell_count) # 45231 print(summary.critical_paths) # [{"name":"clk_core","slack":-0.12},...] # Diff: compare two snapshots diff = obs.observe( design_ref="snap_b", observe_type="diff", reference_ref="snap_a", ) # Root cause: trace violation to agent proposal rc = obs.observe( design_ref="snap_b", observe_type="root_cause", violation_ref="DRC_M1_SPACING_x1245_y330", ) print(rc.introducing_change) # "cell_move_u_alu_0" print(rc.agent_proposal) # "candidate_c42_a"
Input/output contract
ObserveRequest
| Field | Type | Required | Description |
|---|---|---|---|
design_ref | string | Yes | Target design snapshot reference |
observe_type | "summarize" | "diff" | "explain" | "root_cause" | Yes | Observation primitive type |
reference_ref | string | Required for diff | Reference snapshot—for diff comparison baseline |
violation_ref | string | Required for root_cause | Violation reference identifier |
ObserveResult
| Field | Type | Description |
|---|---|---|
summary | DesignSummary | null | Structured summary from summarize mode |
diff | DesignDiff | null | Structured diff from diff mode (cell_changes, net_changes, timing_delta) |
explanation | CausalChain | null | Causal chain from explain mode—quantitative data at each step |
root_cause | RootCauseAnalysis | null | Root-cause mode: introducing_change, agent_proposal, fix_suggestions |