munetomo-maruyama/mmRISC-2
Um núcleo de CPU RISC-V de 64 bits em SystemVerilog que inicializa o Linux em uma placa FPGA Arty A7, com RTL, verificação e documentação escritos com Claude Code.
- Estrelas
- 168
- Forks
- 32
- Issues abertas
- 0
- Último commit
- há 18 dias
O que é?
mmRISC-2 é um processador RISC-V (RV64GC) de 64 bits feito em casa e escrito em SystemVerilog, desenvolvido para a placa FPGA Digilent Arty A7-100T. Ele inclui um pipeline in-order de 8 estágios, MMU Sv39 com PMP, predição de desvios, FPU de precisão simples e dupla, caches L1 de instruções e dados de 16 KB e um cache L2 de 256 KB. Os periféricos vêm do LiteX, e há depuração JTAG/cJTAG integrada ao chip.
Na placa, a 50 MHz, o projeto inicializa o LiteX BIOS, o OpenSBI e o Linux 7.2 a partir de um cartão SD, chegando a um shell BusyBox. O Debian 13 (riscv64) também pode inicializar, com gcc, make e gdb sendo executados na própria placa. Programas C bare-metal podem ser compilados e depurados no IDE Eclipse via JTAG. O núcleo disponibiliza 29 eventos de contadores de desempenho que podem ser usados com o Linux perf.
O repositório também documenta o ambiente de verificação, que inclui testes feitos em casa, riscv-tests, modelos de referência e injeção de bugs, além do histórico do projeto e das especificações em inglês e japonês.
Recursos principais
- 01Núcleo RV64GC com modos M, S e U, MMU Sv39 e PMP de 8 entradas.
- 02Pipeline in-order de 8 estágios com predição de desvios (BTB, gshare e pilha de endereços de retorno).
- 03FPU de precisão simples e dupla com datapath em pipeline.
- 04Caches L1 de instruções e dados de 16 KB, além de um cache L2 de 256 KB.
- 05Inicializa Linux 7.2 e Debian 13 a partir de um cartão SD na Arty A7-100T.
- 06Depuração JTAG/cJTAG integrada ao chip, com gatilhos de hardware e compatibilidade com OpenOCD e gdb.
Casos de uso
- Estudar como um núcleo de CPU RISC-V, caches e uma MMU são implementados em SystemVerilog.
- Executar Linux em um núcleo RISC-V personalizado usando uma placa FPGA de baixo custo.
- Desenvolver e depurar programas C bare-metal em um núcleo RISC-V executado em FPGA, via Eclipse.
- Usar como referência para verificação de processadores com modelos de referência e injeção de bugs.
Antes de usar
- Ele funciona em uma placa FPGA específica, a Digilent Arty A7-100T, portanto não pode ser executado em outro hardware sem ser portado.
- O projeto se encerra na Rev.02, portanto não há planos para continuar o desenvolvimento.
Tópicos
Perguntas frequentes
- O que é mmRISC-2?
- Um núcleo de CPU RISC-V de 64 bits em SystemVerilog que inicializa o Linux em uma placa FPGA Arty A7, com RTL, verificação e documentação escritos com Claude Code. mmRISC-2 é um processador RISC-V (RV64GC) de 64 bits feito em casa e escrito em SystemVerilog, desenvolvido para a placa FPGA Digilent Arty A7-100T. Ele inclui um pipeline in-order de 8 estágios, MMU Sv39 com PMP, predição de desvios, FPU de precisão simples e dupla, caches L1 de instruções e dados de 16 KB e um cache L2 de 256 KB. Os periféricos vêm do LiteX, e há depuração JTAG/cJTAG integrada ao chip.
- mmRISC-2 é gratuito? Qual é a licença?
- mmRISC-2 é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- mmRISC-2 ainda é mantido?
- Manutenção ativa. O último commit de mmRISC-2 foi em 20 de out. de 2026.
- Para que posso usar mmRISC-2?
- Estudar como um núcleo de CPU RISC-V, caches e uma MMU são implementados em SystemVerilog. Executar Linux em um núcleo RISC-V personalizado usando uma placa FPGA de baixo custo. Desenvolver e depurar programas C bare-metal em um núcleo RISC-V executado em FPGA, via Eclipse. Usar como referência para verificação de processadores com modelos de referência e injeção de bugs.
- Onde consigo mmRISC-2?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/munetomo-maruyama/mmRISC-2
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma linguagem de descrição de hardware de código aberto integrada ao Scala para criar geradores de circuitos digitais parametrizáveis que emitem Verilog.
Framework Python para criar cores e SoCs personalizados em FPGA, com barramentos, periféricos, integração de CPUs e suporte à simulação.
Guia técnico em vários capítulos sobre a inicialização de um computador e a execução de programas, da CPU até syscalls e processos.
Interface de terminal que exibe gráficos de temperatura, frequência, potência e uso da CPU, com teste de estresse integrado.
Camada de automação que permite a agentes de IA usar o EasyEDA Pro para consultar datasheets, desenhar esquemáticos, projetar PCBs e verificar projetos.