• Nenhum resultado encontrado

Hierarchical Add One Carry Select Adder: Um Somador Select-Adder com Cadeia de Carry Logarítmica

N/A
N/A
Protected

Academic year: 2021

Share "Hierarchical Add One Carry Select Adder: Um Somador Select-Adder com Cadeia de Carry Logarítmica"

Copied!
174
0
0

Texto

(1)

Hierarchical Add-One Carry-Select Adder: Um

Somador Select-Adder com Cadeia de Carry

Logarítmica

Florianópolis, Santa Catarina 2011.1

(2)

Hierarchical Add-One Carry-Select Adder: Um

Somador Select-Adder com Cadeia de Carry

Logarítmica

Trabalho de Conclusão de Curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Ciências da Computação.

Orientador:

Prof. Dr. José Luís Almada Güntzel

UNIVERSIDADEFEDERAL DE SANTA CATARINA

CENTROTECNOLÓGICO

DEPARTAMENTO DE INFORMÁTICA EESTATÍSTICA

Florianópolis, Santa Catarina 2011.1

(3)

Um Somador Select-Adder com Cadeia de Carry Logarítmica”, defendido por Jucemar Luis Monteiro e aprovado em 01 de junho de 2011, em Florianópolis, Santa Catarina, pela banca examinadora constituída pelos professores:

Prof. Dr. José Luís Almada Güntzel Universidade Federal de Santa Catarina

Orientador

Prof. Dr. Eduardo Luiz Ortiz Batista Universidade Federal de Santa Catarina

Membro da Banca

Prof. Dr. Djones Vinícius Lettnin Universidade Federal de Santa Catarina

(4)

Em primeiro lugar agradeço aos meus pais por todo apoio e incentivo que me proporciona-ram durante a graduação.

Ao Professor Güntzel pela orientação no desenvolvimento deste trabalho. Também agra-deço aos membros da banca pelas sugestões e correções.

A todos os colegas do LAPS. Em especial ao Vinicíus Livramento e ao Pedro Campos pela contribuição no desenvolvimento deste trabalho e aos Professores Olinto José Varela Furtado e Luiz Cláudio Villar dos Santos pela avaliação do trabalho na disciplina Trabalho de Conclusão de Curso I.

A todos os meus amigos pelo incentivo e amizade desde os tempos de CEFET/SC. Obrigado Rodolfo Cruz, Rodrigo Rothbath, Bruno Volkov, Douglas Machado e Luciano Martin. Em especial agradeço ao Professor Willy Sommer pelo incentivo e ajuda quando eu comecei a graduação.

Agradeço às bolsas de iniciação científica ITI-A do CNPq via projetos SiSRAS e BRAZIL-IP.

(5)
(6)

Lista de Figuras Lista de Tabelas Lista de Acrônimos p. 13 Resumo p. 15 Abstract p. 16 1 Introdução p. 17

1.1 A Adição Binária em Hardware . . . p. 17

1.2 Objetivos . . . p. 18

1.2.1 Objetivos Gerais . . . p. 18

1.2.2 Objetivos Específicos . . . p. 18

1.3 Escopo deste Trabalho . . . p. 18

1.4 Projeto de Circuitos Integrados Customizados e Metodologia de Projeto

Ba-seado em Células (Cell-Based Design) . . . p. 19

1.4.1 Projeto de Circuitos Integrados Customizados . . . p. 19

1.4.2 Metodologia Cell-Based Design . . . p. 19

1.5 Organização deste Trabalho . . . p. 21

2 Arquiteturas Básicas de Somadores p. 22

2.1 Carry-Ripple Adder . . . p. 22

(7)

2.1.3 Arquitetura Carry-Ripple Adder . . . p. 24

2.2 Carry-Lookahead Adder . . . p. 25

2.3 Carry-Select Adder . . . p. 29

3 Add-One Adders p. 31

3.1 Add-One Carry-Select Adder . . . p. 31

3.2 Hierarchical Add-One Carry-Select Adder . . . p. 36

4 Síntese Lógica dos Somadores p. 39

4.1 Configuração Experimental . . . p. 39

4.2 Controle do Processo de Otimização no Design Compiler . . . p. 41

4.3 Somadores Descritos em Formato de Árvore Binária . . . p. 42

4.4 Somadores Descritos com os Blocos Básicos em Formato de Cascata . . . p. 45

4.5 Verificação Funcional . . . p. 46

4.6 Provável Esquemático do Full-Adder da Biblioteca . . . p. 47

5 Resultados Experimentais p. 48

5.1 Blocos Básicos Carry-Ripple Adder e Carry-Lookahead Adder . . . p. 48

5.1.1 Atraso Crítico para os Blocos Básicos . . . p. 48

5.1.2 Consumo de Potência para os Blocos Básicos . . . p. 49

5.1.3 Área para os Blocos Básicos . . . p. 50

5.1.4 Power-Delay Productpara os Blocos Básicos . . . p. 51

5.1.5 Consumo de Potência por Unidade de Área para os Blocos Básicos . p. 52

5.2 Atraso Crítico para os Somadores . . . p. 53

5.3 Consumo de Potência para os Somadores . . . p. 57

5.4 Área para os Somadores . . . p. 61

(8)

6 Conclusões e Trabalhos Futuros p. 69

6.1 Conclusões . . . p. 69

6.2 Trabalhos Futuros . . . p. 69

Referências Bibliográficas p. 71

Anexo A -- Células da Biblioteca Utilizadas na Síntese Lógica p. 73

Anexo B -- Artigo p. 76

Anexo C -- Código Fonte dos Somadores (Verilog) p. 84

C.1 Código Fonte do Add-One Carry-Select Adder . . . p. 84

C.1.1 Código Fonte do Add-One Carry-Select Adder 8 bits . . . p. 84

C.1.2 Código Fonte do Add-One Carry-Select Adder 16 bits . . . p. 89

C.1.3 Código Fonte do Add-One Carry-Select Adder 32 bits . . . p. 90

C.1.4 Código Fonte do Add-One Carry-Select Adder 64 bits . . . p. 92

C.1.5 Código Fonte do Add-One Carry-Select Adder 128 bits . . . p. 95

C.1.6 Código Fonte do Add-One Carry-Select Adder 256 bits . . . p. 100

C.2 Código Fonte do Hierarchical Add-One Carry-Select Adder . . . p. 109

C.2.1 Código Fonte do Hierarchical Add-One Carry-Select Adder 8 bits . . p. 109

C.2.2 Código Fonte do Hierarchical Add-One Carry-Select Adder 16 bits . p. 116

C.2.3 Código Fonte do Hierarchical Add-One Carry-Select Adder 32 bits . p. 117

C.2.4 Código Fonte do Hierarchical Add-One Carry-Select Adder 64 bits . p. 119

C.2.5 Código Fonte do Hierarchical Add-One Carry-Select Adder 128 bits . p. 120

C.2.6 Código Fonte do Hierarchical Add-One Carry-Select Adder 256 bits . p. 122

C.3 Código Fonte do Carry-Ripple Adder . . . p. 123

(9)

C.3.3 Código Fonte do Carry-Ripple Adder 32 bits . . . p. 127

C.3.4 Código Fonte do Carry-Ripple Adder 64 bits . . . p. 128

C.3.5 Código Fonte do Carry-Ripple Adder 128 bits . . . p. 129

C.3.6 Código Fonte do Carry-Ripple Adder 256 bits . . . p. 130

C.4 Código Fonte do Carry-Lookahead Adder . . . p. 131

C.4.1 Código Fonte do Carry-Lookahead Adder 8 bits . . . p. 131

C.4.2 Código Fonte do Carry-Lookahead Adder 16 bits . . . p. 141

C.4.3 Código Fonte do Carry-Lookahead Adder 32 bits . . . p. 142

C.4.4 Código Fonte do Carry-Lookahead Adder 64 bits . . . p. 143

C.4.5 Código Fonte do Carry-Lookahead Adder 128 bits . . . p. 145

C.4.6 Código Fonte do Carry-Lookahead Adder 256 bits . . . p. 146

C.5 Código Fonte do Carry-Select Adder . . . p. 148

C.5.1 Código Fonte do Carry-Select Adder 8 bits . . . p. 148

C.5.2 Código Fonte do Carry-Select Adder 16 bits . . . p. 153

C.5.3 Código Fonte do Carry-Select Adder 32 bits . . . p. 154

C.5.4 Código Fonte do Carry-Select Adder 64 bits . . . p. 156

C.5.5 Código Fonte do Carry-Select Adder 128 bits . . . p. 159

(10)

2.1 Carry-Ripple Adderde n bits. . . p. 24

2.2 Carry-Lookahead Adderde 4 bits. . . p. 27

2.3 Carry-Lookahead Adderhierárquico de 16 bits. . . p. 28

2.4 Carry-Select Adderde 16 bits. . . p. 30

3.1 Add-One Carry-Select Addere Add-One Block para 4 bits. . . p. 32

3.2 Bloco Add-One Carry-Select Adder. . . p. 35

3.3 Add-One Carry-Select Adderde 16 bits. . . p. 36

3.4 Hierarchical Add-One Carry-Select Adderde 16 bits. . . p. 36

3.5 Add-One Selectmapeado para portas lógicas e o Bloco A1CSA. . . p. 37

4.1 Bloco CLA dividido em vários módulos. . . p. 41

4.2 Add-One Selecte Bloco A1CSA para o Hierarchical Add-One Carry-Select

Adder. . . p. 42

4.3 Carry-Lookahead Addercom o Carry-in fixado em 0. . . p. 43

