Chisel 中的 <> 运算符是什么?

alc*_*orn 3 scala chisel

Chisel 教程使用了似乎是<>操作符的东西,这对我来说是完全陌生的。它有什么作用?

还有,它从哪里来?这个运算符在其他 Scala 库甚至其他语言中是否有传统含义?

下面是一个使用示例,来自 Chisel Generator Bootcamp 练习,第 3.2 节:

class MyQueue extends Module {
    // Example circuit using a Queue
    val io = IO(new Bundle {
        val in = Flipped(Decoupled(UInt(8.W)))
        val out = Decoupled(UInt(8.W))
    })
    val queue = Queue(io.in, 2)  // 2-element queue
    io.out <> queue
}
Run Code Online (Sandbox Code Playgroud)

alc*_*orn 5

<>用于批量连接两个模块之间的所有同名端口。所以在上面的例子中,

io.out <> queue
Run Code Online (Sandbox Code Playgroud)

是一种更简洁的写作方式

io.out.valid := queue.valid
io.out.bits := queue.bits
queue.ready := io.out.ready
Run Code Online (Sandbox Code Playgroud)

因为它们都是由缠Decoupled接口,它定义readyvalidbits端口(注意的是,ready连接在相反的方向流动:散装连接手柄此正确地)。

我在更彻底地阅读 Chisel wiki 后找到了答案