核心能力
1. Trajectory Storage
完整记录 Agent 的运行轨迹:包括 goal、plan、每个 step 的输入/输出/耗时/结果、critic 报告、recovery 事件。轨迹以结构化 JSON 存储,关联 design_hash 和 design_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)
// MCP 协议:Agent 查询历史经验
{
"method": "tools/call",
"params": {
"name": "memory.search",
"arguments": {
"design_features": {
"cells": 1350000,
"macros": 52,
"utilization": 0.74,
"clock_period_ns": 0.85
},
"k": 5,
"filters": {
"success": true,
"failure_mode": null,
"min_applicability": 0.6
}
}
}
}
# Tcl 接口:经验记忆查询
ieda::memory store -trajectory $trace \
-cells 1200000 -macros 48 -util 0.72
ieda::memory search -cells 1350000 -macros 52 -util 0.74 -k 5
# case-1: sim=0.94 app=0.88 timing-closure success
# case-2: sim=0.87 app=0.82 post-route success
# ...
ieda::memory failures -mode timing-violation
# f-case-1: sim=0.91 fix=resize+buffer steps=8
输入/输出契约
| 方向 | 字段 | 类型 | 说明 |
|---|---|---|---|
| 输入 | trajectory | Trace | Agent 完整运行轨迹 |
| 输入 | design_features | DesignFeatures | 设计特征向量(规模、利用率、频率等) |
| 输入 | k | int | 返回的相似案例数量 |
| 输入 | filters | dict | 过滤条件(成功/失败、failure_mode、日期范围) |
| 输出 | cases | list[MemoryCase] | 相似案例列表,含 similarity/ applicability 评分 |
| 输出 | recommendation | PriorProposal | 基于经验的先验建议(仅作参考) |
| 输出 | forget_report | dict | 淘汰操作的统计摘要 |