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



原文地址:https://www.cnblogs.com/jhcelue/p/6944511.html