Este repositório contém os arquivos base para o projeto da disciplina Infraestrutura de Hardware (IF674) no CIn-UFPE. O objetivo do projeto é implementar instruçÔes em um processador RISC-V usando SystemVerilog.
A tabela abaixo mostra o status das instruçÔes implementadas até o momento:
# | Instrução | Implementada | Testada | Funcionando |
---|---|---|---|---|
1 | BEQ |
â | â | â |
2 | LW |
â | â | â |
3 | SW |
â | â | â |
4 | ADD |
â | â | â |
5 | AND |
â | â | â |
Seu objetivo é implementar as instruçÔes restantes listadas abaixo:
# | Instrução | Implementada | Testada | Funcionando |
---|---|---|---|---|
1 | JAL |
â | â | â |
2 | JALR |
â | â | â |
3 | BNE |
â | â | â |
4 | BLT |
â | â | â |
5 | BGE |
â | â | â |
6 | LB |
â | â | â |
7 | LH |
â | â | â |
8 | LBU |
â | â | â |
9 | SB |
â | â | â |
10 | SH |
â | â | â |
11 | SLTI |
â | â | â |
12 | ADDI |
â | â | â |
13 | SLLI |
â | â | â |
14 | SRLI |
â | â | â |
15 | SRAI |
â | â | â |
16 | SUB |
â | â | â |
17 | SLT |
â | â | â |
18 | XOR |
â | â | â |
19 | OR |
â | â | â |
20 | HALT |
â | â | â |
-
As instruçÔes de 1 a 19 são parte oficial do conjunto RV32I. A pseudo-instrução
HALT
é uma instrução usada em linguagens de montagem para indicar o fim de um programa ou pausar sua execução. Quando o processador encontra a instruçãoHALT
, geralmente Ă© acionada uma ação especĂfica, como inserir zeros (ou outro valor prĂ©-determinado) no pipeline do processador e interromper o contador de programa (PC), impedindo a execução de novas instruçÔes. Essa funcionalidade permite que o programador tenha controle sobre o fluxo do programa, indicando explicitamente quando o programa deve terminar. -
VocĂȘ tem permissĂŁo para modificar a implementação do processador como desejar (por exemplo, incluir fios, alterar tamanhos, modificar sinais, remover ou adicionar mĂłdulos, etc.), desde que o resultado final continue funcionando como um pipeline e produza os resultados corretos. Suas decisĂ”es de projeto devem ser adequadamente documentadas.
A data de entrega do projeto serĂĄ especificada no Classroom, assim como a quantidade de pessoas por grupo.
A entrega consiste no link do fork do repositĂłrio no GitHub, contendo o cĂłdigo-fonte do projeto e o relatĂłrio.
-
Faça um fork desse repositório e inclua as alteraçÔes necessårias (todos os integrantes do grupo devem contribuir!).
- Além das implementaçÔes, fique à vontade para alterar o README.md como achar melhor.
-
O relatĂłrio deve estar no formato PDF ou como link de um Google Docs. Ele deve conter:
- Nome dos integrantes do grupo.
- Link para o fork do repositĂłrio no GitHub.
- Descrição das escolhas de projeto.
- Descrição dos testes realizados.
- Resultados obtidos.
- Dificuldades encontradas.
- ConclusĂŁo.
O relatório não deve ser extenso, mas deve conter todas as informaçÔes necessårias para a avaliação do projeto.
A avaliação do projeto serå baseada na implementação correta das instruçÔes, nos testes realizados e no funcionamento adequado do processador.
- O projeto serå submetido a casos de teste para verificar seu funcionamento, mas o processo de avaliação também levarå em conta a qualidade do código e do relatório.
O repositĂłrio estĂĄ organizado da seguinte forma:
design
: Contém o código-fonte do projeto do processador RISC-V.doc
: Contém mais explicaçÔes sobre a implementação.sim
: Contém os arquivos de simulação e os resultados, para uso nos testes.verif
: Contém os arquivos de testbench e as instruçÔes de como testar o projeto.
-
Para iniciar o estudo do conjunto de instruçÔes RISC-V, consulte:
-
Para simular e testar o projeto do processador RISC-V, utilize:
-
Para verificar os resultados:
- Compare seus resultados com os exemplos fornecidos em
sim
- Utilize o simulador CompSim
- Utilize o RISC-V Interpreter, by Cornell University
- Compare seus resultados com os exemplos fornecidos em
Em caso de dĂșvidas ou dificuldades, entre em contato com os monitores da disciplina:
Encorajamos os alunos a procurarem por bugs e sugerirem melhorias para o projeto, visando aperfeiçoĂĄ-lo para as prĂłximas ediçÔes da disciplina. Se vocĂȘ identificou algum bug ou possui uma ideia para melhorar o projeto, ficaremos felizes em receber sua contribuição!
Existem duas maneiras de nos enviar suas sugestÔes:
-
Issue: Abra uma issue detalhando o problema ou a melhoria proposta. Certifique-se de fornecer informaçÔes claras e especĂficas para facilitar a compreensĂŁo do que precisa ser corrigido ou aprimorado.
-
Pull Request: Se vocĂȘ Ă© familiarizado com o processo de pull requests, sinta-se Ă vontade para enviar suas alteraçÔes diretamente por meio de um pull request. Certifique-se de descrever claramente as alteraçÔes realizadas e o motivo por trĂĄs delas.