OpenTitan项目Verilator仿真环境搭建指南

OpenTitan项目Verilator仿真环境搭建指南

opentitan OpenTitan: Open source silicon root of trust opentitan 项目地址: https://gitcode.com/gh_mirrors/op/opentitan

前言

OpenTitan是一个开源的芯片信任根(RoT)项目,Verilator作为其重要的仿真工具,能够帮助开发者进行RTL级别的功能验证。本文将详细介绍如何在OpenTitan项目中使用Verilator搭建仿真环境。

Verilator简介

Verilator是一款高性能的Verilog仿真器,具有以下特点:

  1. 采用周期精确的仿真方式
  2. 将可综合的Verilog代码转换为C++仿真程序
  3. 通过编译生成的C++代码实现高速仿真
  4. 支持波形生成和调试功能

环境准备

Verilator安装

由于大多数Linux发行版自带的Verilator版本较旧,建议从源码编译安装最新版本。

安装步骤
  1. 设置版本变量:
export VERILATOR_VERSION=4.210
  1. 获取源码并编译:
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

注意:编译过程可能需要几分钟时间。

  1. 配置环境变量:
export PATH=/tools/verilator/$VERILATOR_VERSION/bin:$PATH
  1. 验证安装:
verilator --version
常见问题
  1. GCC版本兼容性:Verilator 4.210与GCC 12.0+存在兼容性问题,建议使用GCC 11。
  2. 安装路径:如需更改安装路径,修改./configure --prefix参数即可。

OpenTitan仿真流程

仿真架构概述

OpenTitan硬件包含四种存储器类型:

  1. ROM:存放启动代码
  2. Flash:存放主程序
  3. OTP:存放根密钥和配置数据
  4. SRAM:运行时使用

使用Bazel运行仿真

Bazel工具链简化了仿真流程,自动完成以下步骤:

  1. 构建RTL仿真模型
  2. 编译目标软件
  3. 加载存储器映像
  4. 启动仿真并连接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交互接口:

  1. 查看GPIO输出状态:
cat gpio0-read
  1. 控制GPIO输入:
echo 'h09 l31' > gpio0-write  # 将9号引脚拉高,31号引脚拉低

JTAG调试

通过OpenOCD连接仿真器的JTAG接口:

  1. 启动带调试符号的仿真:
bazel test --copt=-g --test_output=streamed //sw/device/tests:uart_smoketest_sim_verilator
  1. 启动OpenOCD:
/tools/openocd/bin/openocd -s util/openocd -f board/lowrisc-earlgrey-verilator.cfg
  1. 连接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总线监控功能:

  1. 连接SPI终端:
screen /dev/pts/4  # 端口号根据实际输出调整
  1. 监控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芯片开发的效率和质量。

opentitan OpenTitan: Open source silicon root of trust opentitan 项目地址: https://gitcode.com/gh_mirrors/op/opentitan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪炎墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值