Você está na página 1de 10

Projeto de um PLD com Caractersticas de Testabilidade

Alex Gonsales alexdg@inf.ufrgs.br Luigi Carro carro@inf.ufrgs.br Marcelo Lubaszewski luba@inf.ufrgs.br Altamiro Suzin suzin@iee.ufrgs.br

UFRGS Universidade Federal do Rio Grande do Sul GME - Grupo de Microeletrnica Caixa Postal 15064 Porto Alegre, RS 91501-970 - Brasil

Resumo
Este trabalho prope o projeto de um circuito programvel que possua estruturas adequadas implementao de testes em sistemas integrados, tais como gerao randmica de vetores e de padres de teste de estruturas especficas. Aps a execuo dos testes, este dispositivo ser reconfigurado para desempenhar funes auxiliares do prprio sistema, como por exemplo, um co-processador ou um filtro digital. Este nvel de programabilidade facilita o reuso e possibilita um menor impacto de rea no sistema final. Palavras chaves: Auto-teste, BIST, PLD, FPGA, FPPA, lgica programvel, arquiteturas reconfigurveis.

Abstract
This work presents the design of a programmable circuit able to generate random or dedicated test patterns for different families of circuits on an integrated system. After running the test, this device can change its reconfiguration to run another auxiliary function on system, as a co-processor or as a digital filter, for example. This system level programability allows high reuse of components and represents a smaller amount of area overhead for test structures. Keywords: Self-test, BIST, PLD, FPGA, FPPA, programmable logic, reconfigurable architectures.

Introduo

A indstria de microeletrnica encontra-se em crescente demanda por circuitos cada vez mais densos e mais complexos, com altssimas velocidades e implementados em reas ativas cada vez mais reduzidas. O cumprimento desses requisitos tem colocado aos projetistas de circuitos integrados constantes desafios. Um dos principais passos dados em direo soluo desses problemas a integrao do maior nmero de componentes de um sistema, incluindo processador, memria e unidades auxiliares em um nico chip, os chamados Systems on Chip (SOC). Essa alta densidade de integrao proporciona diversas melhorias no desempenho geral dos dispositivos, porm, traz a desvantagem de uma maior complexidade de projeto e de testabilidade dos sistemas desenvolvidos dessa forma. Uma alternativa vivel integrar algumas ou todas as funes de teste no prprio chip ou na placa a ser testada. Essa tcnica conhecida como auto-teste integrado ou Built-in Self Test (BIST) [ABR 90 ] [AGR 93a] [AGR 93b]. Logo, ao integrar diversos blocos de teste a um dispositivo pr-existente deve-se considerar os limites e custos dos recursos de hardware disponveis. Essa limitao de recursos traz a necessidade da reutilizao destes. Uma tcnica de reuso de recursos de hardware a reconfigurao, que consiste em alterar a funcionalidade de um circuito durante o seu intervalo operacional. interessante observar que se os testes no necessitarem serem feitos em paralelo, ento possvel utilizar uma nica rea reconfigurvel para realizar os testes de todos os blocos de uma forma sequencial. Em [CAR 00] apresentado um estudo de caso onde essa abordagem utilizada. Com essa estratgia reduz-se a rea dedicada aos blocos de teste, uma vez que possvel reconfigurar no tempo cada um dos procedimentos sobre o mesmo hardware. Naquele mesmo trabalho feita a sugesto de que um circuito reconfigurvel dinamicamente e parcialmente poderia ser muito til para atacar problemas desse tipo. A partir disso, surge a motivao para o projeto de uma arquitetura baseada em clulas, que seja parcialmente e dinamicamente reconfigurvel e que possua estruturas adequadas implementao de algoritmos de teste (BIST) bem como o autoteste da prpria arquitetura [SOU 00]. Alm disso, a arquitetura dever poder ser utilizada para outras aplicaes, que no teste. Num primeiro momento, pretende-se verificar a viabilidade de implementao de algoritmos de processamento

