第四章CSR 寄存器验证

概述

寄存器验证App 通过 CSV(逗号分隔值)配置表自动生成断言,验证寄存器的读写行为、复位值、访问权限等,无需手动编写大量 SVA。

CSR App 工作流程

  1. 准备 CSV 工作表描述寄存器映射
  2. 加载设计和 CSV
  3. CSR App 自动生成断言和假设
  4. 运行证明验证寄存器行为

寄存器行为建模

只读寄存器

类型CSV 标记说明
常量值RO_const字段值恒定不变
设计更新状态RO_hw字段由硬件逻辑更新
忽略数据检查RO_ignore只读但不验证数据值

只写寄存器

WO:只能写入,读取值不检查或返回固定值。

同时读写

处理寄存器在同一时钟周期被读和写的情况。

锁定行为

其他行为

扩展文件

对于标准 CSV 无法表达的特殊行为,可以使用扩展文件(Extension File):

# 生成模板扩展文件
generate_csr_extension_template -output ext.tcl

# 合并扩展文件
merge_csr_extensions -ext ext1.tcl -ext ext2.tcl

Supporting Details

主题内容
Instance InterfaceCSR App 与 RTL 的接口信号约定
Worksheet FormatCSV 文件格式定义(列名、数据类型)
Access Types支持的访问类型:RO/RW/WO/RC/W1C/W1S 等
Bus Write/Read Enable支持总线级写/读使能信号
Direct Write/Read直接读写接口支持
Latencies读写延迟支持
Modified Write Value写值被硬件修改的情况
Masks写屏蔽/读屏蔽支持
Register MapsSecure/Non-Secure 映射、Remap States
Address Blocks地址块和保留地址
Windowed CSRs窗口化寄存器(间接寻址)

附录

关于如何将专有总线(非标准 APB/AHB/AXI)适配到 CSR 证明加速器,请参考官方文档附录。

CSR 验证方法论

CSR 验证的核心问题

寄存器验证最容易出错也最容易被忽略。常见 bug 包括:

手动写 SVA 检查几十上百个寄存器非常繁琐且容易遗漏。CSR App 从 CSV/IP-XACT 定义自动生成所有断言。

CSV 格式要点

CSV 定义寄存器规格,关键列包括:寄存器名、地址偏移、字段名、位域、访问类型(RW/RO/W1C/W1S/W0C 等)、复位值、硬件行为。

验证策略

实践建议:将 CSV 寄存器定义作为设计规格文档维护,不仅用于验证,也是文档。设计变更时先更新 CSV,CSR App 自动验证 RTL 符合新规格。

来源文档

  • jaspergold_csr_userguide.pdf
  • example_jaspergold_apps/CSR/