• Sonuç bulunamadı

O processo de síntese com ferramentas modernas combina a automação com restrições es- pecíficas de alto nível, para que o projetista possa controlar a implementação do hardware e fazer com que seu projeto atinja uma qualidade significativamente melhor em menos tempo. As otimizações realizadas pelas ferramentas associadas são oriundas da evolução dos algoritmos e técnicas desenvolvidas nas ferramentas das gerações anteriores.

Entre os métodos e algoritmos que são utilizados nessas ferramentas está a técnica de clus-

terização comportamental [35]. Esta técnica é utilizada para aperfeiçoar desempenho, área e

consumo de potência em projetos DSP (Digital Signal Processing). O método de clusteriza- ção comportamental permite combinar e otimizar processos de tal maneira que a qualidade dos resultados (QoR) seja significativamente melhor do que quando esses mesmos processos são implementados separadamente.

Algoritmos de clusterização, como os vistos na Seção 7, servem para determinar o particio- namento de um projeto entre chips, datapaths ou entre hardware e software. Geralmente esses algoritmos têm como ponto de partida uma descrição comportamental monolítica e o objetivo de manter blocos que se intercomunicam juntos, ou próximos. Contudo, aplicações do tipo DSP têm um ponto de partida diferente. Geralmente, elas são especificadas como um conjunto de processos que se comunicam entre si. Cada processo corresponde a um bloco DSP. No pro- cesso tradicional de síntese RTL, cada bloco é implementado separadamente, em nível RTL, e depois combinados para formar o projeto completo. Já no processo de síntese comportamental, a clusterização comportamental pode ser utilizada para combinar os processos em conjuntos semelhantes antes do processo de síntese. A Figura 11 ilustra a clusterização comportamental em que os processos menores são agrupados em dois conjuntos.

Segundo Pursley [35], a clusterização comportamental permite trabalhar com blocos de tamanho maior para realizar otimizações de latência, reuso, blocos de dados e comunicação. A diminuição da latência é uma otimização de desempenho que reordena operações de tal forma que dois processos possam executar alguma computação ao mesmo tempo. Geralmente, essa

Figura 11 – Clusterização comportamental, retirado de [35].

transformação é aplicada a processos seqüenciais, ou seja, aqueles que possuem dependência um do outro. O tempo total de execução é reduzido, mas nem sempre com conservação da área. O reuso é uma otimização em que alguma parte da computação é compartilhada por alguns processos, como multiplicadores, somadores e subtratores. Essa transformação reduz a área total do circuito.

Assume-se que a técnica de clusterização comportamental tenta ir de encontro aos seguintes ojetivos, considerando que Pae Pb processos; PaU bdenota o cluster formado pelos dois proces-

sos; Area(Pa) é a área presumida para o processo a Latency(Pa) é o tempo que o processo a

leva para executar; T hroughput(Pa) é a taxa de dados que o processo a produz ou consome:

• Aperfeiçoar área se Area(PaU b) < Area(Pa) + Area(Pb);

• Aperfeiçoar latência se Latency(PaU b) < Latency(Pa) + Latency(Pb);

• Aperfeiçoar throughput se T hroughput(PaU b) < Area(Pa) e T hroughput(PaU b) <

Area(Pb).

Porém, existem três limitações principais quando processos são agrupados em clusters: (i) distribuição do relógio, porque é preciso garantir que os processos de um mesmo cluster perten- çam ao mesmo domínio de relógio; (ii) comunicação, porque o algoritmo tem maior impacto se todos os processos têm um grande volume de comunicação; (iii) escalabilidade, já que os blocos comportamentais englobam blocos maiores que o de uma síntese RTL.

Ferramentas disponíveis no mercado

Nesta Seção são apresentadas resumidamente as ferramenta: Catapult C da Mentor Graphics,

Agility Compiler da Celoxica e Cynthesizer da Forte Design System.

A ferramenta Catapult C é a ferramenta comercializada pela Mentor Graphics para síntese comportamental a partir de uma descrição em C++ não temporizada para uma descrição RTL otimizada [18]. Essa ferramenta permite a exploração de múltiplas micro-arquiteturas e inter- faces com uma qualidade superior a uma exploração manual. O resultado é garantido por um

fluxo que produz descrições RTL precisas a nível de ciclo de relógio ajustadas para uma tecno- logia alvo. A ferramenta não exige que as interfaces do projeto da descrição comportamental sigam algum tipo de protocolo, como no Cynthesizer. Ela habilita análise do tipo what-if para que o projetista escolha interfaces como FIFO, handshaking, single ou dual port.

A ferramenta permite o controle do projetista sobre o processo de síntese através de restri- ções que são inseridas na descrição inicial. As restrições que podem ser aplicadas são: desdo- bramento de laços, pipeline, fusão de laços, mapeamento para RAM, ROM e FIFO, alocação de recursos e compartilhamento e utilização simplificada de recursos de memória.

A ferramenta permite que um testbench escrito em C++ possa ser reutilizado para verificar o RTL (Verilog ou VHDL) gerado pelo processo de síntese. Esse processo é automatizado através da geração dos wrappers e transatores que permitem a cossimulação de todo o projeto.

A ferramenta Agility Compiler [6], comercializada pela Celoxica, é um compilador para síntese comportamental que aceita como entrada descrições TL (Transaction Level Modeling) em SystemC. Essa ferramenta gera automaticamente código RTL otimizado para a síntese RTL com a ferramenta Design Compiler da Synopsys e netlists EDIF para FPGAs da Altera, Actel e

Xilinx. Essa ferramenta permite explorar algoritmos complexos e micro-arquiteturas nos passos

iniciais do fluxo de projeto. Permite também analisar o desempenho e fazer estimativas de

temporização antes da prototipação ou verificação do ASIC fabricado.

A ferramenta Cynthesizer da Forte Design Systems transforma uma implementação com- portamental SystemC em uma descrição RTL Verilog ou SystemC. Partindo de um modelo de alto nível sem temporização descrito em SystemC, essa ferramenta constrói micro-arquiteturas RTL temporizadas baseadas em um conjunto de diretivas especificadas pelo projetista. Essas diretivas podem ser relacionadas à latência de operação, paralelismo temporal (pipeline), área, desenrolamento de laços, etc. Essa ferramenta também disponibiliza um processo eficiente de verificação e simulação das micro-arquiteturas obtidas. O mesmo testbench SystemC pode ser utilizado em todas as fases do projeto.

Comparação entre as Ferramentas Apresentadas

Nesta Seção é apresentado um quadro contendo uma comparação inicial das ferramentas de síntese comportamental modernas comerciais. O resumo desta comparação aparece na Tabela 3.

Benzer Belgeler