digital de sinais (DSP-Digital Signal Processing) na mesma. Dessa forma, podero ser desenvolvidos sistemas de processamento digital de sinais com auto-teste embutido, utilizando-se o dispositivo aqui proposto. O fator diferencial deste projeto seria a reconfigurao parcial e dinmica, ou seja, enquanto uma parte do circuito realizaria teste sob um determinado componente, outras partes deste mesmo circuito poderiam ser reconfiguradas para desempenharem outras funes. Isto criaria um cenrio em que algumas clulas seriam alocadas inicialmente por um algoritmo de teste e ao final deste poderiam ser reconfiguradas para desempenharem outras funes do sistema, como por exemplo um co-processador. Este trabalho est organizado da seguinte forma. A seo 2 apresenta alguns conceitos bsicos sobre teste e auto-teste de circuitos integrados bem como os algoritmos de teste abordados neste projeto. A seo 3 mostra alguns conceitos relativos a arquiteturas reconfigurveis e arquiteturas paralelas bem como alguns trabalhos relacionados na rea. Na seo 4 apresentada a metodologia de projeto bem como feita a descrio da clula bsica do dispositivo proposto. A seo 5 trata do modelo de conexes utilizado e na seo 6 so feitas consideraes respeito do software para a programao da arquitetura. Na seo 7 conclui-se com a apresentao de alguns resultados e indicaes de trabalhos futuros.

Teste e Auto-Teste de Circuitos Integrados

Durante o seu tempo de vida til, um circuito integrado pode ser testado em diversas situaes. Tais situaes devem ser previstas durante a fase de projeto desses sistemas, o que justifica o uso de tcnicas de projeto que visam o teste ou a testabilidade (design for testability) do sistema final [COT 98]. A idia bsica da tcnica de BIST a aplicao de vetores de teste nas entradas do circuito e a verificao dos resultados nas sadas do mesmo. Para a realizao deste trabalho foram estudadas diversas tcnicas de teste que pudessem ser aplicadas a maioria dos tipos de circuitos ou sistemas existentes, podendo-se destacar os seguintes: memrias RAM, memrias ROM, multiplexadores e partes operativas ([ABR 90], [AGR 93a], [AGR 93b], [COT 98]). Neste trabalho, inicialmente excluiu-se mtodos de teste para mquinas de estados finitos uma vez que tal tipo de teste possvel mediante a interveno e recodificao dos prprios estados da

mquina, procedimento que, em uma arquitetura de projetos baseada em cores, no seria possvel uma vez que estes teriam sido pr-projetados.

Arquiteturas Paralelas Reconfigurveis

Diversos parmetros devem ser levados em considerao ao se projetar um PLD (Programmable Logic Device). Dentre eles esto a complexidade do bloco lgico e a flexibilidade de interconexo [BET 98], [BRO 96]. [DEH 96], [SHI 96]. 3.1 Complexidade de um Bloco Lgico Teoricamente, quanto maior for a funcionalidade de um bloco, menor ser o nmero de blocos necessrios para implementar um determinado circuito [BRO 96]. Uma topologia baseada em granularidade fina implica numa boa utilizao da lgica disponvel no bloco, porm, neste caso, ser necessria uma grande rea destinada s conexes entre os blocos. Por outro lado, uma topologia baseada em alta granularidade implica em menos rea destinada ao roteamento entre os blocos. Em contrapartida, pode haver um desperdcio de rea quando se quiser implementar funes simples no bloco, visto que se estar utilizando um bloco complexo inteiro para a implementao de uma funo simples. Portanto, durante o projeto de um dispositivo programvel, de vital importncia a escolha de uma granularidade adequada para as aplicaes s quais o dispositivo ser destinado. Tradicionalmente, os projetistas tm projetado FPGAs para uso geral, com blocos lgicos de granularidade fina (1 bit). Uma abordagem diferente (DP-FPGA Data Path FPGA) otimizar o chip para uma classe especfica de circuitos e aplicaes ([CHE 96] apud [BRO 96]). Nesse caso, cada bloco do DP-FPGA manipula um conjunto de bits, implementando operaes aritmticas, multiplexadores, etc, sob esse conjunto de bits. O DP-FPGA otimizado tanto a nvel de blocos lgicos como estruturas de roteamento. 3.2 Flexibilidade de Interconexo Alm da complexidade dos blocos lgicos, outro parmetro que determina a arquitetura de um FPGA a sua estrutura de interconexo. Poucos recursos de interconexo podem comprometer o roteamento do circuito e recursos excessivos significam desperdcio de rea. Portanto, deve-se ter uma estrutura de interconexo que seja adequada para a resoluo dos problemas propostos.

A topologia de interconexo tambm deve ser considerada. Partindo-se da idia que em algoritmos de teste e processamento de sinais os padres de comunicao podem ser previstos de maneira razovel, decidiu-se utilizar uma topologia de interconexo esttica no dispositivo proposto [ALM 94]. Uma breve reviso de literatura levou a uma srie de trabalhos correlatos nas reas de hardware evolutivo ([NUS 98]), processamento digital de sinais [CHE 92] e tambm arquiteturas de propsito geral ([OGU 98] e [WAI 97]). A topologia de [OGU 98] possui granularidade fina, ao contrrio das abordagens de [NUS 98], [CHE 92] e [WAI 97], onde a capacidade de processamento individual de cada clula muito mais elevada.

