Este projeto é um simulador para um subconjunto da arquitetura RISC-V de 32 bits, implementado em Python com uma interface gráfica em Tkinter. O simulador modela um pipeline clássico de 5 estágios (IF, ID, EX, MEM, WB) e inclui um montador (assembler) integrado que traduz código Assembly RISC-V para código de máquina antes da execução.
Este trabalho foi desenvolvido como parte da disciplina de Arquitetura de Computadores.
- Simulação de Pipeline de 5 Estágios: Simula os estágios de Busca de Instrução (IF), Decodificação (ID), Execução (EX), Acesso à Memória (MEM) e Escrita (Write-Back).
- Montador Integrado: Aceita como entrada arquivos de código
.asme os traduz para código de máquina binário antes de iniciar a simulação. - Interface Gráfica Interativa: Construída com
tkinter, permite carregar arquivos, e controlar a execução da simulação. - Exibição do Estado do Simulador: A interface exibe o estado completo do processador (pipeline, registradores e memória) em áreas de texto dedicadas, atualizadas a cada ciclo.
- Controle de Execução: Permite a execução passo a passo (
Step) e contínua (Executar). - Log Detalhado: Gera um arquivo
saida.outcom o estado completo do processador a cada ciclo, para fins de depuração e análise.
O projeto é organizado de forma modular para separar as diferentes responsabilidades:
interface.py: O ponto de entrada principal do programa. Inicia e gerencia a interface gráfica do usuário (GUI).simulador_pipeline.py: Contém a classe principal do simulador, que gerencia o pipeline, o PC, o clock e o fluxo de execução ciclo a ciclo.montador.py: Responsável por traduzir o código Assembly (.asm) para o código de máquina binário que o simulador executa.componentes/: Pasta que contém os módulos que simulam os componentes de hardware do processador:isa.py: Define a Arquitetatura do Conjunto de Instruções (ISA), contendo as informações para montagem e decodificação.alu.py: Implementa a Unidade Lógica e Aritmética (ULA) de 32 bits.registradores.py: Simula o banco de 32 registradores do RISC-V.memoria.py: Simula a memória de dados e instruções.
teste.asm: Um arquivo de exemplo em Assembly para testar o simulador.saida.out: Arquivo de log gerado pela simulação com o estado detalhado a cada ciclo.
- Python 3.x
tkinter(geralmente já incluído na instalação padrão do Python no Windows)
-
Certifique-se de que o Python 3 está instalado no seu sistema.
-
Navegue até o diretório raiz do projeto pelo terminal (como o PowerShell ou CMD).
-
Execute o seguinte comando para iniciar a interface gráfica:
python interface.py
- Carregar: Clique no botão "Carregar" para selecionar um arquivo
.asm. O código será exibido na caixa de texto superior. - Step: Clique em "Step" para executar a simulação um ciclo de cada vez. As caixas de texto "Saída do Simulador" e "Registradores" serão atualizadas com o estado completo do ciclo atual.
- Executar: Clique em "Executar" para rodar a simulação completa. A saída final será mostrada.
- Resetar: Clique em "Resetar" para limpar as caixas de texto de saída e reiniciar o estado do simulador.
- Anderson Souza Gomes
- Caio Henrique Resende de Almeida
- Romulo Ferreira Goes