| name | verification-target |
| description | verification_workflow 流水线的第 1 步。通过与用户交互,分析 DUT Spec 和 RTL 代码,定义验证目标。输出涵盖功能验证、性能验证、连通性验证的结构化验证目标文档。触发条件:由 verification_workflow 在第 1 步调用,或用户直接需要为某个 IP/模块定义验证范围/目标时触发。 |
验证目标定义(第 1 步)
概述
本 skill 是 verification_workflow 流水线的第 1 步。
目标:明确 我们需要对 DUT 的哪些方面进行验证,并将其表述为一组范围清晰的验证目标。
输入:DUT Spec 文档 + RTL 源代码(由用户提供,或已在上下文中)
输出:verification-targets.md —— 列出所有已确认验证目标的结构化文档
执行步骤
1. 收集 DUT 基础信息
在提问之前,先自主收集以下上下文:
- 读取 DUT Spec(若找不到,询问用户路径)。
- 扫描 RTL 顶层文件,识别:
- 例化的子模块 / 子模块列表
- 对外接口(端口)
- 时钟域
- 复位策略
- 顶层模块的 parameter / localparam 声明
1.5 参数化 DUT 配置(若 DUT 含参数则必须执行)
若扫描 RTL 发现顶层模块存在 parameter 声明,必须在进入第 2 步之前完成本节。
第一步:列出所有参数
将识别到的所有参数整理为表格展示给用户:
"检测到本 DUT 为参数化设计,包含以下参数:
| 参数名 | 默认值 | 说明(来自注释/Spec) |
|---|
DATA_WIDTH | 32 | 数据位宽 |
DEPTH | 16 | FIFO 深度 |
| ... | ... | ... |
请为每个参数指定一个用于本次验证的固定值,或告诉我让我为你选择一个典型值。"
第二步:确定参数值
- 若用户逐一给出值 → 直接采用用户指定值
- 若用户说"你来选" / "典型值" → 按以下原则为每个参数选取典型值并说明理由:
- 位宽类(
DATA_WIDTH、ADDR_WIDTH 等)→ 选常见工业值(如 32、64)
- 深度 / 数量类(
DEPTH、NUM_PORTS)→ 选能覆盖基本功能且仿真可行的中等值(如 8、16)
- 布尔/使能类(
ENABLE_FEATURE)→ 选 1(使能),除非 Spec 建议验证关闭路径
- 枚举/模式类 → 选最常用模式
- 说明理由后,征求用户确认:"以上典型值是否可以?如需调整请告知。"
第三步:记录并锁定参数配置
确认后,输出参数配置表,并在所有后续分析中以此为准:
本次验证的固定参数配置:
DATA_WIDTH = 32
DEPTH = 16
...
(验证目标仅针对以上固定参数配置下的 DUT 行为,不覆盖参数扫描)
⚠️ 重要约束:后续所有验证目标、测试点、策略均基于上述固定参数配置定义,不涉及参数空间的扫描验证。若需验证不同参数组合,应作为独立的验证活动另行规划。
2. 与用户逐步交互确认
按照以下问题清单,以对话方式逐组提问。不要一次性抛出所有问题。
2.1 Golden IP / 第三方子模块
针对 RTL 中识别出的每个子模块:
"子模块 <name> —— 这是 Golden IP(已预验证、可信任)吗?还是需要在本次验证工作中对其进行完备的功能验证?"
- 若为 Golden IP → 标记为 黑盒;仅做连通性检查
- 若需要验证 → 标记为 需要完整功能验证
2.2 功能完备性
"是否需要对顶层 DUT 进行完整的功能验证(即 Spec 中所有 feature 都必须被覆盖)?"
若只做部分验证,追问:
"哪些 feature 范围在本次验证之内?哪些不在范围之内(例如由其他团队负责)?"
2.3 性能目标
"是否有需要验证的性能指标?(例如吞吐量、延迟、带宽、背压处理)"
若有,追问:
"每个性能指标的通过/失败判定标准是什么?"
2.4 连通性 / 集成目标
"本 DUT 是否集成在更大的 SoC 或子系统中?是否需要集成级别的连通性检查(例如总线连通性、中断路由)?"
2.5 特殊验证域
仅当 Spec 或 RTL 中有相关提示时,才询问以下各项:
- 低功耗 / 电源管理(power gating、clock gating、retention)
- 安全特性(访问控制、加密、防篡改检测)
- 功能安全(错误注入、ECC、奇偶校验)
- 调试 / DFT(扫描链、BIST —— 通常不在功能验证范围内)
3. 对验证目标进行分类
根据用户回答,将目标归入以下类别:
| 类别 | 说明 |
|---|
| 功能验证 | 验证 DUT 正确实现了 Spec 中所有规定的行为 |
| 性能验证 | 验证吞吐量 / 延迟 / 带宽满足 Spec 要求 |
| 连通性验证 | 验证总线连线、中断连接、复位等正确集成 |
| 黑盒验证 | 子模块为 Golden IP;只验证其连接是否正确 |
| 不在范围内 | 明确排除在本次验证工作之外 |
4. 生成输出文档
生成 verification-targets.md,结构如下:
# 验证目标 — <DUT 名称>
## 参数配置(仅参数化 DUT 需要)
| 参数名 | 本次验证取值 | 选值依据 |
|--------|------------|---------|
| `DATA_WIDTH` | 32 | 用户指定 / 典型工业值 |
| `DEPTH` | 16 | 用户指定 / 覆盖基本功能的中等值 |
| ... | ... | ... |
> 本验证目标文档及后续所有测试点、策略均仅针对以上固定参数配置,不涵盖参数空间扫描。
## 范围摘要
<一段话总结本次验证的范围,以及明确排除的内容。>
## 验证目标列表
### 功能验证目标
- [ ] FT-001: <描述>
- [ ] FT-002: <描述>
...
### 性能验证目标
- [ ] PT-001: <描述,含通过/失败判定标准>
...
### 连通性验证目标
- [ ] CT-001: <描述>
...
### 黑盒 / Golden IP 目标
- [ ] BT-001: 子模块 `<name>` —— 仅做连通性检查
...
### 不在范围内
- OS-001: <排除原因>
...
输出交接
本步骤完成后:
- 向用户确认目标列表:"以上是已定义的验证目标,请问在进入下一步之前,是否需要增加、删除或修改任何条目?"
- 确认后,将文档保存为
verification-targets.md,存储在项目的验证目录(或与用户协商的位置)。
- 告知工作流编排器(或用户):第 1 步已完成,输出已就绪,可进入第 2 步(
verification-testpoint)。