4
4.1

Metodologia e Descrio do Hardware

Metodologia Pretende-se propor uma arquitetura paralela de alta granularidade, dinamicamente e parcialmente reconfigurvel, que seja adequada para a realizao de teste de outros dispositivos (chips, cores, etc.) bem como o auto-teste da prpria arquitetura. Alm disso, deve-se poder utilizar essa arquitetura para outras aplicaes, que no teste. Num primeiro momento, pretende-se verificar a viabilidade de implementao de algoritmos de processamento digital de sinais (DSP-Digital Signal Processing) na mesma. Dessa forma, podero ser desenvolvidos sistemas de processamento digital de sinais com auto-teste embutido, utilizando-se o dispositivo aqui proposto. Para o desenvolvimento deste trabalho, adotou-se a metodologia experimental sugerida em [BRO 96], constituda das seguintes etapas: Definio dos parmetros arquiteturais do PLD (complexidade do bloco lgico, flexibilidade de interconexo, etc.); Desenvolvimento de ferramentas de auxlio programao do PLD; Mapeamento de circuitos de benchmark para a arquitetura hipottica; Avaliao a performance da arquitetura. Essas etapas so feitas continuamente, com ajustamento da arquitetura e das ferramentas de CAD. Aps obtida a primeira verso da descrio VHDL dessa arquitetura, sero realizadas simulaes funcionais de algoritmos de teste e DSP para a validao da idia proposta. Inicialmente pretende-se implementar o auto-teste do

microcontrolador 8051 [COT 98] e em seguida a implementao de filtros FIR. Aps isso, ser realizada a sntese em standard cells e respectiva avaliao em termos de rea ocupada, potncia consumida, frequncia de operao e performance. A partir dessa avaliao podero ser realizados ajustamentos na arquitetura, visando a otimizao da mesma. Nossa proposta a definio de uma arquitetura com granularidade menor que as abordagens de [NUS 98], [CHE 92] e [WAI 97] porm com maior capacidade de processamento local que a proposta de [OGU 98]. Procurou-se descrever o projeto de forma modular, visando a facilidade na modificao dos blocos sempre que necessrio. Seguindo essa metodologia, buscou-se a definio de cada um dos blocos utilizando uma descrio VHDL (Very High Speed Integrated Circuit Hardware Description Language) em alto nvel e sempre que possvel parametrizvel. Dessa forma, poderiam ser implementadas diversas verses do circuito, o que daria uma vasta gama de alternativas para a escolha da melhor arquitetura para a implementao final. 4.2 Requisitos da Arquitetura Uma vez tendo sido definida a aplicao bsica deste circuito (implementao de algoritmos BIST e DSP), realizou-se uma reviso de literatura a fim de melhor se definir o subconjunto de operadores e estruturas necessrias para implementar aplicaes dessa classe. No caso do teste do 8051, exemplo que ser utilizado para validao das idias propostas na seqncia deste trabalho de pesquisa, os algoritmos de teste que poderiam ser proveitosamente deslocados para uma rea configurvel de testes seriam: o teste da parte operativa e o teste das memrias RAM e ROM. Nos algoritmos de teste de memria RAM, as operaes em bit so parte significativa do processamento realizado. Pode-se com isso determinar que a parte operativa deveria apresentar facilidades na implementao dessas instrues. Para o teste de memrias ROM necessita-se basicamente de um acumulador. Alm disso, a variabilidade nas larguras de endereamento das memrias levou a necessidade de se definir blocos que pudessem ser configurados com 8, 16, 32 bits ou em palavras ainda maiores. Alguns algoritmos de teste para parte operativa, implicam no uso de ao menos uma unidade multiplicadora quando a mesma no est presente na prpria parte operativa do circuito a ser testado. Tambm podem ser utilizados LFSRs (Linear Feedback Shift Registers) para gerao de padres aleatrios e analisadores de assinatura.