4.4 Esquemático do Hierarchical Add-One Carry-Select Adder descrito para 16

bits. . . p. 44

4.5 Carry-Ripple Adderdescrito para 16 bits. . . p. 44

4.6 Carry-Select Adderdescrito para 16 bits. . . p. 45

4.7 Esquema de verificação funcional. . . p. 46

4.8 Full-Adderde CMOS complementar [Rabaey, Chandrakasan e Nikoli´c 2003]. p. 47

5.1 Atraso crítico dos somadores para os blocos básicos. . . p. 49

5.2 Consumo de potência dos somadores para os blocos básicos. . . p. 50

(11)

5.5 Consumo de potência por unidade de área dos somadores para os blocos básicos. p. 53

5.6 Atraso crítico dos somadores. . . p. 55

5.7 Atraso crítico normalizado dos somadores. . . p. 56

5.8 Razão entre o atraso crítico dos somadores. . . p. 57

5.9 Consumo de potência dos somadores. . . p. 58

5.10 Consumo de potência normalizado dos somadores. . . p. 59

5.11 Razão entre o consumo de potência dos somadores. . . p. 61

5.12 Área dos somadores. . . p. 62

5.13 Área normalizada dos somadores. . . p. 63

5.14 Razão entre a área dos somadores. . . p. 64

5.15 Power-Delay Product dos somadores. . . p. 65

(12)

2.1 Exemplo de soma binária. . . p. 22

2.2 Tabela Verdade para a operação de soma com um Half-Adder (HA). . . p. 23

2.3 Tabela Verdade para a operação de soma com um Full-Adder (FA). . . p. 24

3.1 Propriedade 1 para adicionar 1 a uma soma. . . p. 33

3.2 Propriedade 2 a adicionar 1 a uma soma. . . p. 33

3.3 Propriedade 3 para adicionar 1 a uma soma. . . p. 34

5.1 Atraso crítico dos somadores para os blocos básicos (ps). . . p. 49

5.2 Consumo de potência dos somadores para os blocos básicos (µW). . . p. 50

5.3 Área dos somadores para os blocos básicos (µm2). . . p. 51

5.4 Power-Delay Productdos somadores para os blocos básicos (fJ). . . p. 52

5.5 Consumo de potência por unidade de área dos somadores para os blocos

bá-sicos (Wm−2). . . p. 53

5.6 Atraso crítico dos somadores (ps). . . p. 54

5.7 Atraso crítico normalizado dos somadores. . . p. 55

5.8 Razão entre o atraso crítico dos somadores. . . p. 56

5.9 Consumo de potência dos somadores (µW). . . p. 58

5.10 Consumo de potência normalizado dos somadores. . . p. 59

5.11 Razão entre o consumo de potência dos somadores. . . p. 60

5.12 Área dos somadores (µm2). . . p. 62

5.13 Área normalizada dos somadores. . . p. 63

5.14 Razão entre a área dos somadores. . . p. 64

(13)

5.17 Razão entre a eficiência energética dos somadores. . . p. 66

5.18 Consumo de potência por unidade de área dos somadores (Wm−2). . . p. 67

A.1 Número de transistores. . . p. 73

A.2 Número de Células para o Add-One Carry-Select Adder (A1CSA),

Hierar-chical Add-One Carry-Select Adder (A1CSAH) e Carry-Lookahead Adder

(CLA). . . p. 74

A.3 Número de Células para o Carry-Ripple Adder (CRA) e Carry-Select Adder

(14)

A1 Add-One

A1S Add-One Select

A1CSA Add-One Carry-Select Adder

A1CSAH Hierarchical Add-One Carry-Select Adder B-A1CSA Bloco A1CSA

B-CLA Bloco CLA B-CSA Bloco CSA CI Circuito Integrado CIN Carry-in

CLA Carry-Lookahead Adder

CMOS Complementary Metal-Oxide Semiconductor COUT Carry-out

CRA Carry-Ripple Adder CSA Carry-Select Adder DC Design Compiler

DUV Somador Sob Verificação E AND

FA Full-Adder

FPGA Field-Programmable Gate Array GEN Generate

(15)

Gb Generatedo Bloco

Gh Generateda Hierarquia entre os blocos

GPH Bloco de Ligação na Hierarquia HA Half-Adder

HDL Hardware Description Language IC Integrated Circuit MUX Multiplexador MUX Multiplexor OR OR PDP Power-Delay Product PROP Propagate Pb Propagatedo Bloco

Ph Propagateda Hierarquia entre os blocos

REF Somador de Referência

RIC Re-computing the Inverse Carry-in RTL Register Transfer Level

Ci Sinal de Seleção

TSMC Taiwan Semiconductor Manufacturing Company Limited VHDL VHSIC Hardware Description Language

(16)

Resumo

O uso de Circuito Integrado (CI) está cada vez mais presente no nosso cotidiano. Muitos desses dispositivos são alimentados por baterias e, consequentemente, precisam ter um exce-lente compromisso entre atraso crítico e consumo de energia. Usualmente, em um projeto de um CI, prioriza-se o consumo de energia ou o atraso crítico. Esses requisitos normalmente são conflitantes, por isso, ao otimizar um há o deterioramento natural do outro.

O somador é uma das unidades aritméticas mais importantes. As operações aritméticas binárias podem ser derivadas para uma sequência de somas. A importância do somador pode colocá-lo como parte do caminho crítico. Assim sendo, o atraso crítico pode ser reduzido com a introdução de um somador rápido. Contudo, um somador rápido normalmente tem área e consumo de energia maiores do que um somador mais lento. Em geral, quando se reduz uma variável de um somador (área, atraso crítico ou consumo de energia) as outras duas tem um aumento significativo.

Este trabalho propõem uma nova organização para os blocos de 4 bits do Add-One

Carry-Select Adder (A1CSA). Essa nova organização é chamada de Hierarchical Add-One

Carry-Select Adder(A1CSAH). Tal organização torna-o um dos somadores com o atraso crítico

apro-ximadamente o mesmo do Carry-Lookahead Adder (CLA). O carry no A1CSAH é propagado em tempo logarítmico, da mesma maneira que o carry é propagado no CLA. O A1CSAH é, em média, 12% mais rápido do que o CLA, o qual é uma das arquiteturas de somador mais rápida, segundo a literatura.

A segunda contribuição deste trabalho é a otimização do bloco que adiciona 1 do A1CSA. Nos trabalhos correlatos esse bloco precisa de um Multiplexador (MUX) para realizar a seleção da soma candidata apropriada. No bloco proposto neste trabalho, a função exercida pelo MUX é absorvida pela porta Exclusive-OR (XOR) preexistente. Com isso, o bloco para adicionar 1 proposto é menor do que o existente nos trabalhos correlatos.

Ainda, este trabalho caracteriza os somadores A1CSA, A1CSAH, CLA, CRA e o CSA para uma biblioteca de células da Taiwan Semiconductor Manufacturing Company Limited (TSMC). Eles foram sintetizados logicamente com o auxílio da ferramenta Design Compiler (DC) da Sy-nospys em modo “Topographical”. As arquiteturas dos somadores foram descritas em Verilog para tamanhos de operandos de 8, 16, 32, 64, 128 e 256 bits.

(17)

Abstract

Nowadays we are using more Integrated Circuit (IC) in our daily lives. Many of these devices are powered by batteries. They therefore need an excellent compromise between per-formance and power consumption. Usually either power comsumption or perper-formance is prio-ritized in a IC project. These requirements are normally conflicting. When one requirement is optimized the other is affected.

The adder is one of the most important arithmetic circuits. The binary arithmetic operations addition, subtraction, multiplication and division can be derived for a sequence of sums. The importance of the adder can put it as part of the critical path. Thus, the critical delay can be reduced by substituting a slow adder by a fast one. However, a fast adder typically has area and power consumption higher than a slower one. In general, when one of the variables of an adder (area, delay or power consumption) is reduced, the other two have a significant increase.

This work proposes a new organization for 4-bit Add-One Carry-Select Adder (A1CSA) blocks. The proposed is called Hierarchical Add-One Carry-Select Adder (A1CSAH). The A1CSA blocks are arranged in binary tree structure. This arrangement make it one of the fastest adders. The carry is propagated in the A1CSAH faster than A1CSA. The carry in the A1CSA is propagated the same way that it is propagated in the Carry-Lookahead Adder (CLA). The A1CSAH is, on average, 12% faster than the CLA, which is one of the fastest adder architectures, according to literature.

The second contribution is the optimization of a block that adds one in the A1CSA. In related works, this block needs a Multiplexor (MUX) to perform selection of the appropriate sum. In block proposed in this work, the function of MUX is absorbed by the pre-existing

Exclusive-OR(XOR) gate. Thus, the block proposed is smaller and fastest than the block in

related works.

This work characterizes A1CSA, A1CSAH, CLA, Select Adder (CSA) and

Carry-Ripple Adder (CRA) for a Standard-Cells library of Taiwan Semiconductor Manufacturing

Company Limited(TSMC). They have been logically synthesized with the aid of the tool

De-sign Compiler (DC) of Synospys in Topographical Mode. The architectures of adders were

(18)

1

Introdução

1.1

A Adição Binária em Hardware

Um somador de n bits é um componente de bloco operacional que adiciona dois números (A0...n−1 e B0...n−1) de n bits e um Carry-in (CIN) de 1 bit. Ele gera uma soma (S0...n−1) de n

bits e um Carry-out (COUT) de 1 bit. Normalmente, n é referido como sendo o tamanho dos operandos do somador [Vahid 2008].

A adição é uma operação primitiva presente em praticamente todos os Circuito Integrados (CIs) [Rabaey, Chandrakasan e Nikoli´c 2003]. Como consequência, o atraso crítico de um cir-cuito aritmético depende fortemente da maneira como o carry é propagado no somador [Des-champs, Bioul e Sutter 2006]. Não obstante, as operações aritméticas binárias subtração, mul-tiplicação e divisão podem ser derivadas para uma sequência de soma binária [Takagi et al. 2007].

Há diversas formas de implementar um somador binário. O Carry-Ripple Adder (CRA) é a forma fatorada de implementar a adição binária. Assim sendo, ele apresenta a menor área e o menor consumo de energia. Contudo, ele tende a ter um atraso crítico maior. O

Carry-Lookahead Adder(CLA) é um dos somadores com o menor atraso crítico. Porém, sua área e

potência sofrem um significativo aumento em relação ao CRA.

O Carry-Select Adder (CSA) é uma proposta para acelerar a propagação do carry em relação ao CRA. Os operandos são divididos em pequenos segmentos e em cada segmento é computada duas somas candidatas: uma com o CIN 0 e a outra com o CIN 1. Assim que os resultados estiverem disponíveis, a soma candidata correta é selecionada. A área e o consumo de energia do CSA são praticamente o dobro do CRA. Contudo, o atraso crítico do CSA é menor do que o do CRA.

O Add-One Carry-Select Adder (A1CSA) é uma proposta para otimizar a computação das somas candidatas do CSA. No A1CSA é realizado uma soma com o CIN 0 e após é adicionado 1 ao resultado. Com isso, tem-se duas somas candidatas. A unidade para adicionar 1 é menor

(19)

do que um somador. Assim sendo, há a redução da área e do consumo de energia do A1CSA em relação ao CSA.

A otimização da cadeia de carry proposta nesse trabalho, Hierarchical Add-One

Carry-Select Adder (A1CSAH), utiliza o mesmo procedimento do A1CSA para computar as somas

candidatas, mas propaga o carry muito mais rápido do que o A1CSA. Assim sendo, ele é mais rápido do que o A1CSA. Não obstante, o A1CSAH também é mais rápido do que o CLA.

1.2

Objetivos

1.2.1

Objetivos Gerais

O objetivo geral deste trabalho é propor implementações do A1CSA em tecnologia

Com-plementary Metal-Oxide Semiconductor (CMOS) para o fluxo de projeto Standard-Cells. No

fluxo de projeto Standard-Cells o código Hardware Description Language (HDL) é mapeado automaticamente e sem dimensionamento de transistores para uma biblioteca Standard-Cells.

1.2.2

Objetivos Específicos

Este trabalho tem como objetivos específicos:

• Propor otimizações na cadeia de propagação do carry do somador A1CSA visando sua implementação em um fluxo de projeto baseado em Standard-Cells.

• Avaliar a área, o atraso crítico, a potência e a eficiência energética dos somadores CRA, CLA, CSA, A1CSA e A1CSA com cadeia de propagação de carry otimizada (A1CSAH), quando implementados em Standard-Cells utilizando uma biblioteca comercial em tec-nologia CMOS estado da arte (45nm).

1.3

Escopo deste Trabalho

As arquiteturas de somadores que são objeto deste trabalho foram descritas em lingua-gem Verilog. Elas foram sintetizadas para uma biblioteca Standard-Cell comercial de 45 nm utilizando a ferramenta Design Compiler em modo Topographical da empresa Synopsys. As estimativas de área, atraso crítico e potência geradas pelo Design Compiler foram utilizadas para estabelecer comparações entre as arquiteturas de somadores.

(20)

1.4

Projeto de Circuitos Integrados Customizados e

Metodo-logia de Projeto Baseado em Células (Cell-Based Design)

1.4.1

Projeto de Circuitos Integrados Customizados

Desenhar o circuito integrado manualmente parece ser a única opção quando o atraso crítico ou a densidade do projeto são os requisitos principais. Essa metodologia era a única opção quando os circuitos integrados foram introduzidos. A característica de trabalho intensivo ao projetar circuitos integrados customizados traduz-se em alto custo econômico e longo time-to-market. Contudo, ele pode ser justificado economicamente sobre as seguintes condições [Rabaey, Chandrakasan e Nikoli´c 2003]:

• Um bloco do circuito integrado pode ser reusado muitas vezes [Rabaey, Chandrakasan e Nikoli´c 2003].

• O custo econômico do projeto customizado pode ser amortizado sobre uma produção em larga escala [Rabaey, Chandrakasan e Nikoli´c 2003].

• O custo econômico não é o principal critério de projeto [Rabaey, Chandrakasan e Nikoli´c 2003].

O progresso contínuo em projeto automatizado reduziu o compartilhamento de partes de circuitos integrados customizados. Nos mais avançados processadores de alta performance, usualmente, todas as partes são projetadas usando circuitos integrados semi-customizados. So-mente os módulos do caminho crítico são projetados manualSo-mente. AtualSo-mente, um circuito integrado projetado manualmente é melhor somente em área do que um circuito integrado pro-jeta com biblioteca de células. A quantidade de projetos de circuito integrado customizado é minimo, porém para alguns projeto é indispensável o projeto customizado [Rabaey, Chandra-kasan e Nikoli´c 2003].

1.4.2

Metodologia Cell-Based Design

Desde que o projeto customizado de circuitos integrados tornou-se proibitivamente caro, uma variedade de metodologias de projeto tem sido introduzida para reduzir e automatizar o processo de projeto dos circuitos integrados. A proposta da metodologia de projeto Cell-Based é reduzir o esforço de implementação ao reutilizar um conjunto limitado de células de uma biblioteca. A vantagem dessa metodologia é que as células precisam ser projetadas e verificadas somente uma vez para uma tecnologia, e elas podem ser reutilizadas inúmeras vezes, assim

(21)

o custo de projeto é amortizado. A desvantagem é que as restrições da biblioteca reduz a possibilidade de ajuste fino no projeto do circuito integrado [Rabaey, Chandrakasan e Nikoli´c 2003].

A abordagem Standard-Cells da metodologia Cell-Based Design é padronizado em nível de portas lógicas. Uma biblioteca de células contém uma ampla seleção de portas lógicas sobre uma faixa de fan-in e fan-out. A biblioteca contém portas lógicas para funções básicas, tais como: inversores, AND/NAND, OR/NOR, XOR/XNOR e flip-flops, e portas lógicas para funções mais complexas, tais como: AND-OR-INVERTER, MUX, full-adder, comparadores, contado-res, codificadores e decodificadores. Um projeto é capturado como um esquemático contendo somente as células disponíveis na biblioteca ou é gerada automaticamente a partir de uma des-crição com uma linguagem de alto nível. Então, o layout é gerado automaticamente. Esse alto grau de automação é possível por causa do alto grau de restrições sobre as opções de layout. Na filosofia Standard-Cells, as células são colocadas em linhas separadas por canais de roteamento. Assim sendo, todas as células da biblioteca devem ter a mesma altura. Contudo, o comprimento das células pode variar para acomodar a variação de complexidade entre as células [Rabaey, Chandrakasan e Nikoli´c 2003].

A abordagem Standard-Cells tem tornado-se popular e é usada em praticamente todos os elementos lógicos dos circuitos integrados atuais. A única exceção é quando a extrema alta performance ou baixo consumo de energia são requisitos ou quando a estrutura funcional do elemento lógico é regular, como memórias e multiplicadores. O sucesso da abordagem

Standar-Cellspode ser atribuída [Rabaey, Chandrakasan e Nikoli´c 2003]:

• A melhoria na qualidade do posicionamento e roteamento automático das ferramentas em conjunto com a disponibilidade de múltiplos níveis de roteamento. Estudos mostram que a abordagem automática atualmente é igual ou melhor do que o projeto manual para circuitos complexos e irregulares [Rabaey, Chandrakasan e Nikoli´c 2003].

• O advento de sofisticadas ferramentas de síntese lógica. A abordagem por síntese lógica permite que todo o projeto possa ser realizado em alto nível de abstração usando equa-ções booleanas, máquinas de estado ou linguagens Register Transfer Level (RTL), tais como: Verilog ou VHSIC Hardware Description Language (VHDL). A ferramenta de síntese lógica automaticamente traduz essas especificações para uma rede de portas lógi-cas da biblioteca de células, minimizando para um custo específico como área, consumo de energia ou atraso crítico [Rabaey, Chandrakasan e Nikoli´c 2003].

(22)

1.5

Organização deste Trabalho

Este trabalho está organizado em 6 capítulos. O Capítulo 1 introduz a adição binária e os objetivos gerais e específicos. O Capítulo 2 revisa as arquiteturas CRA, CLA e CSA. No Capítulo 3 é apresentado o A1CSA e a proposta, A1CSAH, de propagação rápida do carry, além da otimização no circuito para adicionar 1. O Capítulo 4 descreve as otimizações para cada arquitetura na implementação, bem como a maneira de implementar cada somador para operandos maiores do que 4 bits. No capítulo 4 também são mostradas as restrições impostas à ferramenta de síntese lógica para evitar que esta descaracterizasse os somadores. O Capítulo 5 apresenta e discute os resultados experimentais. No Capítulo 6 são mostradas as conclusões e os trabalhos futuros.

(23)

2

Arquiteturas Básicas de Somadores

2.1

Carry-Ripple Adder

A soma binária adiciona dois operandos (A e B) gerando um resultado S e um bit de excesso ou transporte, referido como COUT. Usualmente a adição binária é realizada da direita para a esquerda. Com isso o bit menos significativo é o mais a direita. A Tabela 2.1 mostra a um exemplo de adição em binário dos números 19 e 14, resultando na soma (S) igual a 1 (00001) e no COUT igual a 1. No exemplo mostrado, o par de bits menos significativo pode ser operado com um Half-Adder (HA), já os demais pares de bits devem ser operados com um

Full-Adder(FA).

Tabela 2.1: Exemplo de soma binária.

11110- carry

10011 A

01110 B

00001 S

2.1.1

Half-Adder

Um HA é um componente combinacional que adiciona um par de bits de pesos iguais, os operandos A e B, e gera um bit de soma (S) e um bit de excesso ou transporte (carry), referido por COUT [Vahid 2008].

(24)

Tabela 2.2: Tabela Verdade para a operação de soma com um HA. A B Cout S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0

Analisando a tabela verdade é possível concluir que o COUT da soma com o HA é o re-sultado de uma operação AND (E) entre o par de bits dos operandos. A Equação 2.1 mos-tra como é computado o COUT. O resultado da soma com o HA é o resultado da operação

Exclusive-OR(XOR) entre o par de bits. A Equação 2.2 mostra o cálculo da soma [Hwang

1979, Oklobdzija 2001, Frank 2007, Mesquita 2007].

Cout = A.B (2.1)

S= A ⊕ B (2.2)

2.1.2

Full-Adder

Um FA é um componente combinacional que adiciona três bits de pesos iguais, os operan-dos A e B e o CIN, e gera um bit de soma (S) e um bit de excesso ou transporte (carry), referido por COUT [Vahid 2008].

(25)

Tabela 2.3: Tabela Verdade para a operação de soma com um FA. Cin A B Cout S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1

O COUT é computado de forma fatorada como mostrado na Equação 2.3. Bem como, a soma é calculada com um XOR do CIN e do par de operandos. A Equação 2.4 mostra o cálculo do soma em um FA [Hwang 1979, Oklobdzija 2001, Frank 2007, Mesquita 2007].

Cout= A.B + A.Cin+ B.Cin (2.3)

S= A ⊕ B ⊕Cin (2.4)

2.1.3

Arquitetura Carry-Ripple Adder

Um Carry-Ripple Adder (CRA) pode ser construído trivialmente conectando-se o COUT de um FA com o CIN do FA subsequente [Mesquita 2007]. O FA do bit menos significativo pode ser substituído por um HA quando os operandos não possuem CIN. Teoricamente pode-se construir um CRA para qualquer tamanho de operandos, desde que seja conectado quantos FA forem necessários [Hwang 1979, Oklobdzija 2001, Frank 2007, Mesquita 2007]. A Figura 2.1 mostra um CRA de n bits construído com FAs.

(26)

O CRA é um dos somadores que consomem menos recursos de hardware e um dos que consomem menos energia. Contudo, o tempo necessário para produzir a soma e o COUT é muito maior do que em um somador rápido, pois o atraso crítico em um CRA é dependente do tamanho dos operandos [Brown e Vranesic 2000]. O CRA é um dos somadores mais lentos, pois o carry é propagado por todos os FAs. Um FA espera o carry ser propagado por todos os FAs anteriores para completar a soma e disponibilizar o COUT [Frank 2007]. Consequentemente, a complexidade assintótica de um CRA para o atraso crítico e área é O(n) [Tyagi 1993].

2.2

Carry-Lookahead Adder

Um somador com propagação do carry em tempo logarítmico foi proposto por [Weinber-ger e Smith 1958]. Teoricamente, o Carry-Lookahead Adder (CLA) é um dos somadores mais rápidos, pois o carry é propagado em tempo do logarítmico em relação ao tamanho dos operan-dos [Oklobdzija 2001].

O atraso crítico do CLA é caracterizado por uma função logarítmica do tamanho dos ope-randos. Ou seja, no pior caso, o COUT do CLA está disponível em log(n), no qual n é o tamanho dos operandos. Já no caso do CRA, o COUT está disponível em n, no qual n é o tamanho dos operandos. No CRA, o carry deve passar por todos os pares de bits dos operandos até estar disponível. No CLA, o carry não passa por todos os pares de bits dos operandos, pois ele é computado em paralelo para cada par de bits. Assim sendo, a propagação do carry é acelerada. A passagem rápida do carry entre cada par de bits dos operandos é realizada com o auxílio dos sinais de Propagate (PROP) e Generate (GEN). O PROP detecta se um par de bits dos operandos em qualquer ordem passa o carry para o próximo par de bits. Ele sinaliza que esse par de bits está apto a passar o carry. A Equação 2.5 mostra como a computação do PROP é realizada. O sinal de GEN detecta se o par de bits dos operandos em qualquer ordem gera um carry. A Equação 2.6 mostra como detectar a geração de um carry para cada para de bits dos operandos. O tempo de computação do PROP e do GEN é constante, independente do tamanho dos operandos.

Pi= Ai⊕ Bi (2.5)

Gi= Ai.Bi (2.6)

Contudo, o carry deve ser passado rapidamente por uma sequência de pares de bits. O CIN e o PROP e GEN de cada par de bits dos operandos são usados nas equações que mostram como realizam tal procedimento. As Equações 2.7, 2.8 e 2.9 mostram o cálculo dos carries para o primeiro, segundo e terceiro par de bits, respectivamente. A computação em paralelo de cada

(27)

carrypara cada par de bits dos operandos evita que ele seja propagado por cada estágio. No caso do CRA, o carry deve ser propagado por cada estágio de soma. Assim sendo, o respectivo carry para cada par de bits está disponível em um tempo menor e a operação de adição é acelerada no CLA. A Equação 2.10 mostra uma generalização para computar o carry para qualquer tamanho de sequência de pares de bits dos operandos.

C0= G0+ P0.Cin (2.7)

C1= G1+ P1.G0+ P1.P0.Cin (2.8)

C2= G2+ P2.G1+ P2.P1.G0+ P2.P1.P0.Cin (2.9)

Ci−1= Gi−1+ Pi−1.Gi−2+ ... + Pi−1.Pi−2...P0.Cin (2.10)

A operação de soma é finalizada em qualquer ordem dos operandos com o auxílio do PROP da mesma ordem e do carry dos pares de bits anteriores. A Equação 2.11 mostra como a soma é completada no CLA.

Si= Pi⊕Ci−1 (2.11)

Um CLA com o tamanho de operandos maiores do que 4 bits não é viável, pois as restrições de fan-in e fan-out são violadas. Usualmente, o fan-in máximo é limitado em 5 [Takagi et al. 2007]. O limite de transistores empilhados deve-se a características elétrica dos transistores, pois o sinal elétrico propagado por um conjunto de transistores empilhado é degradado ao passar por cada transistor [Rabaey, Chandrakasan e Nikoli´c 2003]. Assim sendo, limita-se o tamanho dos operandos do CLA a 4 bits, pois há no máximo 4 transistores empilhado ao implementá-lo. Um Bloco CLA (B-CLA) é um CLA limitado a operandos de 4 bits. Um B-CLA precisa

passar rapidamente o carry através de sua estrutura. Os sinais de Propagate do Bloco (Pb) e

Generate do Bloco (Gb) realizam tal procedimento. O Pb sinaliza que a sequência de pares

de bits do B-CLA propaga o CIN recebido pelo mesmo. O Gb mostra que um par de bits dos

operandos gerou um carry e este foi propagado dentro do B-CLA até o último par de bits. O

cálculo do Gb e do Pb são mostradas nas Equações 2.12 e 2.13, respectivamente, para um

B-CLA. A Equação 2.14 mostra a computação do COUT quando um B-CLA precisa realizar tal operação. Quando o tamanho dos operandos é maior do que 4 bits um B-CLA usualmente não computa o COUT, então essa equação pode ser eliminada. O COUT é computado na lógica responsável por conectar os B-CLAs quando o tamanho dos operandos é maior do que 4 bits.

(28)

Gb= G3+ P3.G2+ P3.P2.G1+ P3.P2.P1.G0 (2.12)

Pb= P3.P2.P1.P0 (2.13)

Cout = Gb+ Pb.Cin (2.14)

A Figura 2.2 mostra um B-CLA de 4 bits com a função de COUT. As Equações 2.5, 2.6, 2.7, 2.8, 2.9, 2.11, 2.12, 2.13 e 2.14 foram mapeadas para portas lógicas E, OR (OR) e XOR.

Figura 2.2: Carry-Lookahead Adder de 4 bits.

A maneira com a qual os B-CLAs são conectados faz com que o carry seja passado rapi-damente através deles. Normalmente, eles são conectados em formato de árvore binária. Com isso o carry é passado em log(n), pois nessa arquitetura a dependência da cadeia de carry é quebrada, portanto um B-CLA não precisa esperar a propagação do carry pelo B-CLA anterior para realizar a adição. A característica de log(n) deve-se ao fato de aumentar em um nível de lógica extra, aumentar em um nível a altura lógica que o carry deve passar, ao dobrar o tamanho dos operandos no CLA. Os B-CLAs também podem ser conectados ligando o COUT de um com o CIN do B-CLA seguinte. Contudo, essa maneira de conectar aumenta o atraso crítico do CLA, pois nesse caso há a dependência do carry estar pronto no B-CLA anterior para que o B-CLA atual possa propagá-lo para o próximo B-CLA.

A conexão entre os B-CLAs precisa de lógica extra, que computa o Generate da Hierarquia

(29)

carryestá sendo propagado. O Gh sinaliza que um carry foi gerado e este foi propagado. A

Figura 2.3 mostra o mapeamento em portas lógicas E e OR do CLA de 16 bits em formato de árvore binária. O Bloco de Ligação na Hierarquia (GPH) conecta dois B-CLAs ou dois GPHs. A maneira de conectar utilizando B-CLAs e GPHs pode ser estendida para construir somadores com o tamanho dos operandos maior.

Figura 2.3: Carry-Lookahead Adder hierárquico de 16 bits.

O GPH é responsável por computar o carry para o B-CLA dos bits de maior ordem ou calcular o carry para o GPH dos bits de maior ordem. Ele também é responsável por calcular o

Ph, o Gh e no último nível de hierarquia o COUT. A Equação 2.15 descreve como computar o

carry(C1) para o B-CLA1no GPH10. Por sua vez, na Equação 2.16 é mostrado como calcular o

Ph10 e na Equação 2.17 é mostrado como calcular o Gh10 para o GPH10, respectivamente. Para

o GPH11, as Equações 2.18, 2.19 e 2.20 descrevem como computar, respectivamente, o C3para

o B-CLA3, o Ph11 e o Gh11.

C1= Gb00+ Pb00.Cin (2.15)

(30)

Gh10= Gb01+ Pb01.Gb00 (2.17)

C3= Gb02+ Pb02.C2 (2.18)

Ph11= Pb02.Pb03 (2.19)

Gh11= Gb03+ Pb03.Gb02 (2.20)

O GPH20, último nível da hierarquia no exemplo mostrado na Figura 2.3, deve computar

também o COUT. As Equações 2.21, 2.22 e 2.23 mostram como computar o C2para o B-CLA2,

o Ph20 e o Gh20, respectivamente. Esse bloco também deve computar o COUT como mostrado

na Equação 2.24.

C2= Gh10+ Ph10.Cin (2.21)

Ph20= Ph10.Ph11 (2.22)

Gh20= Gh11+ Ph11.Gh10 (2.23)

Cout= Gh11+ Ph11.Gh10+ Ph11.Ph10.Cin (2.24)

O atraso crítico do CLA não é diretamente proporcional ao tamanho dos operandos, mas ao número de níveis usados na hierarquia, ou seja, ao número total de níveis de GPHs. Por causa disso, a função assintótica que caracteriza o atraso crítico é O(log n) e a que caracteriza a área é O(nlog n) [Oklobdzija 2001, Tyagi 1993].

2.3

Carry-Select Adder

O atraso crítico de um CRA pode ser reduzido particionando-o em blocos. Cada bloco computa duas somas candidatas, uma com o CIN fixado em 0 e a outra com o CIN fixado em 1. Então, seleciona-se a soma correta a partir do CIN para o bloco [Takagi et al. 2007, Bedrij 1962].

Um Bloco CSA (B-CSA) é composto por dois somadores, um com o CIN fixado em 0 e o outro com o CIN fixado em 1, e por um Multiplexador (MUX). Usualmente o tamanho dos operandos é limitado a 4 bits em um B-CSA, uma vez que operandos com tamanho grande podem ocasionar aumento demasiado no atraso crítico.

A adição com operandos extensos precisa que os B-CSAs sejam conectados de alguma

maneira. A conexão entre eles é realizada com lógica extra, que computa o Sinal de Seleção (Ci)

(31)

mostram como calcular o Ci para os três primeiros B-CSAs, respectivamente. Uma Equação

genérica para computar o Cide um B-CSA em qualquer ordem é mostrada em 2.28.

C0= Cin (2.25)

C1= C03+ (C13.Cin) (2.26)

C2= C07+ (C17.(C03+ (C13.Cin))) (2.27)

Cn= C0n+ (C1n.(C0(n−1)+ (C1(n−1).(...(C07+ (C17.(C03+ (C13.Cin)))))))) (2.28)

A Figura 2.4 mostra um CSA de 16 bits composto por quatro B-CSAs. A lógica extra pro-paga o carry para cada B-CSA e também para o COUT da adição. A complexidade assintótica de um CSA em relação ao atraso crítico é O(n) [Rabaey, Chandrakasan e Nikoli´c 2003]. A complexidade assintótica do CSA é igual a do CRA. Contudo, no CSA o carry não passa por cada par de bits dos operandos, ele passa por um circuito dedicado que é mais rápido.

A unidade somadora de um B-CSA pode ser um CRA quando o consumo de energia é o fator principal, senão ela pode ser substituída por um CLA quando o atraso crítico é o ponto principal [Rawat, Darwish e Bayoumi 2002].

(32)

3

Add-One Adders

O Somador Add-One é uma arquitetura em que uma soma é realizada com o CIN fixo em 0. Quando esta soma está pronto é adicionado 1 com um circuito dedicado. Este circuito é menor, consome menos potência e mais rápido do que um somador. No somador Add-One há duas somas candidatas, uma operada com o CIN igual a 0 e a outra computada com o CIN igual 1. Ao adicionar 1 a uma soma realizada com um somador e CIN igual a 0 tem-se o mesmo efeito de ter computado os operandos com um somador e CIN igual a 1. A decisão de qual soma candidata, a soma com CIN igual 0 ou a com CIN igual a 1, e baseada no carry. Se o carry for igual a 0, a soma realizada pelo somador é a correta, senão a soma que foi adicionado 1 com o circuito dedicado é a correta.

3.1

Add-One Carry-Select Adder

A computação de uma soma com CIN fixo em 0 e a adição de 1 a este resultado foi proposto por [Chang e Hsiao 1998]. Este modo de realizar adição binária foi chamado de Add-One. Não obstante, foram propostas melhorias para esse somador por [He, Chang e Gu 2005, Kim e Kim 2001a, Kim e Kim 2001b, Rawat, Darwish e Bayoumi 2002, yan, Xin e Xi 2008, yan, Xin e Xi 2008]. Contudo, todas essas melhorias foram baseadas em projeto em nível de transistor.

A implementação do A1CSA em HDL foi realizada por [Mesquita 2007, Mesquita et al. 2007, Mesquita et al. 2008]. Porém, ele foi sintetizado para Field-Programmable Gate

Ar-ray(FPGA). O A1CSA é chamado de Re-computing the Inverse Carry-in (RIC) pelo autor.

Contudo, o nome do somador foi trocado ao referenciar esses trabalhos nesta seção, pois os demais trabalhos correlatos referenciam o RIC como A1CSA.

O CSA não é uma implementação otimizada para “select adders”, pois ele realiza duas adições para depois decidir qual é a correta. Uma análise das propriedades da soma binária mostra que um dos somadores não é necessário, pois a diferença entre os resultados (com CIN igual a 0 e CIN igual a 1) no CSA é de apenas 1. Com isso, uma forma mais eficiente de projetar um Select-Adder é realizar a soma com CIN fixado em 0 e adicionar 1 quando a soma estiver

(33)

pronta.

O A1CSA faz uso de um somador e uma unidade Add-One (A1). Esta unidade realiza a mesma função de um somador e ainda é menor [Mesquita 2007, Mesquita et al. 2007, Mesquita et al. 2008]. A Figura 3.1(a) apresenta a arquitetura de um somador A1CSA de 4 bits e a Figura 3.1(b) mostra o A1 mapeado para portas lógicas. O A1 é ligado em série com a saída do somador. O objetivo principal do circuito A1 é completar a soma quando o CIN é igual a 1, pois o somador somente opera com o CIN fixado em 0 [Mesquita 2007, Mesquita et al. 2007, Mesquita et al. 2008].

(a) A1CSA de 4 bits. (b) A1 Block.

Figura 3.1: Add-One Carry-Select Adder e Add-One Block para 4 bits.

A adição de 1 a uma soma já existente depende de três propriedades. Elas determinam as posições que devem ser alteradas. Essas propriedades garantem que adicionar 1 a uma soma realizada como CIN igual a 0 é equivalente a realizar a mesma adição, mas com o CIN igual a 1.

Propriedade 1. Dados dois números a serem somados, se ambos os números possuírem o bit menos significativo igual a 0, o resultado da soma destes números com CIN igual a 1 é idêntico ao resultado da soma com CIN igual a 0, exceto pela inversão do valor do bit menos significativo do resultado [Mesquita 2007].

A Tabela 3.1 mostra um exemplo numérico da Propriedade 1. Os números 12 e 4 são somados em binário com o CIN distinto. O bit menos significativo da adição com CIN igual a 0 é o oposto da soma com CIN igual a 1.

(34)

Tabela 3.1: Propriedade 1 para adicionar 1 a uma soma.

Cin 0 Cin 1

A 01100 (12) A 01100 (12)

B 00100 (4) B 00100 (4)

S 010000 (16) S 010001 (17)

Propriedade 2. Se o resultado de uma adição entre dois números com CIN igual a 0 apresenta o bit menos significativo igual a 1, o resultado da adição destes mesmos dois números, mas com CIN igual a 1 é equivalente sendo necessária a inversão dos m bits do resultado menos significativos até que seja encontrado o primeiro 0. Este último também deve ser invertido [Mesquita 2007].

A Tabela 3.2 mostra um exemplo da Propriedade 2. Os números 17 e 6 são somados em binário com o CIN distinto. Os 4 bits menos significativos da adição com CIN igual a 1 estão invertidos em relação aos mesmos bits da soma com CIN igual a 0.

Tabela 3.2: Propriedade 2 a adicionar 1 a uma soma.

Cin 0 Cin 1

A 10001 (17) A 10001 (17)

B 00110 (6) B 00110 (6)

S 010111 (23) S 011000 (24)

Propriedade 3. Dois somadores idênticos recebendo os mesmos operandos de entrada, porém com carries de entrada distintos, exibem o mesmo carry de saída, exceto quando o AND lógico entre todos sinais propagate dos somadores resulta em um valor igual a 1 [Mesquita 2007].

Um exemplo para a Propriedade 3 é apresentado na Tabela 3.3. O COUT é diferente quando dois números (17 e 14) são somados em binário com o CIN distinto, pois todos os pares de bit dos operandos propagam o carry.

(35)

Tabela 3.3: Propriedade 3 para adicionar 1 a uma soma.

Cin 0 Cin 1

A 10001 (17) A 10001 (17)

B 01110 (14) B 01110 (14)

S 011111 (31) S 100000 (32)

Contudo, a soma de dois números com o CIN distinto pode gerar o mesmo COUT. Para isso, pelo menos um dos pares de bit dos operandos não propaga o carry. A Tabela 3.2 mostra um exemplo em que o COUT é igual ao somar os números 1 e 6 com o CIN distinto.

Baseada nas Propriedades 1 e 2, deriva-se as equações que mostram como adicionam 1 ao resultado de um somador com o CIN fixado em 0. As Equações 3.1, 3.2, 3.3 e 3.4 descrevem como realizam tal operação para os 4 bits menos significativos [Mesquita 2007]. Não obstante, uma equação genérica é mostrada em 3.5.

S0= R0 (3.1)

S1= R0⊕ R1 (3.2)

S2= (R0.R1) ⊕ R2 (3.3)

S3= (R0.R1.R2) ⊕ R3 (3.4)

Sn= (R0.R1.R2...Rn−1) ⊕ Rn (3.5)

A Equação 3.6, derivada da Propriedade 3, mostra como detectar se todos os pares de bit dos operandos propagam o carry.

Pb= (A0⊕ B0).(A1⊕ B1).(A2⊕ B2).(A3⊕ B3) (3.6)

As funções para somar 1 implementadas em CMOS são limitadas a 4 bits, pois as restrições de fan-in e/ou fan-out podem ser violadas para operandos extensos [Takagi et al. 2007]. Com isso, somente as Equações 3.1, 3.2, 3.3 e 3.4 são utilizadas. A Figura 3.1(b) mostra essas equações mapeadas para portas lógicas no A1.

Um Bloco A1CSA (B-A1CSA), mostrado na Figura 3.2, possui um somador como CIN fixado em 0, um A1 e um MUX. O somador computa os operandos e o A1 adiciona 1 ao

(36)

Figura 3.2: Bloco Add-One Carry-Select Adder.

A adição de operandos extensos precisa de vários B-A1CSAs interligados. A conexão entre

eles é realizada com lógica extra, a qual computa o Cipara cada bloco. As Equações 3.7, 3.8, 3.9

e 3.10 descrevem como computar os Cis para os quatro primeiros B-A1CSAs, respectivamente.

Consequentemente, a equação genérica 3.11 mostra como calcular o Cipara um B-A1CSA em

qualquer ordem. O COUT para a adição dos operandos é a computação do Ci de todos os

B-A1CSAs. C0= Cin (3.7) C1= C03+ (Pb0.Cin) (3.8) C2= C07+ (Pb1.(C03+ (Pb0Cin))) (3.9) C3= C015+ (Pb2.(C07+ (Pb1.(C03+ (Pb0.Cin))))) (3.10) Cn= C0n+ (Pbn+ ... +C015+ (Pb2.(C07+ (Pb1.(C03+ (Pb0.Cin))))))) (3.11)

A Figura 3.3 mostra um A1CSA de 16 bits. A conexão entre os B-A1CSAs é realizada

através de uma única equação que mostra como computar os Cis e o COUT. A lógica extra

propaga a cadeia carry no A1CSA. As equações que descrevem como computar os Cis possuem

(37)

Figura 3.3: Add-One Carry-Select Adder de 16 bits.

3.2

Hierarchical Add-One Carry-Select Adder

O A1CSAH é uma proposta de arquitetura somadora para o transporte rápido do carry. A passagem rápida do carry está relacionada à arquitetura do somador, ou seja, a forma como os B-A1CSAs estão organizados.

(38)

Os B-A1CSAs no A1CSAH são conectados em formato de árvore binária, com isso o carry é transportado em tempo de log(n). A estrutura de um A1CSAH é igual a de um CLA, exceto pelo bloco básico, o qual é um B-A1CSA. A maneira hierárquica de conectar os B-A1CSAs é a primeira contribuição deste trabalho. A Figura 3.2 mostra a arquitetura proposta para um A1CSAH de 16 bits.

A segunda contribuição deste trabalho é a otimização do A1. A função exercida pelo MUX pode ser absorvida pela XOR em cada bit de soma. Porém, as Equações 3.1, 3.2, 3.3, 3.4 e 3.5 devem ser modificadas para refletir tal mudança. Assim sendo, as Equações 3.12, 3.13, 3.14, 3.15 e 3.16 descrevem como adicionar 1 somente quando necessário, pois a XOR é usada como um inversor controlado. O CIN, sinal usado para seleção das somas candidatas no MUX, ajuda no controle de quais dos bits da soma devem ser adicionado 1 (invertidos). Os bits resultantes do somador também sinalizam quais deles devem ser invertidos.

S0= Cin⊕ R0 (3.12)

S1= (Cin.R0) ⊕ R1 (3.13)

S2= (Cin.R0.R1) ⊕ R2 (3.14)

S3= (Cin.R0.R1.R2) ⊕ R3 (3.15)

Sn= (Cin.R0.R1.R2...Rn−1) ⊕ Rn (3.16)

A Figura 3.5(a) mostra o Add-One Select (A1S) mapeado em portas lógicas. A Figura 3.5(b) mostra o esquemático do B-A1CSA com o A1S.

(a) Add-One Select. (b) B-A1CSA com A1S.

Figura 3.5: Add-One Select mapeado para portas lógicas e o Bloco A1CSA.

A organização hierárquica dos B-A1CSAs utiliza os sinais auxiliares Pbe Gb. O B-A1CSA

(39)

como Gb. A Propriedade 4, apresentada a seguir, garante que o COUT do somador e o Gbsão

iguais quando o CIN está fixo em 0.

Propriedade 4. Em um somador com o CIN fixado em 0, o generate do bloco (Gb) é o mesmo

que o COUT do somador.

Entretanto, em alguns casos não é possível obter o Pba partir de cada par de bit dos

operan-dos. Contudo, ele pode ser obtido a partir do resultado da computação realizada pelo somador, como mostra a Propriedade 5. Essa propriedade é útil quando não se tem acesso a estrutura

interna do somador. Assim, a computação do Pb não utiliza lógica extra. Contudo, há um

pe-queno aumento no tempo para calculá-lo, pois o Pb é computado somente após o resultado da

adição estar disponível.

Propriedade 5. O AND lógico de cada propagate para cada par de bits dos operandos é igual ao AND de cada bit de soma em um somador com o CIN fixado em 0.

As Propriedades 4 e 5 são contribuições de menor relevância que as duas primeiras propos-tas, mas elas são úteis ao implementar um A1CSAH e quando o acesso à unidade somadora do A1CSAH é restrita, respectivamente. A Propriedade 5 também pode ser aplicada ao projetar um somador A1CSA.

(40)

4

Síntese Lógica dos Somadores

4.1

Configuração Experimental

As arquiteturas CRA, CLA, CSA, A1CSA e A1CSAH apresentadas nos Capítulos 2 e 3 foram descritas com a linguagem HDL Verilog. Cada arquitetura somadora foi descrita para operandos com tamanho de 8, 16, 32, 64, 128 e 256 bits. Este capítulo apresenta os deta-lhes ao implementar em Verilog cada arquitetura, as otimizações adotadas para cada uma das arquiteturas e ainda as restrições impostas à ferramenta de síntese lógica a fim de evitar a des-caracterização dos somadores.

Os somadores foram sintetizados logicamente com a ferramenta Design Compiler (DC) versão D-2010.03-SP2 da Synopsys. No processo de síntese lógica foi utilizada a biblioteca de células 45 nm da Taiwan Semiconductor Manufacturing Company Limited (TSMC). Os resultados para atraso crítico, consumo de energia e área são reportados pela ferramenta de síntese lógica. Esses dados são reportados com o DC, o qual é uma ferramenta comercial amplamente utilizada em fluxo para Standard-Cells. Não obstante, o DC possui um modo chamado Topographical, que segundo os manuais de seu desenvolvedor, utiliza os dados da simulação elétrica das células ao sintetizar e reportar os dados de um projeto. Os resultados foram gerados com a ferramenta em tal modo.

A biblioteca de células utilizada da TSMC possui as seguintes características:

• Library Type: Technology, PG pin Based • Tool Created: A-2007.12-SP1

• Date Created: Fri Nov 13 11:02:22 CST 2009 • Comments: Copyright TSMC

• Library Version: 120 • Time Unit: 1ns

(41)

• Capacitive Load Unit: 1.000000pf • Pulling Resistance Unit: 1kilo-ohm • Voltage Unit: 1V

• Current Unit: 1mA

• Dynamic Energy Unit: 1.000000pJ (derived from V,C units) • Leakage Power Unit: 1nW

• Bus Naming Style: %s[%d] (default) • Operating Condition Name: NCCOM • Library: tcbn45gsbwptc_ccs

• Process: 1.00 • Temperature: 25.00 • Voltage: 0.90

• Interconnect Model: balanced_tree • Processo CMOS 45 nm.

• Nominal Voltage Threshhold.

• General Purpose non-well biased with UPF.

• Processo de fabricação Typical-Typical para o transistor NMOS e PMOS. • A biblioteca possui 869 células.

• A células estão distribuídas em: 1 Tap cell + 699 Basic cells + 85 Clock cells + 8 Filler cells + 24 Multi-voltage cells + 52 ECO cells.

• A síntese lógica utiliza os dados de simulação elétrica em formato CCS. • A biblioteca com 10 níveis de metal.

(42)

4.2

Controle do Processo de Otimização no Design Compiler

O DC não mapeia o código HDL diretamente para a biblioteca real de células (TSMC 45 nm), mas para células de uma biblioteca genérica chamada gtech. Essa biblioteca é um for-mato interno da ferramenta. A seguir, o mapeamento em gtech é otimizado e mapeado para a biblioteca real de células. No caso dos somadores deste trabalho, a amplitude do processo de otimização foi limitado. Caso contrário, o processo de otimização descaracterizaria a arqui-tetura dos somadores. A arquiarqui-tetura de um somador é descaracterizada quando a ferramenta desmonta a arquitetura do somador e realiza otimizações sobre a mesma. A descaracterização ocorre quando a ferramenta fatora um CLA em um CRA, porém essa otimização não é desejada. Assim sendo, o processo de otimização global (entre módulos diferentes) é restringido, mas o processo de otimização local (dentro de cada módulo) está habilitado. Com isso, a arquitetura de cada somador é mantida e as funções de cada módulo são otimizadas. Caso a otimização global esteja habilitada, a ferramenta fatora as demais arquiteturas para o CRA. O DC possui duas flags que bloqueiam a otimização global e mantem a otimização local.

O flag set_structure false -design [get_designs *] desabilita a busca de subfunções em di-ferentes módulos e a fatoração das mesmas. O flag set_ungroup [get_designs *] false evita que o DC remova ou reduza os níveis de hierarquia. Portanto, a hierarquia construída ao descrever um somador é preservada, pois o código HDL de submódulos não é copiado para o módulo de mais alto nível e, consequentemente, os submódulos não são eliminados. A duas flags foram utilizadas no processo de síntese lógica.

Figura 4.1: Bloco CLA dividido em vários módulos.

(43)

descarac-terização da arquitetura, pois a ferramenta ainda realiza otimização local. Um bloco básico de uma determinada arquitetura referencia os respectivos módulos da arquitetura. A Figura 4.1 mostra o exemplo de um CLA de 4 bits (B-CLA). As funções dentro de cada retângulo hachurado são descritas em módulos diferentes, assim o DC não descaracteriza o CLA.

4.3

Somadores Descritos em Formato de Árvore Binária

A conexão dos blocos básicos em formato de árvore binária foi utilizado para as arquiteturas CRA, CLA e A1CSAH. Com isso, dois somadores são conectados para computar operandos maiores. Um dos somadores opera sobre os bits de maior ordem e o outro sobre os bits de menor ordem.

Contudo, a conexão entre duas unidades para as arquiteturas CLA e A1CSAH usa lógica extra. As funções que conectam dois somadores nessas arquiteturas estão encapsuladas no GPH. A conexão entre dois CRAs não requer lógica extra, pois o COUT do CRA dos bits de menor ordem é ligado ao CIN do CRA dos bits de maior ordem.

Assim sendo, um somador de 8 bits é composto de dois blocos básicos e por lógica extra para conexão quando necessário. Um somador de 16 bits é composto de dois somadores de 8 bits e por lógica extra para conexão quando necessário. Portanto, um somador, com o tamanho para cada operando de n bits, é composto por dois somadores de n/2 bits e por lógica extra para conexão quando necessário. O tamanho n dos operandos é uma potência de 2 pertencente aos números naturais e é maior ou igual a 8 bits. Um dos somadores computa os n/2 bits de menor ordem e o outro os n/2 bits de maior ordem.

A diferença entre o A1CSAH, CLA e CRA, simplificadamente, é a arquitetura do bloco básico utilizado por cada um deles, porém o CRA não utiliza o GPH para a conexão.

(a) A1S descrito em Verilog. (b) B-A1CSA para o A1CSAH.

(44)

Na descrição do B-A1CSA sintetizado logicamente foi utilizado o A1S ao invés do A1. A Figura 4.2(a) mostra a implementação em portas lógica do A1S e a separação de cada equação em diferentes módulos. A Figura 4.2(b) mostra o esquemático do B-A1CSA para o somador A1CSAH. O somador utilizado na síntese lógica do B-A1CSA foi um CLA. O CIN desse somador foi fixado em 0 e as funções dele foram separadas em módulos diferentes. A Figura 4.3 mostra o esquemático do CLA como CIN fixado em 0.

Figura 4.3: Carry-Lookahead Adder com o Carry-in fixado em 0.

A Figura 4.4 mostra a estrutura hierárquica em formato de árvore binária utilizada ao des-crever um A1CSAH de 16 bits. O CLA utiliza a mesma estrutura, inclusive o mesmo GPH, mas o B-A1CSA é substituindo por um B-CLA.

(45)

Figura 4.4: Esquemático do Hierarchical Add-One Carry-Select Adder descrito para 16 bits.

A descrição de um CRA de 16 bits é mostrada pela Figura 4.5. Os módulos são conectados através dos sinal de CIN e COUT.

(46)

4.4

Somadores Descritos com os Blocos Básicos em Formato

de Cascata

A conexão dos blocos básicos em formato de cascata foi utilizado para as arquiteturas A1CSA e CSA, ou seja, para cada tamanho de operandos é referenciado quantos blocos básicos são necessários e não dois somadores com a metade do tamanho dos operandos. A equação que descrevem como propagar o carry intermediário dificulta o desenvolvimento de uma estrutura hierárquica.

O A1CSA e o CSA com o tamanho dos operandos de n bits são compostos por d(n/4)-1e blocos básicos e por um CRA. O tamanho n dos operandos é uma potência de 2 pertencente aos números naturais e é maior que 8 bits.

Os 4 bits menos significativos são computados pelo CRA. Essa otimização reduz a área e o tempo de operação, pois um CRA de 4 bits é menor e mais rápido do que um bloco básico. A conexão entre o CRA e entre os blocos básicos é feita através de lógica extra, a qual propaga o carry.

Um B-CSA sintetizado logicamente possui dois somadores CRA, um com o CIN fixado em 0 e o outro em 1, e quatro MUXs. Porém, um B-A1CSA para o A1CSA possui um CRA com o CIN fixado em 0 e um A1S.

A Figura 4.6 mostra um CSA de 16 bits. Em um A1CSA são substituídos os B-CSAs, que

estão dentro dos retângulos hachurados, por B-A1CSAs. O COUT (C1x) do somador com CIN

fixado em 1 é substituído pelo Pbcomputado a partir da soma com CIN igual a 0. A estratégia

de descrição linear pode ser observada nessa figura, a qual não há mais níveis de hierarquia além dos blocos básicos. O que é bem diferente dos somadores apresentados na seção anterior.

(47)

4.5

Verificação Funcional

A verificação funcional é um método usado para demostrar que a funcionalidade desejada é preservada na descrição HDL de um circuito [Bergeron 2003]. O termo Testbench usualmente refere-se a um código simulado usado para criar uma sequência predeterminada de estímulos ou pseudorrandômica e, então, opcionalmente observar as saídas para verificar se o resultado está correto [Bergeron 2003,Meyer 2003]. O Testbench frequentemente é implementado usando HDL [Bergeron 2003].

Os somadores implementados neste trabalho foram submetidos à verificação funcional. Cada somador possui um Testbench, que é composto de um Somador de Referência (REF), um módulo para leitura dos estímulos, um módulo para escrita dos resultados e dos estímulos em um arquivo de log e o Somador Sob Verificação (DUV). O REF é um módulo que utiliza o operador “+” do Verilog para operar sobre os vetores.

A sequência de estímulos para os somadores de 8 bits é a tabela verdade do mesmo. Con-tudo, o número de estímulos usando a tabela verdade cresce muito rápido, com isso o tamanho torna-se proibitivo para os arquivos de log e de estímulos e, principalmente, o tempo de verifi-cação é proibitivo. Os demais somadores foram verificados funcionalmente com um conjunto de vetores que sensibiliza a ligação entre os blocos básicos. Uma vez que os blocos básicos já foram testados com a tabela verdade em 8 bits.

A Figura 4.7 mostra o esquema utilizado no Testbench dos somadores. O gerador gera um vetor de estímulos para o REF e para o DUV. Estes operam sobre o vetor e o verificador compara se o resultado produzido pelo DUV é igual ao produzido pelo REF, caso afirmativo os estímulos de entrada, bem como os resultados produzidos pelo somador de referência e pelo somador sob teste são salvos, senão o verificador emite uma mensagem de erro para o usuário, bem como os estímulos e os resultados produzidos por ambos os somadores são apresentados.

(48)

4.6

Provável Esquemático do Full-Adder da Biblioteca

A manipulação das equações de um CRA pode reduzir o número de transistores. Assim é possível compartilhar a lógica entre os subcircuitos de geração da soma e do carry. As Equações 2.3 e 2.4 foram reorganizadas para as Equações 4.1 e 4.2 que compartilham lógica [Rabaey, Chandrakasan e Nikoli´c 2003].

