參照官方文檔中Quick Start 4.1 “How to run simulation”部分,中途遇到很多坑,特來記錄一番。
1.環(huán)境設(shè)置
1.1 強(qiáng)烈建議用 ubuntu 18.04,安裝時(shí)要點(diǎn)“下載更新”
我的是vmware 15.5pro虛擬機(jī)。這里有兩個(gè)坑:
- 第一次用20.04,最后在運(yùn)行
make run_test SIM=iverilog的時(shí)候,老是出現(xiàn)lxt2 support disabled since zlib not available的錯(cuò)誤。 - 第二次用18.04,但安裝的時(shí)候沒有選擇下載更新的選項(xiàng),之后下一步安裝依賴的時(shí),老是需要卸載原來包,裝新包。而且git也下載不了,出現(xiàn)
Failed to connect to github.com port 443: Connection refused的錯(cuò)誤
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
這里又有一個(gè)坑:
- 復(fù)制的時(shí)候千萬要注意,官網(wǎng)復(fù)制時(shí)是兩行,導(dǎo)致gawk后面的軟件沒有裝上,也可能是導(dǎo)致
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的匯編測試指令,需要編譯成二進(jìn)制文件,這樣才能在仿真時(shí)讀入rom,判斷功能是否正確。
3.1編譯工具
編譯需要用riscv的GNU工具,可以在官網(wǎng)下載: 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 安裝
這里有個(gè)大坑:
- 不能直接用sudo 安裝,因?yàn)檫@樣安裝的版本是10,我們需要版本12。這個(gè)地方卡了我最長時(shí)間!
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 綜合網(wǎng)表
cd <your_e203_dir>/vsim
make clean
make install
make compile SIM=iverilog
4.3 跑仿真
4.3.1單個(gè)測試
make run_test SIM=iverilog
保證iverilog的版本是12,否則會(huì)一直卡住,運(yùn)行不出結(jié)果。大概1min之后,會(huì)出現(xiàn)大大的“PASS”字樣。
這里還有可能的一個(gè)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
這會(huì)持續(xù)比較久,每個(gè)樣例需要1~3min。
4.3.4查看回歸結(jié)果
make regress_collect
5.小結(jié)
按照指南運(yùn)行時(shí),需要弄清楚它的基本邏輯,系統(tǒng)和軟件的版本確實(shí)非常折磨人,如果有docker就能方便很多?;仡櫼幌逻@個(gè)過程,最大的坑是ubunbu18.04的版本和iverilog 12的版本。
之后還要裝vivado和軟硬件調(diào)試工具,開發(fā)起來還真是麻煩。