RISCBoy — это open-source портативная игровая консоль, спроектированная с нуля. В её состав входят RISC-V-совместимый CPU, растровый графический конвейер с контроллером дисплея, а также вся обвязка: busfabric, контроллеры памяти, UART, GPIO и прочее. Разводка платы сделана в KiCad. Автор называет проект «Gameboy Advance из параллельной вселенной, где RISC-V существовал ещё в 2001 году» — это и признание в любви консолям из детства, и дань технологиям, которые в них стояли.
Прошивка написана на синтезируемом Verilog 2005 и рассчитана на FPGA iCE40-HX8k. Это LUT4-матрица с 7680 логическими элементами, так что втиснуть туда 32-битную консоль пришлось очень аккуратно. HX8k когда-то была самой крупной FPGA, которую поддерживал open-source тулчейн Icestorm, но с тех пор он шагнул дальше.
Процессор поддерживает набор инструкций RV32IMC и проходит RISC-V compliance suite, верификацию riscv-formal, а также собственные формальные проверки фронтенда инструкций и базового соответствия шине. Есть M-mode CSRs, исключения и простая поддержка векторизованных внешних прерываний.
Для сборки RV32IMC тулчейна нужен RISC-V GNU Toolchain с настройками --with-arch=rv32imc --with-abi=ilp32. На маленьких FPGA вроде iCE40 UP5k можно собрать урезанную версию с RV32I — тогда и тулчейн надо пересобирать с соответствующей multilib-конфигурацией.
Симуляция идёт через Xilinx ISIM 14.x (только Linux). Для запуска тестов нужен git checkout с рекурсивными подмодулями. HDL-тесты запускаются скриптом ./runtests, софтверные — через make. Можно отладить тест в GUI: make TEST=helloworld gui.
Плата Rev A совместима с 4-слойным прототипированием 5×5 см от iTead (сейчас $65 за 10 штук). Rev B будет другой, автор ждёт созревания gateware и bootloader. Синтез под iCE40 делается open-source тулчейном. Есть экспериментальная поддержка ECP5 (плата Lattice LEF5UM5G-85F-EVN) — там внешняя 512 КБ SRAM заменена на внутреннюю 256 КБ 32-битную синхронную память, собранную из sysmem-блоков ECP5 через тулчейн Trellis.
Репозиторий включает папки: board (KiCad), doc (документация), hdl (Verilog-исходники — busfabric, graphics, процессор hazard5, memory, peris), synth (синтез под разные платы), test (регрессии), software (C-тесты). Для работы с submodule обязательно делать git clone --recursive.