【发布时间】:2019-12-11 14:32:25
【问题描述】:
我想测试我的代码,所以我正在做一个测试台。我想知道是否可以检查内部信号(例如本示例中的 state 寄存器的值),或者 peek 是否仅适用于 I/O
class MatrixMultiplier(matrixSize : UInt, cellSize : Int) extends Module {
val io = IO(new Bundle {
val writeEnable = Input(Bool())
val bufferSel = Input(Bool())
val writeAddress = Input(UInt(14.W)) //(matrixSize * matrixSize)
val writeData = Input(SInt(cellSize.W))
val readEnable = Input(Bool())
val readAddress = Input(UInt(14.W)) //(matrixSize * matrixSize)
val readReady = Output(Bool())
val readData = Output(SInt((2 * cellSize).W))
})
val s_idle :: s_writeMemA :: s_writeMemB :: s_multiplier :: s_ready :: s_readResult :: Nil = Enum(6)
val state = RegInit(s_idle)
...
对于测试平台:
class MatrixUnitTester(matrixMultiplier: MatrixMultiplier) extends PeekPokeTester(matrixMultiplier) { //(5.asUInt(), 32.asSInt())
println("State is: " + peek(matrixMultiplier.state).toString) // is it possible to have access to state ?
poke(matrixMultiplier.io.writeEnable, true.B)
poke(matrixMultiplier.io.bufferSel, false.B)
step(1)
...
编辑:好的,使用 VCD + GTKWave 可以以图形方式查看这些变量;)
【问题讨论】:
-
听起来你找到了你想要的信息。如果是这样,请考虑接受现有答案或自己编写并接受一个答案,以便其他人知道该问题有答案。
标签: chisel test-bench