CAD (Caco Aided Design) Antonio Carlos S. Beck Filho
Utilidades Simulação de hardware Cálculo de consumo de potência Geração de falhas A descrição do processador femtojava já está disponível para a simulação
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação O hardware simulado é descrito em um arquivo Esta descrição segue uma sintaxe própria do simulador Esta sintaxe segue o padrão: Input0,input1 ..., inputN -> componente nome (i,j:sinal) -> output
Simulação (2) Componente é descrito em um outro arquivo. Este arquivo guarda uma biblioteca de vários componentes, que podem ser instanciados várias vezes Os componentes são descritos em C O simulador oferece facilidades para a manipulação destes componentes
Simulação – Um exemplo No arquivo de arquitetura: Sinal1, sinal2 -> and ex () -> saida_and Na biblioteca de componentes: COMPONENTE(“and”) { return input[0] & input[1]; }
Simulação – Um exemplo (2) FF FF No arquivo de arquitetura: saida_ff1,saida_ff2 -> and ex () -> saida_and saida_and -> ff 1 (0,1,2:controle) -> saida_ff1 saida_ff1 -> ff 2 (3,4,5:controle) -> saida_ff2
Simulação – Um exemplo (3) Na biblioteca de componentes: COMPONENTE(“and”) { return input[0] & input[1]; } COMPONENTE(“FF”) { if (clock_event == 1) { if (controle_atual[0] == 1) { adiciona_valor_comp(funcao,id,input_atual[0]&0x1); if (controle_atual[1] == 0) adiciona_valor_comp(funcao,id,0x1); if (controle_atual[2] == 0) adiciona_valor_comp(funcao,id,0x0); return ( (pega_valor_comp(funcao,id)) & 0x1);
Simulação – Execução Tanto a memória de programa como a de dados servem como parâmetro de execução (.MIF) Passo-a-passo Executar até achar um breakpoint Há a possibilidade do usuário escolher, em tempo de execução ou previamente, os sinais a serem observados. Visualização do conteúdo da memória
Calculo de Consumo de Potencia As funções e valores para cálculo de potência encontram-se em um outro arquivo. Para cada componente descrito, há uma função para cálculo de potência correspondente A potência é calculada através da quantidade de gates que são chaveados (potência dinâmica)
Calculo de Consumo de Potencia (2) Formato do arquivo: // Valores // funções
Geração de testes Injeta falhas do tipo stuck at em todo o circuito Através de um arquivo de entrada, o usuário escolhe os sinais a serem observados Ao final da simulação, a porcentagem de falhas detectadas nestes sinais, e também na memória de dados é demonstrada
Resultados Já há um processador inteiro sendo simulado Neste já foram feitos cálculos de potência e geração de falhas A biblioteca de componentes está sendo reutilizada e está crescendo O simulador passou por um processo de reformulação para ser mais rápido Interface amigável e fácil de ser utilizada