MC851 - Projeto em Computação I¶
Rodolfo Azevedo - rodolfo.azevedo@unicamp.br http://www.ic.unicamp.br/~rodolfo/mc851
Objetivo¶
Desenvolver um sistema computacional contendo, ao menos, um processador e seus componentes periféricos
Bibliografia¶
- David Patterson, Anderson Waterman. Guia Prático RISC-V: Atlas de uma arquitetura aberta. 2019. Disponível online.
- Documentação do processador RISC-V, e Especificação das Instruções.
- Processor Microarchitecture: An Implementation Perspective. Antonio González, Fernando Latorre and Grigorios Magklis. Synthesis Lectures on Computer Architecture. Morgan & Claypool Publishers.
- Simuladores: RISC-V Simulator, RISC-V Interpreter, Venus, QtRVSim.
- Documentação do kit Tang Nano 9K.
- Fundamentals of Digital Logic with Verilog Design, Third Edition. Stephen Brown & Zvonko Vranesic. McGrawHill. 2013.
- OSS CAD Suite.
- Litex.
Dinâmica das aulas e atividades¶
- Essa é uma disciplina de 12 créditos contendo:
- 4 créditos em aulas às sextas-feiras, das 14h-16h na sala CC05
- 8 créditos de atividades dos alunos no seu próprio tempo
- Os alunos devem formar grupos de até 6 pessoas
- Procurem utilizar as aulas de sexta-feira para tirar dúvidas e discutir o projeto
Avaliações¶
- Serão realizadas 4 entregas do projeto, sempre na última sexta-feira do mês
- As 3 primeiras entregas valem 2 pontos cada
-
A última entrega vale 4 pontos
-
As entregas serão compostas por:
- Código fornecido através do repositório do GitHub do grupo (será detalhado na página da disciplina)
- Pequena apresentação/demonstração durante a aula da entrega
-
Curto relatório em PDF
-
As notas individuais serão baseadas nos trabalhos em grupo e na participação dos alunos no projeto
Entrega 1 - 25/08 - 2 pontos¶
Para essa entrega, os alunos devem planejar e desenvolver um processador RISC-V de 32 bits, com pipeline, que suporte o conjunto RV32I. Deve ser possível desenvolver programas em alto nível para o processador e executa-los corretamente no kit de FPGA.
Para realizar essa entrega, o grupo deve:
- Compreender e desenvolver um pipeline para o processador RISC-V;
- Compreender e desenvolver programas de teste para o processador;
- Compreender e desenvolver um ambiente de execução (restrito ao momento) para o processador;
- Compreender e utilizar o ambiente de execução em FPGA para implementar o processador;
Entrega 2 - 29/09 - 2 pontos¶
Para essa entrega, o conjunto de instruções do processador deve ser incrementado para suportar RV32IMA, novamente com suporte de software para execução em FPGA. Além disso, um primeiro periférico precisa ser desenvolvido e integrado ao processador.
Para realizar essa entrega, o grupo deve:
- Compreender e desenvolver a cache L1;
- Compreender e desenvolver um periférico para o processador;
- Compreender e desenvolver um ambiente de execução (restrito ao momento) para o periférico;
- Compreender e utilizar o ambiente de execução em FPGA para implementar o periférico;
- Demonstrar um código que utilize as instruções e o periférico em FPGA;
Entrega 3 - 27/10 - 2 pontos¶
Para essa entrega, o conjunto de instruções do processador deve ser incrementado para suportar as instruções compactas. Além disso, outro periférico precisa ser desenvolvido em integrado ao processador.
Para realizar essa entrega, o grupo deve:
- Compreender e desenvolver um periférico para o processador;
- Compreender e desenvolver um ambiente de execução (restrito ao momento) para o periférico;
- Compreender e utilizar o ambiente de execução em FPGA para implementar o periférico;
- Demonstrar um código que utilize as instruções e os periféricos em FPGA;
Entrega 4 - 01/12 - 4 pontos¶
A meta para essa entrega é complementar o sistema computacional desejado. Além disso, o processador deve conseguir executar programas em alto nível, compilados para o conjunto de instruções RV32IMAC.
Todas as pendências de entregas anteriores precisam ser sanadas até a entrega final.
Políticas para desenvolvimento de código¶
- Você pode utilizar módulos da infraestrutura fornecida para o trabalho
- Você pode utilizar geradores de código (chatGPT, copilot, etc) desde que indique em comentários no seu código
- Você não pode copiar e colar código disponível na Internet
- Você não pode copiar ou fornecer código para outros grupos dessa disciplina
Dicas¶
- Não deixe acumular atividades
- Fornecerei documentos/informações atualizadas através do Google Classroom e da página da disciplina
- Não deixe acumular problemas
- Se tiver dúvidas, pergunte
- Se tiver problemas, avise
- Não existe máquina do tempo!
O que espero para hoje?¶
- Formem os grupos de até 6 pessoas. Todo grupo tem que ter um nome!
- Instalar os softwares conforme guia da página da disciplina Instale nos seus outros computadores posteriormente
- Criar o repositório no GitHub
- Montar um roteiro do seu semestre Faça um arquivo no seu repositório e coloque o roteiro de ações que precisa até lá. Você pode criar issues do github se achar interessante