Para algoritmos DSP, uma operao muito importante a multiplicao. Sabe-se no entanto que um operador desse tipo bastante custoso em termos de rea e, a implementao do mesmo em cada clula representaria um desperdcio de rea j que para as aplicaes de BIST dificilmente todos os multiplicadores estariam sendo utilizados ao mesmo tempo. Logo, com o objetivo de no aumentar em demasia o custo por clula, optou-se por implementar um multiplicador utilizando oito clulas bsicas. A multiplicao efetuada em 1 ciclo de relgio. Alm disso, cada clula deveria possuir seu prprio grupo de registradores locais a fim de facilitar a diviso de tarefas e maximizar a localidade de processamento. O uso de registradores de entrada e sada na ULA poderia ser definido a fim de permitir a implementao de pipeline com profundidade 2. No entanto, a verso inicial deste projeto possui apenas um registrador na sada da clula, sendo possvel ento a implementao de pipeline a nvel de clulas. Finalmente, o tamanho da palavra de dados tem importncia considervel pois, se for excessivamente grande, trar desperdcio de rea quando se necessitar trabalhar com palavras menores, como por exemplo em testes de memrias que tenham largura de dados de 8 bits. Do mesmo modo, uma palavra de dados muito estreita implicar a necessidade de utilizao de recursos de interconexo quando se for trabalhar com palavras maiores. Optou-se a priori por clulas de 8 bits, com possibilidade de cascateamento atravs de interconexo local at o tamanho de 32-bits. A partir desse estudo feito, optou-se por implementar a clula bsica como um processador simples, com uma unidade operativa capaz de executar as operaes aritmticas de soma e subtrao, operaes lgicas do tipo NOT, AND, OR e XOR e deslocamentos para esquerda ou direita. Tambm seria til a possibilidade de processar uma instruo por ciclo de relgio. O PLD seria formado por uma matriz de clulas, constituindo uma arquitetura do tipo FPPA (Field Programmable Processor Array) [NUS 98]. 4.3 A Clula Bsica Cada clula do FPPA aqui proposto constituda por uma memria de programa, uma parte de controle e uma parte operativa, formando um pequeno processador ou Unidade de Execuo (UE) como foi aqui chamada (Figuras 1 e 2). Essa UE possui duas entradas (inA e inB) e duas sadas, uma registrada (out_R) e outra no registrada (out_nR). Alm disso, tambm esto disponveis os sinais para cascateamento com

Oie P M z o S C c c P S i 8 3 o R E C 2 1 u e L nm i lle C n p i u t r n l o t e 3 2 k n c l_ a o 3 2 1 0 a d c td t 0 1 u s a b _ n R b o _ te te lln R lu d a e u r tt e d R s e d l//e a ds o rd d e e8 1 8 2 6e 4 b e i b t i st s

clulas vizinhas (SRin, SRout, SLin, SLout, cin e cout).

Figura 3 - Cascateamento de clulas em um grupo local.

Figura 1 Clula bsica.

Figura 2 Detalhamento da clula bsica. 4.4 Agrupamento de Clulas A parte operativa do FPPA foi estruturada de maneira a poder ser agrupada formando partes operativas com uma maior largura de dados. Como cada clula comporta uma largura de 8 bits apenas, deve-se poder agrupar um conjunto maior de clulas para formar caminhos de dados de 16, 24 ou 32 bits. Desta forma, foi criado um agrupamento de 4 clulas o qual foi chamado de grupo local (Figura 3). Dois grupos locais formam um estrutura chamada bloco. O FPPA final ser constitudo por uma matriz de blocos conforme ser visto na seo 5. Tambm interessante salientar que o dispositivo no todo se assemelha a uma arquitetura MIMD (Multiple Instruction Multiple Data) ([MOL 93], [ALM 94]), visto que cada clula capaz de executar um programa independente. Figura 4 Possveis agrupamentos de clulas dentro de um grupo local. Na Figura 4 podem ser vistas todas as associaes de clulas possveis utilizando-se a propagao clula a clula dentro de um grupo local. Como se pode ver, so possveis diversas configuraes para as larguras dos caminhos de dados. Essa configurao feita atravs dos sinais ZCin e ZSin da palavra de instruo, sendo portanto, uma configurao dinmica. 4.5 Memria de Instrues Cada UE possui sua prpria memria de instrues, a qual formada por 256 palavras (instrues) de 32 bits. Nessa memria ficaro armazenadas as instrues que sero executadas pela clula. Cada bit da palavra de instruo, com exceo dos bits 0, 1 e 2, est associado a um sinal de controle da parte operativa, no necessitando decodificao na parte de controle. 4.6 Parte Operativa A parte operativa composta por um banco de registradores, 2 circuitos combinacionais deslocadores, 3 inversores e uma unidade lgica e aritmtica(ULA) (Figura 5). A ULA e as unidades

one i M 0 c z S R O o L P S Z 2 / E i c R u L h e v n u n iS c R r u n A i t e g o i n vt if x v _ n o t a L i l B t n u t o ie ts O O _ R 1 S n A L e u trtn P B u P r t eR t r a t3 h

de deslocamento podem ser cascateadas com as unidades do mesmo tipo das clulas vizinhas a fim de se aumentar a largura da parte operativa. Como cada operao realizada em um ciclo, uma vez cascateadas as UEs, basta que elas executem a mesma instruo para que se realize a operao com o nmero de bits mltiplos de oito que se queira. O banco de registradores composto por 7 registradores de leitura e escrita (R1 a R7) e um registrador somente de leitura que armazena a constante zero (R0). Esto disponveis duas portas de leitura e duas portas para escrita, sendo que a escrita ocorre na borda de subida do relgio. Foram includos dois deslocadores combinacionais na parte operativa, um para cada operando. Esses blocos podem realizar o deslocamento do operando de uma posio (1 bit), tanto para a esquerda quanto para a direita. Alm disso, existem sinais de propagao do bit mais significativo e do bit menos significativo para as clulas vizinhas (esquerda e direita, respectivamente). Essa propagao de sinal permite o cascateamento de clulas, possibilitando a manipulao de palavras de dados com mais de 8 bits (16, 24 ou 32). A habilitao/desabilitao da propagao desses sinais feita utilizado-se o sinal de controle ZSin da instruo. importante salientar que os deslocadores so configurados como codificadores de Booth, quando o bloco ao qual pertence a UE for configurado como bloco multiplicador. Nesse caso, no possvel utilizar os deslocadores para as operaes de deslocamento, ficando as UEs configuradas exclusivamente para executarem a operao de codificao de Booth (ver seo 5.2). Existem dois inversores logo aps a sada dos deslocadores, os quais so controlados pelos bits invA e invB da instruo. Os inversores no podero ser utilizados quando a clula estiver configurada como bloco multiplicador. Na sada registrada da clula tambm se encontra disponvel mais um inversor. Na ULA foram implementadas as operaes lgicas AND, OR e XOR e a operao aritmtica SOMA. A operao de subtrao no foi implementada diretamente na ULA, visto que esta operao pode ser efetuada na clula da seguinte forma Subtrao = operando1 + NOT(operando2) + 1 ou seja, gerando o complemento do operando2, somando este ao operando1 e adicionando mais uma unidade atravs do sinal carry in. O carry in dever ser colocado em 1 atravs do bit PCin da instruo.

Figura 5 - Parte Operativa. Dentro de um grupo local so utilizados os sinais carry out e carry in para a propagao do vai um. Isto permite o cascateamento de clulas dentro de um grupo local visando aumentar a largura de dados da parte operativa. Para a habilitao/desabilitao da propagao de carry dever ser utilizado o sinal de controle ZCin da instruo. O registrador de sada (Rout) tem dupla funo: funcionar como registrador ou como um circuito LFSR configurvel. Atualmente, s est implementada a funo de registrador. A funo LFSR ser implementada na seqncia deste trabalho de pesquisa. Para a implementao do multiplicador foi adotada a estratgia de Booth baseada na descrio feita em [FRA 99]. A seo 5.2 descreve a implementao do multiplicador. 4.7 Parte de Controle A parte de controle responsvel pelo seqenciamento das instrues contidas na memria de instrues. Para descrever-se este bloco e determinar as estruturas operativas que o mesmo necessitaria, foi necessrio primeiro determinar

on4 i o i u n7 B A u to B A t n R R S H T E b C 9 8 7 1 2 3 S E H T C 1 3 2 5 8 9 0 o n 9 0 1 2 3 4 5 6 t l_ r u t l_ a h u ln d a _ lR a o7 6 s u3 2 / tS a d a s

d o

B l o c o

quais tipos de controle de fluxo deveriam ser suportados por uma UE. Para isso, definiu-se que cada UE seria capaz de executar 3 tipos de operaes bsicas: 1. Carga de valor Imediato (LDI) Serve para se fornecer um valor de 8 bits (dado imediato) parte operativa. Esse valor se encontra na prpria instruo, nos bits 24 a 31. 2. Desvios (Jmp, JmpZ e JmpNZ) So possveis 3 tipos de desvios, sendo dois condicionais (JmpZ e JmpNZ) e um desvio incondicional (Jmp). A instruo JmpZ salta se o sinal zero da ULA estiver ativo (1) e JmpNZ salta se o sinal zero no estiver ativo (0). O endereo de desvio encontra-se na prpria instruo (bits 24 a 31). 3. Operao normal (Op) Qualquer instruo que no seja uma instruo de carga ou de desvio. Ex.: Operaes na ULA, deslocamentos, carga de registradores, etc. Tambm foi includo um sinal de habilitao (enable) na parte de controle, com o intuito de se fazer o sincronismo entre as clulas. Este sinal quando ativo (1), habilita o funcionamento da PC e consequentemente o sequenciamento das instrues. Quando este sinal estiver em 0 (zero), o contador de programa pra e o sequenciamento das instrues interrompido.

