munetomo-maruyama/mmRISC-2
Un núcleo de CPU RISC-V de 64 bits escrito en SystemVerilog que arranca Linux en una placa FPGA Arty A7, con el RTL, la verificación y la documentación escritos íntegramente por Claude Code.
- Estrellas
- 168
- Forks
- 32
- Issues abiertos
- 0
- Último commit
- hace 17 días
¿Qué es?
mmRISC-2 es un procesador RISC-V (RV64GC) de 64 bits, desarrollado por su autor en SystemVerilog para la placa FPGA Digilent Arty A7-100T. Incluye una pipeline en orden de 8 etapas, una MMU Sv39 con PMP, predicción de saltos, una FPU de precisión simple y doble, cachés L1 de instrucciones y datos de 16 KB y una caché L2 de 256 KB. Los periféricos provienen de LiteX y dispone de depuración JTAG/cJTAG en el chip.
A 50 MHz, la placa arranca LiteX BIOS, OpenSBI y Linux 7.2 desde una tarjeta SD hasta llegar a una shell de BusyBox. También puede arrancar Debian 13 (riscv64), con gcc, make y gdb ejecutándose en la propia placa. Se pueden compilar y depurar programas C bare-metal desde el IDE Eclipse mediante JTAG. El núcleo expone 29 eventos de contadores de rendimiento que se pueden usar con Linux perf.
El repositorio también documenta el entorno de verificación, que incluye pruebas propias, riscv-tests, modelos de referencia e inyección de errores, además del historial de diseño y las especificaciones en inglés y japonés.
Funciones clave
- 01Núcleo RV64GC con modos M, S y U, MMU Sv39 y PMP de 8 entradas.
- 02Pipeline en orden de 8 etapas con predicción de saltos (BTB, gshare y pila de direcciones de retorno).
- 03FPU de precisión simple y doble con una ruta de datos segmentada.
- 04Cachés L1 de instrucciones y datos de 16 KB, además de una caché L2 de 256 KB.
- 05Arranca Linux 7.2 y Debian 13 desde una tarjeta SD en la Arty A7-100T.
- 06Depuración JTAG/cJTAG en el chip con disparadores de hardware, compatible con OpenOCD y gdb.
Casos de uso
- Estudiar cómo se implementan en SystemVerilog un núcleo de CPU RISC-V, las cachés y la MMU.
- Ejecutar Linux en un núcleo RISC-V personalizado, usando una placa FPGA económica.
- Desarrollar y depurar programas C bare-metal en un núcleo RISC-V implementado en una FPGA mediante Eclipse.
- Usarlo como referencia para la verificación de procesadores con modelos de referencia e inyección de errores.
Antes de usarlo
- Se ejecuta en una placa FPGA específica, la Digilent Arty A7-100T, por lo que no puede funcionar en otro hardware sin adaptarlo.
- El proyecto finaliza con Rev.02, así que no se prevé continuar su desarrollo.
Temas
Preguntas frecuentes
- ¿Qué es mmRISC-2?
- Un núcleo de CPU RISC-V de 64 bits escrito en SystemVerilog que arranca Linux en una placa FPGA Arty A7, con el RTL, la verificación y la documentación escritos íntegramente por Claude Code. mmRISC-2 es un procesador RISC-V (RV64GC) de 64 bits, desarrollado por su autor en SystemVerilog para la placa FPGA Digilent Arty A7-100T. Incluye una pipeline en orden de 8 etapas, una MMU Sv39 con PMP, predicción de saltos, una FPU de precisión simple y doble, cachés L1 de instrucciones y datos de 16 KB y una caché L2 de 256 KB. Los periféricos provienen de LiteX y dispone de depuración JTAG/cJTAG en el chip.
- ¿mmRISC-2 es gratuito? ¿Qué licencia tiene?
- mmRISC-2 es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿mmRISC-2 sigue mantenido?
- Mantenimiento activo. El último commit de mmRISC-2 fue el 20 oct 2026.
- ¿Para qué puedo usar mmRISC-2?
- Estudiar cómo se implementan en SystemVerilog un núcleo de CPU RISC-V, las cachés y la MMU. Ejecutar Linux en un núcleo RISC-V personalizado, usando una placa FPGA económica. Desarrollar y depurar programas C bare-metal en un núcleo RISC-V implementado en una FPGA mediante Eclipse. Usarlo como referencia para la verificación de procesadores con modelos de referencia e inyección de errores.
- ¿Dónde consigo mmRISC-2?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/munetomo-maruyama/mmRISC-2
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Lenguaje de descripción de hardware de código abierto integrado en Scala para crear generadores parametrizables de circuitos digitales que producen Verilog.
Framework de Python para crear núcleos FPGA y SoC personalizados, con buses, periféricos, integración de CPU y compatibilidad con simulación.
Guía técnica en varios capítulos sobre cómo arranca una computadora y cómo se ejecutan los programas, desde la CPU hasta las llamadas al sistema y los procesos.
Interfaz de terminal que muestra gráficas de temperatura, frecuencia, consumo y uso de la CPU, e incluye una prueba de estrés integrada.
Capa de automatización que permite a agentes de IA usar EasyEDA Pro para consultar hojas de datos, dibujar esquemas, diseñar PCB y revisar diseños.