AI 辅助验证工作流 — 人类引导手册

读者:验证工程师(你),在 Cursor / Claude Code / OpenCode / Kimi 等 AI IDE 里工作。
用法:复制下方 提示词块 发给 Agent;你补充 DUT 信息与验收标准,Agent 负责测台与多轮闭环。
适用范围:任意 RTL(流式、总线、寄存器、混合接口均可),与具体 IP 名称无关。


1. 三十秒心智模型

  你                          Agent(AI IDE + MCP)
  ──                          ─────────────────────
  目标 + 验收 + 何时停   →    读 JSON 判决 → 改测台 → 再跑
  看 HTML 进度面板       ←    汇报 stop_reason + 证据路径
  签核 / STALL           →    停止或加深
角色看什么真源
你进度、签核、是否继续reports/workflow.html(在线示例)
Agent通过 / 失败 / 下一步reports/loop/summary.json 的 stop_reason

铁律(每次任务末尾附上):

  • 禁止修改 我的 .v / .sv / .svh 源文件
  • 判决以 summary.json 为准,不以终端颜色或过期 HTML 猜测
  • 测台遵守 User → Worker → Coro → RTL;Case 不直接驱 clk/rst
  • 我说 「STALL」 或 「等我看」 时,停止自动下一轮

2. 万能任务书(首次对话 · 复制即用)

把 {…} 换成你的信息,整段粘贴给 Agent:

【Flintrix 验证任务 — 完整闭环】

DUT:
  - 模块名:{模块名}
  - RTL 根目录(绝对路径):{RTL绝对路径}
  - 接口摘要:{例:AXI4-Stream 32bit 入/出;或 APB 寄存器 + 中断脚}
  - filelist:{有 .f 则写路径;无则让 Agent bootstrap 生成}

目标:
  - 从零搭建 Harness → 冒烟 → 功能加深 → 多轮 verify,直到我签核或 STALL
  - 首轮仿真器:verilator

验收(可观测行为,写清楚):
  1. {例:复位释放后 N 个周期内完成一次合法事务}
  2. {例:写后读回数据一致 / 顺序不乱 / 协议握手无 X}
  3. 失败时必须说明:DUT bug 还是测台 bug,并给出 JSON/HTML 证据路径

约束(必须遵守):
  - 禁止修改我的 RTL 源文件
  - 判决以 reports/loop/summary.json 的 stop_reason 为准
  - 每轮 verify 后:读 summary → 汇报 stop_reason → 再决定是否改码
  - 人看 workflow.html;你只读 JSON
  - 我说 STALL 时立即停止

执行顺序(Agent 自行推进,缺信息先问我):
  P0  bootstrap + interface 对齐
  P1  测台代码 + cargo check
  P2  冒烟 / 分层矩阵(按 registry)
  P3  klymora_verify 多轮闭环

开始前:klymora-mcp doctor 通过;blocking_step 不明则先汇报计划。

3. 分阶段追加话术(按需复制)

3.1 尚无 Harness — 只要 P0

请为 {模块名} 做 P0:RTL 在 {路径},bootstrap + check-interface,不要写测台。
验收:alignment.json fully_aligned;禁止改 RTL。

3.2 已有 Harness — 单轮冒烟

Harness:{工程绝对路径}
请 verify round 1,simulator verilator,先跑 smoke 类测例。
汇报 stop_reason;若 SUCCESS 说明已覆盖哪些 acceptance 条目。
渲染 reports 后告诉我 workflow.html 里卡在哪一步。

3.3 多轮闭环(P3 · 可重复)

继续验证 round {N}。
若 stop_reason=SIM_FAIL,期望行为是:{用自然语言写正确时序/数据/协议行为}。
改测台后 round++;连续两轮相同失败则 STALL 并汇总证据。

3.4 加深深度(L2 功能 / L3 随机 / L4 覆盖)

在现有 Harness 上加深到 L{2|3|4}:
  - 新测例意图:{例:反压、边界、错误恢复、多帧 burst}
  - 通过条件:{可观测}
  - L3:seed={数字},说明约束范围
  - L4:开 coverage,列出未覆盖洞并补 directed 或 CRV
不要跳过已通过的 smoke。

3.5 跨仿真器(泛化)

同一 Harness、同一 case,换 {vcs|questa|verilator} 重跑 smoke。
两边 stop_reason 不一致则对比 simulation.log 与激励 trace,汇报差异根因。

3.6 暂停 / 签核

STALL:汇总最近 3 轮 stop_reason、改动的 Harness 文件、仍未满足的 acceptance。
不要自动 round++。

—— 或 ——

准备 L5 签核:汇总 TEST REPORT、已知限制、未测 corner;等我书面批准。

4. 验收怎么说(泛化模板)

用 可观测行为 描述,避免「应该没问题」:

