Я хотел бы сделать условное массовое соединение двунаправленных шин, концептуально, как показано ниже.
val io = IO(new Bundle {
val master = Decoupled(UInt(8.W))
val slave0 = Flipped(Decoupled(UInt(8.W)))
val slave1 = Flipped(Decoupled(UInt(8.W)))
val select = Input(Bool())
})
when (select) {
io.slave0 <> io.master
io.slave1 <> some_null_decoupled
}.otherwise {
io.slave1 <> io.master
io.slave0 <> some_null_decoupled
}
Это чище, чем индивидуальное описание логики для сигналов io.master.ready
, io.slave0.bits
, io.slave0.valid
, ... и т. Д.
Есть ли подобный синтаксис, который будет работать? Когда я пытаюсь сделать это в своем коде, я получаю много firrtl.passes.CheckInitialization$RefNotInitializedException
сообщений.