系列文章 : 使用 Verilog 實作 in-order CPU
在實作一個簡單的 CPU 之前,會需要一個可以模擬電路運行的工具!
這邊會使用一個厲害的開源工具 : ICARUS Verilog。
我們寫好簡單的 verilog 後,可以利用這個開源的工具進行模擬。
順帶一提,我使用的 OS 是 Ubuntu,所以下面的指令可能在其他的 OS 會行不通。
# 安裝相關的套件
sudo apt install -y autoconf gperf make gcc g++ bison flex
# 設定環境變數
export INSTALL_IVERILOG=$(realpath ./install_iverilog)
# 建立希望安裝 iverilog 的資料夾
mkdir $INSTALL_IVERILOG
# 把專案給 git clone 下來
git clone https://github.com/steveicarus/iverilog.git
# 進入到 iverilog 的資料夾,並 checkout 到特定的版本
cd iverilog
git checkout s20251012
# 開始進行編譯
./configure --prefix=$INSTALL_IVERILOG
make -j10
make install
編譯完成後,預期會有一個檔案 ./install_iverilog/bin/iverilog。
之後我們需要用這個檔案來模擬電路!
這邊可以從網路上抓一個簡單的 verilog 檔案,以及一個 testbench 來玩玩看。
verilog 檔案 : https://github.com/TommyWu-fdgkhdkgh/simple-mips/blob/main/adder/half_adder.v
testbench : https://github.com/TommyWu-fdgkhdkgh/simple-mips/blob/main/adder/half_adder_testbench.v
接下來可以使用 iverilog 對電路進行編譯
./install_iverilog/bin/iverilog -o half_adder_testbench half_adder.v half_adder_testbench.v
編譯完會產生 half_adder_testbench。
緊接著我們可以運行這個檔案,沒問題的話會產生通過測資的字樣。
VCD info: dumpfile waveform.vcd opened for output.
***************************************************
Congratulation! All data are correct!
***************************************************
half_adder_testbench.v:19: $finish called at 100000 (1ps)
模擬結束後,預期會取得 waveform.vcd 這個檔案。
我們可以使用另外一個開源工具 gtkwave 打開這類波形圖。
假如跟我一樣使用 Ubuntu 的話,可以簡單地 sudo apt install gtkwave,就可以下載這個好用的工具!