Você está na página 1de 4

VI ERMAC-R3

6 o Encontro Regional de Matemática Aplicada e Computacional


08-10 de novembro de 2006
Universidade Federal da Paraíba – João Pessoa/PB

Posicionamento de blocos no projeto de circuitos lógicos


baseados em FPGA's

Ednaldo Mariano Vasconcelos de Lima, Antonio Carlos Cavalcanti


e Lucídio dos Anjos Formiga Cabral
Depto de Informática, CCEN, UFPB,
58000-000, João Pessoa, PB
edinlima@gmail.com, caval@lasic.ufpb.br, lucidio@de.ufpb.br

Resumo: Dentre estes avanços, a adoção de ferramentas


Todo FPGA consiste de três componentes CAD (Computer Aided Design) [1] tem tornado a
fundamentais: blocos lógicos, blocos de entrada/saída tarefa de projetar circuitos com centenas de milhares
e roteadores programáveis. Os blocos lógicos ou até milhões de transistores um pouco menos
programáveis, cada qual implementando uma complexa. Podemos resumir as etapas de produção de
pequena parcela de lógica digital, são conectados um circuito FPGA em: Síntese e empacotamento de
através de chaves programáveis que permitem dessa blocos lógicos, Posicionamento e Roteamento.
forma, a construção de circuitos mais complexos. As A Síntese dos blocos lógicos consiste inicialmente
chaves programáveis ainda servem para conectar os em converter a descrição lógica do circuito ou
blocos lógicos aos blocos de I/O servindo de interface diagrama esquemático em uma lista de portas lógicas
com o meio externos. O posicionamento dos blocos básicas, que num segundo momento é convertida em
lógicos é fundamental na etapa de construção de uma lista de de blocos lógicos FPGA otimizada, seja
circuitos otimizados, com vistas a economicidade e para minimizar a quantidade de blocos, seja para
desempenho. garantir uma maior velocidade na execução das
Nosso objetivo nesse trabalho é discutir as funções lógicas.
técnicas utilizadas na etapa de posicionamento dos O Roteamento determina quais chaves
blocos lógicos, cuja intenção é localizar blocos programáveis precisarão ser fechadas para interligar
lógicos conectados entre si, em regiões próximas na todos os pinos de entrada ou saída requeridos à
área da pastilha, minimizando o comprimento das interligação do circuito. Usualmente os roteamentos
conexões e diminuindo conseqüentemente, a área FPGAs são representados através de grafos orientados,
utilizada na pastilha de silício, assim como, a onde cada pino de conexão de bloco lógico é
influência de impedâncias nocivas ao desempenho do representado por um nó e cada fio é representado um
sistema. arco.
O objetivo do posicionamento, com o qual estamos
interessados neste artigo, consiste em determinar
Palavras-chave: Posicionamento, Field- posições para os blocos lógicos em um FPGA que
Programmable Gate Array, Very Large Scale serão utilizados na implementação do circuito
Integration, Versatile Placement and Routing. proposto, confinando-os em áreas mínimas para
minimizar as conexões e preocupando-se em balancear
Introdução esta distribuição de forma a não saturar os canais
Conforme prevê a Lei de Moore, ainda em vigor, a FPGAs com conexões excessivas. Para tratar o
cada dezoito meses, a capacidade de processamento problema em questão, fazemos uso da ferramenta VPR
dos computadores tem dobrado, enquanto os custos (Versatile Placement and Routing)[5]. A qual, a partir
permanecem constantes. Tais fatos são frutos do de arquivos que descrevem a arquitetura do FPGA a
aumento da capacidade de integração que o próprio ser utilizado, bem como, a netlist do circuito a ser
avanço tecnológico dos computadores tem implementado, devolve arquivos de saída contendo o
proporcionado, que em conseqüência, tem resultado final das etapas de posicionamento e
possibilitado um aprimoramento cada vez maior nas roteamento, além de tela gráfica que nos permite
etapas de projeto e nas técnicas de produção de visualizar a execução da operação e garimpar
circuitos integrados em muito alta escala, denominados informações importantes do processo.
VLSI.

