参照官方文档中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指令
<your_e203_dir>/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”字样。
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和软硬件调试工具,开发起来还真是麻烦。