CentOS 7 - RISC-V CPU Core 環境安裝 (tinyriscv) + iverilog & gtkwave 安裝
最近由於開始要建置實驗環境了
其中會使用到現成的 RISC-V CPU Core 環境
現在當然有很多相關資源
不過老師給我的建議是先找一個你看得懂的就好了
一開始我當然是毫無頭緒的各種找各種試
但是發現了一個感覺很適合我這種小白的資源
那就是 tinyriscv!
- 基於 Verilog 寫成的 (Chisel 據說很難,而我看過之後的確覺得先放棄...)
- 他是中文的 (入門就要讀很長的英文文件還是會耐不住性子XD)
- 他主打程式非常好懂,格式固定,適合新手 (雖然他沒做太多優化,但還是先求有再求好)
- 他有搭配算是蠻完整的相關說明文件 (雖然我還沒認真看完,但目前感覺蠻充分的)
廢話不多說,我們就直接來建置環境試試看!
首先要用到的有 iverilog 和 gtkwave 軟體包,所以必須先安裝好這兩個軟體包
---安裝 iverilog---
下載 iverilog source 包並進入資料夾
git clone https://github.com/steveicarus/iverilog.git && cd iverilog
切換到 v11 分支
git checkout v11-branch
安裝相依軟體
sudo yum install autoconf gperf flex bison
sudo yum groupinstall "Development Tools" "Development Libraries"
製作設定檔
sh autoconf.sh
執行設定檔
./configure --prefix=/opt/iverilog #you can specify the path u want to install in the red part
執行安裝
sudo make
sudo make install
到此,iverilog 安裝完成!
不過請記得加入環境變數裡頭
例如我會在 ~/.bashrc 裡加入
export IVERILOG=/opt/iverilog
export PATH=$PATH:$IVERILOG/bin
再輸入
source ~/.bashrc
使其生效
---安裝 gtkwave---
安裝相依軟體包
sudo yum install tcl-devel.x86_64 tk-devel.x86_64 xz-devel.x86_64 gcc gperf libgnomeui-devel gtk2-devel gtk3-devel
下載 gtkwave source 軟體包
wget http://gtkwave.sourceforge.net/gtkwave-3.3.110.tar.gz
解壓縮
tar xzvf gtkwave-3.3.110.tar.gz
進入 gtkwave 資料夾
cd gtkwave-3.3.110/
執行設定檔
./configure --prefix=/opt/gtkwave
執行安裝
sudo make
sudo make install
基本上到這邊,過程沒出什麼大問題的話
gtkwave 就是已經安裝好了!
一樣記得要加入環境路徑!
---安裝 riscv-gnu-toolchain---
這裡有兩種狀況
- 你沒有安裝過 riscv-gnu-toolchain => 你需要安裝好 toolchain 並設定好路徑
- 你曾經安裝過 riscv-gnu-toolchain => 你只需要在 tinyriscv 的測試程式裡設定好路徑
如果你不知道的話就當作第一種,反正也只是多安裝一次而已,沒什麼影響
安裝過的話可以直接跳到設定路徑的步驟
安裝 toolchain
下載 riscv-gnu-toolchain
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
(這一步會需要好幾十分鐘)
進入 riscv-gnu-toolchain 資料夾
cd riscv-gnu-toolchain
進行設定 (--prefix=你想安裝 riscv 的路徑)
./configure --prefix=/opt/riscv --enable-multilib
執行安裝 (-j 表示多線程處理,例如 8核就可以打 -j8,-j`nproc`則是會自動抓你系統的總核心數)
make -j`nproc`
安裝完記得加到環境路徑
打開 ~/.bashrc
vim ~/.bashrc
加入
export RISCV=/opt/riscv
export LD_LIBRARY_PATH=$RISCV/lib:$RISCV/lib64:$LD_LIBRARY_PATH
PATH=$PATH:$RISCV/bin
設定 tinyriscv 的指令測試程式裡頭的路徑
下載 tinyriscv
git clone https://github.com/liangkangnan/tinyriscv && cd tinyriscv
編輯設定檔
vim tests/example/common.mk
裡面預設大概長這樣
但這個步驟我沒有照著作者的做
所以必須更改裡面的路徑
假設你的 $RISCV 路徑已經有設定過了
TOOLCHAIN_DIR := $(RISCV)
RISCV_PATH := $(TOOLCHAIN_DIR)
RISCV_GCC := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-gcc)
RISCV_AS := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-as)
RISCV_GXX := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-g++)
RISCV_OBJDUMP := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-objdump)
RISCV_GDB := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-gdb)
RISCV_AR := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-ar)
RISCV_OBJCOPY := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-objcopy)
RISCV_READELF := $(abspath $(RISCV_PATH)/bin/riscv64-unknown-elf-readelf)
---執行指令測試程式---
建立 python 的 softlink
sudo ln -s -f /usr/bin/python3.6 /usr/bin/python #red part is your python3 version
**注意,執行這邊後,你應該會發現 yum 變得怪怪的
這是因為 yum 需要 python 2,但是你把 python 路徑導去 python 3 了
所以必須去 yum 的軟體程式裡頭更改第一行的搜尋路徑
sudo vim /usr/bin/yum
#!/usr/bin/python 改成 #!/usr/bin/python2
然後還會出現這個 error
詳解請點進網站看 (非常簡單)
yum 安装软件是出现 except OSError, e: ^ SyntaxError: invalid syntax
進入到 tinyriscv 的 sim 資料夾
cd tinyriscv/sim
執行測試程式 (測試 rv32ui-p-add)
python3 ./sim_new_nowave.py ../tests/isa/generated/rv32ui-p-add.bin inst.data
如果有看到 PASS 就是表示成功了唷!
也可以對所有指令執行測試
python3 .\test_all_isa.py
一樣,有看到 PASS 就是成功了!
不過這裡沒有太清楚介紹 iverilog 和 gtkwave 可以如何使用
所以之後會再介紹這兩個軟體!
ref:
https://github.com/liangkangnan/tinyriscv
留言
張貼留言