如何部分初始化寄存器向量(例如,基础束类型的某些字段)

时间:2018-04-03 18:35:02

标签: chisel

假设我有一个像这样的寄存器向量(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(一般来说可能更复杂)。

1 个答案:

答案 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
}))

有点冗长但包含在一个块中