标签:处理器 自己动手写cpu chisel risc-v rocket
在《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
同时得到了一个Max2.vcd文件,使用gtkwave Max2.vcd即可打开该文件,结果如下:
标签:处理器 自己动手写cpu chisel risc-v rocket
原文地址:http://blog.csdn.net/leishangwen/article/details/46355827