atravs das portas de entrada e sada do bloco, as quais so em 16 no total (8 de entrada e 8 de sada).

Figura 6 Bloco formado por dois grupos locais. O circuito final constitudo por uma matriz de blocos conectados atravs de uma matriz de chaveamento. Essa matriz de chaveamento tambm realiza a conexo dos blocos com as portas de entrada e sada do FPPA (Figura 7). Ainda no foi determinado o nmero total de blocos para formar a matriz, isto depender principalmente da rea disponvel para implementar o circuito. At o momento da escrita deste relatrio, tm-se um circuito constitudo por dois blocos (16 UEs), conforme assinalamento na Figura 7.

Matriz de Blocos

Uma vez que se determinou um agrupamento natural mnimo de quatro clulas, deve-se determinar qual o melhor sistema de conexo a utilizar que garanta a configurabilidade da troca de dados entre as clulas. Deve-se com isso especificar tanto o mecanismo de troca de dados, quanto a granularidade e hierarquia das conexes dos blocos. 5.1 Conexes A interconexo do FPPA foi organizada de forma hierrquica. A determinao do nmero de conexes no locais um fator que se deve experimentao emprica, uma vez que a conexo um para um com qualquer clula do circuito no apenas exagerada, como tambm certamente desnecessria para as aplicaes visadas. No esquema de conexes de um bloco (Figura 6), possvel distinguir as clulas de conexo do grupo local bem como a conexo de 2 grupos locais para a formao de um bloco. A conexo em um grupo local completa, ou seja, qualquer clula pode ser conectada com qualquer outra. Entre dois grupos locais do mesmo bloco so possveis 8 conexes, 4 em cada sentido. A conexo de um bloco com outros blocos se d

Figura 7 - Matriz de blocos.

5.2

Multiplicador de Booth Uma operao de multiplicao binria basicamente uma sucesso de somas de produtos parciais. No algoritmo Booth paralelo descrito em [FRA 99], os operandos (multiplicador(MR) e multiplicando(MD)) tm 8 bits de largura e o resultado final da multiplicao obtido a partir da

d n S n C E C E e ion s a ln n u c m b a ltlu r lb r a o e lo o lae 0 1 -l e 2 3

soma de 4 parcelas. Cada parcela uma verso codificada do multiplicando sendo que essa codificao feita com base em 3 bits do multiplicador.

5.4

Sincronismo entre Clulas Para o controle de sincronismo, cada clula dispe de um sinal de entrada chamado Enable que permite habilitar/desabilitar o contador de programa e consequentemente o sequenciamento das instrues. Tambm existe um sinal de sada chamado SincOut o qual simplesmente o bit 3 da palavra de instruo. Este bit ser utilizado pela clula para o envio de um sinal que permitir o sincronismo entre as clulas. Essas estruturas para controle de sincronismo parecem bastante limitadas, porm capazes de enderear a gama de aplicaes alvo dentro do escopo deste trabalho. Em desenvolvimentos futuros este um dos blocos que dever estar sujeito a revises. A partir dessas estruturas disponveis em cada clula, esto sendo estudadas duas abordagens para a realizao do sincronismo entre clulas de um grupo local: 1. Sincronismo Centralizado e 2. Sincronismo Distribudo Na abordagem de Sincronismo centralizado seria utilizado um bloco de controle de sincronismo em cada grupo local (Figura 9). Na abordagem de sincronismo distribudo no existiria nenhum controle centralizado, e o sincronismo se daria de clula a clula (Figura 10).

