OpenTitan项目Verilator仿真环境搭建指南
前言
OpenTitan是一个开源的芯片信任根(RoT)项目,Verilator作为其重要的仿真工具,能够帮助开发者进行RTL级别的功能验证。本文将详细介绍如何在OpenTitan项目中使用Verilator搭建仿真环境。
Verilator简介
Verilator是一款高性能的Verilog仿真器,具有以下特点:
- 采用周期精确的仿真方式
- 将可综合的Verilog代码转换为C++仿真程序
- 通过编译生成的C++代码实现高速仿真
- 支持波形生成和调试功能
环境准备
Verilator安装
由于大多数Linux发行版自带的Verilator版本较旧,建议从源码编译安装最新版本。
安装步骤
- 设置版本变量:
export VERILATOR_VERSION=4.210
- 获取源码并编译:
git clone https://github.com/verilator/verilator.git
cd verilator
git checkout v$VERILATOR_VERSION
autoconf
CC=gcc-11 CXX=g++-11 ./configure --prefix=/tools/verilator/$VERILATOR_VERSION
CC=gcc-11 CXX=g++-11 make
sudo CC=gcc-11 CXX=g++-11 make install
注意:编译过程可能需要几分钟时间。
- 配置环境变量:
export PATH=/tools/verilator/$VERILATOR_VERSION/bin:$PATH
- 验证安装:
verilator --version
常见问题
- GCC版本兼容性:Verilator 4.210与GCC 12.0+存在兼容性问题,建议使用GCC 11。
- 安装路径:如需更改安装路径,修改
./configure --prefix
参数即可。
OpenTitan仿真流程
仿真架构概述
OpenTitan硬件包含四种存储器类型:
- ROM:存放启动代码
- Flash:存放主程序
- OTP:存放根密钥和配置数据
- SRAM:运行时使用
使用Bazel运行仿真
Bazel工具链简化了仿真流程,自动完成以下步骤:
- 构建RTL仿真模型
- 编译目标软件
- 加载存储器映像
- 启动仿真并连接UART输出
示例:运行UART测试
cd $REPO_TOP
bazel test --test_output=streamed //sw/device/tests:uart_smoketest_sim_verilator
预期输出包含测试通过信息:
I00000 status.c:28] PASS!
高级功能
执行日志分析
仿真过程中会生成指令执行日志:
find ~/.cache/bazel -name "trace_core_00000000.log"
该日志文件采用制表符分隔格式,可用文本编辑器或电子表格软件查看。
GPIO交互
仿真环境提供GPIO交互接口:
- 查看GPIO输出状态:
cat gpio0-read
- 控制GPIO输入:
echo 'h09 l31' > gpio0-write # 将9号引脚拉高,31号引脚拉低
JTAG调试
通过OpenOCD连接仿真器的JTAG接口:
- 启动带调试符号的仿真:
bazel test --copt=-g --test_output=streamed //sw/device/tests:uart_smoketest_sim_verilator
- 启动OpenOCD:
/tools/openocd/bin/openocd -s util/openocd -f board/lowrisc-earlgrey-verilator.cfg
- 连接GDB调试器:
riscv32-unknown-elf-gdb -ex "target extended-remote :3333" -ex "info reg" \
"$(./bazelisk.sh outquery --config=riscv32 //sw/device/tests:uart_smoketest_prog_sim_verilator.elf)"
SPI设备测试
仿真环境提供SPI总线监控功能:
- 连接SPI终端:
screen /dev/pts/4 # 端口号根据实际输出调整
- 监控SPI日志:
tail -f spi0.log
波形生成
生成仿真波形用于调试:
bazel test //sw/device/tests:uart_smoketest_sim_verilator \
--test_output=streamed \
--test_timeout=1000 \
--test_arg=--verilator-args=--trace=/tmp/sim.fst
gtkwave /tmp/sim.fst
注意:波形生成会显著降低仿真速度,建议适当增加超时时间。
结语
本文详细介绍了OpenTitan项目中Verilator仿真环境的搭建和使用方法,从基础安装到高级调试功能,为开发者提供了全面的参考指南。通过合理利用这些工具,可以大大提高OpenTitan芯片开发的效率和质量。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考