Rocket Chip на не Zynq FPGA
Я хочу портировать ракетный чип на не-Zynq FPGA (altera Stratix V), плату, которая не содержит ядра ARM, используемого для запуска riscv-fesvr. Как я могу начать порт? Кроме того, кто-нибудь пытался запустить чип ракеты на такой плате? Могу ли я указать на некоторые ресурсы для этого?
3 ответа
В основном это проблема взаимодействия, так как Rocket Chip не использует ничего специфического для Zynq. Если этот интерфейс сделан правильно, вам не нужно менять pk/linux или сам Rocket Chip. Вам нужно будет обернуть Rocket Chip для целевой FPGA и связать его с Frontend Server (fesvr).
Что касается упаковки Rocket Chip, я бы посмотрел на ожидаемый IO верхнего уровня ( RocketChip.scala), который включает в себя HostIO (для HTIF) и MemIO (для DRAM). Для получения дополнительной информации об этих интерфейсах я бы ознакомился со слайдами с первого семинара. Наша текущая оболочка ( rocketchip_wrapper.v) мультиплексирует эти интерфейсы через AXI в ядро ARM хоста, на котором работает fesvr.
Ваше предложение, отправленное в список рассылки для запуска fesvr на ядре NIOS II и связи с ним через AXI, может работать. Это потребует изменения ( fesvr-zedboard.cc) для соответствия интерфейсу AXI, который NIOS предоставляет программному обеспечению. Этот подход может потребовать наименьших новых разработок, но мягкое ядро будет потреблять ресурсы ПЛИС и может работать медленнее.
Другой способ сделать это - запустить интерфейсный сервер на ПК, подключенном к плате через Ethernet. Вам нужно будет сделать мост между MemIO чипа Rocket и встроенным DRAM. Вам также нужно будет запустить HTIF через Ethernet, для чего потребуется еще один мост между HostIO и MAC-адресом Ethernet на плате. Несколько лет назад fesvr поддерживал это ( fesvr-eth.cc), но этот код не был сохранен и почти наверняка нуждается в обновлении.
Все это предполагает, что вы хотите запустить процессор с привязкой. Чтобы сделать это самозагрузкой, потребуется больше работы. Есть работа над спецификацией платформы, которая будет стандартизировать это, но до тех пор вы должны будете разрабатывать свои собственные или продолжать использовать привязанный Rocket Chip.
Я портировал одноядерный чип 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-контроллер и многие другие.
Взгляните на пример использования ядра Rocket-chip внутри портативного верхнего уровня VHDL. Этот проект имеет очень похожую структуру на Leon3, которая может быть очень легко перенесена на любую плату FPGA. Увидеть: