假设我有一个布尔的 Vec。我想填充一个相同大小的新 Vec,其值等于我在原始 Vec 中看到的这个索引的真实值的数量。我想结合起来做。
有了 HLS 背景和编码风格,我想写这样的东西:
def foo ( in : Vec[UInt] ) = {
val out = Vec.fill(in.size) {UInt(in.size)}
val nextInd = Wire(init = 0.U)
in.zipWithIndex.foreach {case(val, ind) =>
when(val === true.B) {
out(ind) := nextInd
nextInd := Wire(init = nextInd+1.U)
}
}
}
但是我知道这是在创建一个组合循环,但是我找不到对其进行建模的好方法。不知何故,我需要生成循环的新变量迭代并在迭代之间传递它。