RISC-V Mini 项目教程
1. 项目介绍
RISC-V Mini 是一个简单的 RISC-V 3 阶段流水线项目,使用 Chisel 语言编写。该项目是加州大学伯克利分校(UCB)的一个开源项目,旨在为学习 Chisel 和 RISC-V 架构提供一个入门级的示例。RISC-V Mini 实现了 RV32I 用户级 ISA 版本 2.0 和机器级 ISA 版本 1.7。与其他简单的流水线不同,RISC-V Mini 还包含了简单的指令和数据缓存。
2. 项目快速启动
2.1 克隆项目
首先,克隆 RISC-V Mini 项目到本地:
git clone https://github.com/ucb-bar/riscv-mini.git
cd riscv-mini
2.2 生成 FIRRTL 和 Verilog 文件
使用以下命令生成 FIRRTL 和 Verilog 文件:
make
生成的文件将位于 generated-src
目录中。
2.3 运行 Verilator 模拟
首先,生成 Verilator 二进制文件:
make verilator
这将生成 VTile
文件在顶层目录中。接下来,可以使用以下命令运行 Verilator 模拟:
./VTile <hex 文件> [<vcd 文件> 2> <log 文件>]
其中,<vcd 文件>
和 2> <log 文件>
是可选的。默认情况下,波形将保存到 dump.vcd
,执行跟踪将打印到屏幕上。
2.4 运行测试
使用以下命令运行所有测试:
make run-tests
3. 应用案例和最佳实践
3.1 自定义应用程序
如果你想在 RISC-V Mini 上运行自定义应用程序,可以按照以下步骤操作:
-
安装 RISC-V 工具链:
export RISCV=<path to riscv tools for priv 1.7> ./build-riscv-tools.sh
-
在
custom-bmark
目录中添加你的 C 或汇编代码,并编辑Makefile
。 -
编译你的程序:
cd custom-bmark make
-
运行自定义应用程序:
cd .. make run-custom-bmark
3.2 集成测试
RISC-V Mini 提供了可综合的单元和集成测试。你可以使用 sbt
运行这些测试:
make sbt
sbt> testOnly mini.[testname]
4. 典型生态项目
4.1 Chisel
Chisel 是 RISC-V Mini 项目的主要开发语言,它是一个硬件构造语言,用于生成 Verilog 代码。Chisel 是加州大学伯克利分校开发的一个开源项目,广泛用于硬件设计和验证。
4.2 Rocket Chip
Rocket Chip 是 RISC-V 架构的一个更复杂的实现,基于 Chisel 编写。它是 RISC-V Mini 的一个扩展,提供了更多的功能和更高的性能。Rocket Chip 是 RISC-V 生态系统中的一个重要项目,广泛用于研究和开发高性能 RISC-V 处理器。
4.3 FIRRTL
FIRRTL 是 Chisel 的一个中间表示层,用于在 Chisel 和 Verilog 之间进行转换。FIRRTL 是 RISC-V Mini 项目生成 Verilog 文件的关键工具。
通过这些模块的介绍,你可以快速上手 RISC-V Mini 项目,并了解其在 RISC-V 生态系统中的位置和应用。