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---

這裡有兩種狀況

  1. 你沒有安裝過 riscv-gnu-toolchain => 你需要安裝好 toolchain 並設定好路徑
  2. 你曾經安裝過 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

GTKWave 官網

使用开源EDA iverilog+gtkwave仿真


留言

這個網誌中的熱門文章

Formal Verification(正規驗證)介紹和如何使用 SVA(System Verilog Assertion) 做驗證

Quartus Qsys + Nios II 入門使用

Quartus Qsys + Nios II + SDRAM 進階使用