• Nenhum resultado encontrado

Desenvolvimento

4.4 Síntese da ULA

A ULA desenvolvida, em SystemC, foi uma ULA genérica de 8 bits. Apesar do custo de desenvolvimento de uma ULA de 32 bits ser praticamente o mesmo de uma ULA de 8 bits, a segunda foi escolhida pelo fato de que poderia trazer menos problemas que a primeira, nos processos de síntese lógica e física, por possuir uma menor quantidade de células e interconexões ocupando assim um menor espaço físico. Futuramente a ULA de 8 bits poderá se tornar facilmente em uma ULA de 32 bits, trocando-se apenas o valor do tamanho das variáveis em seus códigos fonte.

A ULA possui 3 entradas (A, B, opcode) e 2 saídas (Z, zero). Por se tratar de um circuito combinacional a ULA não possui um sinal de Clock (Clk) como entrada. A Figura 4.4 apresenta o esquemático da ULA, e a Tabela 4.2 apresenta suas funcionalidades. Os códigos fonte da ULA podem ser vistos no Anexo VI.

Figura 4.4: Esquemático da ULA

As entradasA, Bsão os operandos da ULA, compostos cada um por 8 bits. A entradaopcode é composta por 3 bits, portanto possui 8 diferentes valores possíveis, e indica qual a operação a

Tabela 4.2: Funcionalidades da ULA Opcode Funcionalidade Operação

0x00 ADD Z = A + B

0x01 SUB Z = A - B

0x02 AND Z = A and B

0x03 OR Z = A or B

0x04 NOT Z = not(A)

0x05 NOT Z = not(B)

0x06 XOR Z = A xor B

0x07 MAIOR Se A > B, Z = A

Se A < B, Z = B

ser realizada pela ULA. A saída Z também é composta por 8 bits, e representa o resultado da operação realizada pela ULA. A saída zero possui 1 bit, e informa se o resultado da ULA é ou não igual a 0 (zero), se for assume o valor ’1’ se não o valor ’0’.

Com o modelo definido e descrito na linguagem SystemC, pode-se então voltar a utilizar a ferramenta CTOS para a geração de um modelo sintetizável da ULA, descrito agora em Verilog-RTL.

A seguir são descritas as principais etapas a serem realizadas com o CTOS para geração de um modelo RTL sintetizável. O Anexo II apresenta com mais detalhes o processo de geraração do modelo RTL sintetizável da ULA.

• Inicialmente carrega-se os arquivos .cpp e .h do modelo, neste caso os arquivos main.cpp, ula.cpp e ula.h.

• O CTOS realiza a compilação dos arquivos selecionados, verificando a sintaxe e a semântica dos códigos. Caso sejam compatíveis com a ferramenta e não apresentem erros, é definido o arquivo Top Level do modelo.

• Posteriormente é possível a inclusão e configurações de Clocks. Pelo fato da ULA ser um circuito combinacional, não foram incluidos sinais de Clock. Concluídas as configurações iniciais é realizada uma nova compilação, com a geração de 2 arquivos ula_ctos_wrapper.h e ula_post_build.v. O arquivo Verilog gerado ainda não pode ser sintetizado.

• Para finalizar o processo e obter o Verilog-RTL, é preciso que o projetista solucione, com au-xílio da ferramenta CTOS, eventuais situações críticas de implementação, como por exemplo:

loops, funções e alocação de memória. A ULA não apresentou problemas. Após a solução dos problemas é possível gerar o código Verilog-RTL sintetizável, no caso da ULA, o arquivo ula_rtl.v.

Após a geração do arquivo Verilog-RTL, é preciso desenvolver um testbench e realizar uma simulação do modelo, para validar o processo feito com o CTOS, utilizandos as ferramentas NC Launch e SimVison Debug.

O testbench, Ula_TB.v, desenvolvido para a realização da simulação do modelo sintetizável, é mostrado na Figura 4.5. O teste inicia com as entradas A = 0xA0, B = 0x0F e opcode

= 0x00. Oopcode é aumentado em uma unidade, a cada 10 unidades de tempo, até seu valor chegar a 0x07. Então as entradasAeB assumem, respectivamente, os valores0x0F, 0xA7, e a entrada opcodepassa a ser diminuida, em uma unidade, a cada 10 unidades de tempo, até que seu valor volte para 0x00.

Figura 4.5: Fragmento do Testbench da ULA

Posteriormente é realizada a compilação dos arquivosula_rtl.v e Ula_TB.v, são preparadas as estruturas RTL para a simulação, utilizando a ferramenta NC Launch. Com o SimVision Debug é possível a visualização do esquemático do circuito e das formas de ondas dos resultados gerados.

Os resultados serão apresentados na seção 4.4. O Anexo III apresenta com detalhes o que foi feito para se chegar aos resultados apresentados.

Com a validação do modelo RTL sintetizável, pode-se iniciar os processos de síntese lógica e física da ULA, utilizando, respectivamente, as ferramentas Encounter RTL Compiler e SoC Encounter RTL-to-GDSII System. A tecnologia da biblioteca de células utilizada nos processos das sínteses lógica e física foi a AMS 0.35µm, pelo fato da disponibilidade e por conter um tutorial de utilização [25]. As bibliotecas de células dizem respeito ao conjunto de arquivos que descrevem

as informações e especificações de timing, área e potência, por exemplo [20].

A síntese lógica é inicializada com a execução do script synth_rtl_ula.tcl na ferramenta En-counter RTL Compiler. Após a execução do script alguns arquivos são gerados na pasta lo-gic_synthesis_output_files. São utilizados na simulação pós síntese lógica, os arquivos gera-dos: ula_rtl_out_net.v (Netlist) e ula_rtl_out_sdf.sdf, os arquivos da biblioteca de células:

c35_CORELIB.v e udp.v, além de um testbench com as mesmas funcionalidades do apresen-tado na Figura 4.5. O processo de simulação é similar com o que foi feito após a geração do arquivo Verilog-RTL, o Anexo IV apresenta as etapas da síntese lógica e da simulação pós síntese com mais detalhes.

Com a validação dos resultados obtidos na síntese lógica, pode-se iniciar a síntese ou imple-mentação física. O objetivo desta última etapa é a geração do layout do chip para o modelo síntetizado. Esta etapa se incia com a execução do arquivo setup.sh, para criar todas as pastas a serem utilizadas neste processo.

No SoC Encounter é criado um novo design, e sua configuração é feita a partir do arquivo Netlist (ula_rtl_out_net.v), dos arquivosc35b4.lef e CORELIB.lef da biblioteca de células e dos arquivos corners.io e Default.view gerados com a execução dosetup.sh. Após a configuração são executadosscripts, localizados na pastascripts, para a geração do layout. Abaixo são apresentados os principais scripts e suas respectivas funcionalidades:

• floorplan.tcl - posicionar as macros no layout.

• powerplan.tcl - distribuir as redes de alimentação do layout (Vdd e Gnd).

• placement.tcl - distribuir os demais blocos no layout.

• nanoroute.tcl - realizar a conexão física dos pinos e macros do layout

• generate.tcl - gerar o layout final.

Ao final deste processo se obtém o layout do chip da ULA, mas é preciso ainda realizar uma simulação pós layout, para validar o correto funcionamento do circuito gerado, levando-se em consideração o atraso e as interconexões das células. São utilizados na síntese pós layout os arquivos gerados: ula_1.v (Netlist) e ula_1.sdf, os arquivos da biblioteca de células: c35_CORELIB.v e udp.v, além de um testbench com as mesmas funcionalidades dos utilizados nas simulações anteriores. O processo de simulação pós layout é similar aos já realizados. O Anexo V apresenta com detalhes o processo da implementação física da simulação pós layout. Os resultados do layout obtido serão mostrados na seção 4.5.

Documentos relacionados