Figura 8 - Esquema para implementar um multiplicador de Booth. Para a implementao da multiplicao dever ser utilizado um bloco inteiro, sendo que o grupo local A ser responsvel pela gerao das parcelas e o grupo local B ser responsvel pela soma das parcelas. No grupo local A, as 4 clulas recebero os operandos MR e MD em suas entradas A e B respectivamente. Nessa etapa ocorrer a gerao das parcelas, ou seja, nas sadas noregistradas das clulas 0,1, 2 e 3 estaro disponveis as 4 parcelas que devero ser somadas. No segundo grupo de clulas (grupo local B) sero realizadas as somas dessas parcelas. As clulas desse grupo so um pouco diferentes das clulas do grupo A, no sentido que existem mais dois bits na sada noregistrada, j que necessrio o deslocamento de 2 bits esquerda do resultado parcial. A Figura 8 mostra a interconexo de clulas necessria para a implementao do multiplicador. 5.3 Configurao Para a configurao do FPPA dever ser implementado um controlador de configurao para cada bloco, permitindo dessa forma a programao parcial do circuito a nvel de blocos. Isto permitir a programao de alguns blocos do FPPA enquanto outros permanecem em funcionamento normal.

Figura 9 - Sincronismo Centralizado.

Figura 10 - Sincronismo distribudo.

Software

De toda arquitetura apresentada at agora, fcil identificar que a programao do FPPA uma tarefa cansativa. Alm dos programas de cada UE, tem-se tambm que programar as matrizes de chaveamento. Essa tarefa ser tanto mais difcil quanto maior for o tamanho do FPPA.

Diante dessa situao, verificou-se j no incio do projeto que seria necessrio desenvolver alguma ferramenta de software que auxiliasse o projetista a gerar programas para uma UE bem como fazer a programao das matrizes de chaveamento. O primeiro problema atacado foi o de gerao de cdigo para uma UE. Adotou-se a estratgia de desenvolver uma ferramenta simples, que pudesse ser desenvolvida em curtssimo tempo mas que ao mesmo tempo auxiliasse na gerao de cdigo para uma UE. A partir disso definiu-se uma linguagem com um formato de instruo que possui relaes diretas com a arquitetura da UE. A ferramenta desenvolvida analisa um programa com instrues nesse formato e gera as palavras, em formato hexadecimal, a serem carregadas na memria de programa da clula. O arquivo de sada dessa ferramenta um arquivo de memria para o MaxPlusII (extenso .mif) [ALT 01]. A segunda ferramenta, em fase de desenvolvimento, um micro-assembler para essa arquitetura [GON 01]. A linguagem de entrada ser um programa no formato tree-address code [AHO 88] e a sada o arquivo de memria (.mif) para o MaxPlusII.

Em fase de concluso encontram-se as seguintes tarefas: Implementao do LFSR configurvel; Concluso do processo de controle de sincronismo entre clulas; Implementao do controlador de configurao; Implementao de BIST no 8051 e filtros FIR para validao da arquitetura proposta Como trabalhos futuros podem ser citados: Implementao de auto-teste do prprio FPPA proposto; Cascateamento de sinais entre grupos locais visando formar agrupamentos de clulas at 64 bits. Tambm pode ser implementado o cascateamento entre blocos para formar agrupamentos com mais de 64 bits; Desenvolvimento de ferramentas de CAD tendo este FPPA como arquitetura alvo. Dentre essas ferramentas pode-se destacar: Simuladores, compiladores, roteadores, etc; Desenvolvimento de um compilador de alto nvel (C, C++, Java). A partir do momento que se concluir o micro-assembler, o qual ter como entrada uma linguagem tree-addresscode, ficar mais fcil o desenvolvimento de compiladores de linguagens de alto nvel para esta arquitetura. Tal compilador precisar gerar como sada uma linguagem no formato treeaddress-code, sem se preocupar com a arquitetura alvo. A partir da, esse formato de arquivo poder ser utilizado como entrada do micro-assembler referenciado anteriormente, o qual ento ir gerar o cdigo para a UE do FPPA. Desse modo, tem-se um ambiente de programao em alto nvel.

Resultados Obtidos, Concluses e Trabalhos Futuros

Foram realizadas diversas simulaes funcionais utilizando a ferramenta MaxPlusII da Altera. Os blocos at agora implementados esto funcionando perfeitamente (parte operativa, parte de controle, matriz de chaveamento, etc.). Como um exemplo mostrado o resultado de uma simulao do bloco multiplicador, o qual utiliza 8 UEs (Figura 11). A validao do multiplicador de Booth foi um importante passo dado, visto que para aplicaes DSP ele ser imprescindvel.

Figura 11 - Simulao do multiplicador.

