2. 验证边界识别流程:接口文档分析、功能边界提取、时序边界提取
2.1 适用场景
本流程适用于以下具体场景,在开展固件与硬件协同仿真(DV与固件联仿)之前,必须首先完成边界识别工作:
- 新IP模块验证启动阶段:芯片设计完成RTL freeze前,固件团队刚介入,需要明确固件可控制/观测的硬件边界。
- 接口协议变更评审:AHB、APB、自定义握手协议等接口时序或功能规格发生修订。
- 多级电源/时钟域交互:低功耗场景下,固件操作跨越不同电压域或时钟域的边界点。
- 复用IP核集成:第三方IP仅提供黑盒接口文档,内部寄存器映射不可见,需提取固件侧的验证边界。
前置经验判断:如果项目验证计划中没有单独的“验证边界谱表”,那么本流程输出的内容就是必须生成的。边界谱表是验证用例设计的基石,缺少该文档会导致用例遗漏或重复覆盖。
2.2 前置条件
| 序号 | 条件项 | 验收标准 |
|---|---|---|
| 1 | 接口文档(I/O Specification)已发布,版本号明确 | 文档中信号方向、位宽、时钟域、复位行为、时序图均已标注 |
| 2 | 寄存器描述文件(如 IP-XACT、SVD 或 CMake 生成的 .h)已落地 | 寄存器地址偏移、默认值、读写属性、中断号覆盖完整 |
| 3 | 硬件验证环境(UVM testbench)已具备基本框架 | 至少可以例化DUT并提供标准接口驱动 |
| 4 | 固件侧工具链已确认 | 能够编译固件工程并生成可加载的ELF或二进制镜像 |
2.3 操作步骤
边界识别流程分为3个核心阶段,每个阶段输出物对齐,具体步骤见下表:
- 接口文档分析
- 收集所有接口文档(包含系统级IO与模块间互联)。
- 解析接口信号表:记录信号名称、方向、位宽、时钟域、复位极性。
- 整理接口依赖列表:哪些信号由固件直接驱动?哪些仅可观测?
- 输出:接口信号矩阵表 + 接口依赖图。
- 功能边界提取
- 依据芯片功能规范,将固件对硬件的操作按“触发—等待—完成—清中断”分类。
- 筛选出需要固件介入的功能点:寄存器配置、中断清除、DMA搬运控制、fifo指针管理等。
- 输出:固件-硬件功能边界清单(含边界分类标签)。
- 标注“灰色区域”:纯粹硬件内部状态机行为,固件只读取状态,不参与控制。
- 时序边界提取
- 关注接口时序图中的关键参数:建立时间、保持时间、总线响应延迟、中断响应时延。
- 识别固件代码中可能引入时序问题的模式:轮询间隔、中断服务入栈出栈时间、写寄存器后立即读同一地址。
- 生成时序约束表:每个接口信号/协议操作对应一个时序规格。
- 闭环验证关键路径:固件最多能接受的硬件延迟。
2.4 输入输出物
| 阶段 | 输入物 | 输出物 |
|---|---|---|
| 接口文档分析 | 接口文档、芯片架构手册、硬件设计文档 | 接口信号矩阵表(CSV或YAML格式) 接口依赖图 |
| 功能边界提取 | 芯片功能规范、寄存器描述(SVD)、中断列表 | 功能边界清单(含“固件控制边界”与“硬件自洽边界”) |
| 时序边界提取 | 接口时序图、UVM接口协议(AHB/APB/AXI协议规范) | 时序约束表(excel或markdown格式) 关键时序路径文档 |
2.5 责任边界
| 角色 | 职责 | 不可越界行为 |
|---|---|---|
| 固件验证工程师 | 提取功能边界清单;固件侧时序分析;编写固件桩代码 | 不负责修改RTL代码;不负责生成UVM序列 |
| 硬件验证工程师 | 提供接口文档与UVM环境;验证时序边界约束;握手工况覆盖 | 不负责固件寄存器初始化代码;不负责固件中断服务例程 |
| 系统验证架构师 | 审核边界谱表一致性;仲裁固件与硬件边界分歧 | 不编写具体验证用例 |
2.6 记录材料
每次边界识别完成,必须创建以下记录材料,并上传至项目验证管理平台:
边界谱表(Border Map)模板示例:
# 边界谱表 - UART0模块 (版本V0.2)
##
模块名: uart_top
边界类型: 固件-硬件接口
接口协议: apb4 (带wait状态)
固件控制信号: reg_baud_div[15:0], reg_tx_en, reg_rx_en
固件观测信号: reg_tx_busy, reg_rx_ready, int_tx_done, int_rx_done
时序约束: 写寄存器后可读等待延迟 ≤ 2时钟周期
功能边界类型: 寄存器配置边界
备注: TX_FIFO深度为8,固件应避免连续写16字节未等待状态
2.7 异常处理
| 异常现象 | 处理办法 |
|---|---|
| 接口文档不完整或版本不匹配 | 停止边界提取,冻结现场,记录缺失信号到“待澄清事项清单”,向设计团队发送review请求,待文档修订后重新启动流程。 |
| 时序要求冲突(固件侧认为延迟为0,硬件侧要求2个周期) | 由系统验证架构师召集固件与硬件工程师对齐,确认寄存器读取是否需要插入dummy cycle或增加等待状态。更新时序约束表。 |
| 功能边界模糊(某寄存器同时控制硬件与固件状态机) | 标记为“混合边界”,在边界谱表中增加“共享访问控制”列,定义读写互斥策略。 |
2.8 验收标准
- 完整性:边界清单覆盖所有固件可访问寄存器与中断,无遗漏。100%匹配寄存器描述文件中的地址段。
- 一致性:接口信号矩阵表与接口文档一一比对,关键信号(如时钟使能、复位、握手指令)无缺失。
- 无未定义区域:任何由固件发起的操作都能在边界谱表里找到对应的功能或时序描述。不存在“这个信号好像能写但不清楚”的灰色地带。
- 可审计性:所有边界谱表、信号矩阵、时序约束表均通过项目管理工具(如Jira、SVN)版本控制,由至少一名其他成员同行评审。