Как долото подключается к такому порту?

#scala #riscv #chisel

Вопрос:

Я изучаю дизайн Boomv3.

Часть A имеет порт записи. Формат такой

 val write_ports = Flipped(Vec(10, Valid(new RegisterFileWritePort(maxPregSz, registerWidth))))
 

B имеет порт записи. Формат такой

 val write_ports = Vec(5, Valid(new RegisterFileWritePort(maxPregSz, 4)))
 

C имеет порт записи. Формат такой

 val write_ports = Vec(5, Valid(new RegisterFileWritePort(maxPregSz, 4)))
 

Я хочу соединить B и C с A.

Когда я использую

 A.write_ports  <> B.write_ports
A.write_ports  <> C.write_ports
 

, здесь будет failed @: Left and Right are different length Vecs ошибка.

Но мое первоначальное намерение состоит в том, чтобы длина A равнялась 10. Длина B и C равны 5. Это заставляет их соединяться.

Но что мне делать?

Ответ №1:

С этими двумя объемными соединениями Chisel не может найти, где назначить Vec размером B и C 5 для Vec размером B 10.

Вы должны объединить vec B и C и написать одно массовое соединение :

 A.write_ports  <> B.write_ports    C.write_ports
 

Я проверил это здесь со Скейти.