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 / filelist | P0 |
| 对齐端口 / interface | P0.4–P0.5 |
| 写 spec / 写 SPEC_RTL | P0.6(需人 approve) |
| 写测台 / agent / tb | P1 |
| 先 smoke / 冒烟 | P2.0 → P3 round 1 |
| 加测例 / func / 反压 | P1 改码 → P3 |
| 多轮 / 闭环 / iterate | P3 |
| 覆盖不够 / coverage | P3 + --coverage |
| 换 VCS / Questa | P3 跨 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;确认账户与用量。