Chisel實驗筆記(四)
阿新 • • 發佈:2018-12-25
在《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即可開啟該檔案,結果如下: