Baixe o app para aproveitar ainda mais
Prévia do material em texto
DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 1 UNIVERSIDADE FEDERAL DA PARAÍBA DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA RELATORIO 4 Kened Wanderson Cruz Oliveira 11321918 DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 2 SUMARIO: 1. Genpat Pag.3 2. Asimut Pag.7 3. Vasy Pag.8 4. Boom Pag.9 5. Boog Pag.9 6. Loon Pag.10 DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 3 1. O genpat- Para fazermos uma simulação do circuito por padrões procedurais, vamos precisar uma função da biblioteca “genpat” que faz parte do nosso já conhecido pacote Alliance. Mais o que é o genpat? O genpat é uma ferramenta baseada na linguagem C, que nos permite uma descrição procedural de um arquivo de padrões de entrada para o simulador lógico asimut. Para fazermos a simulação, vamos precisar de um arquivo em C como entrada, depois gerando um arquivo de descrição de padrões como saída, no formato.pat. Podemos descrever o Circuito somador 4bits da seguinte forma: #include <stdio.h> #include "genpat.h" char *inttostr(int input) { char *str; str = (char *)mbkalloc(32 * sizeof(char)); sprintf(str, "%d", input); return(str);} int S (int a, int b, int cin) { return (a+b+cin) & 0xF;} int Cout (int a, int b, int cin) { if ((a+b+cin)> 15) return 1; else return 0;} main() { int cur_vect = 0; DEF_GENPAT("somador_4bit_genpat_sem_atraso"); DECLAR("a", ":2", "B", IN, "3 down to 0", ""); DECLAR("b", ":2", "B", IN, "3 down to 0", ""); DECLAR("c0", ":2", "B", IN, "", ""); DECLAR("s", ":2", "B", OUT, "3 down to 0", ""); DECLAR("c4", ":2", "B", OUT, "", ""); DECLAR("vdd", ":2", "B", IN, "", ""); DECLAR("vss", ":2", "B", IN, "", ""); LABEL("soma4bit_sem_atraso"); AFFECT("0", "vdd", "0b1"); AFFECT("0", "vss", "0b0"); int i, j, k; for (i=0; i<16; i++) { for (j=0; j<16; j++) { for (k=0; k<2; k++) {AFFECT(inttostr(cur_vect), "a", inttostr(i) ); AFFECT(inttostr(cur_vect), "b", inttostr(j) ); AFFECT(inttostr(cur_vect), "c0", inttostr(k) ); AFFECT(inttostr(cur_vect), "S", inttostr(S(i, j, k))); AFFECT(inttostr(cur_vect), "c4", inttostr(Cout(i, j, k))); cur_vect++; } } } SAV_GENPAT(); } As funções S e Cout, são descrições logicas dos procedimentos; vou explicar algumas funções agora: DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 4 DECLAR(―ident‖,―:spc‖,―form‖,mode,size,opt) — Descreve uma gama de conectores, registradores e sinais com forma similar, tamanho similar, e modo similar. Onde: .ident: nome do sinal e/ou conector. form: como o nome sugere, o formato do valor associado ao conector mode: o nome também é sugestivo, indica o ―modo‖ do conector, o tipo spc: o número de espaços entre cada grupo de valores associados aos conectores size: tamanho do barramento AFFECT(―date‖,―ident‖,―value‖) — Trata das mudanças de valor nos sinais. Onde: ident: nome do barramento ou conector que vai ser mudado value: valor atribuído ao sinal (binário, decimal, hexa, octal) Agora que já sabemos o funcionamento as funções principais, iremos compilar o código, assim gerando o arquivo.pat. Usaremos o Comando genpat somador_4bit_genpat_sem_atraso, a saída é mostrada a baixo, Podemos ver na imagem a cima que foi gerado com os 512 padrões de saída do somador, dá para ver claramente várias saídas na figura a cima, note q na primeira coluna não temos TP, e nas seguintes os tempos de propagação já começam a aparecer. Figura 1-Genpat DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 5 Agora a simulação dos arquivos, com o comando Xpat, temos: Agora iremos fazer com atraso: Vimos anterior mente o somador sem atraso, mas um somador 4bits deve conter atraso, nem que seja minúsculo, iremos analisar o circuito com 10000 de atraso, nosso circuito com o atraso adicionado ficara assim: #include <stdio.h> #include "genpat.h" char *inttostr(entier) int entier; { char *str; str = (char *) mbkalloc (32 * sizeof(char)); sprintf (str, "%d", entier); return(str); } int S (int a, int b, int cin) { return (a+b+cin) & 0xF; } int Cout (int a, int b, int cin) { if (a + b + cin > 15) { return 1; } else return 0; } #define atraso 10000 int main (void) { int cur_vect = 0; DEF_GENPAT("somador4bit_genpat_com_atraso"); Figura 2- Linha azul: bit 0 Linha vermelha: bit 1 Blocos: conjunto de bits, vetor de bits DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 6 DECLAR ("a" , ":2", "B", IN , "3 down to 0", ""); DECLAR ("b" , ":2", "B", IN , "3 down to 0", ""); DECLAR ("c_0" , ":2", "B", IN , "", ""); DECLAR ("c_4" , ":2", "B", OUT, "", ""); DECLAR ("s" , ":2", "B", OUT, "3 down to 0", ""); DECLAR ("vdd" , ":2", "B", IN , "", ""); DECLAR ("vss" , ":2", "B", IN , "", ""); LABEL ("somador"); AFFECT ("0", "vdd", "0b1"); AFFECT ("0", "vss", "0b0"); int i = 0, j = 0, k = 0; for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { for (k = 0; k < 2; k++) { AFFECT (inttostr(cur_vect), "a" , inttostr(i) ); AFFECT (inttostr(cur_vect), "b" , inttostr(j) ); AFFECT (inttostr(cur_vect), "c_0" , inttostr(k) ); cur_vect += atraso; AFFECT (inttostr(cur_vect), "c_4" , inttostr(Cout(i,j,k)) ); AFFECT (inttostr(cur_vect), "s" , inttostr(S(i,j,k))); cur_vect += atraso; }} } SAV_GENPAT (); return(0); } Agora com o arquivo do circuito complete, vamos gerar o arquivo .pat: genpat somador_4bit_genpat_com_atraso_10000 Após gerar o arquivo, abra o Xpat, e vamos analisar a mudança: Figura 3 DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 7 Podemos observa que gerou erros. Então temos que fazer uma melhoria, Testamos com 18000, encontramos que está em perfeitas condições, mas precisamos ter um valor menor. Logo testamos com 16500 e descobrimos que não teve erros, em seguida geramos o arquivo .pat, que nos mostrou a seguinte imagem no Xpat: Figura 4 A compilação foi um sucesso, como pode ser visto na imagem abaixo. Figura 5 2. Asimut Feita para descrição de hardwares, o Asimut é uma ferramenta que pega a descrição do hardware em VDHL, então ele busca o arquivo .pat e depois de verificar ele realiza a geração de mais um arquivo .pat, só que com os resultados obtidos, o Asimut faz parte dos pacotes do Alliance. DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 8 Alguns comandos do Asimut: $export MBK_OUT_LO=vst $cougar -f somador_4bit_genlib_ocp_4_rows_nero $export MBK_IN_LO=vst $asimut somador_4bit_genlib_ocp_4_rows_nerosomador_4bit_genpat_com_atraso _16500 somador_4bit_genlib_ocp_4_rows_nero_com_atraso_res Após a utilização das linhas de código, geramos a simulação a baixo: Figura 6 3. Vasy O Vasy tem a função de analisar a ordem de preferência dos arquivos escritos em VDHL e também faz a conversão desses arquivos, para que possamos reaproveita-lo em outras fermentas. Alguns Comandos do Vasy: $–a –l vhd somador_4bit somador_4bit_vasy Esse comando vai gerar um arquivo somador_4bit_vasy.vbe, esse arquivo comporta a soma de a, b e c. Como o Asimut não suporta a configuração do std logic, então foi trocado pelo bit, ficando como visto a baixo: DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 9 Figura 7 Logo a pós o segundo código: $asimut –b somador_4bit_vasy somador_4bit_genpat_sem_atraso somador_4bit_vasy_res É utilizado o argumento -b para que o simulador do Asimut simule os pontos VST por default, com isso foi gerado o arquivo .pat sem nenhum erro, como visto na imagem abaixo. Figura 8 4. Boom Boom (Boolean Minimization) serve para sintetizar, descrevendo o comportamento em nível de silício, Ele faz otimizações por transformações booleanas para reduzir o número de operações lógicas do circuito. Pra isso iremos trabalhar com a linguagem C. Agora vamos simular o arquivo de entrada, é necessário a descrição comportamental do circuito .vbe Usaremos os seguintes códigos: $boom somador_4bit_vasy somador_4bit_vasy_boom_0 $boom –l 3 somador_4bit_vasy somador_vasy_boom_3 DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 1 0 Feito isso, foi gerado dois arquivos de 4bit, no qual o primeiro foi otimizado em nível 0(mínimo de esforço na sintetização), e o segundo com o nível 3(máximo de esforço na sintetização). 5. Boog O Boog é um mapeador de uma descrição comportamental, de uma biblioteca do SXLIB. É o segundo passo da síntese lógica: constrói uma rede de porta utilizando uma biblioteca de células padrão. O ' -m <n>' representa os parâmetros para simulação onde N é o número entre 0 e 4. Caso o 0 for escolhido, a área do circuito será reduzida, porém se o 4 for o escolhido, o tempo de atraso vai diminuir. Usaremos os códigos a baixo: $boog somador_4bit_vasy_boom -0 somador_4bit_vasy_boom_l3_boog $boog somador_4bit_vasy_boom_l3 -0 somador_4bit_vasy_boom_l3_boog Foi gerado os arquivos mostrados a baixo, sendo que a linha vermelha mostra o caminho mais longo a ser perseguido. Podemos usar as linhas vermelhas, ditas anteriormente, para calcular a relação tamanho, tempo de atraso. Vamos olhar o qual ponto tem menor tempo de atraso com os seguintes códigos: $ boog -m 4 somador_4bit_vasy_boom_3 -o somador_4bit_vasy_boom_3_boog_4 $ boog -m 4 somador_4bit_vasy_boom_0 -o somador_4bit_vasy_boom_0_boog_4 E com isso foi gerado as seguintes imagens: 6. Loon DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 1 1 Loon (local otimization of nerts), é a ferramenta que lida com número de portas de entrar que tem conexão com uma porta lógica, pode ser utilizada para diminuir o tempo de atraso. . Ela que permite a remoção de problemas relacionados ao fan-out (número de portas de entrada ao qual uma porta lógica está conectada). Usaremos os códigos abaixo: & loon somador4bit_vasy_boom_0_boog_0 somador4bit_vasy_boom_0_boog_0_loon_0 & loon somador4bit_vasy_boom_3_boog_0 somador4bit_vasy_boom_3_boog_0_loon_0 & loon somador4bit_vasy_boom_0_boog_4 somador4bit_vasy_boom_0_boog_4_loon_0 & loon somador4bit_vasy_boom_3_boog_4 somador4bit_vasy_boom_3_boog_4_loon_0 & loon –m 4 somador_4bit_vasy_boom_0_boog_0 somador_4bit_vasy_boom_0_boog_0_loon_4 & loon –m 4 somador_4bit_vasy_boom_3_boog_0 somador_4bit_vasy_boom_3_boog_0_loon_4 & loon – m 4 somador_4bit_vasy_boom_0_boog_4 somador_4bit_vasy_boom_0_boog_4_loon_4 & loon –m 4 somador_4bit_vasy_boom_3_boog_4 somador_4bit_vasy_boom_3_boog_4_loon_4 Com isso foi gerado 8 arquivos novos, esse processo retirou o fan-out, isto é, ouve uma redução no número de portas logicas de entrada, com isso, teve uma redução no tempo de atraso de propagação, Podemos verificar esses tempos no terminal após a compilação, imagem do circuito com menor atraso a baixo: DEPARTAMENTO DE INFORMÁTICA INTRODUÇÃO A MICROELETRÔNICA KENED W. – RELATORIO DE IME 1 2 Figura 14
Compartilhar