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
// MCP: Agent reads/writes constraints via intent layer
{
"method": "tools/call",
"params": {
"name": "intent.propose",
"arguments": {
"constraint": "set_clock_period",
"current_value": "1.0ns",
"proposed_value": "1.2ns",
"reason": "timing closure requires frequency relaxation",
"impact_analysis": {
"affected_corners": ["wc_cmax"],
"regression_risk": "low"
}
}
}
}
# Tcl: versioned intent management
ieda::intent store -name sdc -file ./constraints/v3.sdc
ieda::intent check -name sdc -mode completeness
# → MMMC completeness: WARNING - input_delay missing for wc_cmax
ieda::intent history -name sdc
# v1 2025-01-15 user:initial
# v2 2025-03-22 agent:prop-v7 (approved)
# v3 2025-06-10 user:update corner
Input / output contract
| Direction | Field | Type | Description |
|---|---|---|---|
| Input | name | str | Intent collection name (sdc / upf / mmc) |
| Input | content | bytes | Raw constraint file content |
| Input | metadata | dict | Source and linked proposal ID |
| Input | proposal | IntentProposal | Agent-submitted constraint change proposal |
| Output | version | IntentVersion | Immutable version object (hash, timestamp) |
| Output | completeness_report | dict | Constraint coverage status per corner/mode |
| Output | audit_log | list[AuditEntry] | Auditable change records |