跳到主要内容

Agent Planner · 目标分解与执行监控

将自然语言或结构化目标分解为可执行的 typed plan,在运行中实时 critic 与调整。可由确定性规则 baseline 起步——不要求 LLM 才能运行。

Agent Service · D1 · Wave 1 开发中 · D1 iEDA.ai L4
planner — critic — recovery
# decompose goal into typed plan
$ planner.plan("优化关键路径时序")
[step 1] STA identify critical paths
[step 2] Resize cells on path top-3
[step 3] Verify timing delta
→ critic monitors, recovery on failure
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

核心能力

1. Plan Generation

将目标(自然语言或结构化 DSL)分解为子任务序列:目标→子任务分解→工具选择→依赖排序。每个子任务明确输入/输出契约和预期结果阈值。支持sequentialparallelconditional 三种依赖类型。

2. Critic

在每个子任务完成后实时监控执行结果,判断是否偏离原始目标。Critic 不直接修改计划——它产生评估报告(on-track / deviation-detected / goal-violated),供 Planner 决策。

3. Recovery

子任务失败时自动生成替代方案。Recovery 策略包括:回退上一 checkpoint 重试、替换工具链、调整参数范围、降级目标(如面积放宽 5% 换取时序收敛)。所有 recovery 路径需经过 Gate 评估。

4. Stop Criteria

区分硬性门禁与软性门禁:

  • 硬性门禁:约束违规(如面积超限)、预算耗尽(wall-clock 或工具调用次数)、不可恢复错误。
  • 软性门禁:收益递减(连续 N 轮改善 < 阈值)、达到目标但继续微调无显著收益。

Agent 调用方式

from ieda.agent import Planner, Goal, StopCriteria

planner = Planner()

goal = Goal(
    target="优化关键路径时序,面积增加不超过 5%",
    constraints={"area_budget_pct": 5.0},
    quality={"timing_slack_ps": -50}
)

plan = planner.plan(goal)

# plan.result: TypedPlan {
#   steps: [Step("sta-analyze", tool="iSTA"),
#           Step("resize-critical", tool="iPL", deps=["sta-analyze"]),
#           Step("verify", tool="iSTA", deps=["resize-critical"])],
#   stop: HardStop("area_budget_pct <= 5.0"),
#   critic: OnStepComplete("verify") -> CompareDelta("timing_slack_ps")
# }

result = planner.execute(plan, db=current_idb)
# critic runs after each step, recovery triggers on failure

输入/输出契约

方向字段类型说明
输入goalstr | Goal自然语言或结构化目标描述
输入constraintsdict硬约束:面积、功耗、时间预算
输入tool_capabilitieslist[str]可用工具列表(用于工具选择)
输入design_snapshotstr设计 checkpoint 标识
输出planTypedPlan包含 steps、deps、stop、critic 的完整计划
输出execution_traceTrace每个 step 的输入/输出/耗时/结果
输出recovery_loglist[Recovery]所有 recovery 事件及替代方案