假設我有一個Bool 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)
}
}
}
但據我所知,這是創建一個組合循環,但我不能找到一個好辦法來模擬它。不知何故,我需要生成一個新的循環變量迭代,並在迭代之間傳遞它。