假设我有一个像这样的寄存器向量(ValidIO是围绕UInt创建一个包并添加一个“有效”字段):
val vreg = Reg(Vec(16, ValidIO(UInt(32.W))))
仅以简洁的方式初始化Vec的所有元素中的有效字段的最佳方法是什么?现在我知道如何通过将寄存器分成两个向量来实现它:
val vDataReg = Reg(Vec(16, UInt(32.W)))
val vValidReg = RegInit(VecInit(Seq.fill(16) {false.B}))
但这不是重用我原来的类型ValidIO(一般来说可能更复杂)。
答案 0 :(得分:1)
你可以尝试
val vreg = Reg(Vec(16, ValidIO(UInt(32.W))))
vreg.foreach(_.valid := false.B)
我不知道是否有办法在单行/声明
中进行编辑:在重置时初始化
val vreg = RegInit(Vec(Seq.fill(16) {
val w = Wire(ValidIO(UInt(32.W)))
w.valid := false.B
w.bits := DontCare
w
}))
有点冗长但包含在一个块中