将内存转储到VCD文件中

问题描述

我的主要问题是,在使用peek/poke测试时,我无法访问内部信号。例如,我正在尝试调试缓存设计,因此,我想查看缓存的内容。由于它不是IO,因此无法在我的expect文件peekPokeTester。我尝试使用--memVCD标志将其转储,但无法识别此标志。

有人知道我如何看到内容或将其转储到VCD文件中吗?

解决方法

如果使用单元测试框架chiseltest,则使用验证器后端

import chiseltest.experimental.TestOptionBuilder._
...
test(new DUT).withFlags(Array("--t-use-verilator","--t-write-vcd")) { dut =>

如果您使用凿子测试仪,请使用

iotesters.Driver.execute(
    Array("--backend-name","verilator","--generate-vcd-output","on"),() => new DUT) { c =>

如果您使用的是最新的凿子版本3.4,那么默认后端 treadle 现在也可以记录内存。

添加标志“ --tr-mem-to-vcd”,“ ”,其中“ specifier”是其中之一

  • “全部”记录所有内存中所有位置的所有值
  • “ mem1:all”记录所有位置的内存mem1的所有值
  • “ mem1:0-4”日志值位于内存mem1的位置0-4
  • “ mem1:b0-b100”记录值位于位置0-4,但以二进制形式显示内存mem1的地址
  • “ mem1:h0-hff”记录值在0-255处,但以十六进制显示内存mem1的地址
  • “ mem1:o0-o377”记录位置0-255处的值,但以八进制形式显示内存mem1的地址

如果您感觉真的很胆大,并且待办事项不太大。您可以获取生成的dut的firrtl,并直接在 treadle 中编写测试,从而可以窥视和戳戳几乎所有内容。这是 treadle 内部测试套件中的some example code

,

如果您使用的是 chisel3,请在 Chick 的回答中更改以下内容

import chiseltest.experimental.TestOptionBuilder._

到:

import chisel3.tester.experimental.TestOptionBuilder._

详情请见here