Projeto 1
Nesse projeto, os alunos desenvolverão um processador RISC-V simples multiciclo. A intenção principal é dominar questões básicas do desenvolvimento de hardware, como a definição de um conjunto de instruções, a implementação da máquina de estados de um processador multiciclo e a verificação do funcionamento do processador.
Objetivos
- Implementar um processador RISC-V simples multiciclo em Verilog sintetizável.
- Implementar um conjunto de testes para verificar o funcionamento do processador.
- Executar programas implementados em C no processador.
Especificação
Seu processador deve implementar as instruções RV32I, que é o conjunto mais simples de instruções RISC-V. A implementação deve ser multiciclo, ou seja, cada instrução pode levar um número diferente de ciclos de clock para ser executada. Você pode se inspirar na implementação multiciclo do livro "Computer Organization and Design" de David Patterson e John Hennessy.
Você pode utilizar um toolchain pronto ou montar o seu próprio toolchain (dica de geração). Alternativamente, para esse primeiro trabalho, você pode utilizar um montador online (existem outros, fique à vontade para utilizar o que achar mais conveniente).
Como método de encerramento do programa, você pode utilizar a instrução ebreak, que encerra o simulador.
Seu código deve ser sintetizávelvel, isso significa que deve ser possível gerar um circuito lógico a partir do seu código. A verificação será feita através do iverilog.
Entrega
Seu projeto deve ser entregue até o dia 31/03 através do GitHub Classroom. O link será fornecido através do Google Classroom.
Critérios de avaliação
- Instruções RV32I suportadas
- Datapath multiciclo
- Código de verificação
- Correto uso do github no acompanhamento e entrega do seu trabalho
- Documentação do processador implementado
- Testes extras incluídos no projeto