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

Chisel實驗筆記(四)

在《Chisel實驗筆記(二)》中,通過編寫TestBench檔案,然後使用Icarus Verilog、GtkWave可以測試,檢視相關波形,比較直觀,在《Chisel實驗筆記(三)》直接對得到C++模擬器進行測試,也可以得到測試結果,實際上對C++模擬器進行測試也可以同時得到vcd檔案,從而使用GtkWave檢視波形,得到直觀的結果。本文就介紹了這個過程。

為了得到對應的vcd檔案,需要對《Chisel實驗筆記(三)》中的程式碼做一處修改:

在main方法的margs變數中增加一個引數"--vcd",如下:

val margs=Array("--backend","c","--genHarness","--compile","--test","--vcd")  // 增加了一個“--vcd”引數

此時執行該程式,可以輸出模擬結果如下:
<pre name="code" class="plain">STARTING ./Max2
RESET 5
  POKE Max2.io_in0 <-  0x82
  POKE Max2.io_in1 <-  0x80
STEP 1 -> 1
  PEEK Max2.io_out -> 0x82
EXPECT Max2.io_out <- 130 == 130 PASS
  POKE Max2.io_in0 <-  0x65
  POKE Max2.io_in1 <-  0xae
STEP 1 -> 2
  PEEK Max2.io_out -> 0xae
EXPECT Max2.io_out <- 174 == 174 PASS
  POKE Max2.io_in0 <-  0xef
  POKE Max2.io_in1 <-  0x3b
STEP 1 -> 3
  PEEK Max2.io_out -> 0xef
EXPECT Max2.io_out <- 239 == 239 PASS
  POKE Max2.io_in0 <-  0x9c
  POKE Max2.io_in1 <-  0xb5
STEP 1 -> 4
  PEEK Max2.io_out -> 0xb5
EXPECT Max2.io_out <- 181 == 181 PASS
  POKE Max2.io_in0 <-  0x5b
  POKE Max2.io_in1 <-  0x2d
STEP 1 -> 5
  PEEK Max2.io_out -> 0x5b
EXPECT Max2.io_out <- 91 == 91 PASS
  POKE Max2.io_in0 <-  0xc9
  POKE Max2.io_in1 <-  0xda
STEP 1 -> 6
  PEEK Max2.io_out -> 0xda
EXPECT Max2.io_out <- 218 == 218 PASS
  POKE Max2.io_in0 <-  0x2a
  POKE Max2.io_in1 <-  0xaa
STEP 1 -> 7
  PEEK Max2.io_out -> 0xaa
EXPECT Max2.io_out <- 170 == 170 PASS
  POKE Max2.io_in0 <-  0x31
  POKE Max2.io_in1 <-  0x64
STEP 1 -> 8
  PEEK Max2.io_out -> 0x64
EXPECT Max2.io_out <- 100 == 100 PASS
  POKE Max2.io_in0 <-  0x7c
  POKE Max2.io_in1 <-  0x86
STEP 1 -> 9
  PEEK Max2.io_out -> 0x86
EXPECT Max2.io_out <- 134 == 134 PASS
  POKE Max2.io_in0 <-  0x94
  POKE Max2.io_in1 <-  0x4f
STEP 1 -> 10
  PEEK Max2.io_out -> 0x94
EXPECT Max2.io_out <- 148 == 148 PASS
STEP 1 -> 11
RAN 11 CYCLES PASSED
PASSED


共生成了10組隨機數,每次輸出其中較大的資料。

同時得到了一個Max2.vcd檔案,使用gtkwave Max2.vcd即可開啟該檔案,結果如下: