У меня есть Vec[Decoupled[UInt]]
, который я хочу подключить к Vec
из Vec[Decoupled[UInt]]
на основе сигнала выбора.Однако, как только кажется, что направленность Decoupled
теряется, когда он вложен в два слоя глубиной, поэтому он не позволяет мне инициализировать сигналы готовности или управлять выходом с помощью входа.
Например, Зубило позволяет мне создать экземпляр этого:
class Example extends Module {
val io = IO(new Bundle {
val in = Vec(3, Flipped(Decoupled(UInt(3.W))))
val out = Vec(3, Decoupled(UInt(3.W)))
})
io.in.foreach(_.ready := false.B) // Only here for consistency
io.out <> io.in
}
Но это приводит к ошибке:
class Example extends Module {
val io = IO(new Bundle {
val sel = Input(UInt(4.W))
val in = Vec(10, Vec(3, Flipped(Decoupled(UInt(3.W)))))
val out = Vec(3, Decoupled(UInt(3.W)))
})
io.in.foreach(_.foreach(_.ready := false.B))
io.out <> io.in(io.sel)
}
Последний дает ошибки, которые читаются
Sink is unwriteable by current module (line 7)
Both left and right are drivers (line 8)
Это ошибка с долотом или я что-то упустил?Как я могу обойти это?