在《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就可以打开该文件,结果例如以下: