Mapeamento Tecnológico no Projeto de Circui- tos ... · da Altera e o ISE da Xilinx em FPGAs, e...

19
Mapeamento Tecnológico no Projeto de Circui- tos Integrados Digitais 8 Felipe de Sousa Marques Universidade Federal do Rio Grande do Sul (UFRGS) [email protected] Osvaldo Martinello Junior Universidade Federal do Rio Grande do Sul (UFRGS) [email protected] Renato Perez Ribas Universidade Federal do Rio Grande do Sul (UFRGS) [email protected] Leomar Soares da Rosa Junior Universidade Federal de Pelotas (UFPel) [email protected] André Inácio Reis Universidade Federal do Rio Grande do Sul (UFRGS) [email protected] 8.1 Introdução Dentre as metodologias de projeto para circuitos integrados digitais, ou ASICs (Application Specific Integrated Circuits), certamente a mais utilizada é a denominada standard cells, baseada no uso de portas lógicas pré-projetadas (e pré-caracterizadas) para a construção de circuitos mais complexos [1]. Desta forma, o projeto do circuito se torna um quebra-cabeça de peças já bem conhecidas, tanto no arranjo lógico e elétrico quanto no arranjo físico (conhecido por leiaute). A descrição de um projeto digital começa geralmente por uma especificação de alto nível (quase algorítmica) realizada através do uso de linguagens baseadas em C, muito utilizadas para o desenvolvimento de sistemas em software, como SystemC, ou através de linguagens de descrição de hardware (HDL - Hardware Description Language), como VHDL e Verilog. Neste nível de abstração muitas vezes não se tem claro ainda como o sistema em hardware será construído ou dividido em blocos funcionais, registradores, máquinas de estado e blocos de memória. Esta descrição é então tratada por uma ferramenta computacional (CAD - Computer-Aided Design) que tenta interpretar a descrição do sistema e construir um circuito, definindo seus blocos principais. Está se falando de uma descrição no nível RTL (Register

Transcript of Mapeamento Tecnológico no Projeto de Circui- tos ... · da Altera e o ISE da Xilinx em FPGAs, e...

Mapeamento Tecnológico no Projeto de Circui-tos Integrados Digitais

8Felipe de Sousa Marques

Universidade Federal do Rio Grande do Sul (UFRGS)[email protected]

Osvaldo Martinello JuniorUniversidade Federal do Rio Grande do Sul (UFRGS)

[email protected]

Renato Perez RibasUniversidade Federal do Rio Grande do Sul (UFRGS)

[email protected]

Leomar Soares da Rosa JuniorUniversidade Federal de Pelotas (UFPel)

[email protected]

André Inácio ReisUniversidade Federal do Rio Grande do Sul (UFRGS)

[email protected]

8.1 IntroduçãoDentre as metodologias de projeto para circuitos integrados digitais, ou ASICs

(Application Specific Integrated Circuits), certamente a mais utilizada é a denominadastandard cells, baseada no uso de portas lógicas pré-projetadas (e pré-caracterizadas) paraa construção de circuitos mais complexos [1]. Desta forma, o projeto do circuito se tornaum quebra-cabeça de peças já bem conhecidas, tanto no arranjo lógico e elétrico quanto noarranjo físico (conhecido por leiaute).

A descrição de um projeto digital começa geralmente por uma especificação de alto nível(quase algorítmica) realizada através do uso de linguagens baseadas em C, muito utilizadaspara o desenvolvimento de sistemas em software, como SystemC, ou através de linguagensde descrição de hardware (HDL - Hardware Description Language), como VHDL e Verilog.Neste nível de abstração muitas vezes não se tem claro ainda como o sistema em hardwareserá construído ou dividido em blocos funcionais, registradores, máquinas de estado e blocosde memória. Esta descrição é então tratada por uma ferramenta computacional (CAD -Computer-Aided Design) que tenta interpretar a descrição do sistema e construir um circuito,definindo seus blocos principais. Está se falando de uma descrição no nível RTL (Register

174 MAPEAMENTO TECNOLÓGICO

Transfer Level). Neste nível, a parte de controle e a parte operacional tomam forma, osblocos funcionais e de memória são identificados, ou seja, o circuito tem sua arquiteturadefinida. Para esta tarefa, a ferramenta de CAD deve apresentar certa “inteligência” parainterpretar a especificação inicial e traduzi-la em um hardware. Ferramentas como MaxPlusda Altera se mostram um tanto limitadas para esta tarefa, enquanto que outras como Quartusda Altera e o ISE da Xilinx em FPGAs, e Design Compiler da Synopsys e RTL Compiler daCadence no projeto de ASICs apresentam resultados melhores.

Tendo em mãos a descrição da arquitetura do circuito e da funcionalidade dos seusblocos, neste momento esta descrição deve ser traduzida para uma construção real utilizandoas células lógicas configuráveis existentes dentro dos componentes de FPGAs e CPLDs ouas células lógicas pré-projetadas para a construção de um circuito integrado. Esta etapade definição da configuração dos blocos lógicos dentro dos componentes programáveis,para que os mesmos representem o comportamento do hardware descrito no HDL RTL,ou de escolha de quais portas lógicas serão usadas na construção do leiaute de um ASIC édenominada ‘mapeamento tecnológico’.

Poderia se afirmar que o mapeamento tecnológico (ou simplesmente ‘mapeamento’)é uma das etapas mais críticas e de maior impacto no resultado final do desempenho dosistema em hardware, uma vez que ele define a construção do circuito e o desempenho,bem como o consumo de potência, que é praticamente decorrência da escolha feita nomapeamento, salvo técnicas de otimização posteriores, como as técnicas aplicadas paracircuitos de baixo consumo.

Como será apresentado neste capítulo, o mapeamento é claramente um desafiocomputacional, de algoritmos e estrutura de dados. No caso dos componentes programáveis,o mapeamento tenta minimizar o uso de blocos configuráveis, de forma a conseguir integrarmais funções lógicas (ou processamento computacional) em um único componente. Odesempenho elétrico deste, velocidade e dissipação de energia, é mais decorrência docomponente escolhido. No caso dos circuitos integrados, o mapeamento tem um papeladicional de escolher não apenas as funções lógicas, mas o tamanho das portas lógicas(sua capacidade elétrica) que será fundamental no desempenho final do circuito. Não setrata de uma tarefa trivial, pois aumentar a capacidade de corrente elétrica de uma portalógica (consequentemente, reduzir o atraso de propagação de sinais através desta) implicaem aumentar as capacitâncias parasitas nas suas entradas, e assim as portas lógicas queestão fornecendo os sinais para esta primeira são penalizadas. Esta tarefa é conhecida pordimensionamento (em inglês, sizing) de portas lógicas e do circuito como um todo.

O foco principal deste texto é o mapeamento tecnológico de circuitos integrados, quepode ser visto como mais abrangente do que para componentes programáveis, uma vezque se tem um grau de liberdade maior de escolha das portas lógicas e de criação docircuito final. Inicialmente, são discutidos os tópicos referentes à biblioteca de células, suaimportância, restrições e impacto no processo de mapeamento. A seguir, são apresentadosos conceitos fundamentais relacionados ao mapeamento tecnológico como as estruturas dedados, decomposição lógica, reconhecimento de padrões e cobertura lógica. Em seguidaserão discutidos conceitos relacionados ao dimensionamento de ciruitos. Na sequência,apresenta-se a evolução cronológica desta área do conhecimento bem como o estado-da-arte, ou seja, o que se utiliza atualmente pela indústria e onde se encontram as pesquisasacadêmicas neste assunto. Para finalizar, são pontuadas as tendências e indicados os desafioscomputacionais para este tópico tecnológico.

BIBLIOTECAS DE CÉLULAS 175

8.2 Bibliotecas de Células

Uma biblioteca de células pode ser definida como um conjunto finito de células queimplementam funções lógicas e que estão disponíveis para a construção de um circuito.Pode-se dizer que estas bibliotecas são similares a uma biblioteca de funções em umprojeto de software, que pode ser construído através de instâncias das funções disponíveis.Bibliotecas de células podem ser classificadas em dois grupos: bibliotecas pré-projetadas ebibliotecas geradas sob demanda.

As bibliotecas pré-projetadas são compostas por um conjunto bem definido de células.Para que estas células possam ser utilizadas no fluxo de projeto de ASICs, são necessáriasinformações sobre as características elétricas e o leiaute das mesmas. O leiaute é umarepresentação gráfica fiel, que mostra a distribuição física e os tamanhos dos elementos queconstroem a célula (transistores e suas interconexões). Esta descrição gráfica é utilizada noprocesso de fabricação do circuito integrado. A partir do leiaute é possível extrair um modeloelétrico e a área ocupada por cada célula. Com base neste modelo elétrico, é possível extrairdados sobre o comportamento da porta lógica, como a função booleana que ela implementa,os atrasos de propagação de sinais com relação às entradas e o consumo de potência emdiversos cenários. No caso de bibliotecas pré-projetadas, os dados da caracterização sãoobtidos através de simulações que fazem uso de complexos algoritmos numéricos, ou atémesmo através da fabricação seguida de medidas de um conjunto grande de instânciasda célula. Como a caracterização de uma biblioteca deste tipo é um processo custoso,normalmente as bibliotecas comercias possuem poucas centenas de células.

O apelo para o uso de bibliotecas geradas sob demanda, também chamadas de bibliotecasvirtuais, é o de aumentar a diversidade de células presentes na biblioteca, sem arcar comos custos de pré-caracterização associados a bibliotecas pré-projetadas. Em bibliotecasvirtuais, a disponibilidade das células é definida por um conjunto de restrições como,por exemplo, um número máximo de entradas ou de transistores dispostos em série oupilha (em inglês, stack). Assim, todas as células que respeitam as restrições podem ser“encomendadas” quando necessárias. Como consequência, o uso de bibliotecas virtuaistorna indispensável a utilização de geradores automáticos de portas lógicas, incluindo o seuleiaute. Como o conjunto de células delimitado por uma biblioteca virtual pode ser vasto,não se pode caracterizar exaustivamente todas as células. Para se justificar a escolha pordeterminada célula é necessário o conhecimento de seu comportamento, tornando necessárioo emprego de estimadores que devem determinar características como: consumo, área eatraso. Estes estimadores precisam ser rápidos, uma vez que serão utilizados repetidamenteno processo de mapeamento, e precisos, pois a qualidade do circuito gerado dependediretamente da qualidade dessas estimativas.

O mapeamento para FPGAs, por sua vez, pode ser considerado um caso particulardo uso de biblioteca virtual. Um FPGA é um circuito pré-fabricado, que pode serprogramado para implementar a funcionalidade desejada. Nesses circuitos, as funções sãoimplementadas por LUTs (do inglês, look-up tables) que, em sua essência, são tabelasverdade programáveis. Elas podem computar qualquer função booleana de n variáveis,sendo que estas correspondem às entradas da LUT. Assim, a restrição que define a bibliotecavirtual é o número de entradas de cada LUT (ou célula lógica). Como o circuito já existefisicamente, dados como área, atraso e consumo já são previamente conhecidos, restando ao

176 MAPEAMENTO TECNOLÓGICO

mapeador a tarefa de respeitar restrições de desempenho, minimizando o número necessáriode LUTs.

A qualidade da biblioteca de células é crucial para que um circuito possa atender aosrequisitos de um projeto. Quanto mais variadas forem as células da biblioteca, maior seráo espaço de soluções a ser explorado e, por consequência, maior a possibilidade de umaboa escolha para a implementação do circuito [2]. Por outro lado, o aumento do espaço debusca eleva a complexidade da ferramenta de mapeamento tecnológico, que deve encontrarum ponto ótimo considerando uma relação entre gerência de memória, tempo de execuçãoe qualidade da solução.

Assim sendo, a biblioteca de células, seja ela pré-projetada ou gerada sob demanda,define e restringe quais são os elementos possíveis de serem utilizados na construção finaldo circuito integrado. Cabe ao mapeamento tecnológico a tarefa escolher o melhor conjuntode células para construí-lo.

8.3 Mapeamento TecnológicoO processo de mapeamento tecnológico consiste na escolha de um conjunto de instâncias

de células disponíveis em uma biblioteca e suas interconexões, de forma a implementartodo o conjunto de funções booleanas descritas por um circuito lógico, além de atenderàs restrições de projeto, minimizando uma determinada função objetivo. A eficiência domapeamento é fortemente dependente da estrutura de dados utilizada para a representaçãodo circuito alvo. Um circuito lógico pode ser definido como um conjunto de portas lógicasinterconectadas que implementam um conjunto de funções booleanas. Um exemplo decircuito lógico é mostrado na Figura 8.1(a).

O processo de mapeamento tecnológico pode ser dividido em três etapas distintas:decomposição lógica, identificação de padrões e cobertura lógica. Alguns algoritmos podemnão apresentar todas estas etapas e outros podem fundir algumas em uma única etapa.

8.3.1 Estruturas de Dados

Um circuito lógico pode ser representado utilizando diferentes estruturas de dados,cada uma delas com certas características que podem ser mais ou menos adequadas adeterminados algoritmos de mapeamento. Uma boa estrutura de dados é elemento chavepara uma computação eficiente.

Grafos de operadores são estruturas de dados muito utilizadas para a representação decircuitos. São grafos dirigidos e acíclicos, normalmente chamados pela sigla DAG (doinglês, Directed Acyclic Graph) [3]. Cada nodo de um DAG representa uma função lógicasimples, como a função E ou a função OU. Os vértices que chegam ao nodo correspondemà saída do operador lógico e partem das entradas de outros nodos ou de saídas primáriasdo circuito. Já os vértices que partem do nodo correspondem às suas entradas e conectam-se à saída de outro nodo ou a uma entrada primária. A Figura 8.1(b) mostra um DAGrepresentando o circuito da Figura 8.1(a).

Uma árvore é um caso particular de um DAG, em que nenhum nodo tem mais de umvértice conectado a sua saída. Dessa forma, cada porta lógica do circuito que tiver suasaída conectada a mais de uma porta lógica deve ser representada por uma árvore. Assim,

MAPEAMENTO TECNOLÓGICO 177

Figura 8.1: Possíveis representações de um circuito lógico (a): representação por DAG (b);por floresta de árvores (c); por AIG (d).

o circuito lógico inteiro passa a ser representado por uma floresta de árvores. A Figura8.1(c) mostra o circuito da Figura 8.1(a) representado por uma floresta de árvores. Essapartição do circuito em várias árvores reduz a complexidade da etapa de identificação depadrões, porém, limita o espaço de busca por soluções, podendo comprometer a qualidadedo circuito mapeado.

Outro caso particular de um DAG é o AIG (do inglês, And-Inverter Graph). Em um AIG,todos os nodos representam a função lógica E e cada nodo possui apenas duas arestas (duasentradas) conectadas a outros vértices do grafo. Os vértices podem ser assinalados com umabolha, indicando uma inversão lógica do sinal que atravessa aquele vértice, o que representaa função inversora. Uma possível representação do circuito lógico da Figura 8.1(a) como umAIG pode ser vista na Figura 8.1(d). Essas restrições fazem de um AIG uma estrutura maissimples e mais regular que um DAG, facilitando a elaboração de algoritmos que trabalhamcom AIGs.

Os grafos de operadores utilizam como ponto de partida uma representação do circuitoem portas lógicas. Outra abordagem seria partir diretamente do conjunto de funções lógicasque compõem o circuito. Uma função lógica se caracteriza por sua tabela verdade, querelaciona cada possível vetor de entrada ao valor de saída da função. Como existem 2n

vetores possíveis de entrada, sendo n o número de variáveis da função, o armazenamento detabelas verdade é pouco eficiente. Uma forma mais compacta de representação de umafunção lógica é um diagrama de decisão binária, ou BDD (do inglês, Binary Decision

178 MAPEAMENTO TECNOLÓGICO

Diagram) [4]. Um BDD é um grafo dirigido e acíclico constituído por nodos de escolhae dois nodos terminais, o terminal 0 e o terminal 1. A cada nodo de decisão se associa umavariável e de cada nodo partem duas arestas, sendo elas a aresta 0 e a aresta 1. A Figura8.2 mostra a tabela verdade de uma determinada função lógica e uma representação destafunção através de um BDD.

Figura 8.2: Representação de uma função booleana por BDD.

8.3.2 Decomposição lógicaA primeira etapa do mapeamento é a decomposição lógica, que tem como objetivo

preparar a estrutura de dados (ou ‘descrição sujeito’) para o mapeamento. O circuito deve serdescrito utilizando a estrutura de dados requerida pelo algoritmo, que muitas vezes aceitaapenas operadores binários, ou apenas um conjunto restrito de operadores lógicos, comopor exemplo, portas E, OU e inversor, ou ainda apenas portas E e inversor. O objetivodessas restrições é facilitar a etapa de identificação de padrões e aumentar a granularidadeda representação. Outra estratégia que pode ser utilizada na etapa de decomposição é ainserção de um par de inversores nas arestas que não se conectam a inversores. A inserçãodestes nodos não altera a função lógica representada e aumenta a granularidade do grafo. AFigura 8.3 ilustra um fluxo de operações possível da etapa de decomposição.

Figura 8.3: Possíveis decomposições lógicas de um circuito.

Um conjunto de funções booleanas pode ser descrito por uma multiplicidade de circuitoslógicos diferentes. Logo, existem diversas formas de representá-las utilizando uma mesma

MAPEAMENTO TECNOLÓGICO 179

estrutura de dados que não seja canônica. Como a etapa de identificação de padrões ébastante sensível à descrição inicial do circuito, problema conhecido como structural bias,é dever da etapa de decomposição fazer com que diferentes circuitos que representem amesma função lógica convirjam para uma representação canônica deste. Isso possibilita aidentificação de padrões entre circuitos que são estruturalmente diferentes.

8.3.3 Identificação de PadrõesNesta segunda etapa, se analisa todas as possibilidades de cobertura de sub-funções

por células disponíveis na biblioteca. Cada combinação possível será candidata a comporo conjunto final de células necessárias para a construção do circuito. A identificação depadrões se dá através de verificações estruturais, funcionais ou por restrições.

Normalmente, a verificação estrutural (em inglês, structural matching) é utilizadasomente quando o mapeamento é feito utilizando uma biblioteca pré-projetada. Esteprocesso verifica a existência de grafos isomórficos entre a representação do circuito e osgrafos utilizados para representar as células de uma biblioteca. Para isso, cada célula dabiblioteca deve ser descrita e decomposta da mesma forma em que o circuito foi descrito,como demonstra a Figura 8.4. Um exemplo de identificação de padrões por verificaçãoestrutural pode ser visto na Figura 8.5, que mostra alguns padrões identificados para ummesmo nodo.

Figura 8.4: Descrição de uma biblioteca de células e seus padrões de representação.

Na verificação funcional (em inglês, boolean matching) a identificação ocorre quandoparte do circuito é funcionalmente equivalente à função booleana implementada por umacélula. Este tipo de procedimento é mais efetivo na identificação de padrões quandocomparada à verificação estrutural, pois reduz o problema da dependência estrutural, porémpossui um custo computacional mais elevado.

Finalmente, tem-se a verificação por restrição, que é comumente utilizada emmapeadores que fazem uso de bibliotecas virtuais. Como a própria definição da bibliotecavirtual é dada por um conjunto de restrições, basta verificar se o sub-grafo candidato respeita

180 MAPEAMENTO TECNOLÓGICO

Figura 8.5: Exemplos de padrões identificados.

esse conjunto de restrições. Como exemplo, em uma biblioteca definida por portas lógicascom até quatro entradas, todos os padrões que atendem a esse número máximo de entradasserão candidatos a participarem da cobertura final. Consequentemente, o número de padrõesidentificados pode ser grande, o que aumenta o espaço de busca por soluções. Desta forma,isso aumenta as complexidades espaciais e temporais do algoritmo de mapeamento.

8.3.4 Cobertura lógica

A última etapa do mapeamento tecnológico é a cobertura lógica, ou seja, é a etaparesponsável por escolher um subgrupo dentre os padrões identificados na fase anterior, deforma que o grafo que representa o circuito seja coberto por completo e que as restriçõesde projeto sejam atendidas. Normalmente, estas restrições são modeladas por uma funçãoobjetivo (ou função custo) e o papel da cobertura é tentar minimizá-la.

Como exemplo, a Figura 8.6 mostra o processo de cobertura de uma árvore. Nesteexemplo, cada célula (ou padrão identificado) possui um custo associado, que corresponde àárea ocupada pela célula. A soma destes custos é o que deve ser minimizado pelo processode cobertura. A cobertura de área mínima para a árvore pode ser obtida pelas coberturas demenor área de cada nodo abaixo do nodo raiz, e usando para isso, por exemplo, programaçãodinâmica, a cobertura é atingida em tempo linear. O custo de se cobrir um nodo comdeterminada célula é dado pela soma entre o custo da célula a ser utilizada e o menor custode cada nodo das entradas da célula. A Figura 8.6(a) mostra os padrões associados a cadanodo, representando as células que geram o menor custo para o nodo. A Figura 8.6(b) mostraa cobertura escolhida pelo algoritmo de mapeamento, cujo custo é o mínimo.

A complexidade desta etapa depende do objetivo do mapeamento e da estrutura utilizada.Por exemplo, a cobertura de um circuito descrito como uma floresta de árvores visandominimizar a área é resolvida em tempo linear com relação ao número de nodos. Por outrolado, se a estrutura for um DAG a complexidade passa a ser exponencial quanto ao númerode nodos. No entanto, como o espaço de soluções de uma descrição DAG é maior, oresultado final tende a ser melhor.

DIMENSIONAMENTO 181

Figura 8.6: Cobertura lógica de uma árvore de operadores lógicos.

Em resumo, pode-se dizer que o mapeamento tecnológico é a etapa mais importante dasíntese lógica. Sua tarefa é a de transformar um conjunto de funções lógicas em uma redede instâncias de células de uma biblioteca interconectadas, de forma a respeitar restriçõesde velocidade de operação, consumo de energia e área disponível para a construção de umcircuito integrado.

8.4 DimensionamentoO dimensionamento (ou sizing) de transistores, portas lógicas e circuitos, não faz

necessariamente parte do processo de mapeamento tecnológico, mas está fortemente ligadoa este, uma vez que ambos devem ao final definir uma estrutura de hardware no nível deportas lógicas que atenda às especificações de velocidade de operação do circuito.

Poderiam ser definidos ou identificados os três níveis de dimensionamento:

1. Dimensionamento de transistores, ou seja, a definição do tamanho de cada “chave”lógica ou transistor presente em uma porta lógica. Esta definição ocorre nomomento da construção da biblioteca de células, procurando equilibrar ou atingir umdeterminado desempenho de cada porta lógica.

2. Dimensionamento de portas lógicas representa a construção de uma mesma célulaem diversas versões de tamanho ou capacidade elétrica (também conhecido por drivestrength). Uma porta lógica com, por exemplo, o “dobro” do tamanho de outra, parauma mesma função booleana, é obtida dobrando-se o tamanho ou a capacidade decorrente de todos os seus transistores. Ou poderia se pensar na construção de duasportas lógicas em paralelo, com suas respectivas entradas e saídas conectadas, paragerar uma nova célula com o dobro da capacidade de corrente elétrica no seu terminalde saída. Quanto mais opções de tamanhos para cada função lógica, mais célulasestarão presentes na biblioteca, e maior a flexibilidade de projeto para se atingir aespecificação de velocidade de operação do circuito.

182 MAPEAMENTO TECNOLÓGICO

3. Dimensionamento do circuito representa a escolha de qual versão, ou drive strength,disponível na biblioteca para uma determinada função lógica será utilizada no lugarde uma porta lógica em determinado ponto do circuito, segundo o resultado domapeamento tecnológico.

Em geral, o mapeamento não utiliza a informação de velocidade especificada para ocircuito, nem trabalha com os atrasos de propagação de sinais de cada porta lógica. Omapeamento procura reduzir o tamanho final do circuito, e o resultado deste processo sofreentão as modificações de troca do tamanho das portas lógicas disponíveis para atingir asrestrições temporais. Caso isso não seja possível, o circuito deve ser remapeado para queuma nova estrutura de hardware seja exercitada com as opções de tamanhos das portaslógicas disponíveis, tentando atingir a velocidade especificada.

Existe ainda uma etapa de otimização conhecida por ‘inserção de buffers’, que acrescentaportas lógicas sem impacto no comportamento funcional, mas que acelera a propagação dossinais. Pode parecer estranho que o acréscimo de mais uma célula (que também possuiatraso de tempo de resposta) no caminho de um sinal consiga diminuir o tempo total depropagação deste sinal elétrico. Por vezes, isso é possível devido à influência positiva queesta nova porta lógica causa no atraso das demais já presentes no circuito. Uma análise maisdetalhada deste item, que não será aprofundado neste texto, deve ser feita do ponto de vistaelétrico em relação à redistribuição de cargas capacitivas no circuito. De qualquer forma, ainserção de buffer tem sempre impacto negativo na área final do circuito.

A questão do dimensionamento do circuito é apresentado, embora brevemente,porque o que se procura atingir durante o processo de mapeamento juntamente com odimensionamento é um circuito definido exatamente como ele será construído, no nívelde portas lógicas, e que sobretudo atenda as restrições temporais impostas ao sistema dehardware em questão.

8.5 Estado da arteOs primeiros métodos para síntese automática de circuitos digitais não tinham algoritmos

específicos para mapeamento tecnológico. O processo de síntese se resumia à aplicação deum conjunto de regras sobre uma estrutura que representasse o circuito, visando algum tipode otimização. As principais abordagens para síntese baseada em regras foram apresentadasna década de 80, por Darringer [5] e Gregory [6].

Este tipo de metodologia realiza simplificações locais, tentando reduzir o custo de partedo circuito. No entanto, nem todas as simplificações locais garantem que a solução finalcorresponda ao mínimo global, considerando uma determinada função objetivo. Comoalternativa ao sistema de regras, novas alternativas algorítmicas surgiram com o objetivo derealizar o mapeamento tecnológico de circuitos utilizando heurísticas ou algoritmos exatos.

O primeiro algoritmo para mapeamento tecnológico, chamado de DAGON, foi propostopor Keutzer [7], em 1987. Ele observou uma semelhança entre o problema de mapeamentoe de compiladores. A identificação de padrões entre sub-grafos de uma representação de umcircuito não mapeado e células de uma biblioteca pré-definida é similar a identificação depadrões entre representações intermediárias de um programa de computador e um conjuntode instruções de máquina. O grafo de mapeamento usado era uma árvore representadaem forma de uma sequência de caracteres, sendo que essa descrição era compatível

ESTADO DA ARTE 183

com o formato de entrada do mecanismo de compilação. A comparação estrutural e arepresentação inicial do circuito restringiam muito o espaço de busca a ser explorado pelomapeamento, afetando a qualidade do circuito mapeado. Além disso, o algoritmo exigiaque todos os padrões isomórficos entre sub-árvores do circuito e células da bibliotecafossem armazenados em cada nodo da árvore, até o final da etapa de cobertura lógica.Isso inviabilizava a utilização de bibliotecas muito grandes, pois o número de padrõesencontrados era possivelmente maior. Isso demandava maior capacidade de armazenamentoe mais tempo para encontrar uma solução.

Ainda em 1987, Detjens [8] propôs o primeiro método que de fato utilizava árvorescomo estrutura base para o mapeamento. Além desta inovação, o método de Detjenspropôs a inserção de pares de inversores no grafo utilizado para o mapeamento. Issoaumentava a possibilidade de identificar novos padrões no grafo (isomorfismo de grafos),aumentando o espaço de busca por soluções. Com o intuito de tirar proveito destapossibilidade, era necessário criar diversas decomposições para cada elemento da biblioteca,que representavam a mesma função lógica, porém com diferentes estruturas. Desta forma, abusca por uma solução com muitas células se tornava inviável.

Alguns anos depois, em 1993, Mailhot [9] apresentou o primeiro algoritmo paramapeamento tecnológico que utilizava uma abordagem de verificação funcional paraidentificação de padrões. Assim como algoritmos anteriores [7, 8], o DAG inicial eraparticionado em árvores. Porém, a comparação entre as sub-árvores e as células dabiblioteca era feita com o uso de BDDs. Como os BDDs são uma forma canônica derepresentar funções booleanas, encontrar combinações não dependia mais da estrutura daárvore. Entretanto, esta abordagem booleana exigia um maior número de comparações,levando a limitações semelhantes às abordagens anteriores.

O reordenamento dinâmico proposto por Lehmann [10] foi outra alternativa paraminimizar a dependência da estrutura inicial do grafo. Neste algoritmo, a etapa dedecomposição era integrada com a etapa de identificação de padrões. Grafos funcionalmenteequivalentes, porém estruturalmente diferentes, eram associadas a cada nodo do grafo,aumentando o espaço de busca para encontrar melhores soluções. Como consequência,por armazenar todas as decomposições/estruturas possíveis, o grafo de mapeamento cresciarapidamente, tornando-o inviável para circuitos grandes.

O método de Kukimoto [11], de 1998, mostra que um circuito não precisa serparticionado em árvores para ser mapeado com o objetivo de minimizar a velocidade deoperação de um circuito utilizando bibliotecas pré-definidas. A contribuição dessa propostafoi o método de mapeamento para uma representação em DAG que garante resultado ótimoem termos de velocidade, independente da decomposição inicial do grafo. Entretanto, énecessário ressaltar que o modelo de atraso, para o qual a solução ótima é garantida, ignoraa carga que a célula irá suportar na implementação final, levando em conta apenas o atrasode propagação da célula. Isso significa que, possivelmente, é necessária uma etapa de pós-processamento para realizar o dimensionamento adequado das células lógicas.

No ano seguinte, Stok [12] propôs o algoritmo chamado Wavefront, que é umaabordagem semelhante ao método proposto em [10], mas resolve o problema daintratabilidade de circuitos maiores. Assim como o método proposto em [11], o circuito érepresentado por um DAG e o modelo de atraso de sinais usado é independente da carga quecada célula deve suportar. Para evitar que o DAG inicial cresça de forma exponencial coma inserção de diferentes decomposições, as etapas de decomposição lógica, identificação de

184 MAPEAMENTO TECNOLÓGICO

padrões e cobertura lógica são executadas concomitantemente em uma “janela deslizante”(denominada wavefront), regulada em termos de profundidade lógica dos nodos do grafo.Este algoritmo heurístico apresentou bons resultados em relação aos seus antecessores.

O estado-da-arte em mapeamento tecnológico voltado a bibliotecas de células pré-definidas é o método apresentado por Chatterjee [13] em 2005. Ele reúne uma sériede técnicas aplicadas em síntese lógica, integradas e bem calibradas beneficiando omapeamento tecnológico. A essência do algoritmo de mapeamento é a mesma do algoritmoapresentado em [11]. As principais diferenças estão na identificação de padrões, que éfeita de forma booleana, e na estruturas de dados, que são os AIGs. Este algoritmo foiincorporado em uma ferramenta acadêmica, chamada de ABC [14].

Em paralelo à evolução dos algoritmos para mapeamento tecnológico baseado embibliotecas de células pré-definidas, métodos baseados em bibliotecas virtuais tambémforam propostos. O primeiro deles foi apresentado por Berkelaar [15], em 1988, e assimcomo os primeiros métodos para mapeamento tecnológico, particionava o circuito em coneslógicos, porém não utilizava árvores para representá-los. Expressões de somas-de-produtose produtos-de-somas eram representadas por grafos, utilizando uma notação prefixada.Percorrendo estes grafos das saídas para as entradas, eles eram particionados em célulaslógicas. Isso acontecia toda vez que determinada porção do grafo atingia um limite impostopor um conjunto de restrições que definiam a biblioteca virtual. O maior problema destaabordagem era a estratégia gulosa adotada pelo algoritmo. Como os cortes eram feitosde cima para baixo, a profundidade lógica do que está abaixo do grafo era desconhecida.Logo, não era possível garantir uma solução com profundidade lógica mínima nem o númeromínimo de células necessárias para cobrir o circuito.

Abouzeid [16] propôs, em 1993, uma nova abordagem para geradores de células,motivado pela possibilidade do uso de um grande número de células lógicas. Neste método,o circuito inicial também era particionado em árvores, porém, estas árvores eram de graulivre, isto é, cada nodo podia ter n nodos filhos. A representação por árvores n-áriasdiminuía a dependência no grafo inicial, possibilitando uma mudança de estrutura em umdeterminado conjunto de nodos. Baseado nesta representação, cortes eram feitos toda vezque um nodo que excedesse alguma das restrições fosse encontrado. Ainda que os cortesfossem gerados das entradas para as saídas, eles eram feitos de forma gulosa, sem quehouvesse preocupação com a minimização da profundidade lógica do circuito mapeado.

Ainda em 1992, Liem [17] propôs um método baseado em uma estratégia denominada“combinação construtiva” (em inglês, constructive matching). Ao contrário das abordagensanteriores, que consideravam apenas valores máximos para cadeias de transistores, o métodode Liem considerava o uso de um limite para o número de entradas e profundidade lógica deuma célula. Estas duas restrições adicionais foram impostas com o argumento de facilitaretapas pós-mapeamento, pois as células utilizadas pelo mapeamento seriam menores. Issotambém restringe o número de combinações possíveis, diminuindo a complexidade doproblema. A etapa para geração das combinações construtivas era feita das entradas paraas saídas, enquanto as árvores eram percorridas em largura (breadth-first search) em buscade padrões que não excedessem as restrições da biblioteca virtual. Um dos problemasdo algoritmo era a dependência da estrutura inicial do circuito, tendo em vista que oscircuitos eram representados por árvores binárias. Outro problema era o armazenamentodos padrões encontrados até a fase de cobertura, o que também inviabilizava o método parao mapeamento de circuitos grandes.

ESTADO DA ARTE 185

O método apresentado por Reis [18] propõe uma abordagem diferente voltada parageradores de células. A representação de cada cone lógico do circuito era feita por um tipoespecial de BDD, chamado de Terminal-Supressed Binary Decision Diagram (TSBDD).Uma propriedade interessante dessa estrutura é a associação direta dos arcos do BDD atransistores. No entanto, este tipo de representação acaba enfrentando os mesmos problemasde representações por árvores. A maior contribuição deste método foi a constatação daimportância do uso do reordenamento dinâmico na representação inicial do circuito.

Em 2001, Jiang [19] apresentou o método Odd-level Transistor Replacement (OTR),também orientado a geradores automáticos de células. Esse método trabalhava diretamentesobre um grafo que representa o diagrama elétrico de um circuito em nível de transistores.Assim como a maioria dos métodos, ele também dependia fortemente da decomposiçãoinicial do circuito. Muitas vezes, uma solução qualquer de uma boa decomposição inicialpode ser melhor que a solução ótima para uma decomposição inicial ruim.

A melhor estratégia para mapeamento baseado em bibliotecas virtuais, utilizando árvorescomo descrição sujeito, foi apresentada por Correia [20], e deu origem à ferramenta ELIS.Assim como proposto em [16], o método utiliza árvores n-árias para representar os coneslógicos de um circuito. A principal vantagem deste algoritmo é que ele consideravavárias decomposições de sub-árvores dinamicamente (a um custo baixo de tempo deprocessamento) e encontrava a cobertura mínima utilizando programação dinâmica emtempo linear. A maior limitação está na representação por árvores, que impossibilitam umavisão total do circuito.

A abordagem mais atual para geradores de células é o algoritmo apresentado porMarques [21], em 2007, chamado de VIRMA. Diferentemente dos métodos anteriores, ométodo VIRMA realiza o mapeamento sobre um DAG, visando à redução do atraso deum circuito. Outra diferença está na delimitação da biblioteca virtual. Assim como asabordagens mais antigas, a principal restrição da biblioteca virtual é o número máximode transistores em série admitidos em cada célula. No entanto, o método VIRMA foio primeiro a considerar células com cadeias mínimas de transistores [22]. O métodoconta com um algoritmo booleano para calcular o número mínimo de transistores emsérie necessários para implementar uma determinada função lógica. Deste modo, pode-sedizer que a identificação de padrões é feita de forma booleana, eliminando dependênciasestruturais sobre a representação do circuito. Tanto a estratégia do “janelamento” [12]quanto dos ‘cortes k’ [13], são utilizadas para reduzir o problema do mapeamento. Estasidéias são necessárias para melhorar o gerenciamento de memória, tendo em vista que onúmero de células da biblioteca virtual é muito grande, mesmo considerando um conjuntode restrições com valores pequenos. Apesar destas limitações, o algoritmo apresentouresultados competitivos em relação aos demais métodos.

Todos os métodos discutidos acima apresentam limitações impostas pela forma comoeles abordam o problema do mapeamento tecnológico. Em geral, a aplicação de heurísticasse faz necessária para garantir a tratabilidade do problema. O mapeamento para área em umDAG, que é NP-completo, é um exemplo disso. Entretanto, se o DAG for particionado emárvores e cada árvore mapeada de forma independente, o resultado ótimo para cada árvorepode ser obtido em tempo linear.

No que diz respeito ao atraso do circuito, dependendo do modelo para cálculo doatraso, o mapeamento sobre DAG pode gerar um resultado ótimo em tempo linear. Noentanto, convém salientar que estes modelos não são precisos o suficiente para garantir o

186 MAPEAMENTO TECNOLÓGICO

dimensionamento apropriado do circuito. Desta forma, uma etapa para dimensionamentose faz necessária após o mapeamento. Existem métodos que tentam resolver o problema domapeamento e dimensionamento simultaneamente. O algoritmo proposto por Karandikar[23] é um exemplo deste tipo de algoritmo, que encontra bons resultados em tempopolinomial utilizando modelos de atraso um pouco mais aprimorados associados a algumasheurísticas.

É difícil afirmar quais são as técnicas empregadas em ferramentas comerciais, comoo Design Compiler da Synopsys e o RTL Compiler da Cadence. Estas ferramentasoferecem ambientes iterativos e integrados ao fluxo de síntese, capazes de realizar sucessivasotimizações em um circuito até que ele atenda os requisitos do projeto. A cada iteração,possivelmente, um conjunto de heurísticas é utilizado para resolver os problemas domapeamento e do dimensionamento, entre outros algoritmos que realizam otimizações maispontuais. Considerando os estilos das soluções encontradas por estas ferramentas, pode-sedizer que elas utilizam DAGs como estrutura base (ou estruturas similares, como AIGs) ecombinam técnicas booleanas e estruturais para tentar encontrar boas soluções em um temporazoável.

8.6 Tópicos de pesquisa

Existem vários pontos de pesquisa em métodos para resolver o problema do mapeamentotecnológico ou problemas relacionados. Um dos fatores que afeta todas as classes dealgoritmos para mapeamento é a escalabilidade. O número de dispositivos eletrônicospresentes em um circuito integrado está cada vez maior, por este motivo, seguindo umametodologia de dividir para conquistar, o particionamento (ou “clusterização”) do circuitose faz necessário. Consequentemente, isto impõe limites no espaço de busca por soluções.

Os maiores desafios para algoritmos baseados em bibliotecas de células pré-definidassão os problemas relacionados à escalabilidade e à dependência estrutural da representaçãoinicial. Para o primeiro deles, a grande maioria dos algoritmos utiliza estratégias declusterização para tratar o problema. O problema da dependência estrutural pode serminimizado de diferentes formas. Existem técnicas para gerar diferentes decomposiçõesestruturais de uma determina porção do circuito, como por exemplo, os métodos propostospor Chatterjee [13]. Ainda que esta técnica se mostre eficiente em alguns casos, é umaabordagem heurística e necessita de um certo número de iterações para convergir a umasolução considerada satisfatória.

A dependência estrutural também pode ser minimizada com a utilização de métodosbooleanos para a identificação de padrões. Entretanto, a identificação de padrões pormétodos booleanos também está na classe de problemas NP-completo [24]. Existe umasérie de métodos que tratam deste problema, mas ficam limitados a tratar de funções lógicascom poucas variáveis.

Os algoritmos para mapeamento tecnológico baseados em bibliotecas virtuais tambémsão atingidos pelos problemas de escalabilidade e da dependência estrutural. Em geral, assoluções encontradas podem ser aplicadas tanto para abordagens baseadas em bibliotecaspré-definidas quanto para abordagens baseadas em bibliotecas geradas sob demanda. Noentanto, os métodos para bibliotecas virtuais enfrentam outros problemas computacionaisem métodos para geração automática de células e para o cálculo de estimativas que definem

TÓPICOS DE PESQUISA 187

as características de uma “célula virtual”. Além disso, existem problemas com o próprioalgoritmo de mapeamento, que em geral trabalha com bibliotecas de células muito grandes,aumentando a complexidade do problema.

A geração automática de células, tanto no nível de redes de transistores [25] quantona geração de leiaute, tem sido bastante estudada. Existem diversas técnicas para geraçãode redes de transistores para diferentes estilos lógicos. A maioria delas baseia-se namanipulação de grafos que representam uma rede de transistores interconectados. Acomplexidade de geração da rede de transistores está diretamente ligada ao estilo lógicoa ser gerado. No caso de redes CMOS estáticas, estilo mais comum entre células presentesem uma biblioteca comercial, as redes são construídas a partir de uma forma fatorada (comnúmero mínimo de literais) que representa a função booleana implementada pela célula.Uma vez que a expressão fatorada é conhecida, a geração da rede CMOS pode ser obtidaem tempo linear. Contudo, encontrar a forma fatorada de uma determinada função lógica éum problema NP-completo.

Existem métodos que tentam derivar uma rede transistores de uma expressão nãofatorada realizando manipulações sobre grafos, e que, por sua vez, podem resultar emdiferentes topologias de redes de transistores. Muitas vezes, estes métodos são complexose inviabilizam a geração de redes de transistores durante o mapeamento tecnológico.Para alguns métodos que calculam estimativas de certas características das células, arede de transistores é fundamental. Logo, em determinados casos, não é possível obterestimativas que poderiam ser utilizadas como custo na função objetivo, cujo mapeamentovisa minimizar. A falta de estimativas precisas para as ditas “células virtuais” é umdos indicativos da rejeição deste tipo de abordagem pelo meio industrial. Neste sentido,bibliotecas pré-definidas e caracterizadas garantem maior precisão no projeto de circuitosintegrados.

A geração automática de leiaute também é fundamental para abordagens baseadas embibliotecas virtuais, considerando que as células são geradas sob demanda. A síntesefísica, que trata de problemas relativos ao leiaute dos circuitos integrados, também é umvasto campo de pesquisa. O problema da geração de leiaute consiste na distribuiçãode elementos geométricos em um plano, seguindo uma série de regras impostas por umdeterminado processo de fabricação. Cada elemento geométrico ou a associação de umconjunto de elementos representa um determinado tipo de material que é utilizado noprocesso de fabricação do circuito. Em termos gerais, este também é um problema NP-completo. Existem diversas técnicas para a geração de leiaute de células lógicas, porém,em muitos casos, elas são suscetíveis a variações de regras de projeto (design rules). Istose torna mais crítico em tecnologias mais atuais (tecnologias submicrométricas). Destemodo, dificilmente as ferramentas que tratam deste tipo de problema oferecem um fluxocompletamente automatizado.

Normalmente, o número de células disponíveis em uma biblioteca virtual é bem maiorque o número de células disponíveis em uma biblioteca pré-definida. Esta diversidade éo principal argumento para o uso de abordagens deste tipo. Todavia, quanto mais célulasdisponíveis, mais árdua é a tarefa do mapeamento tecnológico. Possivelmente, o número depadrões identificados no circuito será muito grande, complicando a gerência de memóriae o tempo de execução do algoritmo. Diferentes métodos heurísticos foram propostospara contornar estes problemas. Porém, não existe um método único e auto-suficiente quegaranta a solução ótima para qualquer tipo de circuito. Por este motivo e também pela

188 MAPEAMENTO TECNOLÓGICO

falta de precisão na caracterização das células, a indústria passou a dar mais atenção a umaabordagem conhecida como ‘in place optimization’ (IPO) [26]. Este tipo de abordagemtem por objetivo identificar pontos críticos em um determinado circuito, a fim de realizaralgum tipo de otimização local. Assim, como algumas estratégias para o dimensionamentodo circuito, esta seria uma etapa pós-mapeamento para bibliotecas pré-definidas. Com basenos pontos passíveis de otimização, o algoritmo poderia então propor a utilização de célulasde uma biblioteca virtual, através de um processo iterativo. Desta forma, o problema domapeamento é reduzido, visto que pequenas porções do circuito seriam otimizadas.

Os algoritmos voltados ao mapeamento para FPGAs também são afetados pelosproblemas de escalabilidade, mas em menor proporção. A unidade lógica básica de umFPGA é uma LUT. Cada modelo de FPGA possui suas características de atraso e consumoe um determinado número de LUTs disponíveis. O algoritmo de mapeamento deve tentarfragmentar o circuito de forma que ele possa ser implementado pelo conjunto de LUTsdisponíveis e que atenda os requisitos de atraso e consumo. Existem outros métodos,conhecidos como métodos para decomposição funcional, que são capazes de fragmentarfunções booleanas restringindo o número de variáveis de cada subfunção [27]. Este tipo detécnica também apresenta resultados similares aos algoritmos para mapeamento e é outraárea interessante de pesquisa.

Um dos principais fatores que contribuem para o desempenho de um dispositivo FPGAsão as linhas de roteamento utilizadas para realizar a conexão das LUTs. Com o intuitode minimizar este problema, a indústria passou a considerar o uso de LUTs com múltiplassaídas, ou seja, cada LUT pode implementar um certo número de funções lógicas diferentes,que dependam do mesmo conjunto de variáveis [28, 29]. O fato de concentrar os sinais deentrada em um único ponto reduz o congestionamento das interconexões, minimizando oproblema do roteamento dos sinais e, provavelmente, minimizando o atraso de propagaçãodesses sinais e aumentando, consequentemente, a velocidade de operação do circuito.Entretanto, ainda não existem algoritmos eficientes para realizar o mapeamento de circuitosconsiderando LUTs de múltiplas saídas. Logo, este é um tópico bastante relevante parafuturas pesquisas.

8.7 Conclusão

Este capítulo discutiu uma série de conceitos sobre o mapeamento tecnológico decircuitos digitais. Pode-se perceber que o impacto do mapeamento no projeto de ASICsé bastante significativo, pois cabe a esta etapa decidir qual o conjunto de dispositivos (oucélulas) que serão utilizados para implementar o circuito. Desta forma, o mapeamentotecnológico acaba definindo as principais características do circuito em termos de consumo,área e velocidade de operação.

Existe uma diversidade de estruturas de dados e algoritmos para mapeamento, voltadostanto para o projeto de ASICs quanto para FPGAs. Alguns problemas são comuns a todasas abordagens, porém cada uma delas possui suas peculiaridades. Consequentemente, osalgoritmos são desenvolvidos focando uma das abordagens.

Existem vários desafios computacionais envolvendo algoritmos para mapeamentotecnológico e algoritmos relacionados a esta etapa da síntese lógica. A escalabilidade éum problema que afeta todas as categorias de algoritmos para mapeamento. Os métodos

REFERÊNCIAS BIBLIOGRÁFICAS 189

baseados em bibliotecas geradas sob demanda ainda apresentam uma série de pontos aserem explorados nos próximos anos, como, por exemplo, a geração de redes de transistorese leiaute de células lógicas, o desenvolvimento de técnicas para realizar estimativas eaperfeiçoar os modelos utilizados como custo no mapeamento e ainda heurísticas eficientesque encontrem um ponto ideal de equilíbrio entre gerência de memória e tempo de execução,sem que haja perda significativa na qualidade do circuito mapeado.

Novas tendências na indústria também trazem novos desafios para a síntese de circuitosem FPGAs. A possibilidade de utilizar LUTs que implementam mais de uma funçãobooleana aponta para um novo foco de pesquisa, visando a construção de algoritmos queconsiderem elementos com mais de uma saída. As técnicas investigadas para este fimtambém podem revelar possíveis aplicações nos fluxos de síntese para ASICs.

8.8 Referências Bibliográficas[1] N. Weste and D. Harris, CMOS VLSI Design: A Circuits and Systems Perspective.

Addison Wesley, 3rd ed., 2004.

[2] B. Guan and C. Sechen, “Large standard cell libraries and their impact on layout areaand circuit performance,” Computer Design, International Conference on, 1996.

[3] S. Minato, Binary decision diagrams and applications for VLSI CAD. Norwell, MA,USA: Kluwer Academic Publishers, 1996.

[4] R. .Diestel, Graph Theory. Springer-Verlag, Heidelberg, 3rd ed., 2005.

[5] J. A. Darringer, W. H. J. Jr., C. L. Berman, and L. Trevillyan, “Logic synthesis throughlocal transformations,” IBM Journal of Research and Development, vol. 25, no. 4,pp. 272–280, 1981.

[6] D. Gregory, K. Bartlett, A. deGeus, and G. Hachtel, “Socrates: A system forautomatically synthesizing and optimizing combinational logic,” in 25 years of DAC:Papers on Twenty-five years of electronic design automation, (New York, NY, USA),pp. 580–586, ACM, 1988.

[7] K. Keutzer, “Dagon: Technology binding and local optimization by dag matching,” in25 years of DAC: Papers on Twenty-five years of electronic design automation, (NewYork, NY, USA), pp. 617–624, ACM, 1988.

[8] E. Detjens, G. Gannot, R. Rudell, and A. Sangiovanni, “Technology mapping in mis,”in International Conference of Computer Aided Design, Proceedings of, 1987.

[9] F. Mailhot and G. D. Micheli, “Algorithms for technology mapping based on binarydecision diagrams and on boolean operations,” Computer-Aided Design of IntegratedCircuits and Systems, IEEE Transactions on, vol. 12, no. 5, pp. 599–620, 1993.

[10] E. Lehman, Y. Watanabe, J. Grodstein, and H. Harkness, “Logic decomposition duringtechnology mapping,” Computer-Aided Design, International Conference on, 1995.

190 REFERÊNCIAS BIBLIOGRÁFICAS

[11] Y. Kukimoto, R. Brayton, and P. Sawkar, “Delay-optimal technology mapping bydag covering,” in DAC ’98: Proceedings of the 35th annual Design AutomationConference, (New York, NY, USA), pp. 348–351, ACM, 1998.

[12] L. Stok, A. J. Sullivan, and M. A. Iyer, “Wavefront technology mapping,” Design,Automation and Test in Europe Conference and Exhibition, 1999.

[13] S. Chatterjee, A. Mishchenko, R. Brayton, X. Wang, and T. Kam, “Reducingstructural bias in technology mapping,” in ICCAD ’05: Proceedings of the 2005IEEE/ACM International conference on Computer-aided design, (Washington, DC,USA), pp. 519–526, IEEE Computer Society, 2005.

[14] B. L. Synthesis and V. Group, “Abc: A system for sequential synthesis and verifica-tion,” September 2007 release. available at http://www.eecs.berkeley.edu/ alanmi/abc/.

[15] M. R. C. M. Berkelaar and J. A. G. Jess, “Technology mapping for standard-cellgenerators,” in Computer-Aided Design, 1988. ICCAD-88. Digest of Technical Papers.,IEEE International Conference on, pp. 470–473, 1988.

[16] P. Abouzeid, R. Leveugle, and G. Saucier, “Logic synthesis for automatic layout,”in Proceedings of the IFIP WG10.2/WG10.5 Workshops on Synthesis for ControlDominated Circuits, (Amsterdam, The Netherlands, The Netherlands), pp. 335–343,North-Holland Publishing Co., 1993.

[17] C. Liem and M. Lefebvre, “A constructive matching algorithm for cell generator basedtechnology mapping,” in Circuits and Systems, 1992. ISCAS ’92. Proceedings., 1992IEEE International Symposium on, vol. 6, pp. 2965–2968, 1992.

[18] A. I. Reis, “Covering strategies for library free technology mapping,” IntegratedCircuit Design and System Design, Symposium on, p. 180, 1999.

[19] Y. Jiang, S. S. Sapatnekar, and C. Bamji, “Technology mapping for high-performancestatic cmos and pass transistor logic designs,” IEEE Trans. Very Large Scale Integr.Syst., vol. 9, no. 5, pp. 577–589, 2001.

[20] V. Correia and A. I. Reis, “Advanced technology mapping for standard-cellgenerators,” in SBCCI ’04: Proceedings of the 17th symposium on Integrated circuitsand system design, (New York, NY, USA), pp. 254–259, ACM, 2004.

[21] F. S. Marques, L. S. R. Jr, R. P. Ribas, S. S. Sapatnekar, and A. I. Reis, “Dag basedlibrary-free technology mapping,” in GLSVLSI ’07: Proceedings of the 17th ACMGreat Lakes symposium on VLSI, (New York, NY, USA), pp. 293–298, ACM, 2007.

[22] F. R. Schneider, R. P. Ribas, S. S. Sapatnekar, and A. I. Reis, “Exact lower bound forthe number of switches in series to implement a combinational logic cell,” in ICCD ’05:Proceedings of the 2005 International Conference on Computer Design, (Washington,DC, USA), pp. 357–362, IEEE Computer Society, 2005.

[23] S. K. Karandikar and S. S. Sapatnekar, “Logical effort based technology mapping,”Computer-Aided Design, International Conference on, pp. 419–422, 2004.

REFERÊNCIAS BIBLIOGRÁFICAS 191

[24] D. Debnath and T. Sasao, “Efficient computation of canonical form for booleanmatching in large libraries,” Asia and South Pacific Design Automation Conference,pp. 591–596, 2004.

[25] L. S. da Rosa Jr, “Automatic generation and evaluation of transistor networks indifferent logic styles,” 2008. Doctorate thesis, UFRGS.

[26] C. Chang, B. Hu, and M. Marek-Sadowska, “In-place delay constrained poweroptimization using functional symmetries,” in DATE ’01: Proceedings of theconference on Design, automation and test in Europe, (Piscataway, NJ, USA), pp. 377–382, IEEE Press, 2001.

[27] H. A. Curtis, A New Approach to the Design of Switching Circuits. Van Nostrand,1962.

[28] Altera, “Improving fpga performance and area using an adaptive logic module,” 2004.available at http://www.altera.com/literature/cp/cp-01004.pdf.

[29] Xilinx, “Achieving higher system performance withthe virtex-5 family of fpgas,” 2006. available athttp://www.xilinx.com/support/documentation/white_papers/wp245.pdf.