#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
Я проверил это здесь со Скейти.