Cout= A.B + B.Cin+ A.Cin (4.1)

S= A.B.Cin+C0.(A + B +Cin) (4.2)

O FA presente na biblioteca da TSMC possui 28 transistores. Assim, pode-se inferir um possível esquemático em nível de transistor para este FA. A Figura 4.8 mostra um esquemático em nível de transistor de uma FA presente em [Rabaey, Chandrakasan e Nikoli´c 2003]. Este mapeamento também possui 28 transistores. Assim, pode-se especular que o FA presente na biblioteca de células da TSMC possui o mesmo esquemático da Figura 4.8.

(49)

5

Resultados Experimentais

Na Seção 5.1 são apresentados os resultados para os somadores dos blocos básicos. A partir da Seção 5.2 são apresentados os resultados para os somadores A1CSA, A1CSAH, CLA, CRA e CSA com operandos de 8 a 256 bits.

5.1

Blocos Básicos Carry-Ripple Adder e Carry-Lookahead

Ad-der

O objetivo dos resultados mostrados nessa seção é caracterizar o CLA e o CRA para ope-randos de 2 a 8 bits. Esses somadores são utilizados como a unidade somadora para o bloco básico de todas as arquiteturas apresentadas.

A unidade somadora para um bloco básico pode ser um CLA ou um CRA. O CLA é a unidade somadora recomendável quando o atraso crítico deve ser o menor, enquanto o CRA é a unidade somadora ideal quando o consumo de energia é o fator principal [Rawat, Darwish e Bayoumi 2002]. O CLA e o CRA foram descritos para o tamanho de operandos de 2 a 8 bits variando em 1 bit.

O CLA para um bloco básico de 4 bits é apresentado na Figura 4.1. As funções dentro de cada retângulo hachurado são implementadas em módulos diferentes. Nos demais tamanhos de operandos as equações para o CLA foram ajustadas adequadamente. No caso do CRA, foi conectado a quantidade de FAs necessário para cada tamanho dos operandos.

5.1.1

Atraso Crítico para os Blocos Básicos

A Tabela 5.1 mostra o atraso crítico dos somadores para os blocos básicos. Os dados mos-tram que o CLA tem o menor atraso crítico para todos os tamanhos de operandos.

Ao comparar as duas unidades somadoras, o CRA é 9,747 ps mais lento do que o CLA para 2 bits. Bem como, a diferença aumenta para 89,894 ps em 8 bits. Ao aumentar em 4 vezes o

(50)

tamanho dos operandos, a diferença do atraso crítico aumentou em 9,22 vezes. Especialmente para 4 bits, o CLA é 35,878 ps mais rápido do que o CRA.

Tabela 5.1: Atraso crítico dos somadores para os blocos básicos (ps).

2 bits 3 bits 4 bits 5 bits 6 bits 7 bits 8 bits

CLA 157,453 189,063 212,319 247,087 264,205 291,158 316,519

CRA 167,200 206,392 248,197 287,535 329,196 372,722 406,413

A Figura 5.1 apresenta o atraso crítico dos somadores para os blocos básicos. A diferença de atraso crítico entre o CRA e o CLA cresce a medida que o tamanho dos operandos aumenta. O CRA propaga o carry através de todos os pares de bits dos operandos (FAs), porém o CLA faz a passagem rápida do mesmo entre os pares de bits. Assim, o atraso crítico do CRA é maior do que o do CLA.

Figura 5.1: Atraso crítico dos somadores para os blocos básicos.

5.1.2

Consumo de Potência para os Blocos Básicos

A Tabela 5.2 mostra o consumo de potência dos somadores para os blocos básicos. O CRA consome menos potência para todos os tamanhos de operandos.

O CLA consome 1,447 µW de potência a mais do que o CRA para 2 bits. Ainda, o CLA consome 12,108 µW de potência mais do que o CRA para 8 bits. Ao expandir o tamanho dos

(51)

operandos para os blocos básicos em 4 vezes, a diferença de consumo de potência aumentou 8,367 vezes. No caso de 4 bits, o CRA consome 2,842 µW de potência a menos do que o CLA.

Tabela 5.2: Consumo de potência dos somadores para os blocos básicos (µW).

2 bits 3 bits 4 bits 5 bits 6 bits 7 bits 8 bits

CLA 7,294 10,601 14,537 19,087 24,365 28,731 35,497

CRA 5,847 8,721 11,695 14,568 17,542 20,516 23,389

A Figura 5.2 mostra o crescimento do consumo de potência com a variação no tamanho dos operandos. A diferença de consumo de potência entre o CRA e o CLA aumenta com o crescimento do tamanho dos operandos. O CLA consome mais potência, porque ele usa lógica extra para acelerar a propagação do carry.

Figura 5.2: Consumo de potência dos somadores para os blocos básicos.

5.1.3

Área para os Blocos Básicos

A Tabela 5.3 mostra a área dos somadores para os blocos básicos. O CLA possui a maior área entre todos os tamanhos de operandos.

O CLA para 2 bits é 3,881 µm2maior que o CRA. Bem como, ele é 47,804 µm2maior que

o CRA para 8 bits. Ao aumentar o tamanho dos operandos em 4 vezes houve um aumento de 12,317 vezes na diferença da área entre os somadores.

(52)

Tabela 5.3: Área dos somadores para os blocos básicos (µm2).

2 bits 3 bits 4 bits 5 bits 6 bits 7 bits 8 bits

CLA 12,701 21,168 30,870 42,512 54,860 68,267 83,084

CRA 8,820 13,230 17,640 22,050 26,460 30,870 35,280

A Figura 5.3 apresenta a área dos somadores para os blocos básicos. O crescimento da diferença de área entre os somadores foi maior do que o crescimento da diferença do atraso crítico e do consumo de potência. A redundância necessária para acelerar a computação do

carryfaz com que a área do CLA seja maior do que a do CRA.

Figura 5.3: Área dos somadores para os blocos básicos.

5.1.4

Power-Delay Product para os Blocos Básicos

A Tabela 5.4 mostra o Power-Delay Product (PDP) dos somadores para os blocos básicos. O PDP mede a eficiência energética de um circuito integrado. A eficiência energética é obtida multiplicando o atraso crítico pelo consumo de potência. O CLA tem o maior PDP para todos os tamanhos de operandos.

O CLA é 0,17 fJ menos eficiente energeticamente do que o CRA para 2 bits e 1,729 fJ menos eficiente do que o CRA para 8 bits. O aumento de 4 vezes no tamanho dos operandos

(53)

re-sulta em um aumento de 10,170 vezes na diferença de eficiência energética entre os somadores. No caso de 4 bits, a diferença de eficiência energética é de 0,183 fJ entre eles.

Tabela 5.4: Power-Delay Product dos somadores para os blocos básicos (fJ).

2 bits 3 bits 4 bits 5 bits 6 bits 7 bits 8 bits

CLA 1,148 2,004 3,086 4,716 6,437 8,365 11,235

CRA 0,978 1,800 2,903 4,189 5,775 7,647 9,506

A Figura 5.4 mostra que o crescimento da diferença de PDP entre os blocos básicos é pequena. O CRA tem o atraso crítico maior, mas o consumo de potência é menor. Por outro lado, o atraso crítico do CLA é menor, mas o seu consumo de potência é maior. Portanto, a diferença de eficiência energética entre esses somadores é pequena.

Figura 5.4: Power-Delay Product dos somadores para os blocos básicos.

5.1.5

Consumo de Potência por Unidade de Área para os Blocos Básicos

A Tabela 5.5 mostra o consumo de potência por unidade de área dos somadores para os blocos básicos. O CLA é o somador que consome menos potência por unidade de área.

O CLA consome 0,089 Wm−2 de potência a menos do que o CRA para 2 bits. Bem como,

(54)

operandos em 4 vezes houve um aumento de 2,651 vezes na diferença de consumo de potência por unidade de área entre os somadores.

Tabela 5.5: Consumo de potência por unidade de área dos somadores para os blocos básicos

(Wm−2).

2 bits 3 bits 4 bits 5 bits 6 bits 7 bits 8 bits

CLA 0,574 0,501 0,471 0,449 0,444 0,421 0,427

CRA 0,663 0,659 0,663 0,661 0,663 0,665 0,663

A Figura 5.5 mostra o consumo de potência por unidade de área dos somadores para os blocos básicos. O CRA consome praticamente a mesma quantidade de potência por unidade área para todos os tamanhos de operandos, porém o CLA reduz o seu consumo de potência por unidade de área com o aumento no tamanho dos operandos.

Figura 5.5: Consumo de potência por unidade de área dos somadores para os blocos básicos.

5.2

Atraso Crítico para os Somadores

A Tabela 5.6 mostra o atraso crítico dos somadores analisados neste trabalho. O A1CSAH tem o menor atraso crítico. Já, o CRA, como era esperado, tem o maior atraso crítico. O CLA é, em média, 12% mais lento do que o A1CSAH. Esse resultado é significativo, pois a arquitetura do CLA, segundo a literatura, é uma das que tem o menor atraso crítico.

Referências

Documentos relacionados

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os

Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Este artigo está dividido em três partes: na primeira parte descrevo de forma sumária sobre a importância do museu como instrumento para construção do conhecimento, destaco

Constata - se, portanto, que, tanto o PNBE, quanto o PNLL colocam o desenvolvimento da competência leitora e a formação de leitores em destaque, seja por meio do acesso

[r]

 Random storage - refere-se à alocação de um espaço de stock de forma aleatória, segundo o espaço disponível no momento de chegada dos produtos (Petersen e Aase,