1. 程式人生 > >Chisel實驗筆記(二)

Chisel實驗筆記(二)

在上一篇《Chisel實驗筆記(一)》中,我們的到了對應的verilog檔案,本文將採用Icarus Verilog + GtkWave進行模擬驗證。

實驗平臺還是Ubuntu14.04(64位)

1、安裝Icarus Verilog-0.9.7

首先輸入如下命令:

sudo apt-get install gperf
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install build-essential

然後安裝zlib,下載地址http://www.zlib.net/,解壓縮後,使用終端進入所在目錄,輸入如下命令安裝:

./configure
make 
sudo make install
如果沒有安裝zlib,那麼在執行vvp -n test -lxt2的時候,會出現如下錯誤:
LXT2 support disabled since zlib not available

最後下載Icarus Verilog-0.9.7,使用終端進入所在目錄,輸入如下命令安裝:
./configure
make
sudo make install

2、安裝GtkWave3.3.64

首先安裝Tcl8.6.4,下載地址http://www.tcl.tk/software/tcltk/download.html,解壓縮後,使用終端進入其中的unix目錄,輸入如下命令:

./configure
make
sudo make install

然後安裝Tk8.6.4,下載地址http://www.tcl.tk/software/tcltk/download.html,解壓縮後,進入其中的unix目錄,輸入如下命令:
./configure
make
sudo make install

然後安裝xz5.2.1,下載地址http://tukaani.org/xz/,解壓縮後,使用終端進入所在目錄,輸入如下命令:
./configure
make
sudo make install
如果沒有安裝xz,在configure gtk的時候會出如下錯誤:
LZMA support for VZT is enabled, but xz could not be found

接下來,執行如下命令:
sudo apt-get install "libglib2.0-dev"
apt-get install libgtk+2.0-dev libesd0-dev

否則在configure gtk的時候會出現如下錯誤

ackage requirements (gtk+-2.0 >= 2.2.0) were not met

最後下載GtkWave3.3.64,解壓縮後,使用終端進入所在目錄,輸入如下命令:

./configure
make
sudo make install

3、編寫TestBench

新建檔案Max2Test.v,內容如下:

其中有四組輸入,每次從中選擇一個較大的數作為輸出。

module Max2Test; 

reg[7:0] in0; 
reg[7:0] in1; 
wire[7:0] out; 

initial begin 
  in0 = 8'h35; 
  in1 = 8'h56; 
  #1  in0 = 8'h39; 
      in1 = 8'h28; 
  #1  in0 = 8'h10; 
      in1 = 8'h09; 
  #1  in0 = 8'h15; 
      in1 = 8'h20; 
  #1 $stop; 
end   

  Max2 Max2instance( 
    .io_in0(in0), 
    .io_in1(in1), 
    .io_out(out) 
  ); 

initial begin 
  $dumpfile("Max2Test.vcd"); 
  $dumpvars(0, Max2Test); 
end 

endmodule

4、模擬得到結果

在終端輸入如下命令可以模擬得到並檢視波形

iverilog -o test Max2.v Max2Test.v
vvp -n test 
gtkwave Max2Test.vcd

或者對結果進行壓縮,命令如下:

iverilog -o test Max2.v Max2Test.v
vvp -n test -lxt2(增加了-lxt2引數)
cp Max2Test.vcd Max2Test.lxt
gtkwave Max2Test.lxt

會出現如下波形顯示,表示設計的Max2電路實現了預期設想,也就是Chisel翻譯得到的verilog模組是正確的。