Ракетный чип на ПЛИС других производителей

Я хочу перенести чип ракеты на не-Zynq FPGA (altera Stratix V), плату, которая не содержит ядра ARM, используемого для запуска riscv-fesvr. Как мне запустить порт? А еще кто-нибудь пробовал запустить на такой плате чип ракеты? Могу я указать на какие-то ресурсы для этого?


person user2888398    schedule 27.05.2015    source источник


Ответы (3)


В основном это проблема взаимодействия, поскольку Rocket Chip не использует ничего специфического для Zynq внутри себя. Если этот интерфейс выполнен правильно, вам не нужно менять pk / linux или сам Rocket Chip. Вам нужно будет как обернуть Rocket Chip для целевой FPGA, так и взаимодействовать с ней с помощью Frontend Server (fesvr).

Для упаковки Rocket Chip я бы посмотрел на ожидаемый ввод-вывод верхнего уровня (RocketChip.scala), что наиболее важно включает HostIO (для HTIF) и MemIO (для DRAM). Для получения дополнительной информации об этих интерфейсах я бы проконсультировался с слайдами из первого семинара. Наша текущая оболочка (rocketchip_wrapper.v) мультиплексирует эти интерфейсы через AXI к ядру ARM хоста, на котором работает fesvr.

Ваше предложение, отправленное в список рассылки о запуске fesvr на ядре NIOS II и общении с ним через AXI, может сработать. Для этого потребуется изменить (fesvr-zedboard.cc), чтобы соответствовать интерфейсу AXI, который NIOS предоставляет программному обеспечению. Этот подход может потребовать минимум новых разработок, но программное ядро ​​будет потреблять ресурсы FPGA и может работать медленнее.

Другой способ добиться этого - запустить интерфейсный сервер на ПК, подключенном к плате через Ethernet. Вам нужно будет создать мост между MemIO Rocket Chip и встроенной памятью DRAM. Вам также потребуется запустить HTIF через Ethernet, для чего потребуется еще один мост между HostIO и MAC-адресом Ethernet платы. Много лет назад fesvr поддерживал это (fesvr-eth.cc), но этот код не поддерживается и почти наверняка нуждается в обновлении.

Все это предполагает, что вы хотите запустить процессор в режиме привязки. Для его самозагрузки потребуется больше работы. Есть работа над спецификацией платформы, которая стандартизирует это, но до тех пор вам нужно будет разработать свой собственный или продолжать использовать привязанный Rocket Chip.

person user2548418    schedule 27.05.2015
comment
Хост-интерфейс на ядре ARM отображается как общий ввод-вывод с отображением памяти. Интерфейс создает файл / dev / mem в ядре ARM, а затем ядро ​​ракеты получает доступ к этой физической памяти. Я прав? Поэтому я не думаю, что он предоставляет какой-либо доступ к AXI. Итак, что мне нужно изменить в кодах fesvr? Кроме того, как мне получить смещение, используемое в mmap (dev_paddr)? - person user2888398; 06.06.2015
comment
Кроме того, как только я установил модифицированный fesvr, я создаю определенные файлы в каталоге сборки. Как мне использовать этот новый fesvr? Где включить, чтобы можно было пользоваться? - person user2888398; 06.06.2015
comment
Все, что я могу найти, это: при установке fesvr-zynq не забудьте также скопировать библиотеку (build / libfesvr.so в / usr / local / lib на плате). Не могли бы вы подробнее рассказать об этом? - person user2888398; 08.06.2015
comment
Правильно, большая часть сложности абстрагируется с помощью ввода-вывода с отображением памяти. Dev_paddr - это сопоставление (поэтому вам нужно будет найти его для своей платформы). - person user2548418; 09.06.2015
comment
В качестве примеров использования fesvr я бы посмотрел на четыре примера, которые мы уже опубликовали (симуляция ISA с spike, симуляция ISA с QEMU, C ++ - эмуляция Rocket Chip и работа на Zynq). Для некоторых из этих платформ fesvr является неявным, но используется для всех. Использование Zynq, вероятно, наиболее похоже. - person user2548418; 09.06.2015
comment
Makefile для fesvr генерирует несколько двоичных файлов, которые используют одну и ту же общую библиотеку (libfesvr.so). Это должно быть доступно для вашего нового двоичного файла, или вам нужно будет изменить компиляцию на статическую ссылку. - person user2548418; 09.06.2015
comment
Привет, у меня есть несколько вопросов: 1. Как я могу получить dev_paddr, необходимый для сопоставления моей платы? 2. Обертка чипа ракеты использует AXI для подключения к физической памяти / dev / mem, верно? В fesvr нет компонента AXI? 3. Я модифицировал и построил fesvr, и теперь у меня есть fesvr-stratixv и libfesvr.so. Где мне поставить это на ядро ​​руки (в моем случае ядро ​​nios II) для запуска? (У меня Linux работает на nios II) 4. И, наконец, создается ли rocketchip_wrapper.v автоматически из RocketChip.scala? Или я могу вручную изменить этот код Verilog и настроить его для моей FPGA? - person user2888398; 23.06.2015
comment
1/2. Да, мы используем ввод-вывод с отображением памяти для связи через AXI. dev_paddr - это адрес ввода-вывода. Для плат Zynq мы не только устанавливаем это в fesvr, но и настраиваем конфигурацию платы. 3. Это можно изменить, но обычно fesvr может располагаться где угодно, а libfesvr.so должен находиться в / usr / local. 4. Да. Вы, вероятно, сможете осуществить необходимые модификации, не меняя ничего внутри самого Rocket-Chip или какого-либо кода Chisel. - person user2548418; 28.06.2015

Я портировал одноядерный чип Rocket на не-Zynq FPGA (платы: ML605 и KC705), и мне интересно перенести его на другие цели (см. Сообщение выше 'https://github.com/sergeykhbr/riscv_vhdl '). Так что, если вы хотите использовать предложенный дизайн vhdl и готовы к сотрудничеству, я думаю, что могу помочь вам с этим и в результате добавить файл проекта Quartus в репозиторий.

Кроме того, есть возможность повторно использовать периферийные устройства под лицензией GPL, реализованные в 'grlib': http://www.gaisler.com/index.php/downloads/leongrlib. такие как MAC, SD-контроллер и многие другие.

person sergey    schedule 23.11.2015

Взгляните на пример использования ядра Rocket-chip внутри портативного верхнего уровня VHDL. Этот проект имеет очень похожую структуру на Leon3, который, возможно, очень легко перенести на любую плату FPGA. Видеть:

https://github.com/sergeykhbr/riscv_vhdl

person alkosin    schedule 17.11.2015