Skip to content
Agent Platform · D1 · Wave 1

Design Observer · An explainable lens on design

Helps Agents understand what the design looks like now and what the last change affected. Summarize, diff, explain, and root cause—four observation primitives cover every information need Agents have about design state.

Agent Platform D1 Wave 1
observer — explain
# Agent observes design state change
$ observer diff snap_a snap_b
[diff   ] 12 cells moved, 3 nets rerouted
[timing ] critical path +42ps on clk_core
$ observer explain --change cell_resize_u7
[explain] u7.resize(X2→X4) → fanout cap ↑
[explain] → clk_core path delay +42ps
→ root cause: u7 driving 8 loads, X4 still weak
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

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
MCP
Tcl

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

FieldTypeRequiredDescription
design_refstringYesTarget design snapshot reference
observe_type"summarize" | "diff" | "explain" | "root_cause"YesObservation primitive type
reference_refstringRequired for diffReference snapshot—for diff comparison baseline
violation_refstringRequired for root_causeViolation reference identifier

ObserveResult

FieldTypeDescription
summaryDesignSummary | nullStructured summary from summarize mode
diffDesignDiff | nullStructured diff from diff mode (cell_changes, net_changes, timing_delta)
explanationCausalChain | nullCausal chain from explain mode—quantitative data at each step
root_causeRootCauseAnalysis | nullRoot-cause mode: introducing_change, agent_proposal, fix_suggestions

Every observation primitive is an eye for Agent design understanding

From summarize to root cause—Observer gives Agents full situational awareness of design state.