Skip to content

Interface · Secure boundary between Agents and EDA

Interface provides unified MCP/Python/Tcl entry. Typed request/result validation, sandbox isolation, rate limiting, full audit logs—Agents need not know the underlying protocol or worry about privilege escalation.

GATEWAY D0/DRAFT C++/Python
Interface Gateway
# One tool, three protocols — same iDB, same result
[Python] client.call("iPL.place", ...)
[MCP  ] {"tool": "iPL.place", "arguments": {...}}
[Tcl  ] iPL::place -effort standard
# Typed contracts + security isolation + audit log
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

Multi-Protocol

The same tool is exposed via MCP, Python, and Tcl. Agents need not care which protocol—iPL.place hits the same iDB and returns the same structured result. Engineers use Tcl, AI platforms MCP, data scientists Python.

Typed Contracts

Strict request/result schema validation on every call. Gateway rejects wrong types, missing fields, out-of-range values with clear errors. Agents never receive incomplete or malformed results.

Security Isolation

Agent calls run in a sandbox—no direct filesystem, network, or fork. Agents interact with design state only via typed tool interfaces; privilege violations are blocked at the gateway.

Rate Limiting

Prevent Agents from exhausting compute in optimization loops. Token-bucket adaptive rate limiting slows burst calls while preserving responsiveness.

Audit Log

Full audit log of every Agent call—who, when, which tool, parameters, result, latency. Structured logs support performance analysis, security audit, and behavior replay.

Multi-protocol examples

Full examples of calling iPL.place under all three protocols.

from ieda import AgentClient

client = AgentClient(protocol="python")
design = client.load_design("aes_core", tech="sky130")

# All validation happens inside Interface gateway
result = client.call("iPL.place",
    design=design,
    effort="standard",
    congestion_weight=0.3,
    timing_weight=0.7)

# Typed result — guaranteed by contract
print(f"HPWL: {result.hpwl:.2e}")
print(f"Max Density: {result.max_density:.2%}")
print(f"WNS: {result.wns:.4f}")

Security model

┌─────────────────────────────────────────────────┐
│                  Agent (LLM)                     │
└────────────────┬────────────────────────────────┘
                 │ MCP / Python / Tcl
                 ▼
┌─────────────────────────────────────────────────┐
│              Interface Gateway                   │
│  ┌───────────┐  ┌──────────┐  ┌──────────────┐  │
│  │  Schema   │  │  Sandbox │  │ Rate Limiter │  │
│  │ Validator │  │  Layer   │  │ (Token Bkt)  │  │
│  └───────────┘  └──────────┘  └──────────────┘  │
│  ┌───────────────────────────────────────────┐   │
│  │           Audit Logger                    │   │
│  └───────────────────────────────────────────┘   │
└────────────────┬────────────────────────────────┘
                 │ allowed tool calls only
                 ▼
┌─────────────────────────────────────────────────┐
│                  iDB + Tools                     │
└─────────────────────────────────────────────────┘

iDB

Single source of truth for design state—Interface is the only path for Agents to access iDB.

iDB →

Platform overview

See how the five unified-base modules work together.

Platform →

External Tool Bridge

Wrap third-party EDA tool commands as typed tool interfaces.

More →