第4章 输入输出物定义:验证计划模板、边界检查表、测试用例规范

章节定位:本章定义协同验证过程中三个核心工件的标准模板与规范。验证计划模板驱动整体验证策略,边界检查表确保覆盖完整性,测试用例规范保证执行一致性。这三个文档构成了验证流程的“铁三角”。

适用场景

  • 项目启动阶段,需要建立统一的验证文档基线
  • 验证团队与固件/硬件设计团队之间需要明确交付物格式和内容深度
  • 项目审查或审计时,需要标准化的模板来核验覆盖率
  • 多项目复用或人员轮换时,保证文档的一致性与可读性

前置条件

  1. 已完成系统需求分析和架构定义(第2/3章输出)
  2. 已识别所有硬件固件交互接口(寄存器地址、中断号、DMA通道等)
  3. 已确定验证方法论(UVM、Formal、定向测试或组合)
  4. 版本控制仓库已建立,用于存储和管理所有模板文档

操作步骤

步骤1:制定验证计划模板(VPT 4.1)

验证计划是验证过程的蓝图,必须覆盖所有功能点与边界场景。模板应包含以下标准节段:

节段编号 节段名称 必填内容
VP-1 版本历史 日期、版本号、作者、变更描述
VP-2 验证范围 被验证模块列表、排除项(含理由)
VP-3 功能分解矩阵 需求ID、功能描述、硬件/固件归属、优先级(P0/P1/P2)
VP-4 边界场景清单 场景ID、边界类型、预期行为、检查方式
VP-5 测试策略 定向测试、随机测试、形式化验证的比例与选择依据
VP-6 覆盖率目标 代码覆盖率、功能覆盖率、固件路径覆盖率的量化目标
VP-7 资源与里程碑 人力投入、仿真环境、时间节点(RTL冻结、固件冻结、正式投片前)
// 验证计划模板JSON Schema示例(精简)
{
  "version": "1.0",
  "scope": {
    "modules": ["uart", "spi", "dma"],
    "exclusions": ["pmu (low power unit) — 由系统级验证覆盖"]
  },
  "feature_matrix": [
    {
      "req_id": "REQ_UART_001",
      "description": "UART波特率配置寄存器写入后立即生效",
      "owner": "hw",
      "priority": "P0"
    }
  ],
  "coverage_goal": {
    "code_line": 95,
    "toggle": 90,
    "functional_assert": 100
  }
}

步骤2:制作边界检查表(BCT 4.2)

边界检查表是验证计划中边界场景清单的补充,专注于接口级、时序级和协议级的边界条件。每一条检查项必须明确描述硬件侧和固件侧的预期行为。

常见陷阱:边界检查表中容易出现“刚过边界”场景缺失。例如 FIFO 满时再写一个数据(满+1)与 FIFO 空时再读一个数据(空-1)必须分别列项,不能合并为“FIFO 溢出场景”。
// 边界检查表标准条目示例
条目编号: BCT_UART_007
边界类型: 寄存器边界(写入最小值/最大值)
描述: UART 数据位长度字段为 3-bit(0-7),允许值为 5/6/7/8 bits
硬件预期: 写入值 5/6/7/8 时配置生效;写入 0-4 或 7 以外的值时保持上一次有效值
固件预期: 固件必须检查写回确认值,并针对无效写入触发错误处理
验证方法: 定向寄存器读写 + 硬件 assert 检查
优先级: P0

步骤3:编写测试用例规范(TCS 4.3)

测试用例规范是验证工程师的执行手册。每个测试用例必须按照以下统一结构编写,不得自定义格式:

字段 说明 示例
Test ID 命名规则:模块_场景_变体_编号 UART_BOUND_STOPBITS_01
Title 简明概括测试目的 UART 停止位配置为2位时发送完整帧
Precondition 固件/硬件初始化状态 UART 已复位,中断使能关闭,DMA 未配置
Stimulus 激励序列(硬件写入 + 固件寄存器操作) 写 UART_CTRL 寄存器设置停止位=2,立即发送 0x55
Expected Outcome 硬件行为 + 固件响应 + 观测点 TX 线上出现两个停止位;状态寄存器 bit[4] = 1 表示帧结束;ISR 触发
Coverage Points 关联功能覆盖点和覆盖组 cover_stopbit[2], cover_frame_complete
Pass/Fail Criteria 明确的判据 示波器或逻辑分析仪捕获停止位宽度为2个位时间 ±5%,且固件收到完成中断

输入输出物

  • 输入物:系统需求文档(RSD)、硬件寄存器描述列表(HRDL)、固件架构规范(FAS)、接口协议规范(IPS)
  • 输出物:验证计划模板 VPT.4.1(经过评审)、边界检查表 BCT.4.2(基线版本)、测试用例规范 TCS.4.3(至少覆盖所有 P0 场景)

责任边界

  • 固件验证工程师:主导测试用例规范的编写,确保激励和预期结果在固件中可实现;评审边界检查表中固件相关条目
  • 硬件验证工程师:主导验证计划模板的制定,负责边界检查表中硬件侧(assert、时序)内容的补充;提供仿真环境兼容性反馈
  • 设计架构师:验证计划模板中功能分解矩阵的最终批准人
  • 质量 assurance(QA):模板规范使用的合规性审计,每两周抽查一次文档完整性

记录材料

所有模板、检查表和规范文档必须存入项目数据库,版本号同步更新。记录清单如下:

  1. 验证计划模板 vX.Y(含评审签字页扫描件)
  2. 边界检查表 vX.Y(关联每个检查项的通过/失败标记)
  3. 测试用例规范 vX.Y(每轮回归后更新执行结果状态)

异常处理

异常场景1:需求中途变更
处理流程:变更请求(CR)提交 → 验证计划模板中对应功能分解矩阵项标记为“待废弃” → 边界检查表相关条目暂停执行 → 测试用例规范中附加“失效标记”字段,打印新需求覆盖的测试用例 ID。
异常场景2:验证计划与边界检查表内容冲突
处理流程:冲突条目上升至每周验证-设计联席会裁决 → 记录裁决结果到冲突处理日志 → 更新模板和检查表版本号,修复对应条目后自动触发通知。

验收标准

  1. 三个模板文档均通过团队评审,评审参会人数≥3人,且包含至少1名非本项目的人员作为独立评审员
  2. 边界检查表条目数量≥验证计划中 P0 场景数的 2 倍(每个 P0 场景至少对应 2 条边界检查)
  3. 测试用例规范中每个用例的“Expected Outcome”字段长度≥3行,明确区分硬件和固件预期行为
  4. 模板一致性与合规性检查(手动或脚本)无严重违规项(严重违规定义为:缺失必填字段、不存在的需求ID引用、无关联覆盖率点)
输入输出物铁三角:数据流与依赖关系 验证计划模板 VPT.4.1 边界检查表 BCT.4.2 测试用例规范 TCS.4.3 输入物 系统需求文档 · 寄存器描述列表 固件架构规范 · 接口协议规范 输出物 已评审的验证计划 vX.Y 基线边界检查表 & 测试用例规范 版本迭代反馈回路 固件验证工程师 硬件验证工程师 设计架构师 质量审计