跳到主要内容

Experience Memory · 可检索的设计经验

存储 Agent 运行的历史轨迹,支持按设计特征检索相似案例。经验只能产生先验/proposal——不是 oracle,不能替代确定性验证。

Agent Service · D1 · Wave 1 开发中 · 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

核心能力

1. Trajectory Storage

完整记录 Agent 的运行轨迹:包括 goalplan、每个 step 的输入/输出/耗时/结果、critic 报告、recovery 事件。轨迹以结构化 JSON 存储,关联 design_hashdesign_features(单元数、宏数、利用率、时钟频率等)。

2. Similarity Search

按设计特征检索相似历史案例。将当前设计的 feature vector(单元数、面积、利用率、时钟域数、拥塞热点)与历史案例进行余弦相似度匹配。返回 top-k 相似案例及其完整轨迹和执行结果。

3. Failure Case Base

失败案例库与已知修复方案。每次 Agent 执行失败/触发 recovery 后,自动归类失败模式(如 timing-violation/routing-congestion/drc-hotspot)并关联最终成功的修复步骤。检索时优先返回同类失败的成功修复方案。

4. Applicability

历史经验对当前设计的适用性评估。相似度匹配后,对候选案例评估适用性:工艺节点是否一致、设计规模是否可比、约束条件差异。输出applicability_score(0-1),低于阈值(如 0.6)的经验标记为low_confidence

5. Forgetting

过时/不适用经验的淘汰策略。基于时间衰减、适用性变化和冗余度执行 forgetting:超过 N 个月未被检索的经验降低权重;新工艺节点的经验积累后淘汰旧节点的 low-confidence 案例;重复/冗余轨迹进行合并去重。

Agent 调用方式

from ieda.agent import ExperienceMemory, DesignFeatures

memory = ExperienceMemory()

# 存储运行轨迹
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"]
)

# 相似案例检索
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
# }

# 失败案例检索
failures = memory.search_failures(
    features=features,
    failure_mode="timing-violation",
    min_applicability=0.6
)

# 淘汰过时经验
memory.forget(older_than_months=12, min_applicability=0.3)

输入/输出契约

方向字段类型说明
输入trajectoryTraceAgent 完整运行轨迹
输入design_featuresDesignFeatures设计特征向量(规模、利用率、频率等)
输入kint返回的相似案例数量
输入filtersdict过滤条件(成功/失败、failure_mode、日期范围)
输出caseslist[MemoryCase]相似案例列表,含 similarity/ applicability 评分
输出recommendationPriorProposal基于经验的先验建议(仅作参考)
输出forget_reportdict淘汰操作的统计摘要