98
O objetivo dos algoritmos iterativos é otimizar um
posicionamento completo já existente, normalmente
obtido a partir do uso de algoritmos de construção.
No algoritmo de Permutação de Pares, cada
componente é selecionado e trocado com um dos
outros componentes do circuito. Se uma dada troca
resulta numa melhoria no custo do posicionamento,
esta é aceita como definitiva, senão é descartada. A
complexidade desse tipo de algoritmo é de O(n2)[2].
A Técnica dos Conjuntos Desconexos,
desenvolvida por Steinberg [2], seleciona os
componentes, dividindo-os em conjuntos que não
possuem redes em comum.. Assim, o posicionamento
de cada conjunto é otimizado individualmente, sem
considerar os demais. O número de permutações é bem
Figura 1 – modelo de FPGA no VPR menos que na permutação de pares, visto que os
conjuntos possuem um número menor de componentes
Técnicas de Posicionamento que o circuito completo. Experimentos com essa
O posicionamento de blocos lógicos consiste técnica não apresentam bons resultados, já que os
basicamente em mapear os componentes representados circuitos com componentes densamente interligados –
sob uma visão estrutural, em coordenadas de uma comum nos circuitos VLSI – é muito complexa a
superfície de layout, gerando uma matriz de pontos que separação do circuito em conjuntos desconexos.
possibilita facilmente uma modelagem de dados capaz
de fornecer o custo das conexões a partir de cada nova Simulated Annealing, diferentemente das duas
matriz apresentada. Atualmente, existem duas grandes técnicas acima, que só aceitam um dado
categorias de algoritmos posicionadores: os algoritmos posicionamento intermediário caso haja um
de construção, que a partir de um posicionamento melhoramento quanto ao custo obtido até o momento,
parcial ou incompleto fornecem na saída um limitando-os a uma otimização localizada, esta
posicionamento completo; e os algoritmos iterativos, metaheurística tenta resolver este problema através da
que transformam um posicionamento completo num utilização de um algoritmo desenvolvido para
outro posicionamento completo mais aprimorado. encontrar a configuração de mais baixa energia de um
conjunto confinado de moléculas. Simulated
Annealing baseia-se na premissa de que a otimização
Algoritmos de construção do posicionamento de um circuito com grande número
O algoritmo de crescimento de grupos é um de componentes é análogo ao processo de annealing,
algorítmo de construção que faz uso de um método no qual um metal é fundido e resfriado de forma tão
bottom-up, que vai selecionando componentes não lenta que cristalizará em um estado fortemente
posicionados e incorporando-os a um posicionamento ordenado. A energia presente no material
parcial. A seleção de componentes é feita com base correspondente ao custo (c) e a temperatura (t) são
nos componentes até então posicionados, parâmetros utilizados no processo para obtenção de
proporcionando uma otimização local. Esses posicionamentos com custos mais reduzidos.
algoritmos são de fácil implementação, possuem baixa Conforme descrito na introdução, a fim de auxiliar
complexidade computacional – O(n2), mas produzem na tarefa de projeto e construção de um novo circuito,
resultados de baixa qualidade [2]. utilizamos a ferramenta VPR que executa Simulated
O Posicionamento por particionamento tem uma Annealing na etapa de posicionamento dos blocos
abordagem top-down, que é inversa à de crescimento lógicos, com vistas a facilitar a tarefa seguinte, ou seja,
de grupos. Nesta técnica considera-se o circuito como o roteamento. Portanto, nas linhas seguintes estaremos
um todo, e então faz-se o particionamento do mesmo descrevendo a maneira como essa metaheurística foi
de forma recursiva, até que cada bloco possua um implementada no VPR.
único componente, quando então o posicionamento Conforme descrito em [6] e[7], a técnica em si,
estará completo. A grande dificuldade é que o começa com um posicionamento inicial aleatório. Uma
problema de particionamento ótimo é NP-Completo, temperatura inicial é definida. Em seguida é realizada
entretanto, foram desenvolvidas boas heurísticas para o uma alteração no posicionamento e a variação do
tratamento desse problema, como é o caso do mincut custo é calculada.
[3], de fácil implementação e de reduzido custo
computacional.
Algoritmos iterativos

