Что такое оператор ‹› в Chisel?

В обучающих программах Chisel используется совершенно незнакомый мне оператор <>. Что оно делает?

Кроме того, откуда это? Есть ли у этого оператора общепринятое значение в других библиотеках Scala или даже на других языках?

Вот пример использования из упражнений Bootcamp Chisel Generator, раздел 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
}

person alcorn    schedule 31.08.2018    source источник


Ответы (2)


<> используется для массового подключения всех портов с одинаковыми именами между двумя модулями. Итак, в приведенном выше примере

io.out <> queue

это более лаконичный способ написать

io.out.valid := queue.valid
io.out.bits := queue.bits
queue.ready := io.out.ready

так как они оба обернуты интерфейсом Decoupled, который определяет порты ready, valid и bits (обратите внимание, что соединение ready идет в противоположном направлении: массовое соединение обрабатывает это правильно).

Я нашел ответ после прочтения вики-страницы Chisel. тщательно.

person alcorn    schedule 01.09.2018
comment
Одна небольшая модификация этого ответа, ваша развернутая форма верна, за исключением того, что направление ready противоположно направлению valid и bits, поэтому оно действительно должно быть queue.ready := io.out.ready. Важной особенностью <> является обработка двунаправленных типов, таких как DecoupledIO. - person Jack Koenig; 02.09.2018
comment
Спасибо! Я внес правку, чтобы отразить ваше исправление - person alcorn; 04.09.2018

В Scala большинство символов, таких как /! ‹> И т. Д., Являются допустимым именем метода. Оператор / метод определяется в каждом конкретном случае.

Вызов метода также может иметь другой синтаксис, который вы можете заменить .() пробелами, например.

a.foo(bar)

такой же как

a foo bar

Итак, оператор звонит:

a <> b

такой же как

a.<>(b)
person texasbruce    schedule 31.08.2018
comment
Правильно, возможно, мне следует уточнить: я спрашиваю, что <> делает в Chisel, а также какова его этимология, если таковая имеется. - person alcorn; 01.09.2018
comment
@alcorn Ознакомьтесь с документацией - person texasbruce; 01.09.2018