Skip to content

Experience Memory · Retrievable design experience

Stores Agent run trajectories and retrieves similar cases by design features. Experience yields priors/proposals only—not an oracle and not a substitute for deterministic verification.

Agent Service · D1 · Wave 1 In development · D1 iEDA.ai L4
memory — retrieve — apply
# store & retrieve design experience
$ memory.store(trajectory)
[index] design features → vector space
[query] similar timing closure cases (k=5)
→ prior only,  not deterministic answer
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

1. Trajectory Storage

Record full Agent trajectories: goal, plan, per-step I/O/runtime/result, critic reports, recovery events. Stored as structured JSON linked to design_hash and design_features (cell count, macros, utilization, clock frequency, etc.).

2. Similarity Search

Retrieve similar historical cases by design features. Cosine similarity between current feature vector (cells, area, utilization, clock domains, congestion hotspots) and history. Returns top-k cases with full trajectories and outcomes.

3. Failure Case Base

Failure library with known fixes. After failure/recovery, auto-classify failure modes (timing-violation/routing-congestion/drc-hotspot) and link successful repair steps. Retrieval prioritizes successful fixes for the same failure class.

4. Applicability

Assess applicability of historical experience. After similarity match, check PDK node, design scale, constraint differences. Output applicability_score (0–1); below threshold (e.g. 0.6) marks low_confidence.

5. Forgetting

Forgetting stale or inapplicable experience. Time decay, applicability drift, redundancy: unused cases lose weight after N months; new PDK experience supersedes old low-confidence cases; duplicate trajectories merge.

Agent calling patterns

from ieda.agent import ExperienceMemory, DesignFeatures

memory = ExperienceMemory()

# Store run trajectory
trajectory = planner.execution_trace  # from Agent Planner
memory.store(
    trajectory=trajectory,
    design_features=DesignFeatures(
        cells=1_200_000,
        macros=48,
        utilization=0.72,
        clock_domains=5,
        clock_period_ns=0.85
    ),
    result="success",
    tags=["timing-closure", "post-route", "hold-fix"]
)

# Similar case retrieval
features = DesignFeatures(cells=1_350_000, macros=52, utilization=0.74)
cases = memory.search(features, k=5, mode="similarity")
# cases[0]: {
#   "similarity": 0.94, "applicability": 0.88,
#   "plan_summary": "...", "success": true, "steps": 12
# }

# Failure case retrieval
failures = memory.search_failures(
    features=features,
    failure_mode="timing-violation",
    min_applicability=0.6
)

# Forget stale experience
memory.forget(older_than_months=12, min_applicability=0.3)

Input / output contract

DirectionFieldTypeDescription
InputtrajectoryTraceFull Agent run trajectory
Inputdesign_featuresDesignFeaturesDesign feature vector (scale, utilization, frequency, etc.)
InputkintNumber of similar cases to return
InputfiltersdictFilters (success/failure, failure_mode, date range)
Outputcaseslist[MemoryCase]Similar cases with similarity/applicability scores
OutputrecommendationPriorProposalExperience-based prior suggestion (reference only)
Outputforget_reportdictStatistics summary of forget operation