8 个版本

使用旧 Rust 2015

0.3.4 2019 年 6 月 4 日
0.3.3 2019 年 5 月 10 日
0.3.1 2019 年 4 月 1 日
0.3.0 2019 年 3 月 29 日
0.1.2 2019 年 3 月 26 日

#868 in 硬件支持

GPL-3.0 许可证

730KB
7.5K SLoC

Coq 4K SLoC // 0.2% comments Rust 2K SLoC // 0.0% comments Verilog 541 SLoC // 0.2% comments C++ 420 SLoC // 0.2% comments INI 13 SLoC Python 7 SLoC // 0.7% comments

>narvie

Build Status

一个 RISC-V 指令的 Read Eval Print Loop (REPL)。仅测试了 UNIX 系统。 narvie 代表本地 RISC-V 指令评估器。

安装

可以下载预构建的 narvie 二进制文件(ubuntu linuxmac OS)或使用 cargo 构建

  1. 下载 Rustup 并安装 Rust.
  2. 安装 verilator。建议使用版本 3.916。
  3. 运行 $ cargo install narvie-cli

运行

narvie 可以作为模拟运行,也可以通过将 narvie 处理器(运行在 FPGA 上)连接到您的计算机来运行。

一旦 cli 运行,请在提示符中输入 RISC-V 指令。例如:nopli t0, 1678addi t0, t0, 1narvie 将将这些指令编译成二进制文件,运行它们并显示新的微架构状态(目前只显示寄存器的值)。完成后,使用 ctrl-c 退出 narvie

模拟

  • 要启动模拟,请尝试 $ narvie-cli --simulate

FPGA 上运行

  • 通过USB将narvie处理器连接到您的计算机后,运行以下命令:$ narvie-cli 地址 --baud 115200,其中地址是处理器连接的串行端口。将115200替换为处理器配置使用的波特率。

构建narvie

要构建narvie-cli,需要verilator。要合成Verilog并烧录到FPGA,./progMDP使用yosysarachne-pnricestorm。然而,也可以使用其他工具进行合成。

  • 下载Rustup并安装Rust。(https://www.rust-lang.net.cn/tools/install
  • 克隆此仓库。
  • 运行cargo build以构建narvie-cli
  • processor目录下,运行./progMDP以生成narvie-processor的字节流并烧录Lattice Mobile Development Board。

文档

演示

此演示展示了RISC-V REPL在仿真中运行。

RISCV REPL demo

许可证

由于本项目借鉴了其他来源的GPL许可证代码,因此也采用GPL许可证。

致谢

risc-v处理器是基于Ryan Voo @rjlv2开发的verilog模块实现的。对处理器进行的唯一修改与中断流水线和指令获取机制有关,以允许单独执行指令。

verilog UART模块可在https://github.com/FPGAwars/FPGA-peripherals找到。

verilator UART模拟测试平台代码(testbench/uartsim.htestbench/uartsim.c)是基于http://zipcpu.com/blog/2017/06/21/looking-at-verilator.html实现的。

Rust的最低版本

narvie将仅正式支持当前的稳定Rust。


在研究中引用narvie

Harry Sarson、Ryan Voo和Phillip Stanley-Marbell。“使用Narvie原生前评估RISC-V指令”。海报,《欧洲系统会议(EuroSys'19)》论文集。德国德累斯顿,2019年3月。

BibTeX

    @inproceedings{Sarson:2019,
    author = {Harry Sarson and Ryan Voo and Phillip Stanley-Marbell},
    title = {Evaluating RISC-V Instructions Natively with Narvie},
    booktitle = {Proceedings of the  European Conference on Systems},
    series = {EuroSys'19},
    year = {2019},
    location = {Dresden, Germany},
    numpages = {2},
    publisher = {ACM},
    address = {New York, NY, USA},
    }

依赖关系

~8–17MB
~205K SLoC