Referncias Bibliogrficas
[ABR 90] ABRAMOVICI, Miron; BREUER, Melvin A.; FRIEDMAN, Arthur D. Digital Systems Testing And Testable Design. New York: IEEE Press, 1990. 652p. [AGR 93a] AGRAWAL, Vishwandi D.; KIME, Charles R.; SALUJA, Kewal K. A Tutorial on Built-In SelfTest - Part 1: Principles. IEEE Design and Test of Computers, p.73-82, March 1993. [AGR 93b] AGRAWAL, Vishwandi D.; KIME, Charles R.; SALUJA, Kewal K. A Tutorial on Built-In SelfTest - Part 2: Applications. IEEE Design and Test of Computers, p.69-77, June 1993. [AHO 88] AHO, Alfred; SETHI, Ravi; ULMAN, Jeffrey. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1988. [ALM 94] ALMASI, George S.; GOTTLIEB, Allan. Higly Parallel Computing. Benjamin/Cummings. 2a. ed. 1994. 689p. [ALT 01] Altera Corporation. http://www.altera.com. 2001. [BET 98] BETZ, Vaughn; ROSE, Jonathan. How Much Logic Should Go in an FPGA Logic Block. IEEE Design & Test of Computers, v.15, n.1, p.10-15. Jan-Mar 1998. [BRO 96] BROWN, Stephen. FPGA Architectural Research: A Survey. IEEE Design & Test of Computers, v.13, n.4, p.9-15. Winter 1996. [CAR 00] CARRO, Luigi; AGOSTINI, Luciano; PACHECO, Roberto; LUBASZEWSKI, Marcelo. Using Reconfigurability Features to Break Down Test Costs: a Case Study. In: 1st IEEE Latin American Test Workshop, Rio de Janeiro, Brasil. Proceedings... IEEE Computer Society Press, 2000. p. 209-214. [CHE 92] CHEN, Dev C. A Reconfigurable Multiprocessor IC for Rapid Prototyping of Algorithmic-Specific High-Speed DSP Data Paths. IEEE Journal of Solid-State Circuits, v.27, n.12, p.1895-1904. Dec. 1992. [CHE 96] CHEREPACHA, D.; LEWIS, D. DP-FPGA: An FPGA Architecture Optimized for Datapaths. VLSI Design, v.4, n.4, p.329-343. 1996. [COT 98] COTA, rika; Krug, MARGRIT; SUSIN, Altamiro; CARRO, Luigi; LUBASZEWSKI, Marcelo. Auto-Teste do Microprocessador 8051. Porto Alegre: UFRGS. 1998 (Technical Report). [DEH 96] DeHon, Andr. Reconfigurable Architectures for General-Purpose Computing. Massachussets Institute of Technology, 1996. PhD Thesis. (AI Technical Report 1586). [FRA 99] FRANCO, Denis. Um Estudo comparativo de Multiplicadores em FPGA para Filtros Adaptativos, UFRGS, Porto Alegre, 1999. (Relatrio de Pesquisa-RP292). 41p. [GON 01] GONSALES, Alex; REIS, Andr; REIS, Ricardo. Alocao de Registadores via Colorao de Grafos. Submetido ao VII Workshop Iberchip, 21-23 Mar. 2001. Montevideo, Uruguay. [MOL 93] MOLDOVAN, Dan I. Parallel Processing: From Applications to Systems. Morgan Kaufmann Publishers, San Mateo, California, 1993. 567p. [NUS 98] NUSSAUM, P.; GIRAU, B.;TISSERAND, A. Field Programmable Processor Arrays. Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science LNCS1478. Springer. Lausane, September 23-25.1998. p.311-322. [OGU 98] OGURI, K.; IMLIG, .; ITO, H.; NAGAMI, K.; KONISHI, R.; SHIOSAWA, T. General Purpose Computer Architecture Based on Fully Progammable Logic. Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science LNCS1478. Springer. Lausane, September 23-25.1998. p.323-334. [SHI 96] SHIRATSUCHI, Shinichi. FPGA as a Key Component for Reconfigurable System. In: Evolvable Systems: From Biology to Hardware. Lecture Notes in Computer Science-LNCS1259. First Internacional Conference, ICES96, Tsukuba, Japan, October 7-8, 1996. p.23-32. [SOU 00] SOUZA, Ado A. Jnior; GONSALES, Alex D.; FURLANETTO, Elenirse; CARRO, Luigi; LUBASZEWSKI, Marcelo. Modeling of a Dinamically Reconfigurable Test Targeted EPLD - TTEPLD. Seminrio Interno de Microeletrnica-UFRGS-SIM2000. Torres-RS, 4-5 Agosto, 2000. p.13-16. [WAI 97] WAINGOLD, Elliot; et. al. Baring It All To Software: Raw Machines. IEEE Computer. p.86-93, Sep. 1997.