我正在使用凿子和黑盒对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)
}
}
但是我从寄存器文件读取的数据在写任何东西之前全为零。
写入后读取的数据正确。
那么,凿子内部是否有需要调整的东西,或者我没有正确地完成所有操作?
有什么建议吗?
答案 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
。
我希望这会有所帮助!