99
procedimento SA(f( ),N( ), α, SAmax, T0, s) posicionamento, a mais utilizada é a redução dos fios
1 s*← s; {Melhor solução obtida até então} de interconexão baseada no cálculo da metade do
2 IterT ← 0; {Núm. de iterações na temperatura T} perímetro do menor retângulo que engloba os pinos do
3 T ← T0; {Temperatura corrente} conjunto de blocos, em virtude de poder ser
4 enquanto (T > 0) faça rapidamente calculada.
5 enquanto (IterT < SAmax) faça É importante observar que a otimização do
6 IterT ← IterT + 1; posicionamento com base na minimização dos
7 Gere um vizinho qualquer s’ ∈ N(s); comprimentos de fios necessários às conexões, não
8 ∆ = f(s0) - f(s); garante um bom posicionamento. Em virtude disso
9 se (∆ < 0) deve-se levar em conta fatores como congestionamento
10 então das trilhas e facilidade de execução do roteamento a
11 s ← s’; fim de obter um posicionamento de qualidade.
12 se (f(s’) < f(s*)) então s* ← s’;
13 senão
14 Tome x ∈ [0,1];
−∆ T
15 se (x < e ) então s ← s’;
16 fim-se;
17 fim-enquanto;
18 T ← α×T;
19 IterT ← 0;
20 fim-enquanto;
21 s ← s*;
22 Retorne s;
Fim SA;
Figura 2 – Procedimento Simulated Annealing

O número de movimentos avaliados por simulated


annealing a cada temperatura é muito grande. Sendo
que a avaliação de um movimento pode resultar em
três casos:
(i) dois blocos são permutados entre si;
(ii) um bloco é movido para uma posição vazia;
(iii) o movimento é rejeitado. Figura 4 – minimizando os comprimentos dos fios

Simulated Annealing é um potente método para


uma faixa de estilos de projetos e tipos de problemas.
Esse algoritmo fornece, normalmente, bons resultados,
justificando o longo tempo gasto para sua execução.
No entanto, esse método não incorpora bem a
imposição de restrições ao posicionamento; e uma vez
que o posicionamento inicial deve ser aleatório,
nenhum posicionamento raiz pode ser fornecido.

Conclusão e propostas futuras


Tendo em vista as vantagens e desvantagens
expostas na seção anterior quanto ao uso de Simulated
Figura 3 – movimento de trocas
Annealing na etapa de posicionamento de blocos
FPGAs, implementadas através do software VPR, e
Um bloco tanto pode ser um bloco lógico como um
ainda, considerando que tal ferramenta é
bloco de I/O. Havendo uma diminuição do custo, a
∂c disponibilizada de forma livre para uso não comercial,
alteração é aceita com probabilidade e t , que em nós nos propusemos a avaliar e implementar as
seguintes modificações, com o objetivo de diminuir o
virtude da diminuição da temperatura tende a
custo computacional: modificação na implementação
minimizar a possibilidade de aceitar um
do procedimento Simulated Annealing, de forma a
posicionamento com custo mais elevado com as
incluir rotina capaz de determinar uma melhor
mudanças dos estados. Dentre as funções objetivos
temperatura inicial; inserir outras vizinhanças capazes
utilizadas para calcular o custo global do
de fornecer uma busca mais ampla na solução do

100
problema e por fim, hibridar o Simulated Annealing
combinando-o com uma fase de busca local com VNS.

Agradecimentos
Agradeço a Deus, pela minha existência e pela
minha vida, a minha família, por todo o amor recebido
e aos Professores que me conduziram até onde estou
hoje e em especial aos meus Orientadores Antônio
Carlos Cavalcnti e Lucídio dos Anjos Fomiga Cabral,
pela confiança e incentivo.

Referências
[l] Sait, S. M.,Youssef, H. “VLSI Physical Design
Automation – Theory and Pratice”. IEEE Press,
New York, 1995.
[2] Preas, B., Lorenzetti, M. “Physical Design
Automation of VLSI Systems”.
Benjamin/Cummings Publishing Company, 1988.
[3] Kernighan, B. W. & Lin, S. “An Efficient heuristic
produce for partitioning graphs”. Bell System
Technical journal. Vol 49, n. 2, pp. 291-307,
fevereiro 1970.
[4] Betz V., Rose J., Marquardt A., “Architecture and
CAD for Deep-Submicron FPGAs”. Kluwer
Academic Publishers, 1999.
[5] Betz V., Rose J., Marquardt A., “VPR: A new
Packing, Placement and Routing Tool for FPGA
research”. In International Workshop on Field
Programable Logic and Applications, 1997.
[6] Júnior, L. F. L. “Pré-Posicionador de célular em
circuitos VLSI Standard-cells”. Dissertação
apresentada ao curso de Mestrado em informática
da UFPB, Campina Grande - PB, 1994.
[7] Haldar M., Nayak A., Choudhary A., Banerjee P.
“Parallel Algorithms For FPGA Placement”,
Northwestern University, 2000.

101

Você também pode gostar