OpenTitan项目设计验证(DV)环境搭建指南
前言
OpenTitan作为一个开源硬件安全项目,其设计验证(DV)环节对于确保芯片功能正确性和安全性至关重要。本文将详细介绍如何在OpenTitan项目中搭建设计验证环境,帮助开发者快速上手DV工作。
设计验证阶段概述
OpenTitan项目中的硬件开发分为三个主要阶段:
- 初始工作阶段:建立基础验证环境和文档
- 测试阶段:执行详细的功能验证
- 测试完成阶段:完成所有验证目标
本文重点指导如何从初始工作阶段顺利过渡到测试阶段。
准备工作
在开始DV工作前,需要确保:
- 已完成所有依赖项的安装和软件构建
- 设计规范文档已经就绪
- 设计已从规范阶段进入开发阶段
使用uvmdvgen工具创建验证环境
uvmdvgen
是OpenTitan提供的自动化验证环境生成工具,它能快速搭建验证框架:
- 在DUT根目录(包含rtl目录的位置)运行工具
- 工具会自动创建以下目录结构:
dv/
:包含完整的测试平台和测试构建文件data/
:存放验证相关数据doc/
:存放验证文档
建议操作:生成后立即在所有文件中搜索'TODO'标记,完成必要的修改,特别是DUT特定IO接口的连接。
验证文档编写与评审
1. DV文档
- 描述验证组件清单
- 包含测试平台框图设计
- 可使用项目提供的.svg格式模板
2. Hjson测试计划
- 需要完整编写
- 遵循testplanner工具的规范要求
完成文档后,应与设计团队进行评审,确保内容完整清晰。
UVM RAL模型生成
对于包含CSR寄存器的设计,需要创建UVM RAL模型:
- 仿真流程已支持自动生成RAL模型
- 也可手动使用regtool工具生成:
util/regtool.py -s -t /path-to-dv /path-to-module/data/<dut>.hjson
生成的文件会存放在仿真构建临时区域,无需提交到代码库。
支持的仿真工具
OpenTitan DV环境支持:
- Synopsys VCS(完全支持)
- Cadence Xcelium(逐步完善支持)
构建和运行测试
运行基础测试
uvmdvgen
工具会生成一个空的sanity测试序列:
util/dvsim/dvsim.py path/to/<dut>_sim_cfg.hjson -i <dut>_sanity [--waves <format>] [--tool xcelium]
注意:初始生成的测试平台可能无法立即编译通过,需要根据错误信息进行调试。
波形查看选项
- VCS用户:
--waves vpd
- Xcelium用户:
--waves shm
- Verdi用户:
--waves fsdb
CSR测试
对于包含CSR的设计,可以运行完整的CSR测试套件:
util/dvsim/dvsim.py path/to/<dut>_sim_cfg.hjson -i <dut>_csr_hw_reset [--waves <format>] [--tool xcelium]
完整DV流程
建议开发流程:
- 从sanity测试和CSR测试开始
- 逐步实现测试计划中的所有测试用例
- 参考项目检查清单完成各阶段验证目标
复现CI报告的DV失败
要复现CI环境中的测试失败:
- 确保使用与CI相同的VCS版本
- 获取CI使用的合并分支:
git fetch upstream pull/<PR_number>/merge git checkout -b <temp_branch> FETCH_HEAD
- 使用相同种子运行测试:
util/dvsim/dvsim.py hw/ip/uart/dv/uart_sim_cfg.hjson -i uart_smoke --fixed-seed=<seed> [--waves <format>]
结语
本文详细介绍了OpenTitan项目设计验证环境的搭建流程。通过遵循这些步骤,开发者可以快速建立验证环境并开始DV工作。在实际开发过程中,建议参考项目中的UART DV实现作为范例。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考