验证关注点你对 Agent 说(模板)
复位「deassert 后 {N} 周期内 {信号/事务} 达到 {状态}」
单事务「地址 {A} 写 {D},读回等于 {D}」
流式 / 握手「tvalid/tready 下连续 {K} 拍,数据顺序 {规则},无丢包/重复」
寄存器「偏移 {addr} 写 {val},读回 bit[{m}:{n}] = {val};只经 MMIO 路径」
反压「下游 tready 拉低 {M} 周期,上游不得丢 beat;恢复后顺序不变」
错误注入「{故障条件} 后 {N} 周期内进入 {recovery 状态},无挂死」
性能 / 压力「连续 {数量} 事务无 overflow;或 soak {时长/包数} 无 FAIL」

反例(太模糊,Agent 会猜):「测一下 FIFO」「跑通就行」「和 spec 一致」(除非附上 spec 路径与章节)。


5. 意图关键词(口语 → Agent 阶段)

你说的大意Agent 应进入
建工程 / bootstrap / filelistP0
对齐端口 / interfaceP0.4–P0.5
写 spec / 写 SPEC_RTLP0.6(需人 approve)
写测台 / agent / tbP1
先 smoke / 冒烟P2.0 → P3 round 1
加测例 / func / 反压P1 改码 → P3
多轮 / 闭环 / iterateP3
覆盖不够 / coverageP3 + --coverage
换 VCS / QuestaP3 跨 EDA
看进度 / 卡在哪你读 workflow.html;Agent 读 JSON + blocking_step
FAIL / 查原因P3 诊断 + evidence
STALL / 等我看停止自动化
签核 / L5汇总 signoff bundle

6. 失败时你怎么说(stop_reason → 话术)

stop_reason你对 Agent 说
SUCCESS「对照 acceptance 清单;够则签核准备,不够则加深 L{下一级}」
COMPILE_ERROR「修编译到 cargo check 通过,摘要错误根因」
SIM_FAIL「期望:{行为}。查 DUT vs 测台,给 simulation.log + summary 证据」
INTERFACE_FAIL「RTL 是否变更?重新 check-interface,不要猜端口名」
STIMULUS_FAIL「做 stimulus 审计;是否违反 clk/rst 或 Case 直驱协议脚」
THRESHOLD_FAIL「列 coverage 洞;补 case 或说明 waiver 理由」
ASSERTION_HEALTH_FAIL「哪条断言未触发;补激励或说明 vacuous」
STALL「我已介入;汇总后等我下一条指令」

完成 ≠ 第一次 SUCCESS。多轮改码是正常流程。


7. Agent 闭环(你不必记工具名)

每轮 verify,Agent 内部应完成类似序列(MCP 或 Orchestrator 等价):

verify → 读 summary.json → 取证据 bundle → 加载对应 Skill → 改 Harness → 确认已读规程 → 下一轮或 STALL

你只需检查 Agent 是否:
① 汇报了 stop_reason;② 未改 RTL;③ STALL 时真的停了。


8. 深度阶梯(L1 → L5 · 话术修饰)

深度你对 Agent 说(一句)
L1「复位后 happy path smoke,一条主路径即可」
L2「加 directed func:{场景},加 scoreboard/比对」
L3「CRV:seed={s},约束 {范围},跑 {轮数} 轮」
L4「--coverage,未覆盖点逐条补或书面接受」
L5「汇总 TEST REPORT + 限制,准备签核」

推荐路径:L1 → L2 →(可选 L3/L4)→ L5,不要跳过 smoke。


9. 双通道:你怎么看进度

你想知道怎么做
卡在哪一步本地:klymora-run --render-reports <harness> → 打开 reports/workflow.html
在线长什么样工作流状态面板(示例) → 打开快照
本轮判词让 Agent 读 reports/loop/summary.json 并用中文解释 stop_reason

HTML 可能在 verify 与 render 之间短暂滞后;以 JSON 为准,必要时让 Agent 执行 --render-reports 刷新。


10. 前置条件(一次性)

项说明
flintrix-online安装指南
门户账户 + 设备账户;IDE 首次 MCP 关联
Agent 对接sudo /opt/flintrix/setup/install-klymora-agent.sh → 重启 IDE → klymora-mcp doctor
RTL + 仿真器DUT 源与 filelist;首轮建议 Verilator

11. 常见问题

Q: 我不会 Rust,能验证吗?
A: 可以。你用 §2–§6 描述 DUT 与验收;Agent 写测台。

Q: 必须说「P0/P1」这些术语吗?
A: 不必。§5 的口语即可;Agent 应对齐 registry 步骤。

Q: workflow 示例和本地一样吗?
A: 版式相同;门户快照为 golden 静态示例,链接以本地 reports/ 为准。

Q: Agent 改了我 RTL?
A: 立即叫停,回滚 RTL,只允许改 Harness。

Q: IDE 没有 klymora_ 工具?*
A: 重装 Agent 集成并 klymora-mcp doctor;确认账户与用量。


12. 相关文档