参照官方文档中Quick Start 4.1 “How to run simulation”部分,中途遇到很多坑,特来记录一番。

1.环境设置

1.1 强烈建议用 ubuntu 18.04,安装时要点“下载更新”

我的是vmware 15.5pro虚拟机。这里有两个坑:

  • 第一次用20.04,最后在运行make run_test SIM=iverilog的时候,老是出现lxt2 support disabled since zlib not available的错误。
  • 第二次用18.04,但安装的时候没有选择下载更新的选项,之后下一步安装依赖的时,老是需要卸载原来包,装新包。而且git也下载不了,出现Failed to connect to github.com port 443: Connection refused的错误

1.2 软件依赖

sudo apt-get install autoconf automake autotools-dev curl device-tree-compiler libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev git

这里又有一个坑:

  • 复制的时候千万要注意,官网复制时是两行,导致gawk后面的软件没有装上,也可能是导致lxt2 support disabled since zlib not available的原因。

2.下载e203_hbirdv2 project

git clone https://github.com/riscv-mcu/e203_hbirdv2.git
# or
git clone https://gitee.com/riscv-mcu/e203_hbirdv2.git

3.编译riscv指令

/riscv-tools/riscv-tests/isa 目录下有riscv的汇编测试指令,需要编译成二进制文件,这样才能在仿真时读入rom,判断功能是否正确。

3.1编译工具

编译需要用riscv的GNU工具,可以在官网下载: RISC-V GNU, Centos/Ubuntux86-64

下载下来的文件是nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2,和官方写的rv_linux_bare_9.21_centos64.tgz.bz2的不同。

cp nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2 ~/
cd ~/
tar -xjvf nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2
cd <your_e203_dir>/
mkdir -p ./riscv-tools/prebuilt_tools/prefix/bin

cd ./riscv-tools/prebuilt_tools/prefix/bin/
# 建立riscv gcc的链接
ln -s ~/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2/gcc/bin/* .

3.2 编译

cd <your_e203_dir>/riscv-tools/riscv-tests/isa

source regen.sh

4 跑仿真

这里仅以iverilg为例

4.1 iverilog 安装

这里有个大坑:

  • 不能直接用sudo 安装,因为这样安装的版本是10,我们需要版本12。这个地方卡了我最长时间!
git clone https://github.com/steveicarus/iverilog.git
# 安装依赖
sudo apt-get install autoconf gperf flex bison build-essential
# 安装
cd iverilog
sh autoconf.sh
./configure
make
sudo make install

安装波形查看工具:

sudo apt-get install gtkwave

4.2 综合网表

cd <your_e203_dir>/vsim
make clean
make install
make compile SIM=iverilog

4.3 跑仿真

4.3.1单个测试

make run_test SIM=iverilog

保证iverilog的版本是12,否则会一直卡住,运行不出结果。大概1min之后,会出现大大的“PASS”字样。
这里还有可能的一个bug是“bash”的问题

# 查看shell类型,需要将dash改成bash
ls -l /bin/sh
sudo dpkg-reconfigure dash
#选择 no

4.3.2波形查看

make wave SIM=iverilog

4.3.3回归测试

make regress_run SIM=iverilog

这会持续比较久,每个样例需要1~3min。

4.3.4查看回归结果

make regress_collect

5.小结

按照指南运行时,需要弄清楚它的基本逻辑,系统和软件的版本确实非常折磨人,如果有docker就能方便很多。回顾一下这个过程,最大的坑是ubunbu18.04的版本和iverilog 12的版本。

之后还要装vivado和软硬件调试工具,开发起来还真是麻烦。

标签: riscv, soc, Hummingbird

添加新评论