ESMIPS Projeto de Engenharia de Software e Sistemas.
Transcript of ESMIPS Projeto de Engenharia de Software e Sistemas.
ESMIPS
Projeto de Engenharia de Software e Sistemas
Equipe:
• Anderson Gomes
• Bruno Marques
• Diego Riff
• Guilherme Dantas
• Vinícius Kursancew
• Rodolfo Pereira
Roteiro• VISÃO GERAL• PLANO DE PROJETO• CRONOGRAMA• CASOS DE USO• DIAGRAMA DE CLASSES• DIAGRAMA DE SEQUÊNCIA• ARQUITETURA• TESTES
Visão Geral
• Utilização de técnicas de Engenharia de Software para o desenvolvimento de IP Cores.
• Importância da documentação em projetos de Hardware.
• Importância da Verificação Funcional
O Modelo de Referência• Utilizado para verificar se o chip
desenvolvido está correto.• Geralmente desenvolvidos em linguagens de
mais alto nível que as HDLs comuns.• Suas saídas são consideradas corretas
pelos designers.• Por isso ele deve ser exaustivamente
testado.
ESMIPS
• Modelo de Referência para um processador MIPS como o desenvolvido na disciplina de Infra-Estrutura de Hardware.
• Implementação em pipeline de 3 estágios
Plano de Projeto– 1ª Fase: Concepção
• Período: 23/05/2007 à 04/06/2007
• Definição do que seria desenvolvido
• Desenvolvimento do documento de plano de projeto
• Marco Principal: Versão final do documento de plano de projeto.
Plano de Projeto– 2ª Fase: Arquitetura
• Período: 06/06/2007 à 12/07/2007• Definição da arquitetura que seria seguida.• Elaboração do documento de arquitetura,
casos de testes e plano de verificação.• Marco Principal: Documento de arquitetura
do modelo de software, documento de caso de testes, plano de verificação.
Plano de Projeto– 3ª Fase: Design Comportamental
• Período: 16/07/2007 à 03/08/2007• Implementação de alguns casos de uso em
SystemC RTL.• Implementação dos testes.• Teste do projeto.• Marco Principal: Modelo implementado em
SystemC com os casos de teste validados.
Cronograma
• http://www.cin.ufpe.br/~vak/es/crono.html
Casos de Uso
Casos de uso implementados– Evento (clock) causa execução de
uma instrução – Processador executa instrução nop – Processador executa instrução sw – Processador executa instrução lw – Processador executa instrução mfhi – Processador executa instrução mflo – Processador executa instrução add– Processador executa instrução addi – Processador executa instrução addu – Processador executa instrução addiu
– Processador executa instrução and – Processador executa instrução xori– Processador executa instrução sra– Processador executa instrução srav– Processador executa instrução sll– Processador executa instrução beq– Processador executa instrução slt – Processador executa instrução j– Processador executa instrução jal – Processador executa instrução div
Casos de uso[CU01] Evento (clock) causa execução de uma
instrução1. A instrução do programa armazenada no endereço
de memória apontado pelo contador de programa ( MEM[PC] ) é carregado para a CPU
2. Separa os argumentos do OpCode (seis bits mais significativos)
3. Verifica validade do opcode, se for inválido marca flag de exceção por instrução inválida <<include FS01>>.
Casos de uso
[CU36] Processador executa instrução div (tipo R)1. <<include CU01>>
2. Se $rt for ‘0’ marca a flag de exceção de divisão por Zero e este caso de uso termina aqui <<include FS01>>3. $LO ← $rs / $rt4. $HI ← $rs % $rt5. Este caso de uso termina aqui.
Diagrama de classes
Diagrama de seqüência
ArquiteturaClasses de Análise Elementos de Projeto
EventInterface --
FetchThread ThreadFetch
DecodeThread ThreadDecode
ExecuteThread ThreadExecute
MemoryInterface MemArbiterMemory
Arquitetura
Máquinas de estado
MemArbiter
Testes
• Teste de caixa preta (integração)
• Teste de Testbench/DUV (threads)
• Teste de unidade (instruções)
Testes
Teste do modelo da memória1. Verifique se é possível
escrever um dado na memória;
2. Verifique se é possível ler um dado da memória;
3. Escreva um padrão de dados na memória e em seguida leia e compare para verificar a corretude.
Memória