Я использую Chisel3 для построения своей схемы, и у меня есть следующий тест
reset()
private val inputData = IndexedSeq.fill(ProcedureSpaceSize)(0: BigInt)
.patch(0, Seq(63: BigInt), 1)
.patch(1, Seq(65: BigInt), 1)
.patch(2, Seq(98: BigInt), 1)
.patch(3, Seq(98: BigInt), 1)
poke(sff.io.inputDataVector, inputData)
step(1)
expect(sff.io.done, true)
expect(sff.io.ret, 65) // fails
Теперь у меня на втором expect
все не получается. Однако, когда я пытаюсь запустить свою схему в REPL и использую peek
для просмотра значений io_ret
после выполнения тех же процедур в соответствии с тестом, я получаю правильное значение - 65.
Мой вопрос просто: почему я получаю сбой в тесте Chisel, но могу посмотреть правильные результаты при отладке в режиме REPL? Это не баг, или я что-то не так делаю?
РЕДАКТИРОВАТЬ: код схемы
class SFF extends Module {
private val dataType = Integer32Bit
// IO
val io = IO(new Bundle {
// INPUT
val inputDataVector: Vec[UInt] = Input(Vec(ProcedureSpaceSize, dataType))
// OUTPUT
val ret: UInt = Output(dataType)
val done: Bool = Output(Bool())
})
// WIRE
val data: Vec[UInt] = Wire(Vec(ProcedureSpaceSize, dataType))
data := io.inputDataVector
val paramB: UInt = Wire(dataType)
paramB := data(1)
io.ret := DontCare
// LOGIC
io.done := true.B
io.ret := paramB
}