Skip to content

Intent Scenario · Immutable design intent

Versioned storage and integrity audit for SDC/UPF/MMMC/dont-touch. Design intent is independent truth—Agents must not conflate goal changes with constraint changes.

Agent Service · D0/DRAFT · Wave 0 Planned · D0 iEDA.ai L4
intent — immutable truth
# intent is immutable source of truth
$ intent.store("sdc/v2", sdc_constraints)
[audit] version v2 committed
[check] MMMC completeness: PASS
→ agent proposals never bypass intent
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

1. Intent Storage

Immutable versioned design intent storage. Each SDC/UPF/MMMC update creates a new append-only version with full history. Structure separates design goals (target frequency, area budget) from design constraints (clock period, max transition) so Agents cannot conflate them.

2. Completeness Check

MMMC constraint completeness: verify each corner/mode has full clock definitions, I/O delays, drive/load models. Missing constraints emit WARNING lint; flow may continue but design marks incomplete.

3. Audit Trail

Every intent change writes an auditable immutability log: who (Agent/User/Script), when, what (diff), why (proposal ID). Append-only log with time and proposal filters.

4. Constraint Isolation

Agent proposals cannot bypass the intent layer to edit constraint files. All changes go through Intent Scenario propose(), enter pending, and require Gate evaluation plus human/auto approval.

5. Scenario Reduction

Select representative MMMC subsets via corner correlation and user priority. Modes: worst-case, representative (cluster-based), full.

Agent calling patterns

from ieda.agent import IntentStore, IntentVersion

store = IntentStore(db=current_idb)

# Store new version (append-only)
ver = store.store(
    name="sdc",
    content=sdc_bytes,
    metadata={"source": "user", "proposal_id": "prop-v7"}
)

# Completeness check
report = store.check_completeness(ver.hash)
# report.missing: [{"corner": "wc_cmax", "missing": ["input_delay"]}]

# Query history
history = store.history("sdc", since=ver.hash)
# history.versions: [v1, v2, v3]

# Agent proposal—must go through intent layer
intent_store.propose(
    constraint="set_clock_period",
    new_value="1.2ns",
    reason="timing closure requires freq reduction",
    proposal_id="prop-v8"
)  # → pending, requires gate approval

Input / output contract

DirectionFieldTypeDescription
InputnamestrIntent collection name (sdc / upf / mmc)
InputcontentbytesRaw constraint file content
InputmetadatadictSource and linked proposal ID
InputproposalIntentProposalAgent-submitted constraint change proposal
OutputversionIntentVersionImmutable version object (hash, timestamp)
Outputcompleteness_reportdictConstraint coverage status per corner/mode
Outputaudit_loglist[AuditEntry]Auditable change records