凿子在用仿真器仿真时随机初始化寄存器值

时间:2019-12-27 03:47:28

标签: chisel verilator

我正在使用凿子和黑盒对Verilog寄存器文件运行凿子逻辑。 寄存器文件没有复位信号,因此我希望寄存器被随机初始化。

我将--x-initial unique传递给了验证人, 基本上,这就是我启动测试的方式:

  private val backendName = "verilator"

  "NOCDMA" should s" do blkwrite and blkread correctly (with $backendName)" in {
    Driver.execute(Array("--fint-write-vcd","--backend-name",s"$backendName",
      "--more-vcs-flags","--trace-depth 1 --x-initial unique"),
      ()=>new DMANetworkWithMem(memAddrWidth,memDataWidth)(nocDataWidth)(nNodesX,nNodesY)){
      c => new DMANetworkRWTest(c)
    }
  }

但是我从寄存器文件读取的数据在写任何东西之前全为零。

写入后读取的数据正确。

那么,凿子内部是否有需要调整的东西,或者我没有正确地完成所有操作?

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我不确定,但是我在Verilator上发现了以下问题,并且存在类似的问题:https://github.com/verilator/verilator/issues/1399

从略过上述问题来看,我认为您还需要在运行时传递+verilator+seed+<value>+verilator+rand+reset+<value>。我不是iotesters的专家,但是我相信您可以通过iotesters自变量添加这些运行时值:--more-vcs-c-flags

请注意,如果在Verilog中存在运行时否则会注入X(例如越界索引)的情况,我也会在Verilator中设置--x-assign unique

我希望这会有所帮助!