PROJECTO PARA A TESTABILIDADE

Tamanho: px
Começar a partir da página:

Download "PROJECTO PARA A TESTABILIDADE"

Transcrição

1 PROJECTO PARA A TESTABILIDADE (TEXTO DE APOIO) ( J. M. Martins Ferreira Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrotécnica e de Computadores Rua dos Bragas Porto PORTUGAL Direitos de cópia Este material pode ser livremente usado dentro do consórcio Leonardo INSIGHT II. A sua autorização fora deste âmbito carece de autorização explícita do autor. Janeiro de 2 Leonardo da Vinci INSIGHT II

2 Preâmbulo Este texto de apoio sobre o Projecto para a Testabilidade pertence ao conjunto de documentos sob a responsabilidade da FEUP e pretende apresentar o projecto de circuitos testáveis, com base numa abordagem de ordem prática. É importante enfatizar a abordagem prática que esteve subjacente ao desenvolvimento deste material de ensino, essencialmente concebido para ser usado num ambiente de laboratório, mais do que numa sala de aulas tradicional. As sessões de tipo prático requerem dois tipos de recursos de apoio: Um complemento de hardware a este texto, na forma de uma carta de demonstração que exemplifica os problemas e as possíveis soluções relacionadas com o teste de circuitos por varrimento periférico (boundary scan test). Uma aplicação Windows que permite aos alunos escrever e executar os seus próprios programas de teste. A informação necessária para o fabrico de cartas de demonstração é incluída em anexo no final do capítulo 5 (Geração do Programa de Teste para uma CCI com BST IEEE 49.), acompanhando igualmente estes elementos uma disquete para a instalação da aplicação referida acima. Apesar de os princípios gerais do projecto para a testabilidade, com base no projecto com varrimento (scan design), datarem já de meados dos anos 7, a aprovação em 99 da norma IEEE 49. (para o caso dos circuitos digitais) veio contribuir decisivamente para a sua aceitação na indústria e tornou esta tecnologia acessível a qualquer projectista. Esta tendência consolidou-se em Junho de 999, com a aprovação da norma IEEE 49.4 para o teste de circuitos mistos, o que explica a razão pela qual estas duas normas constituem a base deste texto. José Manuel Martins Ferreira FEUP / DEEC Rua dos Bragas Porto PORTUGAL ([email protected] / Tel.: Fax:

3 INDICE ACRÓNIMOS GLOSSÁRIO. CONCEITOS BÁSICOS DE TESTE.. Modelação de faltas: o modelo ss@ Controlabilidade, observabilidade e testabilidade Geração de vectores de teste para circuitos combinatórios Testabilidade e geração de testes em circuitos sequenciais Melhoria de testabilidade através de soluções ad hoc Abordagens estruturadas ao projecto para a testabilidade Prática O TESTE POR VARRIMENTO PERIFÉRICO (IEEE 49.) 2.. O desenvolvimento do BST e o seu domínio de aplicação A arquitectura BS e o porto de acesso ao teste (TAP) A célula BS básica Os registos de dados de teste O registo de instrução O controlador do TAP Implementação de uma infraestrutura BST simples sobre um componente programável da série MACH Prática

4 3. O TESTE DE CARTAS DE CIRCUITO IMPRESSO COM BST (IEEE 49.) 3.. Detecção de faltas na infra-estrutura BST Detecção de circuitos abertos em ligações completamente BST Detecção de curto-circuitos entre ligações completamente BST Teste de ligações completamente BST em CCI com múltiplas cadeias Detecção de faltas em grupos de componentes sem BST Detecção de faltas em componentes MODELO DE UM CONTROLADOR Operações básicas de teste Operações básicas de teste para controlar a infra-estrutura BST Operações básicas de teste para sincronizar a infra-estrutura BS com recursos de teste externos Operações básicas de teste para controlar recursos internos de teste e o fluxo do programa de teste O conjunto de instruções de teste Controlo da infra-estrutura BST Sincronismo com recursos de teste externos Controlo de recursos internos e do fluxo do programa de teste Geração do programa de teste GERAÇÃO DO PROGRAMA DE TESTE PARA UMA CCI COM BST (IEEE 49.) 5.. A CCI de demonstração A informação necessária à geração do programa de teste Verificação da integridade da infra-estrutura BST Teste de ligações completamente BST Teste dos grupos de componentes sem BST Teste de componentes Os vectores de teste

5 5.3.. Vectores de teste para a detecção de curto-circuitos entre ligações completamente BST O conjunto completo de vectores de teste serializados, respostas esperadas e máscaras de comparação O programa de teste UMA IMPLEMENTAÇÃO WINDOWS DO CONTROLADOR Tapper: organização dos recursos A aplicação Tapper Barra de controlo do programa de teste Informação de estado Menus do Tapper Área de edição Teste exaustivo de grupos não BST Teste de grupos sem BST via PRPG e SA Determinação da assinatura correcta Número de vectores pseudo-aleatórios a aplicar Prática Detecção de faltas através de vectores de teste determinísticos Detecção de faltas através de vectores de teste pseudo-aleatórios INTRODUÇÃO AO AUTO-TESTE INCORPORADO 7.. Apresentação geral da arquitectura de auto-teste num CI Geração e aplicação de vectores Captura e avaliação das respostas Controlador do auto-teste Auto-teste de circuitos combinatórios Geração pseudo-aleatória de vectores de teste Compressão de respostas por análise de assinatura Auto-teste de circuitos sequenciais Auto-teste de macro-células Macro-células de baixa / média complexidade Mega-células: a proposta IEEE P

6 7.5. Interface entre funções de auto-teste e a infra-estrutura BST Arquitectura de um componente BST com auto-teste A instrução RUNBIST revisitada O auto-teste hierárquico Projecto para a testabilidade e auto-teste no processador Pentium Pro Prática O TESTE MISTO COM BASE NA NORMA IEEE Âmbito da norma IEEE Apresentação geral do A arquitectura básica : Estrutura de registos de teste As instruções : Os blocos principais O circuito de interface ao barramento de teste (TBIC) Os módulos periféricos analógicos (ABM) O teste de ligações na CCI com o Medida de impedâncias com o Informações adicionais sobre o Prática Controlo da infra-estrutura de teste num CI Projecto da infra-estrutura de teste para um CI : Influência sobre o modelo do controlador ao nível da CCI REFERÊNCIAS 9. Livros Normas e artigos em revistas ou conferências

7 Acrónimos ABM: Analog Boundary Module ALU: Arithmetic and Logic Unit ASIC: Application-Specific Integrated Circuit ATAP: Analog Test Access Port BIST: Built-In Self-Test BP: Bypass BST: Boundary Scan Test (BS: Boundary Scan) CAD: Computer Aided Design CCI: Carta de Circuito Impresso CI: Circuito Integrado CMOS: Complementary-symmetry Metal-Oxide-Semiconductor CPU: Central Processing Unit DBM: Digital Boundary Module DFT: Design For Testability E/S: Entradas / Saídas FF: Flip-Flop IEEE: Institute of Electrical and Electronics Engineers JETAG: Joint European Test Action Group (JTAG: Joint Test Action Group) LFSR: Linear Feedback Shift Register MISR: Multiple Input Signature Register MTM: Module Test and Maintenance bus (IEEE std 49.5) PAL: Programmable Array of Logic PDF: Portable Document Format PLA: Programmable Logic Array PLD: Programmable Logic Device

8 Acrónimos PPT: Projecto Para a Testabilidade PRPG: Pseudo-Random Pattern Generation RAM: Random-Access Memory ROM: Read-Only Memory RST: Respostas Sequenciais de Teste SA: Signature Analysis SCOPE: System Controllability, Observability, and Partitioning Environment SISR: Single Input Signature Register ss@: Single Stuck-at (s@: Stuck-at) TAP: Test Access Port TBIC: Test Bus Interface Circuit TCK: Test Clock TDI: Test Data Input TDO: Test Data Output TMS: Test Mode Select TRST: Test Reset TTL: Transistor-Transistor Logic URL: Uniform Resource Locator VLSI: Very Large Scale Integration VST: Vectores Sequenciais de Teste VTP: Vectores de Teste Paralelos WebCT: Web Curse Tools WWW: World Wide Web J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) A.2

9 Glossário Auto-teste: Operação de teste realizada no interior do circuito, usando para o efeito blocos internos que efectuam a geração / aplicação dos vectores de teste e a captura / avaliação das respostas (sendo por isso frequente a expressão auto-teste incorporado). O auto-teste pode existir a vários níveis hierárquicos, desde a macro-célula até ao sistema. Carta parcialmente BST: Carta de circuito impresso na qual apenas parte dos circuitos integrados presentes dispõem de BST (Boundary Scan Test). Circuito combinatório: Bloco de lógica cujas saídas dependem apenas do valor aplicado às entradas no instante considerado (a cada combinação nas entradas corresponde apenas uma combinação nas saídas). Circuito sequencial: Bloco de lógica cujas saídas dependem da sequência de valores aplicados às entradas (a cada combinação nas entradas pode corresponder mais do que uma combinação nas saídas). Cobertura de faltas: Parâmetro que quantifica a percentagem de faltas (de acordo com o modelo de faltas considerado) que é detectada por um determinado conjunto de vectores de teste. É importante salientar que continua a ser possível a passagem de produtos com defeito, mesmo quando a cobertura de faltas proporcionada pelo conjunto de vectores de teste usado for de % (dependendo da qualidade do modelo de faltas). Controlabilidade: Parâmetro que quantifica a maior ou menor facilidade com que é possível controlar o nível lógico que se pretende aplicar a um nó de um circuito, assumindo que o acesso se efectua apenas através das entradas primárias (quando referente a um circuito, representa o valor médio da controlabilidade dos nós que o integram). Defeito: Condição física susceptível de impedir o bom funcionamento de um circuito. Detecção: Operação de teste que pretende apenas identificar a presença / ausência de faltas / defeitos num circuito (produz um resultado binário: sim / não). Diagnóstico: Operação de teste que pretende identificar os tipos de faltas / defeitos presentes num circuito (produz normalmente tantos detalhes

10 Glossário quanto for possível, no sentido de facilitar operações de reparação ou a melhoria dos processos de fabrico). Entradas primárias: Entradas exteriores de um circuito (bloco de lógica, circuito integrado, carta de circuito impresso ou mesmo sistema). Falta: Condição lógica que impede o bom funcionamento de um nó, ou de um conjunto de nós, no modelo de um circuito (uma falta não tem necessariamente um defeito equivalente). Uma falta será detectável se levar o modelo do circuito a produzir uma resposta diferente da correcta, pelo menos para um vector de teste aplicado às suas entradas. Falta não detectável: Uma falta diz-se não detectável quando a sua presença não altere o valor (correcto) das saídas no modelo do circuito, qualquer que seja a combinação de valores lógicos aplicados à sua entrada. Ligações completamente BST: Pistas de circuito impresso nas quais todos os pinos são de um dos dois tipos seguintes: pinos BST (aos quais existe associada uma ou mais células BST) ou entradas / saídas primárias da carta de circuito impresso. Modelo: Representação abstracta usada para descrever as principais características de uma entidade física. uando aplicado a um circuito digital (modelação lógica), corresponde a uma descrição textual ou gráfica que nos permite determinar o seu comportamento para qualquer combinação de valores lógicos aplicados às entradas. Modelo de faltas: Representação abstracta usada para descrever um conjunto de condições lógicas susceptíveis de levar o modelo de um circuito a produzir respostas diferentes das esperadas. Um bom modelo de faltas possui dois atributos principais, fundamentais para a geração de vectores de teste: simplicidade (para facilitar o processo de geração dos vectores de teste) e abrangência (para que os vectores de teste gerados consigam detectar o maior número possível de defeitos). Modelo de faltas ss@ (single stuck-at): Modelo de faltas em que se considera apenas uma falta de cada vez (single), podendo o nó no qual a falta está presente encontrar-se numa de duas situações: sempre a (stuck-at-) ou sempre a (stuck-at-). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) G.2

11 Glossário Observabilidade: Parâmetro que quantifica a maior ou menor facilidade com que é possível observar o nível lógico presente num nó de um circuito, assumindo que o acesso se efectua apenas através das saídas primárias (quando referente a um circuito, representa o valor médio da observabilidade dos nós que o integram). Projecto com varrimento: Técnica subjacente às principais metodologias estruturadas de projecto para a testabilidade, na qual os flip-flops presentes são precedidos por um multiplexador de 2:, que permite a sua interligação como um registo de deslocamento. O projecto com varrimento será total ou parcial, conforme todos ou apenas parte dos flipflops disponham desta facilidade. Projecto para a testabilidade: Metodologia específica de projecto que impõe a adopção de regras para melhorar a testabilidade de um circuito. O projecto para a testabilidade do tipo ad hoc usa regras concebidas à medida (de acordo com cada circuito particular), enquanto as metodologias estruturadas de projecto para a testabilidade usam regras pré-determinadas e de carácter geral. Saídas primárias: Saídas exteriores de um circuito (bloco de lógica, circuito integrado, carta de circuito impresso ou mesmo sistema). Simulação de faltas: Operação que determina a resposta esperada do modelo de um circuito, na presença de faltas, quando um determinado conjunto de vectores de teste é aplicado às suas entradas. A simulação de faltas desempenha um papel fundamental na geração de vectores de teste. Simulação lógica: Operação que determina a resposta esperada do modelo de um circuito, na ausência de faltas, quando um determinado conjunto de vectores de teste é aplicado às suas entradas. A simulação lógica desempenha um papel fundamental na verificação de projecto. Sobrecarga de teste: Parâmetro que quantifica os recursos adicionais necessários à implementação de facilidades específicas para melhorar a testabilidade de um circuito (é frequentemente expressa em termos de área de silício, mas deveria na realidade dizer também respeito a pinos adicionais e às implicações sobre o desempenho do circuito). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) G.3

12 Glossário Testabilidade: Parâmetro que quantifica a maior ou menor facilidade com que é possível gerar um vector de teste para detectar a presença de uma falta num determinado nó (quando referente a um circuito, representa o valor médio da testabilidade dos nós que o integram). Teste: Operação que determina se um circuito, ou um modelo do circuito, apresentam desvios face às suas características esperadas (funcionais, temporais, paramétricas, etc.). Teste em circuito: Operação de teste que usa uma matriz de pernos para estabelecer a ligação física / directa entre os canais de teste do equipamento de teste automático e os nós internos da carta de circuito impresso a testar (pinos dos circuitos integrados ou dos elementos passivos). Teste funcional: Operação de teste na qual os canais de teste estão em contacto apenas com os pinos dos conectores de entradas / saídas primárias da carta de circuito impresso (não havendo acesso físico / directo aos seus nós internos). A mesma expressão usa-se também fora do contexto dos equipamentos de teste automático, para designar uma operação de teste que pretende aferir se a função lógica realizada por um circuito está de acordo com a sua especificação (como complemento ao teste paramétrico, onde se verificam valores de tensão e corrente, parâmetros temporais, etc.). Teste hierárquico: Operação de teste que se desenrola a mais do que um nível (macro-célula, circuito integrado, carta de circuito impresso, sistema). Teste misto: Operação de teste que lida com circuitos mistos (que incluem uma componente analógica e outra digital). Validação do protótipo: Operação de teste que usa o protótipo de um circuito para avaliar a sua compatibilidade com os requisitos do utilizador / cliente. Vector de teste: Combinação de valores lógicos a aplicar às entradas de um circuito, para avaliar se existem desvios face a uma determinada especificação (funcionais, temporais, paramétricas, etc.). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) G.4

13 Glossário Verificação de projecto: Operação de teste que usa o modelo de um circuito para avaliar a sua compatibilidade com a especificação que orientou o respectivo desenvolvimento. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) G.5

14 . Conceitos básicos de teste O teste constitui uma das etapas finais no ciclo de produção e tem uma importância fundamental para assegurar que os clientes recebem unidades operacionais. Nenhum produto pode ser fabricado sem que exista uma estratégia de teste eficaz, apta a garantir que a percentagem de produtos com defeito que chegam ao cliente é suficientemente baixa para ser aceitável (este limiar não é o mesmo para todos os produtos / fabricantes / clientes, mas mede-se sempre na gama das partes por milhão). A definição da estratégia de teste tem de facto que se iniciar o mais cedo possível, dentro do ciclo de projecto, já que todas as decisões que possam simplificar o teste de produção levarão normalmente a menor custo e maior fiabilidade. Sendo um estádio tão importante em termos da satisfação do cliente, o teste assumiu ao longo dos anos uma grande importância, dentro do ciclo global de projecto e teste. A nossa abordagem irá iniciar-se pela consideração dos conceitos básicos de teste, que terão que ser bem compreendidos para nos apercebermos da importância das infra-estruturas de testabilidade definidas nas normas IEEE 49. e IEEE O nosso percurso começa pela consideração dos modelos de faltas e das questões associadas à controlabilidade e à observabilidade, de modo a preparar o leitor para a abordagem aos procedimentos elementares que conduzem à geração automática de vectores de teste e finalmente às alternativas disponíveis para a melhoria de testabilidade, quer por métodos ad hoc quer por métodos estruturados... Modelação de faltas: o modelo ss@ O primeiro desafio que temos que enfrentar, quando tentamos classificar ou enumerar as razões que podem justificar o funcionamento incorrecto de um circuito, consiste em lidar com o (muito) elevado número de causas possíveis para esta situação. Curto-circuitos ou circuitos abertos, bem como componentes com defeito ou mal colocados, são apenas algumas das razões que podem explicar o funcionamento incorrecto de um circuito. Se considerarmos que o número de curto-circuitos possíveis cresce exponencialmente com o número de nós presentes no circuito, torna-se claro que não será possível desenvolver qualquer estratégia de teste viável, a menos que a complexidade do problema seja reduzida a níveis mais aceitáveis.

15 Conceitos básicos de teste O nosso esforço para confinar a complexidade do problema de teste terá deste modo que começar pela redução do número de situações que conduzem a mau funcionamento do circuito. É esta a razão principal pela qual o desenvolvimento de métodos de representação de defeitos (físicos), a nível lógico, começou desde os anos 6, essencialmente desde que se tornou claro que o teste de um circuito integrado (CI) não poderia continuar a ser feito pela verificação do funcionamento correcto para todas as combinações possíveis nas entradas. Os modelos de faltas são o resultado deste esforço e permitem-nos desenvolver algoritmos de geração de vectores de teste que dispensam a consideração do universo de defeitos físicos, levando antes em conta o grupo, muito mais reduzido, de faltas, que os representam ao nível lógico. Devemos no entanto chamar salientar que não existe na maior parte dos casos qualquer relação de equivalência entre faltas e defeitos, já que se assim não fosse a complexidade do problema seria essencialmente a mesma. Os atributos que qualificam um bom modelo de faltas são principalmente dois, a saber:. Tem que ser suficientemente simples para permitir o desenvolvimento de procedimentos eficientes para a geração de vectores de teste. 2. Tem que ser suficientemente representativo para garantir que a percentagem de componentes com defeito que passam sem ser detectados (mesmo por um conjunto de vectores de teste aptos a detectar % das faltas consideradas) é suficientemente pequeno. De entre os vários modelos de faltas que têm sido propostos ao longo dos anos, merece especial destaque o que recebeu a designação de single stuck-at (ss@), que foi um dos primeiros e é ainda um dos mais populares (devido às suas propriedades, no que respeita aos dois atributos definidos acima). Este modelo define apenas dois tipos de faltas, s@ e s@, considerando-se que apenas uma falta (single) de cada vez estará presente no circuito. Reparemos que esta restrição garante que o número de condições de falta cresce agora linearmente com o número de nós, e já não exponencialmente, o que possibilita o desenvolvimento de aplicações informáticas para a geração automática de vectores de teste. ue poderíamos designar por modelo de faltas individuais sempre-a(-/). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).2

16 Conceitos básicos de teste Mesmo sem proporcionar uma representação próxima dos defeitos de fabrico reais (não existe equivalência entre nós curto-circuitados e nós s@), a experiência tem mostrado que os conjuntos de vectores de teste que atinjam uma cobertura de faltas ss@ próxima dos % são em muitas situações satisfatórios, no que respeita ao objectivo geral de impedir que componentes com defeito passem sem ser detectados..2. Controlabilidade, observabilidade e testabilidade Os procedimentos básicos destinados à geração de vectores para a detecção de faltas ss@ serão mais facilmente perceptíveis se começarmos por considerar três aspectos essenciais nesta área: a controlabilidade, a observabilidade e a testabilidade. A controlabilidade dá-nos uma medida da dificuldade com que podemos forçar o nível lógico num nó, seja a ou a. Se considerarmos o caso do circuito apresentado na figura., verificamos com facilidade que apenas duas das oito combinações possíveis nas entradas nos permitem aplicar um no nó Y. Por outro lado, podemos aplicar um no nó X com metade das combinações possíveis nas entradas, o que nos leva imediatamente a concluir que a controlabilidade é melhor neste segundo caso. A B Y 2 3 F C 3 4 X A B C Contr. Y= A B C Contr. X= X - X X - X 9 X X 9 X - X - Figura.: A controlabilidade dos nós Y= e X=. O exemplo considerado sugere-nos que, num circuito com baixos índices de controlabilidade, teremos frequentemente dificuldade em conseguir aplicar o J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).3

17 Conceitos básicos de teste valor lógico pretendido num determinado nó, o que naturalmente não contribuirá para simplificar a geração de vectores de teste, uma vez que:. Como veremos mais tarde, o nosso primeiro passo para detectar uma falta ss@ num determinado nó, consiste em tentar que nele surja o valor oposto ao da falta. 2. No caso de um CI, o valor em qualquer nó só pode ser controlado a partir dos seus pinos de entrada (que constituem as entradas primárias do circuito). Este mesmo raciocínio leva-nos a concluir que uma determinada falta só pode ser detectada se o sinal de erro (a diferença entre o valor que tentamos aplicar ao nó e aquele que nele surge, devido à falta ss@) puder ser propagado até um pino de saída do CI (uma saída primária). A observabilidade de um nó é um parâmetro que nos dá uma medida da dificuldade associada à propagação do valor lógico presente num determinado nó, até uma saída directamente observável. Se considerarmos de novo o mesmo circuito, agora apresentado na figura.2, verificamos com facilidade que seis das oito combinações possíveis nas entradas nos permitem observar na saída F qual o valor presente no nó Y. Por outro lado, a observação do valor presente no nó X só pode ser feita com metade das combinações possíveis nas entradas, o que nos leva a concluir que a observabilidade de Y é melhor que a de X. A B Y 2 3 F C 3 4 X A B C Observ. de Y A B C Observ. de X X X - X 9 X X 9 X - X 9 X 9 Figura.2: A observabilidade dos nós Y e X. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).4

18 Conceitos básicos de teste De acordo com os comentários apresentados, deverá ser desde já claro para o leitor que a tarefa de geração de vectores de teste será bastante mais simples para os circuitos com elevados níveis de controlabilidade e observabilidade. Com efeito, não nos serve de nada dispor de elevada controlabilidade num nó, se não nos for possível propagar o seu valor até uma saída primária. Do mesmo modo, também uma elevada observabilidade nos será inútil, se não for possível aplicar no nó o valor lógico pretendido. Para concluir esta secção, apresentamos o conceito de testabilidade de um circuito como uma medida combinada dos níveis de controlabilidade e de observabilidade que estão associados à totalidade dos seus nós. Como será de esperar, uma testabilidade elevada facilita grandemente a geração de vectores de teste, conduzindo na generalidade dos casos a um teste mais eficaz..3. Geração de vectores de teste para circuitos combinatórios Muitos dos algoritmos correntes para a geração de vectores de teste reportam a sua origem ao trabalho desenvolvido em meados dos anos 6 por Paul Roth, que propôs o algoritmo D (designação que se deve à notação D que Roth usou para o descrever). O algoritmo D baseia-se no modelo de faltas ss@ e considera que cada nó se pode encontrar num dos seguintes quatro estados:,, D (/, um valor lógico composto que representa a situação de pretendermos impor um num nó que está s@) e /D (/), tal como se descreve na tabela.: Condição no nó Notação D Descrição / Nó sem falta e a / /D Nó s@ ao qual pretendemos impor um / D Nó s@ ao qual pretendemos impor um / Nó sem falta e a Tabela.: A notação D. Com base nestas quatro condições possíveis, o procedimento básico seguido pelo algoritmo D para gerar um vector de teste pode ser descrito pela seguinte sequência com três passos, para cada falta em cada nó:. Exercitar a falta, aplicando ao nó o valor lógico oposto ao da falta ( se s@, se s@). 2. Propagar o sinal de erro (D ou /D) até uma saída primária. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).5

19 Conceitos básicos de teste 3. Justificar (de jusante para montante) os valores lógicos que permitem a propagação, até que cheguemos a uma combinação necessária nas entradas primárias (i.e. um vector que detecte a falta e o nó considerados). uando % das faltas ss@ tiverem sido detectadas, ou tiver sido atingido o limite mínimo exigido para a cobertura de faltas, teremos à nossa disposição um pequeno conjunto de vectores (quando comparado com o número total de combinações possíveis), no qual geralmente poderemos confiar para efectuar o teste estrutural de produção. A designação estrutural advém das faltas consideradas (ss@ nos nós do circuito) e do nível de abstracção do modelo descritivo do circuito (normalmente um diagrama esquemático ou uma descrição não gráfica de baixo nível de abstracção). De modo a maximizar a eficácia do teste, os vectores de teste estruturais são frequentemente complementados com um conjunto de vectores de teste funcionais, ao definir-se a estratégia de teste de produção para cada produto. A figura.3 ilustra aplicação dos três passos descritos, com o objectivo de gerar um vector de teste que detecte a presença da falta s@ no nó Y do circuito já anteriormente considerado. A 2 3 Y s@ A 2 3 Y s@ B / 2 3 F B / 2 3 F C 3 4 C (a) Nó Y s@. (b) Exercitar a falta (passo ). A B C Y s@ / F / A B C Y s@ / F / (c) Propagar a falta (passo 2). (d) Justificar a falta (passo 3). Figura.3: Geração de um vector de teste através do algoritmo D. Repare-se que apenas o vector de teste (A,B,C)=(,,) é capaz de detectar a falta s@ no nó Y, uma vez que nenhuma outra combinação nas entradas do circuito será simultaneamente capaz de exercitar a falta e de propagar o sinal de erro até J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).6

20 Conceitos básicos de teste uma saída primária. É no entanto comum que existam vários vectores de teste capazes de detectar uma determinada falta, tal como teria sucedido se tivéssemos antes considerado a falta s@ neste mesmo nó Y. Para este caso, e considerando que basta que uma das entradas do AND esteja a para que seja aplicado um a Y (desde que este nó não esteja s@), e que a aplicação de um em C garante a propagação do sinal de erro, constatamos com facilidade a existência de três vectores capazes de detectar esta falta: (A,B,C) = { (,,) (,,) (,,) }. A situação oposta pode no entanto também ocorrer, quando não existir qualquer vector capaz de detectar uma determinada falta. A figura.4 ilustra uma situação destas para o caso de uma falta s@ no nó Y do circuito apresentado (que difere ligeiramente do que considerámos anteriormente), onde não é possível aplicar um no nó s@ e ao mesmo tempo propagar o sinal de erro resultante até uma saída primária (já que precisaríamos que a entrada A estivesse ao mesmo tempo em e em ). A 2 B Y s@ 2 3 F A 2 B Y s@ / 2 3 F (a) Nó Y s@. (b) Exercitar a falta. A B Y s@ / 2 3 F A B Y s@ / 2 3 F (c) Propagar a falta (tentativa). (d) Justificar a falta (impossível). Figura.4: Exemplo de uma falta não detectável. Existem contudo alguns casos para os quais um vector de teste poderá ainda ser encontrado, mesmo que temporariamente nos encontremos na situação descrita anteriormente, desde que seja possível retroceder 2 até um ponto de decisão anterior e optar por uma escolha diferente. No exemplo que se ilustra na figura J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).7

21 Conceitos básicos de teste.5, e quando se constata a impossibilidade da primeira escolha em (b), a escolha alternativa apresentada em (c) conduz-nos ao vector de teste pretendido. A 2 3 Y s@ A 2 Y s@ B F 744 B / 2 3 F (a) Nó Y s@. (b) Primeira tentativa (impossível). A 2 Y s@ 3 A 2 3 Y s@ 744 B / F 3 / 744 B / / F (c) Escolha alternativa. (d) Propagação e justificação. Figura.5: Retroceder (backtracking) para gerar um vector de teste. A geração de vectores de teste é na prática efectuada por recurso a ferramentas computacionais que recebem uma descrição do circuito (e.g. uma lista de ligações netlist) e procuram o menor conjunto de vectores capaz de obter a máxima cobertura de faltas (ou a cobertura de faltas mínima especificada)..4. Testabilidade e geração de testes em circuitos sequenciais O modelo ss@, bem como várias melhorias que foram ao longo dos anos sendo introduzidas sobre a formulação subjacente ao algoritmo D, levaram ao desenvolvimento de ferramentas computacionais consideravelmente eficientes (em termos de tempo de execução e cobertura de faltas) para a geração de vectores de teste, no que diz respeito aos circuitos combinatórios. A passagem para os circuitos sequenciais revelou-se no entanto um problema de enorme complexidade, por razões que se explicam melhor recorrendo a um exemplo como o que se ilustra na figura.6. 2 A este procedimento dá-se em inglês a designação de backtracking. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).8

22 Conceitos básicos de teste Bloco combinatório A Entrada primária 2 3 X s@ (/) Saída para o próximo estado X 5 Y Saída primária do circuito Saída para o próximo estado F=/ +5 V 6 5 CL PR CLK D V CL PR CLK D V CLK Figura.6: Circuito sequencial simples com uma falta s@. A aplicação do algoritmo D para o caso da falta s@ no nó X conduz-nos rapidamente ao vector a aplicar às entradas do bloco combinatório (os dois AND e o OR), mas estes nós não correspondem a entradas primárias do circuito. Com efeito, este circuito é visto do exterior como tendo apenas uma entrada (a entrada primária A) e uma saída (a saída primária F), para além do sinal de relógio. O problema que temos neste caso é que as entradas do bloco combinatório estão ligadas às saídas dos elementos de memória (os FF 3 que constituem as variáveis de estado) e não às entradas primárias do circuito. Nestas circunstâncias, a aplicação do algoritmo D conduziu-nos à combinação de variáveis de estado necessária para a detecção da falta s@ em X, mas a sequência a aplicar na entrada A, para trazer o circuito até este estado, está ainda por determinar. No exemplo da figura.6 esta situação não constitui verdadeiramente um problema, uma vez que aplicação de dois impulsos de relógio ao circuito, mantendo a 3 Flip-flops. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).9

23 4 4 Conceitos básicos de teste entrada A em, conduzirá a saída de ambos os FF a (e os seus complementos a ), tal como se ilustra na figura.7. A Bloco combinatório 3 6 X s@ (/) 2 Y Saída para o próximo estado Saída primária do circuito Saída para o próximo estado F= (a) Este é o estado inicial do circuito, onde se assume que ambos os FF D têm as saídas em. A detecção não é possível porque a falta não foi activada e não foi estabelecido nenhum percurso de propagação V CL 7474 CLK +5 V 5 PR CLK D 3 2 A CL PR CLK D F CLK +5 V A= Bloco combinatório 3 6 X s@ (/) 2 Y Saída para o próximo estado Saída primária do circuito Saída para o próximo estado F= (b) O primeiro impulso de relógio é aplicado, com A em, levando o circuito para um novo estado, no qual a activação da falta ainda não tem lugar. No entanto, e como a entrada inferior do OU já se encontra em, a propagação do sinal de erro já 6 +5 V CL 7474 seria possível. 5 PR CLK D 3 2 CLK +5 V CL PR CLK D A +5 V CLK F J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).

24 4 Conceitos básicos de teste A= Bloco combinatório 3 6 X s@ (/) 2 Y Saída para o próximo estado Saída primária do circuito Saída para o próximo estado F=/ (c) O segundo impulso de relógio, com A em, é aplicado e conduz o circuito para um novo estado, no qual a detecção da falta já é possível (por garantir a activação da falta e a propagação do sinal de erro). +5 V CLK 6 5 CL PR CLK D A +5 V CL PR CLK D CLK F fault-free X s@ +5 V Figura.7: Evolução das condições no circuito, desde o estado inicial até à detecção da falta. Os comentários que apresentamos a seguir tornam mais clara a razão pela qual a geração de vectores de teste para circuitos sequenciais é geralmente um problema muito complexo (e também porque é que isso não sucedeu no caso representado na figura.6):. A aplicação do algoritmo D permite-nos chegar à combinação necessária nas entradas no bloco combinatório, que inclui as saídas dos FF, mas a sequência a aplicar nas entradas primárias do circuito, que nos permitirá chegar até ao estado correspondente, está ainda por determinar e requer o conhecimento do diagrama de transição de estados do circuito. Este facto não constituiu um problema no exemplo da figura.6 porque os dois FF estão configurados como um registo de deslocamento, o que permite carregar directamente qualquer combinação pretendida nas suas saídas. 2. Uma situação semelhante ocorre quando a saída onde a falta é detectável não corresponde a uma saída primária, sendo antes a entrada para um dos FF que implementam as variáveis de estado. 3. Mesmo quando o diagrama de transição de estados do circuito (na ausência de faltas) é conhecido de antemão, pode perfeitamente acontecer que uma falta ss@ afecte as saídas do bloco combinatório que determinam o estado seguinte. Neste caso, o novo diagrama de transição de estados terá que ser determinado antes que a sequência necessária nas entradas primárias possa ser J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).

25 Conceitos básicos de teste encontrada. Uma vez mais, esta situação não teve lugar no exemplo analisado na figura.6, já que uma falta no nó X não produz este efeito. Podemos compreender melhor porque é que a geração de um vector é um processo complexo, mesmo para o circuito simples que se ilustra na figura.6, se considerarmos uma falta que modifique o diagrama de transição de estados do circuito. A falta s@ no nó Y corresponde a um exemplo deste tipo, representando-se na figura.8 os dois diagramas de transição de estados (com e sem a falta presente), assumindo que e são respectivamente as saídas dos FF superior e inferior.,=,,= Os estados e 3 (=) estão agora inacessíveis (a) Diagrama de estados sem faltas. (b) Diagrama de estados com Y s@. Figura.8: Transição de estados do circuito representado na figura.6, com e sem Y s@ presente. Como já sabemos, se colocarmos A em durante dois ciclos de relógio, o circuito é conduzido até ao estado 3 e permite a detecção da falta X s@ (com e ambos em, como se ilustra na figura.8.a). Contudo, se Y estiver s@, os novos passos necessários à geração do vector que detecte esta falta são agora os seguintes:. O algoritmo D dá-nos o vector de teste que é necessário aplicar às entradas do bloco combinatório (tal como para X s@). 2. O novo diagrama de transição de estados para o circuito com a falta presente terá agora que ser determinado, conduzindo à representação que se ilustra na figura.8.b (este passo não era necessário para o caso de X s@). 3. Analisando os dois diagramas de estados, podemos finalmente encontrar a sequência que é necessário aplicar na entrada primária A. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).2

26 Conceitos básicos de teste É interessante referir que a mesma sequência aplicada em A (um durante dois ciclos de relógio) permitirá também a detecção de Y s@, como se torna evidente pela consideração dos diagramas de estados representados na figura.8. O circuito será conduzido até ao estado 3 se a falta Y s@ não existir (e teremos F em ), ou manter-se-á no estado (com F em ), se ela estiver presente..5. Melhoria de testabilidade através de soluções ad hoc As medidas ad hoc para melhorar a testabilidade, como o nome sugere, consistem no recurso a regras particulares de projecto, ou a correcções posteriores, com o objectivo de minimizar os problemas associados à geração de vectores de teste. Sendo específicas para cada projecto, estas medidas apresentam duas limitações principais: Nem sempre são reutilizáveis, uma vez que cada projecto tem especificidades próprias em requisitos e problemas de testabilidade. Não garantem elevados níveis de testabilidade para qualquer tipo de circuito. Poderíamos recorrer a um grande número de exemplos para ilustrar as regras ad hoc de projecto para a testabilidade (DfT, Design for Testability), mas é largamente preferível que nos concentremos nas regras (ou, mais exactamente, metodologias) estruturadas, que consideraremos na próxima secção. Como tal, restringir-nos-emos nesta abordagem a referir algumas das soluções mais comuns: De modo a evitar a necessidade de se aplicar um elevado número de impulsos de relógio, quando pretendemos levar um contador de dimensão apreciável (e.g. 6 bits ou mais) a um determinado estado, é frequente implementaremse soluções que permitem particionar um contador de n bits em k contadores com (n/k) bits cada um. Desta forma, e para efeitos de teste, podemos aplicar impulsos aos vários contadores em paralelo, até se atingir a combinação pretendida no conjunto das suas saídas. A inclusão de linhas de inicialização (a ou a ), síncronas ou assíncronas, é também uma medida comum, de modo a permitir controlar a inicialização (preset ou reset) com poucos (ou mesmo nenhuns) impulsos de relógio. De forma a melhorar os índices de observabilidade, alguns nós internos podem ser trazidos até saídas primárias, seja por aumento do número de J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).3

27 Conceitos básicos de teste pinos ou por multiplexagem entre estes nós e as saídas primárias já existentes. É também possível uma solução semelhante para melhorar a controlabilidade de nós internos, que podem ser ligados a pinos adicionais ou multiplexados com algumas das entradas existentes. Estas e outras medidas semelhantes não são no entanto suficientemente sistemáticas para permitir uma abordagem uniforme ao projecto de circuitos testáveis, o que levou desde meados dos anos 7 ao desenvolvimento de metodologias que garantam sempre elevados níveis de testabilidade..6. Abordagens estruturadas ao projecto para a testabilidade O conceito básico subjacente à generalidade das metodologias estruturadas de projecto para a testabilidade consiste em proporcionar uma forma sistemática de conduzir o circuito até qualquer estado, num número fixo (e reduzido) de impulsos de relógio, qualquer que seja o estado inicial e a falta presente na sua componente combinatória (mesmo que afecte a lógica de geração do estado seguinte). A expressão metodologia estruturada de projecto para a testabilidade (structured DfT) implica que a mesma abordagem ao projecto possa sempre ser usada e garanta bons níveis de testabilidade, qualquer que seja a função implementada pelo circuito. Existe contudo um preço a pagar, que normalmente consiste em aceitar determinadas regras de projecto (ou, mais exactamente, um estilo de projecto), bem como uma maior área de silício, maior número de pinos e tempos de propagação mais elevados. O problema da geração de vectores de teste, para qualquer circuito sequencial síncrono, pode ser grandemente simplificado, se os FF D 4 usados na sua implementação forem precedidos por um multiplexador de 2:, partilhando todos estes multiplexadores um sinal de controlo comum. Esta solução está ilustrada na figura.9, onde podemos constatar que a colocação em do sinal de controlo Modo de Teste, fará com que os FF existentes fiquem reconfigurados como um registo de deslocamento e permitirá que qualquer combinação pretendida nas suas saídas possa simplesmente ser deslocada para o seu interior, necessitando para o efeito exactamente de N ciclos de relógio (sendo N o número de FF D). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).4

28 Conceitos básicos de teste Estado actual +5 V V CL 4 PR +5 V CLK D UA : mux Modo de Teste Estado seguinte Saída série (scan out) Estado actual CL PR +5 V CLK D UB : mux Modo de Teste Estado seguinte +5 V Estado actual 6 5 CL 4 PR +5 V CLK D U2A : mux Modo de Teste Estado seguinte Modo de Teste Entrada série (scan in) Relógio (CLOCK) Figura.9: Princípio do projecto com varrimento (scan design). uando todos os FF D existentes são precedidos por um multiplexador de 2:, tal como referido (constituindo aquilo que se designa como FF com varrimento ou scan FF), temos um caso de projecto com varrimento total (full scan design). Esta metodologia estruturada de projecto para a testabilidade começou a ganhar popularidade no final da década de 7, quando se tornou evidente que os algoritmos de geração de vectores de teste para circuitos sequenciais não seriam capazes de lidar com a complexidade crescente dos componentes VLSI. As técnicas de projecto com varrimento ultrapassam esta dificuldade, ao proporcionarem uma solução simples para os dois problemas principais que tornam tão complexa a geração de vectores de teste para estes casos: Primeiro problema: Parte das entradas do circuito combinatório não são directamente controláveis, por serem as que estão ligadas às saídas dos FF D (este conjunto de nós é o que define o estado actual). 4 Flip-flops D. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).5

29 4 4 Conceitos básicos de teste Solução: Os FF D com varrimento, ilustrados na figura.9, possibilitam a controlabilidade directa destes nós, através de um procedimento simples que requer um número fixo de ciclos de relógio: Colocar a entrada de Modo de Teste a Deslocar para as saídas dos FF D a combinação de estado pretendida (três ciclos de relógio) Colocar a entrada de Modo de Teste a A figura. ilustra o exemplo de se pretender impor a passagem do circuito para o estado, assumindo que o estado actual é e que o estado seguinte, imposto pelo funcionamento normal do circuito, seria (realce-se uma vez mais que esta sequência de etapas é sempre possível, qualquer que seja a função realizada pelo circuito ou a falta ss@ eventualmente presente no seu bloco combinatório): Estado actual Estado actual Estado actual V +5 V +5 V CL PR +5 V +5 V +5 V 3 CL PR CL PR CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série Saída série Próximo estado Próximo estado Próximo estado Relógio (a) Condições iniciais: Estado actual, estado seguinte. Recorde-se que os nós de estado actual são entradas (internas) do bloco combinatório que define a função global realizada pelo circuito sequencial e que os nós de estado seguinte são saídas (também internas) do mesmo bloco. Uma vez que o sinal Modo de Teste está em, cada ciclo de relógio aplicado nestas condições teria por efeito transferir para as saídas dos FF D os valores presentes nos nós de estado seguinte. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).6

30 Conceitos básicos de teste Estado actual Estado actual Estado actual V +5 V +5 V CL PR +5 V 3 CL PR +5 V CL PR +5 V CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (b) O sinal Modo de Teste está em e os FF D reconfigurados como um registo de deslocamento. O primeiro ciclo de relógio fará com que o conteúdo dos FF D seja deslocado uma posição para cima e irá transferir o valor presente na Entrada Série para a saída do primeiro FF D na cadeia. Os valores presentes em cada nó são os que resultam da aplicação do primeiro ciclo de relógio, com a Entrada Série em. Repare-se que o estado seguinte passou a ser desconhecido, já que as entradas do bloco combinatório são agora diferentes. Estado actual V CL PR +5 V CLK D UA : mux Modo de Teste Saída série? Próximo estado (c) Os valores apresentados são aqueles que resultam da aplicação do segundo ciclo de relógio, mantendo em a Entrada Série. Repare-se que o estado em que o circuito inicialmente se encontrava está Estado actual V 3 CL PR +5 V CLK D UB : mux Modo de Teste? Próximo estado a ser deslocado para o exterior, à medida que o novo estado é deslocado para o interior. Estado actual V CL PR +5 V CLK D U2A Modo de Teste 2: mux Modo de Teste Entrada série? Próximo estado Relógio J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).7

31 Conceitos básicos de teste Estado actual Estado actual Estado actual V +5 V +5 V CL PR +5 V 3 CL PR +5 V CL PR +5 V CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (d) O último ciclo de relógio foi agora aplicado com a Entrada Série em, de modo que o estado actual do circuito passou a ser, tal como se pretendia. Três ciclos de relógio foram necessários para levar o circuito até este estado, uma vez que este número é igual ao número de FF D presentes. Para circuitos de maior dimensão, esta regra garante uma transição muito mais rápida para qualquer estado pretendido (no caso extremo, para um circuito com N FF D, a redução poderá ser de 2 N - para N ciclos). Estado actual V CL PR +5 V CLK D UA : mux Modo de Teste Saída série? Próximo estado (e) O estado pretendido foi atingido e o sinal Modo de Teste voltou a ser colocado em. Cada nó de estado seguinte está uma vez mais ligado à entrada do FF D respectivo e é definido pela lógica Estado actual V 3 CL PR +5 V CLK D UB : mux Modo de Teste? Próximo estado combinatória, de acordo com o valor das entradas primárias e do estado actual () do circuito. Estado actual V CL PR +5 V CLK D U2A Modo de Teste 2: mux Modo de Teste Entrada série X? Próximo estado Relógio Figura.: Controlabilidade dos nós de estado actual.. Segundo problema: Parte das saídas do circuito combinatório não são directamente observáveis, por serem as que estão ligadas às entradas dos FF D (este conjunto de nós é o que define o estado seguinte). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).8

32 4 4 Conceitos básicos de teste Solução: Os FF D com varrimento, ilustrados na figura.9, possibilitam a observabilidade directa destes nós, através de um procedimento semelhante ao anterior: Capturar os valores presentes nas entradas dos FF D (que são também as saídas do bloco combinatório) um ciclo de relógio Colocar em o sinal Modo de Teste Deslocar para o exterior a combinação correspondente ao (que é agora o) estado actual mais dois ciclos de relógio Colocar em o sinal Modo de Teste A figura. assume as mesmas condições iniciais da figura..a e ilustra o procedimento descrito para observar o próximo estado, definido pelas saídas do bloco combinatório (uma vez mais, trata-se de um procedimento que é válido qualquer que seja a função realizada pelo circuito e qualquer que seja a localização de uma falta ss@ eventualmente presente): Estado actual Estado actual Estado actual V +5 V +5 V CL PR +5 V +5 V +5 V 3 CL PR CL PR CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série Saída série Próximo estado Próximo estado Próximo estado Relógio (a) As condições iniciais do circuito são as mesmas que no exemplo anterior, sendo o estado actual. Os multiplexadores de 2: têm o seu sinal de controlo, Modo de Teste, em e estão portanto em modo transparente (à excepção do maior tempo de propagação, o circuito comporta-se como se não estivessem presentes quaisquer técnicas de projecto para a testabilidade). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).9

33 Conceitos básicos de teste Estado actual Estado actual Estado actual V +5 V +5 V CL PR +5 V CL PR +5 V +5 V 3 CL PR CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série X Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (b) Os valores presentes em cada nó são os que se seguem à aplicação do primeiro ciclo de relógio. Uma vez que o sinal Modo de Teste continua em, os valores transferidos para as saídas dos FF D são os que estavam presentes nos nós de estado seguinte, definidos pelas saídas (internas) do bloco combinatório. Repare-se que o valor presente na Saída Série é agora o primeiro bit que se pretende deslocar para o exterior. Como seria de esperar, o estado seguinte passou a ser diferente. Estado actual Estado actual X Estado actual V +5 V +5 V CL PR +5 V 3 CL PR +5 V CL PR +5 V CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série X Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (c) O sinal Modo de Teste foi agora colocado em e os valores presentes em cada nó são os que se seguem à aplicação do segundo ciclo de relógio. Uma vez que os FF D estão agora reconfigurados como um registo de deslocamento, os nós de estado actual viram o seu conteúdo deslocado uma posição para cima e o segundo bit foi deslocado para o exterior. Repare-se que o primeiro FF D na cadeia captura o valor presente na Entrada Série, mesmo que não nos interesse controlar os valores a deixar como estado actual no fim. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).2

34 Conceitos básicos de teste Estado actual X Estado actual X Estado actual V +5 V +5 V CL PR +5 V 3 CL PR +5 V CL PR +5 V CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série X Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (d) Os valores agora presentes nos nós são os que se seguem à aplicação do terceiro (e último) ciclo de relógio. O último bit (o que está mais à direita na combinação que estava inicialmente presente nos nós de estado actual, ) foi agora deslocado para o exterior. Repare-se que foram necessários apenas dois ciclos de relógio, depois de o sinal Modo de Teste ter sido colocado em, já que o primeiro bit a deslocar para o exterior fica presente na Saída Série ainda com o sinal Modo de Teste em. Estado actual X Estado actual X Estado actual V +5 V +5 V CL PR +5 V PR +5 V +5 V 3 CL CL PR CLK D CLK D CLK D UA UB U2A Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste 2: mux Modo de Teste Entrada série X Saída série? Próximo estado? Próximo estado? Próximo estado Relógio (e) O circuito é trazido de novo para o modo de funcionamento normal, por colocação em do sinal Modo de Teste. O estado actual foi modificado de acordo com os valores deslocados para as saídas dos FF D e o estado seguinte é agora definido de acordo com o novo valor do estado actual. Repare-se no entanto que o estado inicial do circuito poderia ter sido mantido, se a Saída Série e a Entrada Série tivessem sido ligadas entre si e um quarto ciclo de relógio aplicado, antes de se repor em o sinal Modo de Teste. Figura.: Observabilidade dos nós de estado seguinte. A maior virtude das técnicas de projecto com varrimento é a sua capacidade para eliminar a natureza sequencial de um circuito, que passa a ser visto pela aplicação computacional de geração de vectores de teste como um circuito puramente combinatório. Os comentários inicialmente feitos em relação ao custo do projecto para a testabilidade deverão agora ser claros para o leitor: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).2

35 Conceitos básicos de teste A presença dos multiplexadores de 2: impõe maiores tempos de propagação, mais pinos e requer área adicional de silício, conduzindo eventualmente a um aumento do custo do circuito. Repare-se no entanto que não podemos ser afirmativos acerca da questão do custo, já que poderá acontecer que o nosso circuito não usasse todos os pinos do encapsulamento escolhido (não fosse pinlimited) e ainda que não estivesse ocupada toda a área de silício disponível para o projecto (não fosse core-limited). Nestas circunstâncias, a produção do circuito poderia mesmo tornar-se mais barata, por se ter simplificado o respectivo teste. O projectista não tem liberdade para escolher quaisquer soluções que considerasse mais apropriadas, já que a completa controlabilidade e observabilidade de todas as entradas e saídas do bloco combinatório só podem ser asseguradas se as estruturas síncronas dos FF D com varrimento, definidas pelo projecto com varrimento total, forem aceites para todo o circuito (por exemplo, não se admite a existência de estruturas assíncronas). Nos casos em que o projecto com varrimento total não puder ser aceite, será ainda assim possível seleccionar apenas aqueles nós que apresentem maiores problemas de testabilidade e restringir a estes casos o uso de FF D com varrimento (situação que corresponderá a um projecto com varrimento parcial, partial scan design)..7. Prática Determine um vector de teste que detecte a falta s@ no nó X do circuito sequencial apresentado na figura.2, assumindo que o estado actual é (,) = (,). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).22

36 Conceitos básicos de teste A 2 / X s@ / F +5 V CL CLK PR D Estado actual +5 V Próximo estado CL CLK PR D +5 V Sinal de relógio Figura.2: Circuito sequencial com dois FF. Sugestões: Comece por restringir o problema à parte combinatória do circuito (para obter os valores necessários na entrada primária e variáveis de estado), recorrendo aos três passos do algoritmo D: activar a falta, propagar o sinal de erro até uma saída primária e justificar os valores que possibilitam os dois passos anteriores. Prossiga então para a obtenção da sequência necessária na entrada primária (A), começando por levantar o diagrama de transição de estados do circuito sem faltas e procurando uma sequência de entrada que conduza a um valor diferente na saída primária (F), quando X s@ está presente. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC).23

37 2. O teste por varrimento periférico (IEEE 49.) Aprovada como norma do IEEE desde Fevereiro de 99, sob o título de IEEE Standard Test Access Port and Boundary-Scan Architecture (porto de acesso ao teste e arquitectura de varrimento periférico normalizados), esta tecnologia de teste encontrou uma aceitação crescente na generalidade dos sectores relacionados com o projecto e produção de circuitos electrónicos digitais. Uma larga variedade de componentes BST 2 está já disponível, em conjunto com ferramentas computacionais que abrangem uma ampla gama de actividades, desde o projecto da própria infra-estrutura até à geração automática de vectores de teste para cartas de circuito impresso (CCI) com BST. Começaremos por apresentar as razões que levaram ao desenvolvimento da tecnologia BST, partindo daí para a identificação do seu domínio de aplicabilidade. A arquitectura BS e o porto de acesso ao teste (TAP) serão então apresentados, com um nível de detalhe que permita ao leitor atingir o objectivo proposto para a componente prática que acompanha este capítulo: a implementação de uma infra-estrutura BS num dispositivo lógico programável de média complexidade. 2.. O desenvolvimento do BST e o seu domínio de aplicação O desenvolvimento do BST, durante a década de 8, ficou a dever-se a duas razões principais: A complexidade crescente dos CI tornou excessivamente complexo o desenvolvimento de programas para o teste funcional de CCI, tornando necessário o acesso a um cada vez maior número de nós internos, como pontos de controlo e observação (os equipamentos de teste funcional baseiam-se no acesso através dos conectores de entrada e saída das CCI a testar, pelo que se tornaram progressivamente menos eficazes). A miniaturização associada aos componentes de montagem superficial tornou cada vez mais complexo o acesso físico aos nós interiores das CCI (os IEEE 49. (IEEE: Institute of Electrical and Electronics Engineers).

38 O teste por varrimento periférico (IEEE 49.) equipamentos de teste em-circuito recorrem a matrizes-de-agulhas 3 para conseguir o contacto físico com os nós internos das CCI, mas enfrentam naturalmente limitações em termos de precisão mecânica e de fiabilidade dos contactos). Os equipamentos de teste funcionais e em-circuito eram tradicionalmente usados de forma combinada, para ultrapassar as limitações recíprocas, mas tornou-se claro ainda nos anos 8 que eram precisas novas soluções para o projecto e produção de circuitos electrónicos baseados nas novas tecnologias de interligação e encapsulamento. A menos que fosse desenvolvida uma tecnologia de teste alternativa, para ultrapassar o desafio imposto pelo teste de novos circuitos e módulos electrónicos, a complexidade dos problemas a enfrentar era certamente suficiente para deixar para trás todas as técnicas de teste até então vigentes. Em resultado desta situação, criou-se em 985 um grupo de empresas europeias para promover o desenvolvimento de uma proposta para uma nova norma de teste / projecto para a testabilidade, capaz de merecer uma aceitação generalizada por parte das comunidades normativas / científicas / empresariais activas nos sectores do projecto, teste e fabrico de circuitos electrónicos digitais. Este grupo começou por ser conhecido por JETAG 4, mas a rápida adesão de empresas não europeias fez desaparecer o E deste acrónimo e conduziu a um grupo de trabalho do IEEE, que se revelou capaz de desenvolver e fazer aprovar a norma IEEE 49. num período de apenas cinco anos. Devido à especificidade do problema que levou ao seu desenvolvimento, a tecnologia de teste BST, tal como descrita na norma 49., endereça um domínio claramente delimitado: o teste estrutural de CCI digitais (repare-se que existem nesta expressão três palavraschave: estrutural, CCI e digitais). Este domínio foi suficientemente estreito para permitir o desenvolvimento rápido de soluções, que teve lugar logo desde o início dos anos 9, mas ao mesmo tempo limitou de várias formas a aplicabilidade de uma tecnologia que irá com certeza ver ainda bastante ampliado o seu campo de actuação. 2 Componentes que incluem a infra-estrutura de teste por varrimento periférico (BST, Boundary Scan Test). 3 In-circuit ATE (Automatic Test Equipment), bed-of-nails. 4 Joint European Test Action Group. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.2

39 O teste por varrimento periférico (IEEE 49.) 2.2. A arquitectura BS e o porto de acesso ao teste (TAP) O conceito básico subjacente à tecnologia BST está representado na figura 2. e consiste em associar uma célula dedicada ao teste, por cada pino funcional do componente. Estas células designam-se por células de varrimento periférico (que aqui abreviaremos por células BS) e a sua função principal consiste em desacoplar a lógica interna dos pinos. uaisquer valores lógicos pretendidos podem ser aplicados nas saídas destas células, independentemente dos valores que estejam presentes nas suas entradas, tornando assim possível: Aplicar qualquer combinação nos pinos de saída do CI e nas entradas da sua lógica interna (através das saídas paralelas das células). Capturar os valores presentes nos pinos de entrada do CI e nas saídas da sua lógica interna (através das entradas paralelas das células). Célula BS: Saída série Entrada paralela Saída paralela Entrada série TDI TCK TDO TMS TDI TCK TDO TMS Figura 2.: O conceito básico subjacente à tecnologia BST. A entrada série de cada célula está ligada à saída série da célula que a precede dentro de cada CI, formando uma cadeia interna a que é dada a designação de registo de varrimento periférico (que abreviaremos por registo BS). Como todos os registos BS podem ser encadeados de componente para componente, tal como se apresenta na figura 2., o acesso directo a cada pino é agora possível, sem requerer o acesso físico a nós internos da CCI. A figura 2. também indica que são necessários recursos adicionais em cada CI para controlar o modo de operação das células BS, incluindo o conjunto de pinos dedicados a que é dada a designação de porto de acesso ao teste (TAP). Este TAP J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.3

40 O teste por varrimento periférico (IEEE 49.) compreende quatro pinos com a seguinte funcionalidade, tal como é definida na norma IEEE : TDI (entrada de dados de teste): A entrada série do registo BS. uando desligado, é lido neste pino o valor lógico. TDO (saída de dados de teste): A saída série do registo BS. Este pino constitui a única saída do TAP e estará em alta impedância, excepto enquanto decorrer uma operação de deslocamento. TCK (relógio de teste): O sinal de relógio para a lógica de teste. TMS (selecção do modo de teste): Uma entrada de controlo que define o modo de operação pretendido para a lógica de teste. uando desligado, é igualmente lido neste pino o valor lógico. Opcionalmente, poderá estar presente um quinto pino, com funções de inicialização da lógica de teste (/TRST, activo a ). A arquitectura BS, no seu conjunto, pode representar-se como se ilustra na figura 2.2, que evidencia os seguintes aspectos principais: O percurso TDI-TDO travessa dois multiplexadores: um multiplexador entre os registos de dados (n:) e um multiplexador entre o registo de dados seleccionado e o registo de instrução (2:). O multiplexador entre dados e instruções (2:) é controlado por uma saída do bloco designado por controlador do TAP (uma máquina de estados comandada pela entrada externa TMS) e estabelece para o percurso TDI-TDO uma de duas alternativas: o registo de instrução ou um dos registos de dados (um dos quais é o registo BS). O multiplexador de dados (n:) é controlado pelo conteúdo do registo de instrução (através do bloco designado por descodificador de instrução) e selecciona qual dos registos de dados deverá ser encaminhado para a saída TDO, através do multiplexador entre dados e instruções. 5 TDI: Test Data Input; TDO: Test Data Output; TCK: Test Clock; TMS: Test Mode Select. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.4

41 O teste por varrimento periférico (IEEE 49.) Célula BS: Saída série Registo BST Registos do utilizador Mux dados Entrada paralela Saída paralela Entrada série Reg. de identificação Reg. Bypass Mux dados / instrução Desc. instrução TDO TDI Reg. instrução /TRST TMS TCK Controlador do TAP Figura 2.2: A arquitectura BS ao nível do CI. O acesso á arquitectura BS tem lugar de acordo com a sequência de valores lógicos aplicados à entrada TMS e deve ter lugar como se descreve a seguir:. A saída do controlador do TAP, ligada ao multiplexador entre dados e instruções, coloca o registo de instrução no percurso TDI-TDO. 2. Uma sequência apropriada de bits (a instrução) deverá então ser deslocada através de TDI, carregando o registo de instrução com o código que selecciona o registo de dados pretendido (através do multiplexador de dados). 3. A saída do controlador do TAP, ligada ao multiplexador entre dados e instruções, coloca agora o registo de dados pretendido no percurso TDI-TDO. 4. Os vectores de teste podem agora ser deslocados (inseridos / extraídos) através do registo de dados seleccionado. Contudo, e antes de efectuarmos uma análise de cada um dos restantes blocos representados na figura 2.2, é útil que consideremos os requisitos funcionais básicos que devem ser satisfeitos pelas células BS. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.5

42 O teste por varrimento periférico (IEEE 49.) A célula BS básica A configuração típica de uma célula BS é a representada na figura 2.3, que evidencia os seguintes aspectos: O multiplexador de saída (controlado pelo sinal Mode) possibilita um modo de funcionamento transparente, no qual a saída paralela da célula está directamente ligada à sua entrada paralela. Este sinal Mode, quando colocado em, possibilita a controlabilidade da saída paralela, que exibe o valor lógico presente no andar de retenção (FF D à direita), independentemente do valor lógico presente na entrada paralela da célula. O sinal Shift controla o multiplexador de entrada e permite (quando colocado em ) a observabilidade da entrada paralela, cujo valor é capturado para o andar de deslocamento (FF D à esquerda) e pode ser deslocado para o exterior (se colocarmos agora o sinal Mode em ). Serial output Parallel input 2: mux Shift 2 3 D CLK 5 2 D (: Capture; : Shift) Serial input 3 CLK 5 2: mux Parallel output Mode (: Normal; : Test) Figura 2.3: Configuração típica de uma célula BS. Estes três modos básicos de operação (transparência, controlabilidade e observabilidade) das células BS conduzem para as operações de teste a um protocolo simples, que consiste nas seguintes etapas:. Deslocar um novo vector de teste (o multiplexador esquerdo estará em modo de deslocamento, podendo o da direita estar em modo transparente ou de controlabilidade). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.6

43 O teste por varrimento periférico (IEEE 49.) 2. Aplicar o novo vector de teste às saídas paralelas das células BS (o multiplexador esquerdo tanto poderá estar em modo de deslocamento como de captura, mas o da direita terá que estar em modo de controlabilidade). 3. Capturar as respostas presentes nas entradas paralelas das células (o multiplexador esquerdo estará em modo de observabilidade e o da direita estará em modo de controlabilidade). 4. Deslocar para o exterior as respostas capturadas (multiplexador esquerdo em modo de deslocamento, podendo o da direita estar em modo transparente ou de controlabilidade). Repare-se que o primeiro e o último dos passos referidos acima podem, e devem, ocorrer simultaneamente, para que o deslocamento de um novo vector ocorra em simultâneo com o deslocamento para o exterior das respostas capturadas para o vector anterior. Repare-se ainda que a sequência de passos descrita é a mesma, seja para o teste de ligações ao nível da CCI ou para o teste da lógica interna num componente BST. Contudo, e uma vez que o conteúdo da cadeia série seleccionada tem que ser deslocado (inserido / extraído) para cada vector de teste, este protocolo torna-se muito lento quando o número de vectores é elevado. A velocidade reduzida não seria aceitável para o teste da lógica interna dos componentes por este processo, uma vez que podem ser necessários centenas de milhar ou mesmo milhões de vectores, mas não apresenta problemas quanto ao domínio de aplicação principal para o qual a tecnologia BST foi desenvolvida: o teste estrutural de CCI digitais. Como veremos mais tarde quando considerarmos a detecção de curto-circuitos e circuitos abertos em interligações da CCI, bastará um pequeno número de vectores para garantir completa detecção destes tipos de faltas Os registos de dados de teste A figura 2.2 mostra que o multiplexador de dados (n:) permite seleccionar qual o registo a colocar entre TDI e TDO, de acordo com o conteúdo do registo de instrução. Atendendo a que os registos de utilizador e o registo de identificação podem ou não existir (a norma define-os como opcionais), teremos que o número total de registos de dados estará compreendido entre um mínimo de dois (BS e Bypass) e um máximo que depende das estruturas internas de testabilidade que o projectista decidir inserir, aquando do projecto do componente. Uma descrição J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.7

44 O teste por varrimento periférico (IEEE 49.) sumária de cada um dos registos referidos na figura 2.2 pode ser apresentada como se segue: O registo BS é obrigatório e compreende o conjunto de células BS presentes no componente, tendo por função principal a aplicação de vectores de teste e a captura das respectivas respostas. Existem pelo menos duas instruções que seleccionam este registo e são consideradas obrigatórias pela norma: EXTEST e SAMPLE / PRELOAD (outras instruções opcionais, definidas pelo projectista do componente, poderão igualmente seleccionar o registo BS). O registo de Bypass é outro dos registos obrigatórios definidos na norma, tendo por objectivo minimizar o comprimento total da cadeira BS ao nível da CCI, nos casos em que a operação de deslocamento enderece apenas um subconjunto dos componentes BST presentes. Este registo tem apenas um bit e é seleccionado pela instrução obrigatória BYPASS. O registo de identificação é opcional e tem por função proporcionar uma sequência de 32 bits que define inequivocamente qual o componente em questão, permitindo verificar se ocorreram enganos aquando da montagem da CCI. Este registo é seleccionado pela instrução (opcional) IDCODE. Os restantes registos de utilizador correspondem a registos de dados de teste opcionais e terão normalmente por objectivo efectuar o interface com as estruturas de testabilidade internas (e.g. os recursos de auto-teste de que os componentes mais complexos normalmente dispõem). Como tal, estes registos serão seleccionados por instruções também opcionais, definidas pelo projectista. A apresentação efectuada realçou a relação estreita que existe entre os registos de dados e as instruções suportadas, já que cada instrução selecciona um dado registo (e um dado modo de funcionamento, quando mais do que uma instrução seleccionam o mesmo registo) O registo de instrução A norma IEEE 49. define instruções obrigatórias e opcionais, que endereçam respectivamente os registos obrigatórios e opcionais ilustrados na arquitectura representada na figura 2.2. As três instruções obrigatórias são suficientes para J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.8

45 O teste por varrimento periférico (IEEE 49.) garantir os objectivos básicos subjacentes ao desenvolvimento da tecnologia BST e podem ser brevemente caracterizadas como se apresenta a seguir: A instrução EXTEST selecciona o registo BS e impõe o modo de controlabilidade em cada célula BS, desacoplando a lógica interna dos pinos. A configuração ilustrada na figura 2.3 para cada célula BS tanto permite também a realização de testes à lógica interna do CI, já que as células associadas aos pinos de entrada podem ser usadas para aplicar os vectores de teste e as que estão associadas aos pinos de saída usadas para capturar as respostas. Este procedimento é no entanto desaconselhado por razões de (falta de) rapidez, como foi já referido antes, pelo que esta instrução é essencialmente usada para se efectuar o teste de ligações na CCI. O código da instrução EXTEST está pré-definido, e corresponde a colocar em todos os bits do registo de instrução. A instrução SAMPLE / PRELOAD também selecciona o registo BS, mas agora com as células BS em modo transparente. O principal objectivo desta instrução consiste em permitir que um primeiro vector seja deslocado para o interior dos registos BS, antes de se promover o desacoplamento entre a lógica interna e os pinos (enquanto os andares de retenção não forem carregados com o primeiro vector a aplicar, poderá ser necessário impedir que o seu conteúdo inicial surja nas saídas paralelas das células). Esta instrução não tem código pré-definido. A instrução BYPASS selecciona o registo com o mesmo nome, garantindo um percurso com comprimento mínimo entre TDI e TDO (vantajoso no caso dos componentes que não desempenhem qualquer função na operação de teste pretendida). O código da instrução BYPASS está pré-definido, corresponde a colocar em todos os bits do registo de instrução e é automaticamente carregado quando se reinicializam os componentes. Neste modo de funcionamento todas as células BS estarão em modo transparente, o que significa que a infra-estrutura de teste fica inactiva quando se reinicializam os componentes. Para além das instruções obrigatórias, são ainda possíveis várias instruções opcionais, com o objectivo de suportar outras operações de teste ou a existência dos registos de dados opcionais ilustrados na figura 2.2. A descrição destas J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.9

46 O teste por varrimento periférico (IEEE 49.) instruções estará presente na folha de características de cada componente, mas a norma define de antemão um conjunto de instruções opcionais possíveis: A instrução IDCODE selecciona o registo de identificação do componente e possibilita a leitura de um código de 32 bits que identifica o fabricante, o componente e a versão correspondente (se existirem várias). Os componentes programáveis podem ainda suportar uma instrução USERCODE, que selecciona o mesmo registo de 32 bits, mas agora com o objectivo de possibilitar a leitura de um código de identificação programado pelo utilizador. A instrução RUNBIST permite o acesso a funções de auto-teste 6 e ao resultado da sua execução, que é normalmente carregado num registo de dados por ela seleccionado. Nenhuma das instruções opcionais tem código pré-definido. A definição das instruções opcionais a suportar é naturalmente da responsabilidade do projectista, sendo mesmo possível que um componente suporte várias instruções deste tipo, mas nenhuma das referidas acima (e.g. os registos da família SCOPE da Texas Instruments) O controlador do TAP O bloco que na figura 2.2 se designa como controlador do TAP é uma pequena máquina de estados que gera os sinais de controlo necessários para definir o modo de operação dos registos existentes e do multiplexador entre os registos de dados e de instrução (2:). Esta máquina de estados é controlada pela entrada TMS e possibilita três operações principais sobre o registo colocado entre TDI e TDO: Capturar para os andares de deslocamento o valor presente nas entradas paralelas das células. Efectuar o deslocamento série dos dados, através das células do registo colocado no percurso TDI-TDO. 6 BIST: Built-In Self Test. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.

47 O teste por varrimento periférico (IEEE 49.) Actualizar o conteúdo dos andares de retenção do registo seleccionado (com o valor inserido nos andares de deslocamento). Cada uma destas três operações pode ter lugar num registo de dados ou no registo de instrução, o que explica a existência de dois ramos idênticos no diagrama de transição de estados do controlador do TAP, apresentado na figura 2.4: Test Logic Reset Run Test / Idle Select-DR-scan Select-IR-scan Capture-DR Capture-IR Shift-DR Shift-IR Exit-DR Exit-IR Pause-DR Pause-IR Exit2-DR Exit2-IR Update-DR Update-IR Figura 2.4: Diagrama de transição de estados do controlador do TAP. O ramo IR (registo de instrução) está representado à direita, estando à sua esquerda o ramo DR (registos de dados). As três operações previamente referidas correspondem respectivamente aos estados de Capture (captura), Shift (deslocamento) e Update (actualização). Os estados TLR (Test Logic Reset) e RTI (Run Test / Idle) são igualmente estados importantes, com os seguintes objectivos: O controlador do TAP é colocado no estado TLR após a reinicialização. Neste estado a infra-estrutura de teste está em modo não intrusivo, uma vez que as células BS estão em modo transparente. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.

48 O teste por varrimento periférico (IEEE 49.) RTI é normalmente o estado onde decorrem as operações definidas por instruções opcionais (e.g. funções de auto-teste). Os estados Select, Exit e Exit2 são temporários. Os estados Exit, em conjunto com Pause, permitem que a operação de deslocamento de vectores seja temporariamente interrompida (e.g. para recarregar a memória do testador, quando a quantidade de dados a deslocar o torne necessário). Os estados Select permitem a selecção do tipo de registo (de dados ou de instrução) a ser colocado entre TDI e TDO. É importante compreender as questões temporais associadas ao controlador do TAP, nomeadamente no que respeita aos seguintes aspectos: As transições de estado ocorrem com o flanco ascendente de TCK. As acções que têm lugar num estado (e.g. captura, deslocamento ou actualização) ocorrem com o flanco descendente de TCK. Estes requisitos têm por objectivo garantir o funcionamento correcto, mesmo quando as cadeias de varrimento contêm milhares de células. É ainda importante referir que as mudanças em TDO ocorrem com o flanco descendente de TCK, enquanto TDI é lido no seu flanco ascendente (ambas as operações durante o deslocamento de uma sequência de bits) Implementação de uma infraestrutura BST simples sobre um componente programável da série MACH Este documento tem por objectivo descrever a implementação simplificada de uma infraestrutura BST num dispositivo programável da AMD, série Mach. A infraestrutura a implementar suporta apenas as instruções obrigatórias definidas na norma IEEE 49. (EXTEST, SAMPLE / PRELOAD e BYPASS) e tem por objectivo permitir um ponto de partida que possibilite a implementação de outros modos de funcionamento, inerentes a instruções opcionais a acrescentar futuramente. A arquitectura presente nesta implementação, na qual se assume que o mesmo sinal de relógio está aplicado a todos os flip-flops (free running clock) está ilustrada na figura 2.5: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.2

49 O teste por varrimento periférico (IEEE 49.) BSIN[] BSOUT[] BSIN[2] BSOUT[2] BSIN[] BSOUT[] BSIN[3] BSOUT[3] DTMUX DROUT BP BSUPD, INTRST, IRSHF, IRCAP, IRUPD BSSHF, BSCAP, BPSHF, BPCAP, MODE MUX TDI DRSHF, DRCAP DESCODIF. IR[] IR[] DTMUXCTR TDO TMS TCK Controlador do TAP MUXCTR TDOACT Figura 2.5: Infraestrutura BST pretendida. As três instruções BST obrigatórias e os respectivos códigos de instrução estão apresentados na tabela 2.: IR[] IR[] Instrução EXTEST SAMPLE / PRELOAD - BYPASS Tabela 2.: Instruções BST e respectivos códigos. O primeiro passo para a implementação desta arquitectura consistirá em construir a respectiva especificação em PALASM, para o que se deve criar um ficheiro (BST.PDS) cuja secção declarativa poderá ser constituída pelo segmento de código que se apresenta a seguir: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.3

50 O teste por varrimento periférico (IEEE 49.) ;PALASM Design Description ; Declaration Segment TITLE BST.PDS PATTERN Infraestrutura BST para permitir a realizacao de experiencias REVISION AUTHOR JMF COMPANY FEUP/DEEC DATE Outubro 997 CHIP BST MACH2 PIN 35 TCK PIN? RESET NODE GLOBAL PIN? TDI PIN? TDO PIN? TMS PIN? BSIN[,] PIN? BSOUT[3,2] NODE? INTRST NODE? BSOUT[,] NODE? BSIN[3,2] NODE? BSFF[3..] NODE? BSFF2[3..] NODE? BSSHF NODE? BSCAP NODE? BSUPD NODE? MODE NODE? IRFF[,] NODE? IRFF2[,] NODE? IRSHF NODE? IRCAP NODE? IRUPD NODE? BPSHF NODE? BPCAP NODE? BPOUT NODE? DTMUXCTR NODE? MUXCTR NODE? DROUT NODE? DRSHF NODE? DRCAP NODE? TDOACT ; CLOCK INPUT ; INPUT - INTERNAL RESET O primeiro bloco a implementar poderá ser o do controlador do TAP, que como sabemos é um circuito sequencial com 6 estados (uma máquina de Moore), uma entrada (TMS) e as seguintes 9 saídas (para além das 4 entradas e 4 saídas relacionadas respectivamente com o estado actual e o estado seguinte): BSUPD: Boundary scan update, para actualizar o andar de saída das células BST INTRST: Internal reset, que provoca a reinicialização síncrona dos flip-flops quando o controlador do TAP se encontra no estado Test Logic Reset IRSHF: Instruction register shift e J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.4

51 O teste por varrimento periférico (IEEE 49.) IRCAP: Instruction register capture, que em conjunto com o anterior são os dois sinais que controlam se o andar de deslocamento das células do registo de instrução devem manter o estado actual, efectuar uma operação de deslocamento ou uma operação de captura (os dois bits menos significativos devem capturar, como define a norma) IRUPD: Instruction register update, para actualizar o andar de saída das células do registo de instrução DRSHF: Data register shift e DRCAP: Data register capture, que em conjunto com o anterior são os dois sinais que controlam se o andar de deslocamento das células do registo BST devem manter o estado actual, efectuar uma operação de deslocamento ou uma operação de captura (a geração dos sinais de deslocamento e de captura para cada um dos dois registos de dados, o BS e o BP, será feita de acordo com a instrução actualmente presente no IR) MUXCTR: Controlo do multiplexer que define se entre TDI e TDO se deve encontrar um registo de dados ou o registo de instrução. TDOACT: Sinal que indica se o buffer de saída deve ter a saída activa (apenas nos estados de SHIFT-DR ou SHIFT-IR) ou no estado de alta impedância. A respectiva descrição em PALASM poderá então ser feita como se ilustra no segmento de código apresentado a seguir: ; State Segment STATE MOORE_MACHINE START_UP := POWER_UP -> TLR ; TRANSITION EUATIONS TLR RTI SELDR CAPDR SHFDR EXDR PAUDR EX2DR := TMS -> TLR +-> RTI := TMS -> SELDR +-> RTI := TMS -> SELIR +-> CAPDR := TMS -> EXDR +-> SHFDR := TMS -> EXDR +-> SHFDR := TMS -> UPDDR +-> PAUDR := TMS -> EX2DR +-> PAUDR := TMS -> UPDDR +-> SHFDR J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.5

52 O teste por varrimento periférico (IEEE 49.) UPDDR SELIR CAPIR SHFIR EXIR PAUIR EX2IR UPDIR := TMS -> SELDR +-> RTI := TMS -> TLR +-> CAPIR := TMS -> EXIR +-> SHFIR := TMS -> EXIR +-> SHFIR := TMS -> UPDIR +-> PAUIR := TMS -> EX2IR +-> PAUIR := TMS -> UPDIR +-> SHFIR := TMS -> SELDR +-> RTI ;OUTPUT EUATIONS TLR.OUTF RTI.OUTF SELDR.OUTF CAPDR.OUTF SHFDR.OUTF EXDR.OUTF PAUDR.OUTF EX2DR.OUTF UPDDR.OUTF SELIR.OUTF CAPIR.OUTF SHFIR.OUTF EXIR.OUTF PAUIR.OUTF EX2IR.OUTF UPDIR.OUTF = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT* INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF* DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR* TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP* BSUPD*/IRSHF*/IRCAP*/IRUPD*/MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD* MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF* IRCAP*/IRUPD* MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD* IRSHF*/IRCAP*/IRUPD* MUXCTR* TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD* MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD* MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP*/IRUPD* MUXCTR*/TDOACT*/INTRST = /DRSHF*/DRCAP*/BSUPD*/IRSHF*/IRCAP* IRUPD* MUXCTR*/TDOACT*/INTRST CONDITIONS TMS = TMS Uma vez construído o modelo PALASM para o controlador do TAP, estamos em condições de começar a considerar a especificação dos restantes blocos representados na figura 2.5. No que respeita às células BST, e recordando que os flip-flops partilham todos o mesmo sinal de relógio, teremos uma configuração que se pode apresentar como se ilustra na figura 2.6: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.6

53 O teste por varrimento periférico (IEEE 49.) BSFF[i] MUX BSIN[i] BSOUT[i] MUX D MUX D BSFF2[i] MODE BSUPD BSSHF BSCAP TCK BSFF[i-] (TDI para a primeira da esquerda para a direita célula) Figura 2.6: Configuração de uma célula BST apta a suportar as instruções obrigatórias. A representação do registo BST (4 células do tipo ilustrado na figura 2.6) em PALASM pode ser efectuada pela sequência de código que se apresenta a seguir: ; Equations Segment EUATIONS GLOBAL.RSTF = RESET ; Registo BST BSFF[] := (/BSSHF*/BSCAP)*BSFF[] + ( BSSHF* BSCAP)*BSFF[] + (/BSSHF* BSCAP)*BSIN[] + ( BSSHF*/BSCAP)*TDI BSFF[] := (/BSSHF*/BSCAP)*BSFF[] + ( BSSHF* BSCAP)*BSFF[] + (/BSSHF* BSCAP)*BSIN[] + ( BSSHF*/BSCAP)*BSFF[] BSFF[2] := (/BSSHF*/BSCAP)*BSFF[2] + ( BSSHF* BSCAP)*BSFF[2] + (/BSSHF* BSCAP)*BSIN[2] + ( BSSHF*/BSCAP)*BSFF[] BSFF[3] := (/BSSHF*/BSCAP)*BSFF[3] + ( BSSHF* BSCAP)*BSFF[3] + (/BSSHF* BSCAP)*BSIN[3] + ( BSSHF*/BSCAP)*BSFF[2] BSFF2[] := /BSUPD*BSFF2[] + BSUPD*BSFF[] BSFF2[] := /BSUPD*BSFF2[] + BSUPD*BSFF[] BSFF2[2] := /BSUPD*BSFF2[2] + BSUPD*BSFF[2] BSFF2[3] := /BSUPD*BSFF2[3] + BSUPD*BSFF[3] BSOUT[] = /MODE*BSIN[] + MODE*BSFF2[] BSOUT[] = /MODE*BSIN[] + MODE*BSFF2[] BSOUT[2] = /MODE*BSIN[2] + MODE*BSFF2[2] BSOUT[3] = /MODE*BSIN[3] + MODE*BSFF2[3] J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.7

54 O teste por varrimento periférico (IEEE 49.) As células do registo de instrução diferem da configuração ilustrada na figura 2.6 apenas pelo facto de não ser necessária a presença do multiplexer de saída, podendo representar-se como se apresenta na figura 2.7: IRIN[i] IRIN[]=, IRIN[]= e os restantes (se existirem)=x IRFF[i] MUX D MUX D IRFF2[i] IRUPD IRSHF IRCAP TCK IRFF[i+] (TDI para a última da esquerda para a direita célula) Figura 2.7: Configuração de cada célula do registo de instrução. A descrição em PALASM do registo de instrução pode então ser efectuado pela seguinte sequência de código: ; Registo das instrucoes IRFF[] := /INTRST*(/IRSHF*/IRCAP)*IRFF[] + /INTRST*( IRSHF* IRCAP)*IRFF[] + /INTRST*(/IRSHF* IRCAP) + /INTRST*( IRSHF*/IRCAP)*IRFF[] IRFF[] := /INTRST*(/IRSHF*/IRCAP)*IRFF[] + /INTRST*( IRSHF* IRCAP)*IRFF[] + /INTRST*( IRSHF*/IRCAP)*TDI IRFF2[] := /IRUPD*IRFF2[] + IRUPD*IRFF[] + RESET IRFF2[] := /IRUPD*IRFF2[] + IRUPD*IRFF[] + RESET O descodificador de instruções, devendo gerar os sinais que estão indicados na figura 2.5, e conhecidas da norma quais as circunstâncias em que estes sinais devem estar activos, pode por sua vez ser representado pela sequência de código que se ilustra a seguir: ; Descodificador das instrucoes BSSHF = DRSHF*/IRFF2[] BSCAP = DRCAP*/IRFF2[] BPSHF = DRSHF*IRFF2[]*IRFF2[] BPCAP = DRCAP*IRFF2[]*IRFF2[] MODE = /IRFF2[]*/IRFF2[] DTMUXCTR = IRFF2[]*IRFF2[] ; sera' quando a instrucao for BP J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.8

55 O teste por varrimento periférico (IEEE 49.) O registo de bypass apresenta a estrutura mais simples dos três tipos de registos considerados, bastando neste caso uma configuração como a que se apresenta na figura 2.8: MUX GND D BPOUT TCK BPSHF BPCAP TDI Figura 2.8: Estrutura do registo de bypass. A representação do registo de bypass em PALASM pode ser efectuada como se apresenta no segmento de código seguinte: ; Registo de bypass BPOUT := (/BPSHF*/BPCAP)*BPOUT + ( BPSHF* BPCAP)*BPOUT + ( BPSHF*/BPCAP)*TDI Resta ainda codificar em PALASM os dois multiplexers que precedem a saída série TDO, o que pode ser feito pela sequência de código que se apresenta a seguir: ; Saida do primeiro mux DROUT = /DTMUXCTR*BSFF[3] + DTMUXCTR*BPOUT ; Saida do segundo mux (TDO) TDO = /MUXCTR*DROUT + MUXCTR*IRFF[] TDO.TRST = TDOACT Para ficar concluída a representação PALASM do circuito apresentado na figura 2.5 resta descrever a lógica interna, que neste caso se resume à função identidade e pode ser descrita pela sequência de código seguinte: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.9

56 O teste por varrimento periférico (IEEE 49.) ; Logica interna BSIN[2] = BSOUT[] BSIN[3] = BSOUT[] Uma vez concluída a representação PALASM da infraestrutura BST e da lógica interna, a última secção do ficheiro BST.PDS consiste na sequência de comandos de simulação que permitam efectuar a verificação de projecto. Para o nosso caso, e assumindo que bastará efectuar a transição através dos dois ramos principais do diagrama de estados do controlador do TAP (deslocamento de dados e de instruções), com captura, deslocamento e actualização em ambos os casos, teremos uma sequência como a que se apresenta a seguir: ; Simulation Segment SIMULATION TRACE_ON TCK TMS TDI TDO DRSHF DRCAP BSUPD IRSHF IRCAP IRUPD ; BSSHF BSCAP BPSHF BPCAP MUXCTR DTMUXCTR TDOACT ; IRFF[,] IRFF2[,] SETF RESET SETF /RESET SETF /TMS /TDI CLOCKF TCK ; passa de TLR para RTI SETF TMS CLOCKF TCK ; para SELDR SETF /TMS CLOCKF TCK ; para CAPDR CLOCKF TCK ; para SHFDR SETF TMS CLOCKF TCK ; para EXDR, desloca CLOCKF TCK ; para UPDDR CLOCKF TCK ; para SELDR CLOCKF TCK ; para SELIR SETF /TMS CLOCKF TCK ; para CAPIR CLOCKF TCK ; para SHFIR CLOCKF TCK ; SHFIR, desloca CLOCKF TCK ; SHFIR, desloca CLOCKF TCK ; SHFIR, desloca SETF TMS CLOCKF TCK ; para EXIR, desloca CLOCKF TCK ; para UPDIR CLOCKF TCK ; para SELDR SETF /TMS CLOCKF TCK ; para CAPDR CLOCKF TCK ; para SHFDR SETF TDI CLOCKF TCK ; SHFDR, desloca SETF /TDI CLOCKF TCK ; SHFDR, desloca SETF TDI CLOCKF TCK ; SHFDR, dseloca SETF /TDI CLOCKF TCK ; SHFDR, desloca SETF TDI CLOCKF TCK ; SHFDR, desloca J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.2

57 O teste por varrimento periférico (IEEE 49.) SETF /TDI CLOCKF TCK ; SHFDR, desloca TRACE_OFF A sequência de formas de onda correspondentes à secção de simulação apresentada está parcialmente ilustrada na figura 2.9 e comprova o funcionamento correcto do circuito. Figura 2.9: Formas de onda (parciais) resultantes da simulação. Para concluir, chama-se a atenção do leitor para o facto de a implementação apresentada violar a norma IEEE 49. em dois aspectos, cuja identificação, bem como a discussão sobre as implicações daí decorrentes, se recomendam como exercício final Prática São recomendados nesta secção três exercícios como complemento prático aos conceitos apresentados, todos eles relacionados com a infra-estrutura BST simples, que rodeia um núcleo interno correspondente às duas funções identidade, tal como se ilustrou na figura 2.5. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.2

58 O teste por varrimento periférico (IEEE 49.) Validação da infra-estrutura BST O objectivo principal deste exercício consiste em discutir as estratégias de validação para a arquitectura 49. ilustrada na figura 2.5. A partir da especificação PALASM apresentada neste capítulo, pede-se ao leitor que a complete com uma secção de simulação que exercite os três modos de funcionamento obrigatórios, levando em consideração as seguintes questões: Considere-se o problema geral de garantir a compatibilidade com as especificações da norma IEEE 49.4, partindo-se então daí para a escrita da correspondente secção de simulação PALASM. Existe pelo menos um aspecto no qual a especificação PALASM proposta para a arquitectura representada no diagrama de blocos da figura 2.5 não é compatível com a norma IEEE 49.. Comentar a qualidade da estratégia de validação proposta, face à capacidade evidenciada para detectar esta e outras violações da norma, eventualmente presentes na especificação apresentada Expansão da infra-estrutura BST para validar funções de tolerância a falhas O objectivo deste exercício consiste em possibilitar a inserção de faltas ss@ em pinos de saída durante o funcionamento normal dos circuitos. Este modo parcialmente intrusivo apresenta interesse para validar sistemas tolerantes a falhas, onde é importante verificar que o circuito continua a desempenhar a sua função correctamente, mesmo quando alguns dos componentes presentes estão avariados. Assuma-se que o componente BST simples que se ilustra na figura 2.5 integra um sistema tolerante a falhas que é capaz de mascarar a ocorrência de erros num pino de cada vez. Com o objectivo de validar esta característica de tolerância a falhas, deveria ser possível forçar uma falta ss@ em cada um dos dois pinos de saída ilustrados na figura 2.5, BS[2] e BS[3]. O registo BST deverá encontrar-se em modo transparente neste modo de funcionamento, à excepção da célula associada ao pino de saída onde se pretende que a falta ss@ (s@ ou s@) esteja presente. A sequência de passos proposta para realizar este exercício pode ser apresentada como se segue: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.22

59 O teste por varrimento periférico (IEEE 49.) Começar por identificar as instruções opcionais necessárias e as correspondentes adições / modificações necessárias, relativamente à arquitectura apresentada. Modificar o código PALASM disponível, de modo a suportar as novas instruções e demais acrescentos necessários à implementação do modo de funcionamento pretendido. Criar uma secção de simulação que permita validar a solução proposta e comentar a compatibilidade com as disposições apresentadas na norma IEEE 49.. Recomenda-se que esta tarefa seja levada a cabo por dois alunos, que deverão realizar em conjunto a primeira das etapas descritas acima, dividindo-se para a realização das acções correspondentes à segunda etapa (de forma a combinar entre eles) e voltando a trabalhar em conjunto para definir e implementar a validação da solução proposta Expansão da infra-estrutura BST para possibilitar a detecção em tempo real de condições de paragem O objectivo deste exercício consiste em definir um modo de funcionamento opcional, não intrusivo, para a infra-estrutura BST que se ilustrou na figura 2.5, de modo a possibilitar a detecção de condições de paragem (breakpoints) em tempo real. Os valores presentes nos pinos funcionais deverão ser continuamente monitorados até que se verifique a ocorrência de uma condição de paragem prédefinida, devendo neste momento ter lugar uma operação de captura no registo BST. As seguintes assunções e recomendações devem ser levadas em consideração: Assuma-se que, durante o funcionamento no modo pretendido (que corresponderá normalmente à fase de depuração de protótipos), a lógica funcional e a infra-estrutura de teste partilham o mesmo sinal de relógio. Mais ainda, assuma-se que todos os eventos da lógica funcional são síncronos com a transição ascendente do sinal de relógio. Comece-se então por definir onde armazenar os três tipos principais de informação que estarão associados ao modo de funcionamento pretendido: os valores esperados, os valores capturados e as máscaras de comparação. Por J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.23

60 O teste por varrimento periférico (IEEE 49.) exemplo: será viável armazenar os valores esperados nos andares de retenção e aproveitar os andares de captura / deslocamento para a captura dos valores presentes nos pinos quando se verifica a ocorrência da condição esperada? E onde armazenar as máscaras de comparação, nesse caso? Uma vez definidos os recursos que permitem lidar directamente com os vectores presentes nos pinos, passar à consideração das instruções opcionais necessárias ao modo de funcionamento pretendido. Não esquecer que é necessário indicar para o exterior se a condição pretendida já ocorreu ou não, o que pode eventualmente ser feito através do próprio registo de instrução (capturando essa informação para um bit livre do andar de captura / deslocamento deste registo). Modificar o código PALASM disponível, de modo a suportar as novas instruções e demais acrescentos necessários à implementação do modo de funcionamento pretendido. Criar uma secção de simulação que permita validar a solução proposta e comentar a sua compatibilidade com as disposições apresentadas na norma IEEE 49.. Recomenda-se ainda que esta tarefa seja levada a cabo por dois alunos, que deverão realizar em conjunto a definição da solução a desenvolver, dividindose para a realização das acções correspondentes à sua implementação (por acordo entre eles) e voltando a trabalhar em conjunto para definir e implementar a validação da solução desenvolvida. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 2.24

61 3. O teste de cartas de circuito impresso com BST (IEEE 49.) O protocolo de teste para CCI com BST tem lugar através de uma sequência de passos que se inicia pela verificação da integridade da própria infra-estrutura BS, seguida por dois tipos principais de testes: ligações e componentes. Estes dois tipo de operações de teste subdividem-se por sua vez nas seguintes etapas: Teste de ligações completamente BST, quer em relação a circuitos abertos quer a curto-circuitos. Nestas ligações todos os pinos envolvidos são pinos BST ou E/S primárias da CCI. Existem vários algoritmos para a geração de vectores de teste, normalmente de reduzida complexidade. Teste de grupos de componentes sem BST (e das ligações a eles associadas). Neste caso, usam-se os vectores de teste gerados automaticamente para a lógica que integra este grupo, existindo várias alternativas para a aplicação de vectores e captura de respostas. Componentes BST com auto-teste incorporado (BIST). Neste caso, a infraestrutura BST serve como interface para ordenar a execução das funções de auto-teste e para efectuar a leitura do resultado. Componentes BST sem auto-teste incorporado. As alternativas de teste para este caso são escassas, limitando-se normalmente à execução de testes simples, apenas com o objectivo de verificar que o componentes responde da forma esperada. Este conjunto de etapas de teste será abordado nas secções seguintes, a começar pela verificação da integridade da própria infra-estrutura BST. 3.. Detecção de faltas na infra-estrutura BST Existem dois tipos principais de faltas que podem afectar a infra-estrutura BST: as que decorrem de problemas nas ligações dos pinos do TAP (circuitos abertos ou curto-circuitos nos pinos TDI, TDO, TMS, TCK ou /TRST) ou as associadas a componentes BST mal colocados / trocados. A sequência de operações normalmente levada a cabo para detectar estas faltas começa pela inicialização da lógica BST em cada componente (e.g. pela aplicação de cinco em TCK, mantendo TMS em ), a que se seguem os seguintes passos:

62 O teste de cartas de circuito impresso com BST (IEEE 49.) Uma operação de captura e deslocamento através dos registos de instrução (IR) de todos os componentes. Uma operação de captura e deslocamento através dos registos de identificação (ID) de todos os componentes que suportem a correspondente instrução opcional. A norma IEEE 49. define que o resultado de uma operação de captura no registo de instrução (que sucede à subida de TCK, quando o controlador do TAP se encontra no estado Capture-IR) deve produzir o resultado XX X, onde os X representam um valor irrelevante e os dois bits mais à direita são os que estão mais próximos de TDO. Esta característica foi definida precisamente com o objectivo de permitir uma forma simples de aferir a integridade da infraestrutura BST, tal como se ilustra na figura 3., que corresponde a levar o controlador do TAP até Shift-IR (passando portanto por Capture-IR) e a deslocar para observação exterior o conteúdo de cada registo de instrução. TDI TDI TDI XX...X XX...X XX...X TDO TDO TDO Figura 3.: Verificação da integridade da infra-estrutura BST, através dos registos de instrução. Uma vez que os dois últimos bits (os mais próximos de TDO) em cada registo de instrução deverão estar em, cada ligação TDO-TDI será alternadamente forçada a e a, o que possibilita a detecção de um largo espectro de situações potencialmente presentes na CCI, todas detectáveis na sua saída TDO (que corresponde à saída TDO do último componente BST na cadeia): ualquer pino do TAP que esteja s@ impedirá a sequência de ser deslocada para o exterior sem erros. A maioria dos curto-circuitos envolvendo pinos do TAP terão um efeito semelhante e serão por conseguinte detectáveis da mesma forma. Os circuitos abertos envolvendo pinos do TAP são normalmente fáceis de detectar, uma vez TDI e TMS são obrigados pela norma a capturar sempre J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.2

63 O teste de cartas de circuito impresso com BST (IEEE 49.) um quando em circuito aberto, o que impede a propagação das sequências, que é também inviabilizada se houver alguma falta presente em TCK. Existem contudo algumas condições de defeito que permanecerão por detectar através deste teste simples, mas que impedirão posteriormente a execução sem erros das etapas seguintes do protocolo de teste e serão por essa razão também detectadas. Uma destas situações corresponderia à existência de um curtocircuito entre os pinos TDO e TDI de um mesmo TAP, numa CCI em que todos os componentes tivessem registos de instruções com as mesmas características. Convidamos o leitor a justificar porque é que esta sequência simples não permitiria a sua detecção e a sugerir uma forma de corrigir esta insuficiência. Em CCI com mais do que uma cadeia BST podemos efectuar a verificação de integridade das infra-estruturas de forma independente entre elas, mas também aqui existirão alguns casos específicos de faltas que só serão detectadas se este teste for realizado de forma coordenada entre as várias cadeias. Um exemplo deste tipo é o do curto-circuito entre pinos TDO em cadeias diferentes, que estarão normalmente em alta impedância, a não ser enquanto ocorrerem operações de deslocamento. Se numa das cadeias BST os componentes forem mantidos no estado TLR, enquanto a integridade da outra é verificada, qualquer curto-circuito do tipo referido não é detectável, uma vez que só um dos pinos TDO estará activo. Mais uma vez convidamos o leitor a especificar uma forma coordenada de se verificar a integridade da infra-estrutura BST, capaz de garantir a detecção deste tipo de curto-circuitos. Se este procedimento de verificação descrito decorrer sem a detecção de erros em relação aos valores esperados, existe uma elevada probabilidade de não existirem faltas presentes na infra-estrutura BST. Contudo, se alguns dos componentes presentes suportarem as instruções IDCODE / USERCODE, é recomendável que se efectue ainda esta verificação, para garantir que os componentes presentes na CCI são efectivamente os correctos. TLR: Test Logic Reset. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.3

64 O teste de cartas de circuito impresso com BST (IEEE 49.) 3.2. Detecção de circuitos abertos em ligações completamente BST Uma vez concluída com sucesso a verificação de integridade da infra-estrutura BST, o próximo passo consiste em verificar que não estarão presentes circuitos abertos ou curto-circuitos, nas restantes ligações da CCI. É importante recordar que a alimentação tem que estar ligada para se efectuar o teste através da infraestrutura BST (o que não sucedia com o teste em-circuito), o que significa que a existência de curto-circuitos levará à passagem de correntes elevadas, potencialmente destrutivas, pelo que a detecção destas situações deve ter lugar tão depressa quanto possível. Com efeito, os dois únicos tipos de testes efectuados antes de se proceder à detecção de curto-circuitos são a verificação de integridade da infra-estrutura BST e a detecção de circuitos abertos, em ambos os casos devido ao muito reduzido número de vectores que requerem. A passagem à etapa de detecção de circuitos abertos inicia-se com a carga da instrução SAMPLE / PRELOAD (mantendo as saídas da lógica interna a controlar os respectivos pinos), que selecciona o registo BS e permite o deslocamento do primeiro vector. Após a inicialização dos andares de retenção das células (que sucede à descida de TCK, quando o controlador do TAP se encontra no estado Update-DR), será carregada a instrução EXTEST, que impõe o desacoplamento entre a lógica interna e os pinos, permitindo a aplicação deste vector e dos seguintes. A geração dos vectores para a detecção de circuitos abertos em ligações completamente BST leva em consideração o comportamento conhecido das entradas digitais, quando nestas condições (as entradas TTL 2 capturam normalmente um enquanto nas entradas CMOS o valor capturado é normalmente aleatório). As faltas deste tipo serão portanto detectadas se aplicarmos um a cada saída (pinos de saída ou bidireccionais) e verificarmos se o mesmo valor foi capturado nas entradas a ela ligadas, repetida uma segunda vez, agora para permitir a aplicação de um. No caso de ligações com múltiplas saídas, como se ilustra na figura 3.2, a detecção de todas as faltas possíveis requer que este procedimento tenha lugar sequencialmente para cada saída (as 2 TTL: Transistor-Transistor Logic; CMOS: Complementary Metal-Oxide-Semiconductor J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.4

65 O teste de cartas de circuito impresso com BST (IEEE 49.) restantes saídas pertencentes à mesma ligação deverão estar no estado de alta impedância). Figura 3.2: Teste de circuitos abertos em ligações com múltiplas saídas. O número de vectores de teste necessários para a detecção de circuitos abertos é portanto dado pelo dobro do máximo número de saídas existente numa única ligação, o que significa que é normalmente muito baixo o número de vectores necessário para garantir % de cobertura de faltas deste tipo Detecção de curto-circuitos entre ligações completamente BST Concluído teste para circuitos abertos, e uma vez que a instrução EXTEST se encontra já presente nos registos de instrução, o primeiro vector para a detecção de curto-circuitos pode ser deslocado para o interior dos registos BS. Uma vez que todos os pinos de entrada pertencentes a duas ligações em curto-circuito terão aplicado o mesmo valor de tensão, é razoável esperar que as respectivas células BS capturem o mesmo valor lógico. Desta forma, a geração de vectores de teste para a detecção de curto-circuitos baseia-se na aplicação de valores lógicos opostos às ligações a testar. No caso das ligações que incluam múltiplos pinos de saída (uma vez mais, estamos a considerar pinos de saída ou bidireccionais), bastará seleccionar um deles para permitir a aplicação do valor pretendido na ligação. Esta decisão é válida porque se verificou já anteriormente que não estariam presentes circuitos abertos, o que justifica que o valor aplicado por uma saída estará igualmente presente em todos os restantes pinos que integram a ligação. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.5

66 O teste de cartas de circuito impresso com BST (IEEE 49.) A consideração das faltas do tipo curto-circuito representa no entanto um problema bastante mais complexo, não só por causa do seu efeito potencialmente destrutivo, mas também porque o número de faltas possíveis é muito superior ao das faltas ss@ ou do tipo circuito aberto. O número de curto-circuitos possíveis entre N nós é dado por 2 N -(N+), crescendo portanto exponencialmente com a dimensão do circuito. Apesar de ser verdade que algumas destas faltas serão muito mais prováveis do que outras (e.g. um curto-circuito entre todas as ligações é altamente improvável), este facto é pouco relevante para efeitos da geração dos vectores de teste. Por outro lado, garante-se a detecção de % dos curtocircuitos possíveis se garantirmos a detecção de curto-circuitos entre todos os pares possíveis de ligações, uma vez que os curto-circuitos que envolvam três ou mais ligações serão por maioria de razão também detectados. Esta consideração chama-nos a atenção para a distinção entre detecção e diagnóstico, sendo o primeiro bastante mais fácil de garantir que o segundo. Existe um grande número de publicações que descrevem algoritmos de geração de vectores para o teste de curto-circuitos, normalmente correspondentes a diferentes soluções de compromisso entre o número de vectores gerados e a resolução possível no diagnóstico. Um dos primeiros algoritmos deste tipo foi proposto em 974 por W. H. Kautz (sem ser para CCI com BST, que na altura ainda não existiam) e usa o princípio da partição binária para garantir completa capacidade de detecção com um número mínimo de vectores de teste (e também mínima resolução no diagnóstico, como seria de esperar). A partição binária começa com um vector de teste que aplica um a metade das ligações e um à metade restante, de modo a que qualquer curto-circuito que envolva ligações em conjuntos diferentes seja detectado. Contudo, e como os curto-circuitos que envolvam ligações no mesmo conjunto escapam à detecção, este procedimento é repetido, agora particionando cada conjunto em mais duas metades, e assim sucessivamente, até à última partição, que produz conjuntos singulares (com uma única ligação). A aplicação deste algoritmos ao exemplo simples de uma CCI com apenas oito ligações está ilustrada na figura 3.3. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.6

67 O teste de cartas de circuito impresso com BST (IEEE 49.) Figura 3.3: O algoritmo da partição binária para a detecção de curto-circuitos. O algoritmo da partição binária garante completa capacidade de detecção (%) de curto-circuitos com um número mínimo de vectores de teste, dado por log2(n), onde N representa o número de nós ligações e X (tecto de X) o menor inteiro não inferior a X (dez vectores de teste serão portanto suficientes para detectar todos os curto-circuitos possíveis num CCI com um milhar ligações) Teste de ligações completamente BST em CCI com múltiplas cadeias A detecção de circuitos abertos em CCI com múltiplas cadeias BST pode ser feita sequencialmente ou em simultâneo nas várias cadeias, já que cada falta deste tipo afecta uma única ligação. Um curto-circuito entre duas ligações corresponde no entanto a uma situação diferente, já que a sua detecção só é possível se ambas as ligações estiverem simultaneamente activas e tiverem aplicados valores lógicos opostos. O algoritmo da partição binária garante a aplicação dos valores lógicos opostos a cada ligação, mas o caso das CCI com múltiplas cadeias BST requer que se salvaguarde a detecção dos curto-circuitos entre ligações pertencentes a cadeias diferentes. O algoritmo da partição binária gera o conjunto de vectores de teste para a totalidade das ligações existentes na CCI, independentemente do número de cadeias BST existentes ou da cadeia (ou cadeias) a que cada ligação pertence. A aplicação dos vectores através de cada cadeia tem no entanto que ser feita de forma coordenada, através de um protocolo que podemos apresentar como se segue, para cada vector: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.7

68 O teste de cartas de circuito impresso com BST (IEEE 49.) Para a primeira cadeia BST, inserir o novo vector nos registos BS e prosseguir para o estado Select-DR (passando portanto por Update-DR). Repetir a operação anterior com cada uma das restantes cadeias BST. As condições necessárias para a detecção de todos os curto-circuitos cobertos por este vector só estarão criadas quando se tiver passado pelo estado Update-DR em todas as cadeias. De novo na primeira cadeia, capturar as respostas presentes nas entradas paralelas das células BS. Uma vez que o controlador do TAP tinha ficado no estado Select-DR, a aplicação de um impulso em TCK, com TMS em, força a passagem para o estado Capture-DR, onde a próxima subida em TCK provocará a captura das respostas. Repetir a operação anterior em todas as restantes cadeias BST. A captura das respostas só estará concluída quando esta operação tiver sido realizada na última das cadeias existentes. Este protocolo de teste para CCI com múltiplas cadeias BST garante a correcta aplicação dos vectores de teste gerados pelo algoritmo da partição binária, ou por qualquer outro algoritmo Detecção de faltas em grupos de componentes sem BST A detecção de faltas em grupos de componentes sem BST pode ser feita exclusivamente através da infra-estrutura BST que rodeia o grupo, mas será normalmente possível garantir menores tempos de teste e mais elevada cobertura de faltas se for também possível recorrer a recursos de teste externos. A infraestrutura BST e os canais de teste externos podem ser combinados das três formas principais que se ilustram na figura 3.4. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.8

69 O teste de cartas de circuito impresso com BST (IEEE 49.) Entrada primária Saídas primárias E.P. S.P. E.P. S.P. Um canal de teste em cada ligação Entrada primária Ligação Célula BS e Célula BS e buffer de saída buffer de entrada E.P. Nenhum canal de teste dentro deste grupo S.P. E.P. Nenhum canal de teste dentro deste grupo S.P. (a) Acesso total (b) Acesso periférico. (c) Acesso só às E/S primárias. Figura 3.4: Partilha de acessos entre a infra-estrutura BS e recursos de teste exteriores. O símbolo é usado na figura 3.4 para representar um canal de teste externo com acesso físico ao respectivo nó da CCI. As três alternativas apresentadas correspondem a soluções de compromisso diferentes entre a rapidez do teste (e eventualmente também a cobertura de faltas) e o seu custo (em recursos externos), que podem ser resumidas como se segue: O acesso total (figura 3.4.a) permite que o grupo de componentes sem BST seja testado independentemente da cadeia BST que o rodeia, uma vez que todas as ligações (internas ou na periferia) têm um canal de teste em-circuito. Esta é naturalmente a solução mais rápida (não há operações de varrimento envolvidas), mas requer importantes recursos de teste externos e acesso físico sem restrições, o que em muitos casos não é possível. O acesso físico apenas às ligações na periferia do grupo de componentes sem BST (figura 3.4.b) é uma alternativa que requer menos recursos de teste, devido ao número muito inferior de pontos de acesso. Os canais externos de teste em-circuito possibilitam o teste funcional do grupo de componentes, a que normalmente corresponde menor rapidez (em relação à opção anterior), mas que continua a não envolver quaisquer operações de varrimento. uando o acesso físico não é de todo possível ao interior da CCI, estando apenas restrito às suas entradas e saídas primárias (figura 3.4.c), a única alternativa que resta consiste em se usar a infra-estrutura BST envolvente para testar o grupo de componentes sem BST. Embora apresente requisitos mínimos em recursos de teste externos, esta alternativa é também a mais lenta, uma vez que é necessário efectuar um varrimento completo por cada J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.9

70 O teste de cartas de circuito impresso com BST (IEEE 49.) vector de teste (assumindo que o teste se realiza com um conjunto de vectores determinísticos). Os vectores de teste para o grupo de componentes sem BST serão normalmente obtidos por recurso a uma ferramenta computacional que efectua automaticamente a sua geração, de acordo com um determinado modelo de faltas e com os recursos de teste que se assumem disponíveis (teste funcional através da periferia do grupo ou teste em-circuito por acesso aos nós internos). Para o caso ilustrado na figura 3.4.c, o conjunto de vectores gerados para o teste funcional terá que ser posteriormente processado, para efectuar a sua serialização e colocar de cada bit no lugar correspondente, dentro da infra-estrutura BST. À medida que as tecnologias de encapsulamento e montagem se vão sofisticando, a situação ilustrada na figura 3.4.c torna-se cada vez mais preferível. Devemos no entanto levar em conta que a necessidade de efectuar o varrimento de cada vector e das respectivas respostas pode implicar uma velocidade inaceitavelmente baixa, em particular nos casos em que as cadeias BST incluam centenas / milhares de células e o número de vectores de teste seja muito elevado. Para alguns tipos de circuitos (e.g. blocos de lógica combinatória), podemos no entanto recorrer a métodos alternativos, como é o caso da geração pseudo-aleatória de vectores de teste e a compactação de respostas por análise de assinatura, que permitem a aplicação de vectores à cadência de um por cada impulso em TCK. Repare-se que os métodos de teste ilustrados nas figuras 3.4.a e 3.4.b são independentes do número de cadeias BST existentes na CCI, uma vez que não estão envolvidas quaisquer operações de varrimento. No que respeita à figura 3.4.c, onde a infra-estrutura BST é usada para testar o grupo de componentes, deve ser aplicado o mesmo protocolo que foi apresentado para o teste de ligações completamente BST em CCI com múltiplas cadeias Detecção de faltas em componentes Considerando que a tecnologia BST foi desenvolvida com o objectivo de simplificar o teste estrutural de CCI digitais, não constitui surpresa que as facilidades disponíveis para o teste de componentes sejam limitadas. Uma vez que a realização de um teste exaustivo, com o deslocamento individual de cada vector e das respectivas respostas, é inviável na generalidade dos casos, restam as seguintes duas alternativas: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.

71 O teste de cartas de circuito impresso com BST (IEEE 49.) uando a instrução opcional RUNBIST é suportada (o que sucede normalmente com os componentes VLSI, onde a complexidade do circuito justifica a sobrecarga imposta pelas estruturas de auto-teste incorporado), o teste do componente é simples e pode ser efectuado pela seguinte sequência: Carregar a instrução RUNBIST. Levar o controlador do TAP até ao estado RTI 3 e aplicar em TCK o número de impulsos especificado pelo fabricante. Deslocar para o exterior o resultado do auto-teste, que estará contido no registo de dados seleccionado pela própria instrução RUNBIST. No que respeita aos componentes que não suportarem a instrução RUNBIST, poderemos normalmente verificar se respondem da forma esperada, face a um pequeno número de vectores de teste (aplicados através do registo BS). Atendendo no entanto à lentidão inerente a este processo, a realização de um teste funcional significativo será apenas possível para componentes extremamente simples (mas estes, na maioria dos casos, não disporão de infra-estrutura BST, excepto no caso de componentes vocacionados para a inserção de testabilidade, de que encontramos exemplos na família SCOPE da Texas Instruments). É ainda importante referir a instrução opcional INTEST, descrita na norma IEEE 49., e que tem por objectivo satisfazer a segunda das duas alternativas descritas acima. Esta instrução é no entanto equivalente a EXTEST (obrigatória), quando as células BST apresentam a configuração típica (dois FF D e dois multiplexadores). Uma vez que cada componente está inserido numa única cadeia BST, o caso de CCI com múltiplas cadeias não levanta requisitos de coordenação entre elas. Nestas circunstâncias, o teste de componentes decorrerá normalmente em paralelo nas várias cadeias, por ser esta a solução mais rápida. 3 RTI: Run Test / Idle. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 3.

72 4. Modelo de um controlador 49. A leitura dos textos anteriores deverá já ter permitido ao leitor uma compreensão razoavelmente aprofundada da arquitectura BS ao nível do CI, bem como do protocolo de teste que permite a detecção de vários tipos de faltas numa CCI com BST. Contudo, e antes que possamos passar à escrita de programas de teste, teremos ainda que apresentar uma linguagem de especificação formal, que nos permita codificar as vários passos que integram o protocolo de teste descrito. O modelo de controlador BS apresentado neste capítulo constitui precisamente a ferramenta que nos permitirá especificar programas de teste para os casos de aplicação que iremos analisar proximamente. 4.. Operações básicas de teste A análise das operações básicas de teste que são necessárias para implementar as três fases principais do protocolo de teste para CCI com BST (verificar a integridade da infra-estrutura BST, testar as ligações completamente BST e os grupos de componentes sem BST, testar os componentes) leva-nos a concluir que são necessárias três tipos principais de operações básicas de teste. Estas operações serão detalhas nas próximas secções e o seu objectivo consiste em i) controlar a infra-estrutura BST, ii) sincronizar esta infra-estrutura com recursos de teste externos e iii) controlar os recursos internos e o fluxo do programa de teste Operações básicas de teste para controlar a infra-estrutura BST Estas operações são extensivamente utilizadas em qualquer dos três passos principais do protocolo de teste e podem ser descritas como se apresenta a seguir: Aplicar um impulso descendente em /TRST. A aplicação em /TRST de um nível lógico permite reinicializar a infra-estrutura de teste em todos os componentes BST que disponham deste pino opcional, constituindo uma alternativa mais rápida para levar o controlador do TAP até ao estado TLR, face à possibilidade de se aplicarem cinco impulsos em TCK, mantendo TMS em. Aplicar um impulso ascendente em TCK enquanto TMS é mantido num nível lógico pré-definido ( ou ).

73 Modelo de um controlador 49. Esta operação básica de teste é necessária para cadenciar a evolução do controlador do TAP através do seu diagrama de transição de estados. Deslocar uma sequência de bits para o interior da cadeia de varrimento seleccionada, sem comparar o valor dos bits deslocados para o exterior. A linha TMS deverá ser mantida no valor lógico excepto no último impulso em TCK, altura em tomar o valor. Existem várias situações nas quais a sequência de bits deslocados para o exterior não contém informação de interesse, tal como sucede com o primeiro vector deslocado para o interior dos registos BS, com o objectivo de efectuar o teste das ligações (os valores contidos nos andares de captura / deslocamento não têm significado, uma vez que não tinha ainda sido aplicado qualquer vector). Independentemente de se pretender ou não comparar a sequência de bits deslocada para o exterior, o último impulso aplicado em TCK tem que ser aplicado com TMS em, para que o controlador do TAP deixe o estado de Shift aquando do deslocamento do último bit e passe ao estado Exit. Deslocar uma sequência de bits para o interior da cadeira de varrimento seleccionada, comparando os bits deslocados para o exterior com os seus valores esperados, nos casos em que estes valores sejam conhecidos. Uma vez mais, a linha TMS deve ser mantida em excepto no último impulso em TCK, quando deve estar em. Durante a aplicação de um conjunto de vectores de teste, e enquanto cada novo vector é deslocado para o interior da cadeia de varrimento (excepto no caso do primeiro vector, como já vimos), serão simultaneamente deslocadas para o exterior as respostas ao vector anterior. É portanto necessário comparar os bits extraídos da cadeia de varrimento com os seus valores esperados, embora nem todos contenham informação útil ou um valor esperado conhecido. Com efeito, e apesar de todos os andares de captura / deslocamento capturarem o valor presente na entrada paralela das células, à passagem pelo estado de Capture, apenas algumas destas células estarão associadas a pinos BST de entrada (capturando os valores lógicos presentes nas ligações BST) ou a pinos de saída com valor esperado conhecido. Por cada bit a deslocar para o interior da cadeia de varrimento, são portanto necessários dois bits adicionais: uma máscara de comparação (para permitir ou inibir a comparação) e o valor esperado (quando conhecido). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.2

74 Modelo de um controlador 49. Aplicar N impulsos em TCK enquanto TMS é mantido em. A execução de funções de auto-teste acessíveis através da infra-estrutura BST requer que o controlador do TAP seja levado até RTI e mantido neste estado (conservando TMS em ) durante um número de impulsos em TCK não inferior ao que está especificado na folha de características do componente. Seleccionar a cadeia BS na qual as operações de teste pretendidas devem ter lugar. Esta operação básica de teste é necessária no caso de CCI com múltiplas cadeias BST, assumindo que o controlador de teste á apenas capaz de controlar uma cadeia de cada vez Operações básicas de teste para sincronizar a infra-estrutura BS com recursos de teste externos O protocolo de teste para ligações na CCI e para grupos de componentes sem BST, descrito no capítulo anterior, tornou claro que a existência de pinos não BST (em componentes ou em conectores de E/S primária) requer a sincronização com os recursos de teste externos que efectuam a aplicação de vectores e a captura de respostas nestes pinos. Esta sincronização pode ser garantida através de um procedimento de coordenação (handshake), baseado na existência em ambos os lados (cadeias BST e recursos externos de teste) de uma saída de sincronismo e de uma entrada de sincronismo, que levam à necessidade das seguintes operações básicas de teste: Colocar a saída de sincronismo num valor lógico pré-definido ( ou ). O controlador BST colocará em a saída de sincronismo, para notificar o equipamento de teste externo que está concluída a aplicação de vectores através da infra-estrutura BST, e colocá-la-á em para indicar que está concluída a captura de respostas pela mesma via. Esperar até que a entrada de sincronismo assuma um valor lógico pré-definido ( ou ). Após a aplicação de um vector de teste através da infra-estrutura BST e da notificação ao equipamento de teste externo, o controlador BST deverá esperar pela notificação proveniente deste equipamento, a indicar que está igualmente concluída a aplicação do vector de teste nos pinos sem BST, antes de passar para J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.3

75 Modelo de um controlador 49. a captura das respostas. Da mesma forma, após concluir a captura das respostas, o controlador BST deverá notificar o equipamento de teste externo e aguardar que dele chegue a mesma indicação, antes de passar à aplicação de um novo vector Operações básicas de teste para controlar recursos internos de teste e o fluxo do programa de teste O modelo do controlador BST tem que incluir um pequeno número de mecanismos para controlar recursos internos e o fluxo do programa que executa, o que leva à especificação do seguinte conjunto de operações básicas de teste: Carregar um contador interno com o número de impulsos pretendido em TCK. Operações como a execução de auto-teste interno, ou o deslocamento de um vector para o interior da infra-estrutura BST, requerem a aplicação de um número préespecificado de impulsos no relógio de teste. Entre outras alternativas possíveis para este mesmo fim, o controlador aqui apresentado assume a existência de um contador interno, que será carregado com o número de impulsos pretendido em TCK. Seleccionar a flag de erro a ser activada se não for encontrado um valor esperado. As flags de erro não seriam necessárias, se estivéssemos apenas interessados em proceder à detecção de faltas, mas a sua existência possibilita alguma capacidade de diagnóstico, ainda que limitada. Se tivermos o cuidado de seleccionar uma nova flag de erro antes de iniciar a aplicação do conjunto de vectores correspondentes a cada novo passo do protocolo de teste, tornar-se-á possível identificar qual o tipo de faltas que foram detectadas (ainda que não saibamos qual o vector em que isso sucedeu, ou em que bits a diferença foi detectada). Assumindo que esta capacidade limitada de diagnóstico tem interesse, torna-se necessária uma operação básica de teste que permita seleccionar a flag de erro a activar, quando for detectada a próxima falta. Efectuar um salto condicional no fluxo do programa de teste, de acordo com o estado da flag de erro seleccionada. Alguns tipos de faltas são potencialmente destrutivos, tais como os curtocircuitos, casos em que é recomendável interromper imediatamente o teste. Esta J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.4

76 Modelo de um controlador 49. possibilidade requer a existência de uma operação básica para controlar o fluxo do programa de teste, de modo a permitir uma acção correctiva com atraso mínimo. Concluir o programa de teste. A mais simples de todas as operações básicas de teste, mas ainda assim imprescindível O conjunto de instruções de teste De acordo com o conjunto de operações básicas de teste que foram previamente definidas, esta secção apresenta o conjunto de instruções que deverão ser implementadas pelo controlador BST. A especificação formal de qualquer programa de teste torna-se então possível através deste conjunto de instruções, como teremos oportunidade de ver relativamente à pequena CCI de demonstração que consideraremos como exemplo prático em capítulo posterior, na qual existem duas cadeias e dois grupos de componentes sem BST. A apresentação do modelo do controlador é feita em três etapas, que endereçam as operações básicas de teste descritas anteriormente Controlo da infra-estrutura BST As instruções disponíveis para controlar a infra-estrutura de teste são as que foram apresentadas anteriormente, assumindo que as CCI a testar terão uma ou duas cadeias BST. A mnemónica e uma descrição simplificada da sua operação são apresentadas na tabela 4. para cada instrução. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.5

77 Modelo de um controlador 49. Mnemónica TRST Operação Aplica um impulso descendente na linha /TRST TMS, TMS Aplica um impulso em TCK, com TMS em (TMS) or (TMS) NSHF <bit_stream> Desloca uma sequência de bits para o interior da cadeia seleccionada, sem comparar os bits deslocados para o exterior NSHFCP <bit_stream> Desloca uma sequência de bits para o interior da cadeia seleccionada, enquanto os bits deslocados para o exterior vão sendo comparados com os seus valores esperados (se conhecidos) NTCK Aplica N impulsos em TCK, mantendo TMS em SELTAP, SELTAP Selecciona a cadeia BST (SELTAP) ou (SELTAP) Tabela 4.: Instruções disponíveis para controlar a infra-estrutura BST. As especificações temporais não serão apresentadas aqui, uma vez que estes detalhes dependerão da implementação que pretendermos fazer para o controlador BST. Nesta fase estamos apenas interessados em apresentar um modelo funcional para este controlador, que nos permitirá codificar os passos do protocolo de teste, independentemente de a sua implementação vir a ser feita na forma de um circuito dedicado, ou através de uma aplicação informática. Para se construir a sequência de bits que constitui o argumento da instrução NSHFCP, assumiremos a sua organização em sequências de oito bits, encadeadas como se descreve a seguir: Os primeiros oito bits destinam-se a ser deslocados para o interior da CCI. Os segundos oito bits contêm valores esperados na saída TDO da CCI, à medida que os primeiros oito bits vão sendo deslocados para o seu interior (repare-se que se trata de respostas ao vector anterior, capturadas nos oito pinos mais próximos do TDO da CCI). Os terceiros oito bits contêm as máscaras de comparação que identificam as células para as quais se conhecem os valores esperados. Os restantes grupos de oito bits estão organizados da mesma forma, começando pelos valores a deslocar, seguidos pelos valores esperados e pelas máscaras de comparação. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.6

78 Modelo de um controlador 49. Em cada grupo de oito bits, o bit mais à direita é o primeiro a ser considerado (deslocado ou comparado). O pequeno exemplo ilustrado na figura 4. auxilia-nos a compreender a regra de construção proposta para o argumento de NSHFCP, assumindo que se pretende: Deslocar um novo vector de teste, que carregue as últimas oito células (8..5) com e as primeiras oito todas com. Verificar que as células..3 capturam e as células 8.. capturam. Célula BS TDI da CCI TDO da CCI Figura 4.: Uma cadeia BS simples com 6 células. O argumento da instrução NSHFCP seria neste caso como se apresenta a seguir: NSHFCP $55,$3,$F,$,$5,$F (onde o sinal $ indica a notação hexadecimal) Analisando o argumento apresentado para NSHFCP, concluímos que: O grupo de oito bits $55 representa os primeiros dados a serem deslocados para o interior da cadeia BST (a começar pelo bit mais à direita, que ao fim do 6.º impulso em TCK chegará à célula 5). O grupo $3 representa os valores esperados nas células 8..5 (os valores capturados nas entradas 8.. chegarão a TDO entre o 4.º e o 7.º impulsos em TCK). O grupo $F indica que os primeiros quatro bits a deslocar para o exterior não têm valores esperados conhecidos. O grupo $ representa o segundo conjunto de bits a deslocar para o interior da cadeia BST (que ocuparão as células..7). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.7

79 Modelo de um controlador 49. O grupo $5 contém os valores esperados para o segundo grupo de bits que serão deslocados para o exterior da cadeia BST. Finalmente, o grupo $F indica que são conhecidos valores esperados apenas para os últimos quatro bits a deslocar para o exterior Sincronismo com recursos de teste externos A tabela 4.2 apresenta as instruções para o sincronismo com recursos de teste externos, assumindo a disponibilidade de dois canais para este efeito (A e B). Mnemónica Operação SSA, SSA, SSB, SSB Coloca a saída de sincronismo em (SSA, SSB) ou em (SSA, SSB) WSA, WSA, WSB, WSB Espera que a entrada de sincronismo seja colocada em (WSA, WSB) ou em (WSA, WSB) Tabela 4.2: Instruções disponíveis para o sincronismo com recursos externos de teste Controlo de recursos internos e do fluxo do programa de teste As instruções disponíveis para controlar recursos internos e o fluxo do programa de teste são as que apresentam na tabela 4.3, assumindo a existência de oito flags de erro por cada cadeia BST. Mnemónica Operação LD CNT,N Carrega um contador interno com o número pretendido de impulsos em TCK SERFLG,..., SERFLG7 Selecciona a flag de erro a ser activada pela detecção de uma falta JPE JPNE HALT Endereço, Endereço Salta para o endereço especificado se a flag de erro estiver activa (JPE) ou inactiva (JPNE) Pára a execução do programa de teste Tabela 4.3: Instruções disponíveis para controlar recursos internos e o fluxo do programa de teste. O nosso modelo do controlador assume que a instrução LD CNT,N tem que ser incluída antes de qualquer das instruções seguintes: NTCK, NSHF e NSHFCP. Haveria naturalmente outras alternativas para especificar o número de impulsos de relógio de teste pretendidos, bem como o argumento das instruções de J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.8

80 Modelo de um controlador 49. deslocamento, com vantagens e desvantagens face à opção efectuada. A especificação aqui apresentada teve origem no facto de ter sido construída para orientar a implementação do controlador como um processador dedicado, onde o argumento das instruções de deslocamento está armazenado numa memória de oito bits Geração do programa de teste O modelo do controlador apresentado compreende um total de 28 instruções, pertencentes aos três tipos descritos. Este conjunto de instruções permite-nos especificar programas de teste para qualquer CCI com uma ou duas cadeias BST e onde poderão ou não existir componentes que não suportem esta tecnologia de teste, desde que não sejam necessários mais do que dois canais de sincronismo com equipamentos externos. O conjunto de instruções descrito apresenta um nível de abstracção muito baixo, o que significa que a geração manual do programa de teste constitui uma tarefa tediosa e onde a probabilidade de ocorrerem erros é elevada. O ideal seria naturalmente que esta tarefa fosse efectuada automaticamente por uma ferramenta computacional, a partir da leitura de um conjunto de ficheiros com a descrição estrutural da CCI (netlist), a descrição da infra-estrutura BST em cada componente e os conjuntos de vectores de teste a usar com os grupos de componentes sem BST. O baixo nível de abstracção do conjunto de instruções apresentado tem no entanto também as suas vantagens, nomeadamente no que respeita à flexibilidade com que permite o controlo da infra-estrutura BST. É importante recordar que o modelo de controlador proposto tem igualmente um objectivo pedagógico, que não sairia beneficiado pela omissão dos detalhes inerentes ao controlo da infra-estrutura BST. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 4.9

81 5. Geração do programa de teste para uma CCI com BST (IEEE 49.) O objectivo deste capítulo consiste em demonstrar a aplicação prática de todos os conceitos descritos até agora, usando como veículo de demonstração o caso simples de uma CCI com BST. A complexidade deste exemplo é reduzida, essencialmente por razões de ordem pedagógica, mas inclui as mesmas situações que poderemos esperar encontrar em casos reais de complexidade bastante superior: múltiplas cadeias BST (neste caso, duas), presença de grupos de componentes sem BST (dois grupos) e de pinos de E/S primária. Começaremos por efectuar a descrição da CCI, seguida pela análise da informação necessária para a geração do programa de teste, e por fim analisaremos o programa gerado para todos os passos do protocolo de teste, assumindo o modelo do controlador que foi apresentado no capítulo anterior. 5.. A CCI de demonstração A CCI de demonstração usada neste exemplo foi desenvolvida para constituir um exemplo de validação no âmbito de um projecto em que se desenvolveram estratégias de teste para CCI com BST. As características principais desta carta são as seguintes: Existem duas cadeias BST: a primeira (cadeia BST #) inclui os componentes BST CI3 e CI4 (ambos SN74BCT8244) e a segunda cadeia (cadeia BST #) inclui o componente BST CI5 (uma vez mais o SN74BCT8244). Existem dois grupos de componentes sem BST: o primeiro grupo compreende os componentes CI e CI2 (respectivamente o 74LS39 um descodificador dual de 2:4 e o 74LS4 com seis inversores) e está completamente rodeado pela cadeia BST #. O segundo grupo compreende apenas o CI6 (trata-se do 74LS57, que contém quatro multiplexadores de 2:) e é rodeado pelas células BST de ambas as cadeias. Projecto ESPRIT 2478: Research into Boundary Scan Test Implementation.

82 Geração do programa de teste para uma CCI com BST (IEEE 49.) É possível a inserção de faltas do tipo circuito aberto ou curto-circuito, através de um conjunto de pinos dispostos na CCI para este efeito, com o objectivo de permitir a validação dos programas de teste escritos. Existem oito entradas primárias e oito saídas primárias. O diagrama esquemático desta CCI está incluído em anexo no final deste capítulo. Contudo, e para facilitar a compreensão deste exemplo, sob o ponto de vista das suas características de testabilidade, apresenta-se na figura 5. uma representação alternativa que enfatiza as duas cadeias BST e os dois grupos de componentes sem BST. TDO TDI Lig. 7 E7 Lig. 6 E6 Lig. 5 E5 Lig. 4 E4 Lig. 3 E3 Lig. 2 E2 Lig. E Lig. E Lig. 9 Lig. 8 TDI Componente BST # A B /G /G2 Grupo sem BST # 2Y3 2Y2 2Y 2Y /Y3 /Y2 /Y /Y Lig. 3 Lig. 2 Componente BST # A B A2 B2 A3 B3 A4 B4 Grupo sem BST # (CI3) (CI and CI2) (CI4) (CI6) S /G Lig. 4 Lig. 5 Y Y2 Y3 Y Componente BST #2 (CI5) Lig. 23 Lig. 22 Lig. 2 Lig. 2 Lig. 9 Lig. 8 Lig. 7 Lig. 6 S7 S6 S5 S4 S3 S2 S S TDO Lig. Lig. Figura 5.: Cadeias BST e grupos de componentes sem BST na CCI de demonstração. A folha de características do SN74BCT8244 (também disponível a partir da página da Texas Instruments em inclui toda a informação que descreve a infra-estrutura BST presente neste componente, que inclui várias instruções opcionais específicas dos componentes produzidos por este fabricante. Contudo, e uma vez que os passos básicos do protocolo de teste descrito em capítulo anterior não faziam uso destas instruções, a geração do programa de teste a apresentar J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.2

83 Geração do programa de teste para uma CCI com BST (IEEE 49.) basear-se-á exclusivamente nas instruções obrigatórias descritas na norma IEEE A informação necessária à geração do programa de teste Os três tipos principais de informação necessários à geração do programa de teste são os seguintes: A descrição da infra-estrutura BST presente em cada componente. A descrição estrutural (netlist) da CCI a testar. A descrição dos vectores de teste (e das respectivas respostas) a usar com os grupos de componentes sem BST presentes. Estes três tipos de informação serão agora analisados, à medida que formos avançando através dos passos que integram o protocolo de teste já nosso conhecido Verificação da integridade da infra-estrutura BST O programa de teste para verificar a integridade da infra-estrutura BST requer a descrição da arquitectura 49. presente em cada componente, que podemos extrair da respectiva folha de características, e ainda informação relativa à sua localização na cadeia BST da CCI. Estes dois tipos de informação estão descritos na tabela 5.. Parâmetro CI3 CI4 CI5 Cadeia a que pertence o componente Localização do componente na cadeia Comprimento do registo de instrução Conteúdo do registo de instrução após a captura XXXXXX XXXXXX XXXXXX Existe registo de identificação? Não Não Não Código de SAMPLE / PRELOAD Tabela 5.: Informação necessária para verificar a integridade da infra-estrutura BST. Repare-se que é apenas necessário especificar a informação que não está prédefinida pela norma, tal como sucede com o código da instrução SAMPLE / PRELOAD, ou o comprimento do registo de instrução, bem como o seu conteúdo após uma operação de captura (os dois bits mais próximos de TDO estão pré- J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.3

84 Geração do programa de teste para uma CCI com BST (IEEE 49.) definidos, mas os restantes bits podem ser relevantes para a captura de informação específica de cada componente) Teste de ligações completamente BST Esta carta de demonstração inclui 24 ligações completamente BST, duas das quais (as ligações e, na figura 5.) dispõem de células em cadeias BST diferentes. A informação necessária para a geração do programa de teste pode uma vez mais ser obtida a partir da folha de características do SN74BCT8244 e da descrição estrutural da CCI, compreendendo o seguintes campos, para cada ligação: Número e identificação das cadeias BST que têm células presentes na ligação. Relativamente aos pinos de saída presentes: Número de pinos de saída. Para cada um, localização (na cadeia BST) da célula de saída, da célula de controlo (se existir) e do valor lógico que coloca o pino no estado de alta impedância. Relativamente aos pinos de entrada presentes: Número de pinos de entrada. Para cada um, localização (na cadeia BST) da célula de entrada. Relativamente aos pinos bidireccionais presentes: Número de pinos bidireccionais. Para cada um, localização (na cadeia BST) da célula de saída, da célula de entrada, da célula de controlo e do valor lógico que coloca o pino no estado de alta impedância. Relativamente aos pinos de entrada primária presentes (e assumindo que cada entrada primária será controlada por um canal de teste externo que pode assumir o estado de alta impedância): Número de entradas primárias. Para cada uma, identificação do canal de teste externo que a alimenta e do valor lógico que impõe neste canal o estado de alta impedância. Relativamente aos pinos de saída primária presentes: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.4

85 Geração do programa de teste para uma CCI com BST (IEEE 49.) Número de saídas primárias. Para cada uma, identificação do canal de teste externo a que está ligada. Finalmente, e considerando o caso de ligações a VCC ou à massa: Especificação do nível lógico esperado na entrada ( ou ). A informação necessária, considerando o caso da nossa CCI de demonstração, está representada na tabela 5.2. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.5

86 Geração do programa de teste para uma CCI com BST (IEEE 49.) Ident. da lig. Núm. cadeias BS Ident. da cadeia # pinos de saída Célula de saída Célula de contr. Alta imped. # pinos de entr. Célula de entr. # pinos bidireccionais # entradas prim. Entr. primária Alta imped. # saídas prim. Saída primária Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Sim Lig Sim Lig Não Lig Não Lig Sim Lig Sim Lig Sim Lig Sim Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Lig Não - Tabela 5.2: Informação necessária à geração do programa de teste para as ligações completamente BST. Nível lógico fixo? Nível lógico J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.6

87 Geração do programa de teste para uma CCI com BST (IEEE 49.) Teste dos grupos de componentes sem BST De modo a enfatizar a configuração de teste e as capacidades da infra-estrutura BST, assumiremos que o teste destes dois grupos de componentes deverá ser feito através das cadeias que os rodeiam, sem o recurso a canais de teste externos. O primeiro grupo compreende os componentes CI e CI2 (74LS39 e 74LS4) e está apenas rodeado por células da cadeia BS #, tal como se ilustra na figura 5.2. CI e CI2 Cadeia BS # 2 3 A B /G /G2 2Y3 2Y2 2Y 2Y /Y3 /Y2 /Y /Y Cadeia BS # Figura 5.2: O grupo de componentes sem BST CI e CI2 (74LS39 e 74LS4). A informação necessária para a geração do programa de teste relativo a este segmento, para além dos vectores de teste gerados externamente, compreende os elementos apresentados na tabela 5.3. Parâmetro Valor Número de cadeias BST que rodeiam o grupo (cadeia #) Informação relativa à cadeia BS # Número de células BST 3 Identificação das células BST,,,2,3,2,2,22,23,24,25,26,27 Entradas do grupo que são entradas primárias Saídas do grupo que são saídas primárias São necessários valores de guarda? Não Tabela 5.3: Descrição do primeiro grupo de componentes sem BST (excepto os vectores de teste). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.7

88 Geração do programa de teste para uma CCI com BST (IEEE 49.) Repare-se que não existem pinos de E/S primária que sejam também E/S do grupo, pelo que todos os vectores de teste serão aplicados através das células que o rodeiam. Em alguns casos poderá ser necessário aplicar valores de guarda a algumas das entradas, durante os restantes passos do protocolo de teste, mas vemos pela informação presente na tabela 5.3 que isso não sucede neste caso. A aplicação informática GenRad HILO, para a geração automática de vectores de teste, produziu para este caso um conjunto de cinco vectores, que proporcionam % de cobertura de faltas do tipo ss@ nos pinos de ambos os componentes (CI e CI2). Estes cinco vectores, bem como as respectivas respostas esperadas e máscaras de comparação, estão representados na tabela 5.4, para o conjunto de 3 células que rodeiam o grupo (a célula, à esquerda, depois as células a 3 e por fim as células 2 a 27). Núm. de vectores Cadeia BS Vector a inserir 5 Valores esperados Máscaras de comparação Tabela 5.4: Primeiro grupo Vectores de teste, respostas esperadas e máscaras de comparação. O bit mais à esquerda na coluna do vector a inserir contém o valor que será carregado na célula BS #, que controla o estado das saídas usadas para aplicar os vectores nas entradas do grupo (e está portanto sempre a, caso contrário estes pinos estariam sempre em alta impedância). Os quatro bits seguintes nesta mesma coluna representam os vectores de teste a aplicar (que serão carregados nas células BS a 3), enquanto os bits restantes representam os valores que serão carregados nas células 2 a 27 (os valores deslocados para o interior destas células são irrelevantes). Na coluna dos valores esperados, apenas os oito bits mais à direita são significativos (os correspondentes às células 2 a 27), contendo a resposta esperada para cada vector. Por esta razão, apenas os oito bits mais à direita, nas máscaras de comparação, estão no valor lógico (que indica comparação relevante). O segundo grupo de componentes sem BST compreende apenas o CI6 (74LS57) e está rodeado por células de ambas as cadeias, tal como se ilustra na figura 5.3. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.8

89 Geração do programa de teste para uma CCI com BST (IEEE 49.) Cadeia BS # CI6 4 S 5 /G A B A2 B2 A3 B3 A4 B4 Y Y2 Y3 Y Cadeia BS # Figura 5.3: O grupo de componentes sem BST CI6 (74LS57). A informação necessária para a geração do programa de teste relativo a este segmento, para além dos vectores de teste gerados externamente, compreende os elementos apresentados na tabela 5.5. Parâmetro Valor Número de cadeias BST que rodeiam o grupo 2 (cadeias # e #) Informação relativa à cadeia BS # Número de células BST 3 Identificação das células BST,4,5,8,9,28,29,3,3,32,33,34,35 Informação relativa à cadeia BS # Número de células BST 4 Identificação das células BST 2,3,4,5 Entradas do grupo que são entradas primárias Saídas do grupo que são saídas primárias São necessários valores de guarda? Não Tabela 5.5: Descrição do segundo grupo de componentes sem BST (excepto os vectores de teste). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.9

90 Geração do programa de teste para uma CCI com BST (IEEE 49.) Uma vez mais, não existem pinos de E/S primária que sejam simultaneamente pinos de E/S deste grupo de componentes e não é necessária a aplicação de valores de guarda nas suas entradas, durante os restantes passos do protocolo de teste. A aplicação GenRad HILO produziu para este segundo grupo também cinco vectores de teste, proporcionando % de cobertura de faltas ss@ nos pinos do 74LS57. Neste caso, contudo, os vectores de teste serão aplicados através de células BS que pertencem à cadeia # e as respostas serão capturadas através de células que pertencem à cadeia #. Estes cinco vectores de teste, as respostas esperadas e as máscaras de comparação, para ambas as cadeias, estão apresentados na tabela 5.6, para o conjunto de células que rodeiam este grupo (aplicam-se as mesmas regras de representação inerentes à tabela 5.4, agora com as células BS e 2 à esquerda em ambas as cadeias). Núm. de vectores 5 Cadeia BS Vector a inserir Valores esperados Máscaras de comparação Tabela 5.6: Segundo grupo Vectores de teste, respostas esperadas e máscaras de comparação. Repare-se que todos os valores presentes na coluna dos vectores a inserir são significativos, já que todas as 3 células representadas têm uma função a desempenhar na aplicação dos vectores. Não existem contudo valores esperados no que respeita às capturas a efectuar através da cadeia BS #, pelo que todos os bits nas máscaras de comparação estão a. Por sua vez, os vectores inseridos através da cadeia BS # são irrelevantes (porque as suas células são apenas usadas para captura, neste caso), mas todos os valores esperados são J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.

91 Geração do programa de teste para uma CCI com BST (IEEE 49.) significativos, como se depreende da coluna que contém as máscaras de comparação para esta cadeia Teste de componentes A informação necessária para a geração do segmento do programa que efectua o teste de componentes está representada na tabela 5.7. Parâmetro CI3 CI4 CI5 Cadeia a que pertence o componente Localização do componente na cadeia Comprimento do registo BS O componente suporta auto-teste? No No No Número de vectores para o teste interno Código de INTEST Tabela 5.7: Informação necessária para o teste de componentes (excepto os vectores de teste). Dada a simplicidade da lógica interna, não existem nestes componentes funções de auto-teste disponíveis. Contudo, e precisamente porque a lógica interna consiste apenas em funções identidade, torna-se fácil efectuar um teste simples que verifique se o componente está activo e responde da forma esperada. São usados dois vectores de teste para este fim, que complementam o valor aplicado a cada entrada e aplicam valores lógicos opostos a pinos adjacentes. Repare-se no entanto que a execução deste teste com sucesso não garante que não existam faltas presentes (um curto-circuito entre os pinos e 2, por exemplo, não seria detectado), embora seja possível recorrer a um conjunto de vectores mais abrangente, nos casos onde o nível de exigência for maior. Os dois vectores de teste usados, as respostas esperadas e as máscaras de comparação, estão representados na tabela 5.8. Componente Vector a inserir Valores esperados Máscaras Para cada componente Tabela 5.8: Vectores para o teste de componentes. Recorde-se que a sequência de células BS em cada componente, a começar por TDI, compreende as células de controlo de estado para as saídas com alta J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.

92 Geração do programa de teste para uma CCI com BST (IEEE 49.) impedância, as oito entradas e as oito saídas. As oito posições que se seguem aos dois bits mais à esquerda, na coluna dos vectores a inserir, contêm portanto o vector que será aplicado à lógica interna do componente (respectivamente e ). As respostas serão capturadas nos oito bits mais à direita, de acordo com os valores esperados e as máscaras de comparação, apresentados ma tabela Os vectores de teste Esta secção apresenta o conjunto de vectores de teste que foram gerados para detectar todos os curto-circuitos possíveis entre ligações completamente BST, seguidos pelos vectores de teste já serializados, para todos os passos do protocolo de teste, incluindo os valores esperados e as máscaras de comparação Vectores de teste para a detecção de curto-circuitos entre ligações completamente BST O conjunto de vectores de teste apresentados na tabela 5.9 foi produzido por uma versão modificada do algoritmo de auto-diagnóstico 2 e garante completa capacidade de detecção, para faltas do tipo curto-circuito. Este algoritmo também garante que a sequência de valores lógicos capturados (as Respostas Sequenciais de Teste, RST), em qualquer ligação curto-circuitada, será diferente da sequência de valores lógicos aplicada a qualquer ligação (os designados Vectores Sequenciais de Teste, VST). Para efeitos de diagnóstico, isto equivale a dizer que saberemos sempre distinguir se uma dada ligação está ou não envolvida num curto-circuito, uma vez que qualquer RST, na presença de faltas deste tipo, nunca pertence ao conjuntos dos VST. Existe ainda uma outra fonte de ambiguidade no diagnóstico, que corresponde à dificuldade de distinguir entre alguns grupos disjuntos de ligações em curto-circuito. Neste caso, ambos os grupos produzem o mesmo VRS e portanto não é possível distinguir se existe apenas um grupo de ligações todas curto-circuitadas entre si, ou mais do um grupo, em curto-circuitos independentes (a eliminação deste tipo de ambiguidade requer já no entanto um número consideravelmente superior de vectores de teste). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.2

93 Geração do programa de teste para uma CCI com BST (IEEE 49.) ptv[]: ptv[]: ptv[2]: ptv[3]: ptv[4]: ptv[5]: Tabela 5.9: Vectores gerados para detectar curto-circuitos entre ligações completamente BST. Os seis vectores de teste apresentados (na horizontal) na tabela 5.9 representam os valores lógicos que devem ser aplicados simultaneamente às 24 ligações completamente BST que existem na CCI e designam-se normalmente por Vectores de Teste Paralelos (VTP). Os VTS que são aplicados a cada ligação podem inferir-se de cada coluna (leitura na vertical), a começar pelo VTS aplicado à ligação, na coluna mais à esquerda (VTS#: ) O conjunto completo de vectores de teste serializados, respostas esperadas e máscaras de comparação O conjunto completo de vectores, correspondente a todos os passos que integram o protocolo de teste, são apresentados nesta secção. Cada vector é apresentado na forma série, pronto a ser deslocado para o interior das cadeias de varrimento e acompanhado pelas respostas esperadas e respectivas máscaras de comparação. TOTAL NUMBER OF INFRASTRUCTURE TEST PATTERNS: 4 *************************************************************************** Infrastructure test pattern number (ID or BP register opcodes for IR's): *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result (to be shifted out while this test pattern is shifted in): ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : 2 A forma original deste algoritmo foi publicada por W. T. Cheng, J. L. Lewandowski e E. Wu nas actas da IEEE International Test Conference, 99, pp , num artigo com o título Diagnosis for Wiring Interconnects. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.3

94 Geração do programa de teste para uma CCI com BST (IEEE 49.) Test pattern: TP[][]: Expected result (to be shifted out while this test pattern is shifted in): ER[][]: Mask bits (for this expected result): MB[][]: *************************************************************************** Infrastructure test pattern number (for the selected DRs - ID or BP): *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result (to be shifted out while this test pattern is shifted in): ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: TP[][]: Expected result (to be shifted out while this test pattern is shifted in): ER[][]: Mask bits (for this expected result): MB[][]: *************************************************************************** Infrastructure test pattern number 2 (Sample/Preload opcode for the IR's): *************************************************************************** Boundary scan chain number : Test pattern: TP[][2]: Expected result (to be shifted out while this test pattern is shifted in): ER[][2]: Mask bits (for this expected result): MB[][2]: Boundary scan chain number : Test pattern: TP[][2]: Expected result (to be shifted out while this test pattern is shifted in): ER[][2]: Mask bits (for this expected result): MB[][2]: *************************************************************************** Infrastructure test pattern number 3 (Extest opcode for the IR's): *************************************************************************** Boundary scan chain number : Test pattern: TP[][3]: Expected result (to be shifted out while this test pattern is shifted in): ER[][3]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.4

95 Geração do programa de teste para uma CCI com BST (IEEE 49.) Mask bits (for this expected result): MB[][3]: Boundary scan chain number : Test pattern: TP[][3]: Expected result (to be shifted out while this test pattern is shifted in): ER[][3]: Mask bits (for this expected result): MB[][3]: TOTAL NUMBER OF INTERCONNECT TEST PATTERNS: 8 *************************************************************************** Interconnect test pattern number (for open fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Primary inputs and corresponding control signals: PI[]: CS[]: Expected values and masks at primary outputs: PO[]: POM[]: *************************************************************************** Interconnect test pattern number (for open fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.5

96 Geração do programa de teste para uma CCI com BST (IEEE 49.) Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Primary inputs and corresponding control signals: PI[]: CS[]: Expected values and masks at primary outputs: PO[]: POM[]: *************************************************************************** Interconnect test pattern number 2 (for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][2]: Expected result - shifted out while the next TP is shifted in: ER[][2]: Mask bits (for this expected result): MB[][2]: Boundary scan chain number : Test pattern: TP[][2]: Expected result - shifted out while the next TP is shifted in: ER[][2]: Mask bits (for this expected result): MB[][2]: Primary inputs and corresponding control signals: PI[2]: CS[2]: Expected values and masks at primary outputs: PO[2]: POM[2]: *************************************************************************** Interconnect test pattern number 3 (for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][3]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.6

97 Geração do programa de teste para uma CCI com BST (IEEE 49.) Expected result - shifted out while the next TP is shifted in: ER[][3]: Mask bits (for this expected result): MB[][3]: Boundary scan chain number : Test pattern: TP[][3]: Expected result - shifted out while the next TP is shifted in: ER[][3]: Mask bits (for this expected result): MB[][3]: Primary inputs and corresponding control signals: PI[3]: CS[3]: Expected values and masks at primary outputs: PO[3]: POM[3]: *************************************************************************** Interconnect test pattern number 4 (for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][4]: Expected result - shifted out while the next TP is shifted in: ER[][4]: Mask bits (for this expected result): MB[][4]: Boundary scan chain number : Test pattern: TP[][4]: Expected result - shifted out while the next TP is shifted in: ER[][4]: Mask bits (for this expected result): MB[][4]: Primary inputs and corresponding control signals: PI[4]: CS[4]: Expected values and masks at primary outputs: PO[4]: POM[4]: *************************************************************************** J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.7

98 Geração do programa de teste para uma CCI com BST (IEEE 49.) Interconnect test pattern number 5 (for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][5]: Expected result - shifted out while the next TP is shifted in: ER[][5]: Mask bits (for this expected result): MB[][5]: Boundary scan chain number : Test pattern: TP[][5]: Expected result - shifted out while the next TP is shifted in: ER[][5]: Mask bits (for this expected result): MB[][5]: Primary inputs and corresponding control signals: PI[5]: CS[5]: Expected values and masks at primary outputs: PO[5]: POM[5]: *************************************************************************** Interconnect test pattern number 6 (for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][6]: Expected result - shifted out while the next TP is shifted in: ER[][6]: Mask bits (for this expected result): MB[][6]: Boundary scan chain number : Test pattern: TP[][6]: Expected result - shifted out while the next TP is shifted in: ER[][6]: Mask bits (for this expected result): MB[][6]: Primary inputs and corresponding control signals: PI[6]: CS[6]: Expected values and masks at primary outputs: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.8

99 Geração do programa de teste para uma CCI com BST (IEEE 49.) PO[6]: POM[6]: *************************************************************************** Interconnect test pattern number 7 (last TP for short fault detection): *************************************************************************** Boundary scan chain number : Test pattern: TP[][7]: Expected result - shifted out while a following "dummy" TP is shifted in: ER[][7]: Mask bits (for this expected result): MB[][7]: Boundary scan chain number : Test pattern: TP[][7]: Expected result - shifted out while a following "dummy" TP is shifted in: ER[][7]: Mask bits (for this expected result): MB[][7]: Primary inputs and corresponding control signals: PI[7]: CS[7]: Expected values and masks at primary outputs: PO[7]: POM[7]: TOTAL NUMBER OF CLUSTER TEST PATTERNS: 5 *************************************************************************** Cluster test pattern number *************************************************************************** Boundary scan chain number : Test pattern: TP[][8]: Expected result - shifted out while the next TP is shifted in: ER[][8]: Mask bits (for this expected result): MB[][8]: Boundary scan chain number : Test pattern: TP[][8]: Expected result - shifted out while the next TP is shifted in: ER[][8]: Mask bits (for this expected result): MB[][8]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.9

100 Geração do programa de teste para uma CCI com BST (IEEE 49.) Primary inputs and corresponding control signals: PI[8]: CS[8]: Expected values and masks at primary outputs: PO[8]: POM[8]: *************************************************************************** Cluster test pattern number *************************************************************************** Boundary scan chain number : Test pattern: TP[][9]: Expected result - shifted out while the next TP is shifted in: ER[][9]: Mask bits (for this expected result): MB[][9]: Boundary scan chain number : Test pattern: TP[][9]: Expected result - shifted out while the next TP is shifted in: ER[][9]: Mask bits (for this expected result): MB[][9]: Primary inputs and corresponding control signals: PI[9]: CS[9]: Expected values and masks at primary outputs: PO[9]: POM[9]: *************************************************************************** Cluster test pattern number 2 *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.2

101 Geração do programa de teste para uma CCI com BST (IEEE 49.) TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Primary inputs and corresponding control signals: PI[]: CS[]: Expected values and masks at primary outputs: PO[]: POM[]: *************************************************************************** Cluster test pattern number 3 *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Primary inputs and corresponding control signals: PI[]: CS[]: Expected values and masks at primary outputs: PO[]: POM[]: *************************************************************************** Cluster test pattern number 4 *************************************************************************** Boundary scan chain number : Test pattern: TP[][2]: Expected result - shifted out while a following "dummy" TP is shifted in: ER[][2]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.2

102 Geração do programa de teste para uma CCI com BST (IEEE 49.) Mask bits (for this expected result): MB[][2]: Boundary scan chain number : Test pattern: TP[][2]: Expected result - shifted out while a following "dummy" TP is shifted in: ER[][2]: Mask bits (for this expected result): MB[][2]: Primary inputs and corresponding control signals: PI[2]: CS[2]: Expected values and masks at primary outputs: PO[2]: POM[2]: TOTAL NUMBER OF COMPONENT BIST TEST PATTERNS: TOTAL NUMBER OF TEST PATTERNS FOR INTERNAL TEST OF COMPONENTS: 3 *************************************************************************** Internal test of components: Test pattern for shifting the intest/bypass opcodes: *************************************************************************** Boundary scan chain number : Test pattern: TP[]: Boundary scan chain number : Test pattern: TP[]: *************************************************************************** Internal test of components: Test pattern number. *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.22

103 Geração do programa de teste para uma CCI com BST (IEEE 49.) Mask bits (for this expected result): MB[][]: *************************************************************************** Internal test of components: Test pattern number. *************************************************************************** Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: Boundary scan chain number : Test pattern: TP[][]: Expected result - shifted out while the next TP is shifted in: ER[][]: Mask bits (for this expected result): MB[][]: 5.4. O programa de teste O programa que aplica o conjunto de vectores de teste apresentados na secção anterior, escrito por recurso às mnemónicas correspondentes ao modelo do controlador BST apresentado no capítulo 4, está finalmente apresentado nesta secção. Este programa de teste foi gerado automaticamente e a conversão para código objecto foi feita por recurso ao TASM (um cross-assembler do tipo shareware para DOS). 2 ;*********************************************************** 3 ; Assembly source code for the demo circuit. 4 ;*********************************************************** 5 6 start.org h ; Sequence to reset all BST logic. A seltap ; (switch to) TAP 2 trst ; TRST output is pulsed low 3 2 tms 4 3 tms 5 4 tms 6 5 tms 7 6 tms ; soft reset of BST chain 8 7 B seltap ; switch to TAP 9 8 trst ; TRST output is pulsed low 2 9 tms 2 A tms 22 B tms 23 C tms 24 D tms ; soft reset of BST chain 25 E A seltap ; switch to TAP 26 F 27 F ; Sequence to test the BST infrastructure 28 F 29 F tms ; BST chain, >> Run Test / Idle 3 tms ; BST chain, >> Select DR scan J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.23

104 Geração do programa de teste para uma CCI com BST (IEEE 49.) 3 tms ; BST chain, >> Select IR scan 32 2 tms ; BST chain, >> Capture IR 33 3 tms ; BST chain, >> Shift IR A ld cnt,26 ; length of IR's +, BST chain nshfcp ; shift in the ID or BP opcodes 36 8 FD3FCFD3 inf.db $,$fd,$3,$fc,$fd,$3,$ff,$,$ff,$3,$,$ jpe theend ; stop the test, if a BST infrastructure fault is found tms ; BST chain, >> Update IR tms ; BST chain, >> Select DR scan 4 29 tms ; BST chain, >> Capture DR 4 2A tms ; BST chain, >> Shift DR 42 2B 2 2 ld cnt,2 ; length of ID (BP, if no ID) registers, BST chain 43 2E 5 nshfcp ; shift out the contents of the ID (BP, if no ID) registers 44 2F 3 3 inf.db $3,$,$ jpe theend ; stop the test, if a BST infrastructure fault is found tms ; BST chain, >> Update DR tms ; BST chain, >> Select DR scan tms ; BST chain, >> Select IR scan tms ; BST chain, >> Capture IR 5 39 tms ; BST chain, >> Shift IR 5 3A 2 ld cnt,6 ; length of IR's, BST chain 52 3D 5 nshfcp ; shift in the sample/preload opcodes 53 3E 2FD32FD3 inf2.db $2,$fd,$3,$2,$fd,$ jpe theend ; stop the test, if a BST infrastructure fault is found tms ; BST chain, >> Update IR tms ; BST chain, >> Select DR scan tms ; BST chain, >> Capture DR 58 4A tms ; BST chain, >> Exit- DR 59 4B tms ; BST chain, >> Update DR 6 4C tms ; BST chain, >> Select DR scan 6 4D tms ; BST chain, >> Select IR scan 62 4E tms ; BST chain, >> Capture IR 63 4F tms ; BST chain, >> Shift IR ld cnt,6 ; length of IR's, BST chain nshfcp ; shift in the extest opcodes FD3FD3 inf3.db $,$fd,$3,$,$fd,$3 67 5A 6 4 jpe theend ; stop the test, if a BST infrastructure fault is found 68 5D tms ; BST chain, >> Update IR 69 5E tms ; BST chain, >> Select DR scan 7 5F tms ; BST chain, >> Capture DR 7 6 tms ; BST chain, >> Shift DR 72 6 B seltap ; switch to TAP tms ; BST chain, >> Run Test / Idle tms ; BST chain, >> Select DR scan tms ; BST chain, >> Select IR scan tms ; BST chain, >> Capture IR tms ; BST chain, >> Shift IR ld cnt,8 ; length of IR's +, BST chain 79 6A 5 nshfcp ; shift in the ID or BP opcodes 8 6B FD3FCFF inf4.db $,$fd,$3,$fc,$,$ff,$3,$,$ jpe theend ; stop the test, if a BST infrastructure fault is found tms ; BST chain, >> Update DR tms ; BST chain, >> Select DR scan tms ; BST chain, >> Capture DR 85 7A tms ; BST chain, >> Shift DR 86 7B 2 ld cnt, ; length of ID (BP, if no ID) registers, BST chain 87 7E 5 nshfcp ; shift out the contents of the ID (BP, if no ID) registers 88 7F inf5.db $,$,$ jpe theend ; stop the test, if a BST infrastructure fault is found 9 85 tms ; BST chain, >> Update DR 9 86 tms ; BST chain, >> Select DR scan tms ; BST chain, >> Select IR scan tms ; BST chain, >> Capture IR tms ; BST chain, >> Shift IR 95 8A 2 8 ld cnt,8 ; length of IR's, BST chain 96 8D 5 nshfcp ; shift in the sample/preload opcodes 97 8E 2 FD 3 inf6.db $2,$fd,$ jpe theend ; stop the test, if a BST infrastructure fault is found tms ; BST chain, >> Update IR 95 tms ; BST chain, >> Select DR scan 96 tms ; BST chain, >> Capture DR 2 97 tms ; BST chain, >> Exit- DR 3 98 tms ; BST chain, >> Update DR 4 99 tms ; BST chain, >> Select DR scan 5 9A tms ; BST chain, >> Select IR scan 6 9B tms ; BST chain, >> Capture IR 7 9C tms ; BST chain, >> Shift IR 8 9D 2 8 ld cnt,8 ; length of IR's, BST chain 9 A 5 nshfcp ; shift in the extest opcodes A FD 3 inf7.db $,$fd,$3 A4 6 4 jpe theend ; stop the test, if a BST infrastructure fault is found 2 A7 tms ; BST chain, >> Update DR 3 A8 tms ; BST chain, >> Select DR scan 4 A9 tms ; BST chain, >> Capture DR 5 AA tms ; BST chain, >> Shift DR 6 AB A seltap ; switch to TAP 7 AC 8 AC ; Sequence for testing the full BST interconnects 9 AC 2 AC B serflg3 ; select error flag 3 (full BST interconnect open faults) 2 AD 2 24 ld cnt,36 ; length of BST chain 22 B 4 nshf ; shift st TP (for open testing), no compare 23 B FC3 int.db $,$,$,$fc,$3 24 B6 tms ; BST chain, >> Update DR 25 B7 tms ; BST chain, >> Sel. DR scan 26 B8 B seltap ; switch to TAP 27 B9 2 2 ld cnt,8 ; length of BST chain J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.24

105 Geração do programa de teste para uma CCI com BST (IEEE 49.) 28 BC 4 nshf ; shift the st TP (for open faults) on BST chain 29 BD 3 int.db $,$3,$ 3 C tms ; BST chain, >> Update DR 3 C tms ; BST chain, >> Sel. DR scan 32 C2 3 ssa ; SyncOutA goes high (BST test data applied) 33 C3 5 wsa ; wait for SyncInpA to go high (external test data applied) 34 C4 tms ; BST chain, >> Capture DR 35 C5 tms ; BST chain, >> Shift DR 36 C6 A seltap ; switch to TAP 37 C7 tms ; BST chain, >> Capture DR 38 C8 tms ; BST chain, >> Shift DR 39 C9 2 ssa ; SyncOutA goes low (BST test results captured) 4 CA 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 4 CB 2 24 ld cnt,36 ; length of BST chain 42 CE 5 nshfcp ; test pattern for open faults 43 CF int2.db $,$,$,$,$,$,$c,$,$3,$fc,$,$fc,$3,$,$f 44 DE 6 4 jpe theend ; stop the test, if a net is found open, or s-a- 45 E tms ; BST chain, >> Update DR 46 E2 tms ; BST chain, >> Sel. DR scan 47 E3 B seltap ; switch to TAP 48 E4 2 2 ld cnt,8 ; length of BST chain 49 E7 5 nshfcp ; TP for open faults, BST chain 5 E8 FF33 int3.db $ff,$,$,$3,$,$3,$,$,$3 5 F 6 4 jpe theend ; stop the test, if a net is found open, or s-a- 52 F4 tms ; BST chain, >> Update DR 53 F5 tms ; BST chain, >> Sel. DR scan 54 F6 3 ssa ; SyncOutA goes high (BST test data applied) 55 F7 5 wsa ; wait for SyncInpA to go high (external test data applied) 56 F8 tms ; BST chain, >> Capture DR 57 F9 tms ; BST chain, >> Shift DR 58 FA A seltap ; switch to TAP 59 FB tms ; BST chain, >> Capture DR 6 FC tms ; BST chain, >> Shift DR 6 FD 2 ssa ; SyncOutA goes low (BST test results captured) 62 FE 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 63 FF C serflg4 ; select error flag 4 (full BST interconnect short faults) ld cnt,36 ; length of BST chain nshfcp ; test pattern for short faults 66 4 int4.db $,$,$,$,$,$,$4,$c,$3,$fc,$fc,$fc,$3,$3,$f jpe theend ; stop the test, if a short fault is found 68 6 tms ; BST chain, >> Update DR 69 7 tms ; BST chain, >> Sel. DR scan 7 8 B seltap ; switch to TAP ld cnt,8 ; length of BST chain 72 C 5 nshfcp ; TP for short faults, BST chain 73 D 55FF333 int5.db $55,$ff,$,$3,$3,$3,$,$,$ jpe theend ; stop the test, if a short fault is found tms ; BST chain, >> Update DR 76 2A tms ; BST chain, >> Sel. DR scan 77 2B 3 ssa ; SyncOutA goes high (BST test data applied) 78 2C 5 wsa ; wait for SyncInpA to go high (external test data applied) 79 2D tms ; BST chain, >> Capture DR 8 2E tms ; BST chain, >> Shift DR 8 2F A seltap ; switch to TAP 82 3 tms ; BST chain, >> Capture DR 83 3 tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain nshfcp ; test pattern for short faults int6.db $,$,$,$,$,$,$8,$4,$3,$fc,$54,$fc,$3,$,$f jpe theend ; stop the test, if a short fault is found 9 4A tms ; BST chain, >> Update DR 9 4B tms ; BST chain, >> Sel. DR scan 92 4C B seltap ; switch to TAP 93 4D 2 2 ld cnt,8 ; length of BST chain nshfcp ; TP for short faults, BST chain 95 5 AA5533 int7.db $aa,$55,$,$3,$,$3,$,$,$3 96 5A 6 4 jpe theend ; stop the test, if a short fault is found 97 5D tms ; BST chain, >> Update DR 98 5E tms ; BST chain, >> Sel. DR scan 99 5F 3 ssa ; SyncOutA goes high (BST test data applied) wsa ; wait for SyncInpA to go high (external test data applied) 2 6 tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain 29 6B 5 nshfcp ; test pattern for short faults 2 6C int8.db $,$,$,$,$,$,$4,$8,$3,$fc,$54,$fc,$3,$,$f 2 7B 6 4 jpe theend ; stop the test, if a short fault is found 22 7E tms ; BST chain, >> Update DR 23 7F tms ; BST chain, >> Sel. DR scan 24 8 B seltap ; switch to TAP ld cnt,8 ; length of BST chain nshfcp ; TP for short faults, BST chain AAA323 int9.db $5a,$aa,$,$3,$2,$3,$,$,$3 28 8E 6 4 jpe theend ; stop the test, if a short fault is found 29 9 tms ; BST chain, >> Update DR tms ; BST chain, >> Sel. DR scan ssa ; SyncOutA goes high (BST test data applied) wsa ; wait for SyncInpA to go high (external test data J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.25

106 Geração do programa de teste para uma CCI com BST (IEEE 49.) applied) tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR 228 9A 2 ssa ; SyncOutA goes low (BST test results captured) 229 9B 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 23 9C 2 24 ld cnt,36 ; length of BST chain 23 9F 5 nshfcp ; test pattern for short faults 232 A int.db $,$,$,$,$,$,$4,$4,$3,$fc,$a8,$fc,$3,$,$f 233 AF 6 4 jpe theend ; stop the test, if a short fault is found 234 B2 tms ; BST chain, >> Update DR 235 B3 tms ; BST chain, >> Sel. DR scan 236 B4 B seltap ; switch to TAP 237 B5 2 2 ld cnt,8 ; length of BST chain 238 B8 5 nshfcp ; TP for short faults, BST chain 239 B9 A55A33 int.db $a5,$5a,$,$3,$,$3,$,$,$3 24 C2 6 4 jpe theend ; stop the test, if a short fault is found 24 C5 tms ; BST chain, >> Update DR 242 C6 tms ; BST chain, >> Sel. DR scan 243 C7 3 ssa ; SyncOutA goes high (BST test data applied) 244 C8 5 wsa ; wait for SyncInpA to go high (external test data applied) 245 C9 tms ; BST chain, >> Capture DR 246 CA tms ; BST chain, >> Shift DR 247 CB A seltap ; switch to TAP 248 CC tms ; BST chain, >> Capture DR 249 CD tms ; BST chain, >> Shift DR 25 CE 2 ssa ; SyncOutA goes low (BST test results captured) 25 CF 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 252 D 2 24 ld cnt,36 ; length of BST chain 253 D3 5 nshfcp ; test pattern for short faults 254 D4 int2.db $,$,$,$,$,$,$8,$4,$3,$fc,$68,$fc,$3,$2,$f 255 E3 6 4 jpe theend ; stop the test, if a short fault is found 256 E6 tms ; BST chain, >> Update DR 257 E7 tms ; BST chain, >> Sel. DR scan 258 E8 B seltap ; switch to TAP 259 E9 2 2 ld cnt,8 ; length of BST chain 26 EC 5 nshfcp ; TP for short faults, BST chain 26 ED 66A533 int3.db $66,$a5,$,$3,$,$3,$,$,$3 262 F6 6 4 jpe theend ; stop the test, if a short fault is found 263 F9 tms ; BST chain, >> Update DR 264 FA tms ; BST chain, >> Sel. DR scan 265 FB 3 ssa ; SyncOutA goes high (BST test data applied) 266 FC 5 wsa ; wait for SyncInpA to go high (external test data applied) 267 FD tms ; BST chain, >> Capture DR 268 FE tms ; BST chain, >> Shift DR 269 FF A seltap ; switch to TAP 27 2 tms ; BST chain, >> Capture DR 27 2 tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain nshfcp ; test pattern for short faults int4.db $,$,$,$,$,$,$8,$8,$3,$fc,$98,$fc,$3,$2,$f jpe theend ; stop the test, if a short fault is found 278 2A tms ; BST chain, >> Update DR 279 2B tms ; BST chain, >> Sel. DR scan 28 2C B seltap ; switch to TAP 28 2D 2 2 ld cnt,8 ; length of BST chain nshfcp ; TP for short faults, BST chain int5.db $99,$66,$,$3,$2,$3,$,$,$ A 6 4 jpe theend ; stop the test, if a short fault is found D tms ; BST chain, >> Update DR E tms ; BST chain, >> Sel. DR scan F 3 ssa ; SyncOutA goes high (BST test data applied) wsa ; wait for SyncInpA to go high (external test data applied) tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain B 5 nshfcp ; last test pattern for short faults, BS chain C int6.db $,$,$,$,$,$,$8,$8,$3,$fc,$a4,$fc,$3,$2,$f B 6 4 jpe theend ; stop the test, if a short fault is found 3 24E B seltap ; switch to TAP 3 24F 2 2 ld cnt,8 ; length of BST chain nshfcp ; last TP for short faults, BST chain int7.db $99,$99,$,$3,$2,$3,$,$,$ C 6 4 jpe theend ; stop the test, if a short fault is found 35 25F A seltap ; switch to TAP ; Sequence for testing the cluster interconnects D serflg5 ; select error flag 5 (cluster interconnect faults) 3 26 tms ; >> Update DR, BS chain tms ; >> Select DR scan, BS chain tms ; >> Capture DR, BS chain tms ; >> Shift DR, BS chain B seltap ; switch to TAP tms ; >> Update DR, BS chain tms ; >> Select DR scan, BS chain tms ; >> Capture DR, BS chain J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.26

107 Geração do programa de teste para uma CCI com BST (IEEE 49.) tms ; >> Shift DR, BS chain 39 26A A seltap ; switch to TAP 32 26B 2 24 ld cnt,36 ; length of BST chain 32 26E 4 nshf ; test pattern for cluster interconnect testing F FAFF8C3 clu.db $fa,$ff,$8c,$3,$ tms ; BST chain, >> Update DR tms ; BST chain, >> Sel. DR scan B seltap ; switch to TAP ld cnt,8 ; length of BST chain A 4 nshf ; test pattern for cluster interconnect testing, BS chain B FF F clu.db $ff,$f,$ E tms ; BST chain, >> Update DR 33 27F tms ; BST chain, >> Sel. DR scan ssa ; SyncOutA goes high (BST test data applied) wsa ; wait for SyncInpA to go high (external test data applied) tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain 34 28C 5 nshfcp ; test pattern for cluster interconnect testing D FFFFFFF clu2.db $,$ff,$,$ff,$f,$ff,$4c,$ff,$,$3,$ff,$fc,$,$f,$ C 6 4 jpe theend ; stop the test, if a cluster fault is detected F tms ; BST chain, >> Update DR 345 2A tms ; BST chain, >> Sel. DR scan 346 2A B seltap ; switch to TAP 347 2A2 2 2 ld cnt,8 ; length of BST chain 348 2A5 5 nshfcp ; test pattern for cluster interconnect testing, BS chain 349 2A6 FFFFFF3F3 clu3.db $ff,$ff,$,$f,$f3,$f3,$,$,$3 35 2AF 6 4 jpe theend ; stop the test, if a cluster fault is detected 35 2B2 tms ; BST chain, >> Update DR 352 2B3 tms ; BST chain, >> Sel. DR scan 353 2B4 3 ssa ; SyncOutA goes high (BST test data applied) 354 2B5 5 wsa ; wait for SyncInpA to go high (external test data applied) 355 2B6 tms ; BST chain, >> Capture DR 356 2B7 tms ; BST chain, >> Shift DR 357 2B8 A seltap ; switch to TAP 358 2B9 tms ; BST chain, >> Capture DR 359 2BA tms ; BST chain, >> Shift DR 36 2BB 2 ssa ; SyncOutA goes low (BST test results captured) 36 2BC 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 362 2BD 2 24 ld cnt,36 ; length of BST chain 363 2C 5 nshfcp ; test pattern for cluster interconnect testing 364 2C 37FFFFEFF clu4.db $37,$ff,$,$ff,$e,$ff,$3c,$ff,$,$,$ff,$fc,$,$f,$ D 6 4 jpe theend ; stop the test, if a cluster fault is detected 366 2D3 tms ; BST chain, >> Update DR 367 2D4 tms ; BST chain, >> Sel. DR scan 368 2D5 B seltap ; switch to TAP 369 2D6 2 2 ld cnt,8 ; length of BST chain 37 2D9 5 nshfcp ; test pattern for cluster interconnect testing, BS chain 37 2DA FFFFF3F3 clu5.db $ff,$ff,$,$f,$3,$f3,$,$,$ E3 6 4 jpe theend ; stop the test, if a cluster fault is detected 373 2E6 tms ; BST chain, >> Update DR 374 2E7 tms ; BST chain, >> Sel. DR scan 375 2E8 3 ssa ; SyncOutA goes high (BST test data applied) 376 2E9 5 wsa ; wait for SyncInpA to go high (external test data applied) 377 2EA tms ; BST chain, >> Capture DR 378 2EB tms ; BST chain, >> Shift DR 379 2EC A seltap ; switch to TAP 38 2ED tms ; BST chain, >> Capture DR 38 2EE tms ; BST chain, >> Shift DR 382 2EF 2 ssa ; SyncOutA goes low (BST test results captured) 383 2F 4 wsa ; wait for SyncInpA to go low (ext. test results captured) 384 2F 2 24 ld cnt,36 ; length of BST chain 385 2F4 5 nshfcp ; test pattern for cluster interconnect testing 386 2F5 D5FFFF78FF clu6.db $d5,$ff,$,$ff,$78,$ff,$2c,$ff,$,$,$ff,$fc,$,$f,$ jpe theend ; stop the test, if a cluster fault is detected tms ; BST chain, >> Update DR tms ; BST chain, >> Sel. DR scan B seltap ; switch to TAP 39 3A 2 2 ld cnt,8 ; length of BST chain 392 3D 5 nshfcp ; test pattern for cluster interconnect testing, BS chain 393 3E FFFFF3F3 clu7.db $ff,$ff,$,$f,$3,$f3,$,$,$ jpe theend ; stop the test, if a cluster fault is detected 395 3A tms ; BST chain, >> Update DR 396 3B tms ; BST chain, >> Sel. DR scan 397 3C 3 ssa ; SyncOutA goes high (BST test data applied) 398 3D 5 wsa ; wait for SyncInpA to go high (external test data applied) 399 3E tms ; BST chain, >> Capture DR 4 3F tms ; BST chain, >> Shift DR 4 32 A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain nshfcp ; test pattern for cluster interconnect testing FFFFD2FF clu8.db $22,$ff,$,$ff,$d2,$ff,$2c,$ff,$,$2,$ff,$fc,$,$f,$3 J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.27

108 Geração do programa de teste para uma CCI com BST (IEEE 49.) jpe theend ; stop the test, if a cluster fault is detected 4 33B tms ; BST chain, >> Update DR 4 33C tms ; BST chain, >> Sel. DR scan 42 33D B seltap ; switch to TAP 43 33E 2 2 ld cnt,8 ; length of BST chain nshfcp ; test pattern for cluster interconnect testing, BS chain FFFFFF3F3 clu9.db $ff,$ff,$,$f,$f3,$f3,$,$,$ B 6 4 jpe theend ; stop the test, if a cluster fault is detected 47 34E tms ; BST chain, >> Update DR 48 34F tms ; BST chain, >> Sel. DR scan ssa ; SyncOutA goes high (BST test data applied) wsa ; wait for SyncInpA to go high (external test data applied) tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR A seltap ; switch to TAP tms ; BST chain, >> Capture DR tms ; BST chain, >> Shift DR ssa ; SyncOutA goes low (BST test results captured) wsa ; wait for SyncInpA to go low (ext. test results captured) ld cnt,36 ; length of BST chain C 5 nshfcp ; last test pattern for cluster testing, BS chain 43 35D 22FFFFB4FF clu.db $22,$ff,$,$ff,$b4,$ff,$2c,$ff,$,$2,$ff,$fc,$,$f,$ C 6 4 jpe theend ; stop the test, if a cluster fault is detected F B seltap ; switch to TAP ld cnt,8 ; length of BST chain nshfcp ; last TP for cluster interconnect testing, BST chain FFFFF3F3 clu.db $ff,$ff,$,$f,$3,$f3,$,$,$ D 6 4 jpe theend ; stop the test, if a cluster fault is detected A seltap ; switch to TAP ; Sequence for internal test of components F serflg7 ; select error flag 7 (faults detected during internal test) A seltap ; switch to BS chain tms ; >> Update DR, BS chain tms ; >> Select DR scan, BS chain tms ; >> Select IR scan, BS chain tms ; >> Capture IR, BS chain tms ; >> Shift IR, BS chain ld cnt,6 ; length of the IRs in scan chain B 4 nshf ; shift in the intest/bypass opcodes 45 38C com.db $,$ 45 38E tms ; >> Update IR, BS chain F tms ; >> Select DR scan, BS chain tms ; >> Capture DR, BS chain tms ; >> Shift DR, BS chain ld cnt,36 ; length of scan chain nshf ; shift the st TP for internal test (no compare) FF55FF57D com.db $ff,$55,$ff,$57,$d B tms ; >> Update DR, BS chain C tms ; >> Select DR scan, BS chain 46 39D tms ; >> Capture DR, BS chain 46 39E tms ; >> Shift DR, BS chain F 2 24 ld cnt,36 ; length of scan chain 463 3A2 5 nshfcp ; test pattern for internal test of components 464 3A3 55FFAAFF com2.db $,$55,$ff,$aa,$ff,$,$3,$57,$fc,$a8,$fd,$3,$e,$f,$ 465 3B2 tms ; >> Update DR, BS chain 466 3B3 tms ; >> Select DR scan, BS chain 467 3B4 tms ; >> Capture DR, BS chain 468 3B5 tms ; >> Shift DR, BS chain 469 3B ld cnt,36 ; length of scan chain 47 3B9 5 nshfcp ; last test pattern for internal test of components 47 3BA AAFFAA com3.db $,$aa,$ff,$aa,$,$,$3,$a8,$fc,$a8,$2,$3,$e,$,$ 472 3C9 B seltap ; switch to BS chain 473 3CA tms ; >> Update DR, BS chain 474 3CB tms ; >> Select DR scan, BS chain 475 3CC tms ; >> Select IR scan, BS chain 476 3CD tms ; >> Capture IR, BS chain 477 3CE tms ; >> Shift IR, BS chain 478 3CF 2 8 ld cnt,8 ; length of the IRs in scan chain 479 3D2 4 nshf ; shift in the intest/bypass opcodes 48 3D3 com4.db $ 48 3D4 tms ; >> Update IR, BS chain 482 3D5 tms ; >> Select DR scan, BS chain 483 3D6 tms ; >> Capture DR, BS chain 484 3D7 tms ; >> Shift DR, BS chain 485 3D8 2 2 ld cnt,8 ; length of scan chain 486 3DB 4 nshf ; shift the st TP for internal test (no compare) 487 3DC FF 55 3 com5.db $ff,$55,$ DF tms ; >> Update DR, BS chain 489 3E tms ; >> Select DR scan, BS chain 49 3E tms ; >> Capture DR, BS chain 49 3E2 tms ; >> Shift DR, BS chain 492 3E3 2 2 ld cnt,8 ; length of scan chain 493 3E6 5 nshfcp ; test pattern for internal test of components 494 3E7 55FFAAFF com6.db $,$55,$ff,$aa,$ff,$,$3,$3,$ 495 3F tms ; >> Update DR, BS chain 496 3F tms ; >> Select DR scan, BS chain 497 3F2 tms ; >> Capture DR, BS chain 498 3F3 tms ; >> Shift DR, BS chain 499 3F4 2 2 ld cnt,8 ; length of scan chain 5 3F7 5 nshfcp ; last test pattern for internal test of components 5 3F8 AAFFAA com7.db $,$aa,$ff,$aa,$,$,$3,$,$ ; End of test program J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.28

109 Geração do programa de teste para uma CCI com BST (IEEE 49.) 55 4 A theend seltap ; (switch to) TAP tms tms tms tms 5 46 tms ; reset sequence for TAP 5 47 B seltap ; switch to TAP tms tms 54 4A tms 55 4B tms 56 4C tms ; reset sequence for TAP 57 4D halt ; this is the end 58 4E 59 4E.end 52 4E 52 4E 522 4E primary.org 8h ; pattern number pi.db $ ; primary inputs FF cs.db $ff ; control signal po.db $ ; expected values at primary outputs FF pom.db $ff ; primary outputs mask ; pattern number FF pi.db $ff ; primary inputs FF cs.db $ff ; control signal FF po.db $ff ; expected values at primary outputs FF pom.db $ff ; primary outputs mask ; pattern number AA pi2.db $aa ; primary inputs FF cs2.db $ff ; control signal 538 8A AA po2.db $aa ; expected values at primary outputs 539 8B FF pom2.db $ff ; primary outputs mask 54 8C ; pattern number C AA pi3.db $aa ; primary inputs 542 8D FF cs3.db $ff ; control signal 543 8E 55 po3.db $55 ; expected values at primary outputs 544 8F FF pom3.db $ff ; primary outputs mask ; pattern number pi4.db $56 ; primary inputs FF cs4.db $ff ; control signal A po4.db $5a ; expected values at primary outputs FF pom4.db $ff ; primary outputs mask ; pattern number pi5.db $59 ; primary inputs FF cs5.db $ff ; control signal A5 po5.db $a5 ; expected values at primary outputs FF pom5.db $ff ; primary outputs mask ; pattern number pi6.db $65 ; primary inputs FF cs6.db $ff ; control signal 558 8A 66 po6.db $66 ; expected values at primary outputs 559 8B FF pom6.db $ff ; primary outputs mask 56 8C ; pattern number C 95 pi7.db $95 ; primary inputs 562 8D FF cs7.db $ff ; control signal 563 8E 99 po7.db $99 ; expected values at primary outputs 564 8F FF pom7.db $ff ; primary outputs mask ; pattern number FF pi8.db $ff ; primary inputs FF cs8.db $ff ; control signal FF po8.db $ff ; expected values at primary outputs FF pom8.db $ff ; primary outputs mask ; pattern number FF pi9.db $ff ; primary inputs FF cs9.db $ff ; control signal FF po9.db $ff ; expected values at primary outputs FF pom9.db $ff ; primary outputs mask ; pattern number FF pi.db $ff ; primary inputs FF cs.db $ff ; control signal A FF po.db $ff ; expected values at primary outputs B FF pom.db $ff ; primary outputs mask 58 82C ; pattern number 58 82C FF pi.db $ff ; primary inputs D FF cs.db $ff ; control signal E FF po.db $ff ; expected values at primary outputs F FF pom.db $ff ; primary outputs mask ; pattern number FF pi2.db $ff ; primary inputs FF cs2.db $ff ; control signal FF po2.db $ff ; expected values at primary outputs FF pom2.db $ff ; primary outputs mask end tasm: Number of errors = J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 5.29

110 6. Uma implementação Windows do controlador 49. A aplicação Windows descrita neste capítulo, designada Tapper, é compatível com o modelo do controlador descrito em capítulo anterior e foi desenvolvida por Luís Humberto Silvestre, enquanto aluno finalista da LEEC, para permitir a escrita e execução de programas de teste para CCI com uma ou duas cadeias BST. 6.. Tapper: organização dos recursos A aplicação Tapper acede aos TAP das cadeias BST controladas através da porta paralela de um PC / Windows, de acordo com a atribuição de sinais que se descreve na tabela 6.: Sinal de teste Conector D25 E/S Nome do pino # (Centronics) TDI 2 Saída D 2 TMS 3 Saída D 3 TCK 4 Saída D2 4 TRST 5 Saída D3 5 TDI 6 Saída D4 6 TMS 7 Saída D5 7 TCK 8 Saída D6 8 TRST 9 Saída D7 9 NC Saída STROBE NC 4 Saída AUTO FEED 4 SOA 6 Saída INIT 3 SOB 7 Saída SELECT IN 36 NC Entrada ACK TDO Entrada BUSY TDO 2 Entrada PE 2 SIA 3 Entrada SELECT 3 SIB 5 Entrada ERROR 32 GND GND 9-3 Tabela 6.: Alocação de pinos do porto paralelo. Uma disquete de instalação está incluída no final deste documento, contendo um ficheiro de inicialização designado Setup.exe, que permite instalar esta aplicação.

111 Uma implementação Windows do controlador 49. Repare-se que estão reservados pinos para dois canais de sincronização com recursos de teste externos (A e B), através das respectivas entradas (SIA e SIB) e saídas (SOA e SOB) de sincronismo. Contudo, e dada a inexistência de pinos disponíveis no porto paralelo para efectuar a aplicação de estímulos e a captura de respostas, as instruções de sincronismo correspondentes não foram implementadas. Os recursos necessários à execução do Tapper estão ilustrados na figura 6., onde é visível o cabo de ligação entre o porto paralelo do PC e uma CCI de demonstração com BST. Figura 6.: Recursos necessários à execução do Tapper A aplicação Tapper A janela da aplicação Tapper compreende uma barra de controlo do programa de teste, uma área de informação de estado, três menus e uma área de edição dos programas de teste, tal como se ilustra na figura 6.2. Repare-se que o pequeno programa de teste representado nesta figura efectua a verificação de integridade de uma cadeia de varrimento que inclui um único CI, colocado no TAP #. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.2

112 Uma implementação Windows do controlador 49. Menus Barra de controlo do programa de teste Informação de estado Área de edição Figura 6.2: Interface com o utilizador do Tapper Barra de controlo do programa de teste A barra de controlo do programa de teste inclui os cinco botões ilustrados na figura 6.2. Da esquerda para a direita, a funcionalidade de cada botão pode ser descrita da seguinte forma: : Inicia a execução do programa de teste. : Suspende temporariamente a execução do programa de teste. : Pára a execução do programa de teste. : Executa o programa de teste em modo passo-a-passo. : Insere um ponto de paragem na linha do cursor. A execução de um programa pode incluir múltiplos pontos de paragem, que interromperão a sua execução sempre que se chegar a uma das linhas de código correspondentes. Nestas circunstâncias, a execução será retomada de forma contínua ou em modo passo-a-passo, conforme a selecção feita pelo utilizador. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.3

113 Uma implementação Windows do controlador Informação de estado A área de informação de estado inclui informação sobre o TAP actualmente seleccionado, o conteúdo dos contadores internos, a flag de erro seleccionada e o estado da totalidade das flags de erro disponíveis. A descrição de cada um destes campos, tal como aparecem após a execução do pequeno programa de teste representado na figura 6.2, pode ser brevemente apresentada como se segue: : Indica o TAP actualmente seleccionado. : O Tapper implementa dois contadores internos (de 6 e 24 bits) e implementa a instrução LD CNT,N (qualquer dos dois contadores internos pode ser usado, neste caso). Se pretendermos especificar qual o contador a usar, temos igualmente disponíveis as instruções LD C6,N e LD C24,N. : Indica qual a flag de erro actualmente seleccionada e o estado das oito flags de erro disponíveis para cada cadeia BST. Uma vez que o programa de teste ilustrado na figura 6.2 foi executado sem ter qualquer CCI com BST ligada ao porto paralelo, a flag de erro seleccionada ficou activa após a execução Menus do Tapper A aplicação Tapper disponibiliza três menus: Ficheiro, Editar e Ajuda. As opções disponíveis em cada um destes menus são as seguintes: O menu Ficheiro, ilustrado na figura 6.3, proporciona as opções normalizadas para criar um Novo ficheiro, Abrir um ficheiro já existente, Gravar o ficheiro editado com o mesmo nome, gravar com um nome a especificar e Sair. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.4

114 Uma implementação Windows do controlador 49. Figura 6.3: Opções do menu Ficheiro. O menu de Edição, ilustrado na figura 6.4, proporciona as opções de Desfazer a última acção, Recortar, Copiar, colar, Apagar e Limpar todos os pontos de paragem (opção que remove todos os pontos deste tipo inseridos no programa). Figura 6.4: Opções do menu Edição. O menu de Ajuda, ilustrado na figura 6.5, proporciona opções para visualizar o Conteúdo disponível para ajuda ao utilizador, Procurar ajuda sobre um determinado tópico, visualizar o diagrama de estados do Controlador do TAP e aceder a uma informação sumária Acerca da própria aplicação. Figura 6.5: Opções do menu Ajuda. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.5

115 Uma implementação Windows do controlador Área de edição A área de edição é usada para escrever ou modificar um programa de teste. A sintaxe suportada pelo Tapper pode inferir-se através do seguinte exemplo: etiqueta: instrução operando ; comentário Repare-se que uma etiqueta deve sempre ser seguida por dois pontos ( : ) e que qualquer sequência de texto após um ponto e vírgula é considerada como um comentário Teste exaustivo de grupos não BST Este documento tem por objectivo analisar em pormenor uma das formas possíveis para efectuar o teste de grupos de componentes sem BST, presentes numa carta de circuito impresso em que esta tecnologia de teste esteja implementada apenas de forma parcial. A abordagem seleccionada consiste em se aproveitar a infraestrutura BST, que circunda os grupos a testar, para deslocar na forma série os vectores a aplicar e as respectivas respostas. O exemplo considerado é o do conjunto 74LS LS4, presente no esquemático que se acrescenta em anexo, sendo que as células BST que rodeiam este grupo pertencem todas à mesma cadeia. A abordagem a seguir consiste em se aplicarem os vectores de teste através das células BST ligadas às quatro entradas deste grupo (A, B, /G e /2G) e se capturarem as respostas através das células ligadas às suas oito saídas (/Y, /Y, /Y2, /Y3, 2Y, 2Y, 2Y2 e 2Y3). Em vez de se procurar determinar qual o menor conjunto de vectores que garanta a máxima cobertura de um dado tipo de faltas, e atendendo ao facto de o número total de vectores ser muito reduzido (apenas 6), optaremos por efectuar o teste exaustivo deste grupo. As ligações existentes entre o grupo a testar e a infraestrutura BST que o rodeia são as que estão representadas na figura 6.6: J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.6

116 Uma implementação Windows do controlador 49. Componentes sem BST IN7 5 (2A4) 9 2 (Y) A IN6 IN5 IN4 IN3 IN2 IN IN 6 (2A3) 7 (2A2) 9 (2A) 2 (A4) 2 (A3) 22 (A2) 23 (A) (Y2) 4 (Y3) 5 (Y4) 7 (2Y) 8 (2Y2) 9 (2Y3) (2Y4) B /G /2G 24 (/2G) (/G) TDI 2Y3 2Y2 2Y 2Y /Y3 /Y2 /Y /Y 5 (2A4) 6 (2A3) 7 (2A2) 9 (2A) 2 (A4) 2 (A3) 22 (A2) 23 (A) 24 (/2G) (/G) (Y) 3 (Y2) 4 (Y3) 5 (Y4) 7 (2Y) 8 (2Y2) 9 (2Y3) (2Y4) TDO Figura 6.6: Grupo a testar e infraestrutura BST que o rodeia. A aplicação de todas as combinações possíveis nas entradas produz nas saídas as combinações que estão representadas na tabela 6.2: Ordem das células BST na cadeia total: A B /G /2G /Y /Y /Y2 /Y3 2Y 2Y 2Y2 2Y3 Hex F8 F D2 D F2 F B4 B F4 F E E F F Tabela 6.2: Vectores de teste e respectivas respostas. Conhecida a informação que nos é dada pela figura 6.6 e pela tabela 6.2, restanos determinar quais os operandos das instruções NSHFCP que efectuarão a aplicação dos vectores e a captura das respostas. Para realizar esta operação precisamos também de conhecer quais os valores que deverão assumir as células J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.7

117 Uma implementação Windows do controlador 49. BST não directamente envolvidas neste processo, tarefa que podemos levar a cabo com o auxílio das indicações apresentadas na figura 6.7: (aplicam o vector) TDI A B /G /2G /Y /Y /Y2 /Y3 2Y 2Y 2Y2 2Y TDO (capturam a resposta) Figura 6.7: Posição das células que aplicam os estímulos e capturam as respostas. No que respeita portanto às restantes células BST, teremos as seguintes situações: A célula terá que ser mantida em, já que se assim não fosse os pinos ligados às células a 3 estariam em alta impedância e os vectores não seriam aplicados. A célula desempenha as mesmas funções para os pinos ligados às células 4 a 7; apesar de estes pinos não estarem a ser usados directamente no teste deste grupo de componentes, manteremos esta célula também em. As células 2 a 9 recebem o valor que é aplicado à lógica interna do primeiro componente BST (do lado esquerdo). Uma vez que não estamos a considerar o teste interno do componente, deslocaremos sempre para estas células. As células 4 a 7, que também não são directamente usadas na operação de teste pretendida, receberão também sempre. As células 8 e 9, bem como as células 28 a 35 (correspondentes aos pinos de saída do segundo componente), pelas mesmas razões anteriores, receberão igualmente. Isto significa que a construção dos vectores terá lugar pela aplicação de uma regra que se pode ilustrar como se apresenta a seguir (à excepção do primeiro, que por não incluir ainda informação relativa às respostas ao vector anterior tem uma regra de construção mais simples): J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.8

118 Uma implementação Windows do controlador 49.. Os valores a deslocar para o interior da cadeia BST são obtidos pela inserção, nas posições indicadas na figura 6.8, dos 4 bits correspondentes ao vector que se pretende aplicar (para o segundo vector, o argumento de NSHFCP será $,..,..,$,..,..,$4,..,..,$,..,..,$,..,..). TDI Aplicam o vector A B /G /2G (quintos 8 bits a deslocar) (quartos 8 bits a deslocar) (terceiros 8 bits a deslocar) TDO (segundos 8 bits a deslocar) (primeiros 8 bits a deslocar) Figura 6.8: Construção dos valores a deslocar para o interior da cadeia BST. 2. Os valores esperados são obtidos preenchendo as respostas esperadas para o vector anterior nas posições indicadas na figura 6.9 (para o segundo vector, o argumento de NSHFCP será..,$,..,..,$78,..,..,$,..,..,$,..,..,$,..). TDI (quintos 8 bits a deslocar) (quartos 8 bits a deslocar) (terceiros 8 bits a deslocar) Respostas esperadas /Y /Y /Y2 /Y3 2Y 2Y 2Y2 2Y3 TDO (segundos 8 bits a deslocar) (primeiros 8 bits a deslocar) Figura 6.9: Construção dos valores esperados para as respostas. 3. No que respeita às máscaras de comparação, a regra de construção é idêntica à da figura 6.9, sendo sempre atribuído o valor às células que contêm as respostas capturadas (para o segundo vector, o argumento de NSHFCP será..,$,..,..,$ff,..,..,$,..,..,$,..,..,$,..). As instruções que permitirão o teste do grupo de componentes sem BST ilustrado na figura 6.3 poderão deste modo ser representadas como se segue: NSHF $,$,$,$,$ NHSFCP $,$,$,$,$78,$FF,$4,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$7,$FF,$8,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$F8,$FF,$C,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$F,$FF,$,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$D2,$FF,$4,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$D,$FF,$8,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$F2,$FF,$C,$,$,$,$,$,$,$,$ NHSFCP $,$,$,$,$F,$FF,$,$,$,$2,$,$,$,$,$ NHSFCP $,$,$,$,$B4,$FF,$4,$,$,$2,$,$,$,$,$ NHSFCP $,$,$,$,$B,$FF,$8,$,$,$2,$,$,$,$,$ NHSFCP $,$,$,$,$F4,$FF,$C,$,$,$2,$,$,$,$,$ NHSFCP $,$,$,$,$F,$FF,$,$,$,$3,$,$,$,$,$ NHSFCP $,$,$,$,$E,$FF,$4,$,$,$3,$,$,$,$,$ NHSFCP $,$,$,$,$E,$FF,$8,$,$,$3,$,$,$,$,$ J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.9

119 Uma implementação Windows do controlador 49. NHSFCP NHSFCP $,$,$,$,$F,$FF,$C,$,$,$3,$,$,$,$,$ $,$,$,$,$F,$FF,$C,$,$,$3,$,$,$,$,$ Não nos devemos esquecer que o controlador do TAP em cada circuito integrado deve ser levado até ao estado Shift-DR para se deslocar o primeiro vector, sendo a partir dessa altura repetida uma sequência que compreende os seguintes passos: NSHF $,$,$,$,$ TMS ; passa para Update-DR TMS ; passa para Sel.-DR TMS ; passa para Capt.-DR TMS ; passa para Shift-DR NHSFCP $,$,$,$,$78,$FF,$4,$,$,$,$,$,$,$,$, TMS ; passa para Update-DR.. etc. Como exercício de conclusão, sugere-se que o leitor analise quais, das faltas relacionadas com este grupo de componentes, poderão não ser detectadas pelo conjunto de vectores de teste apresentados. Para estes casos, seria igualmente útil que se realizasse o exercício de procurar encontrar as condições que permitiriam a respectiva detecção (caso estas condições existam) Teste de grupos sem BST via PRPG e SA No seguimento da abordagem considerada anteriormente na secção anterior, analisaremos agora uma alternativa para o teste do primeiro grupo de componentes sem BST existentes na carta de demonstração. Recorde-se que a abordagem então seguida consistiu em se efectuar o teste exaustivo deste grupo de componentes, para o que foram necessários 6 vectores (o grupo a testar tem apenas 4 entradas). Recordemos ainda que o número de impulsos de relógio em TCK, necessários para deslocar os vectores e as respectivas respostas, e considerando apenas os impulsos referentes aos ciclos de deslocamento / aplicação de vectores e captura de respostas, era de 68. A abordagem agora apresentada pretende tirar partido das facilidades proporcionadas pelos octais da série SCOPE da Texas Instruments, que rodeiam na carta considerada os grupos de componentes sem BST, e efectuar o teste por recurso à geração de vectores de teste pseudo-aleatórios (PRPG, Pseudo-Random Pattern Generation) e à compactação de respostas por análise de assinatura (SA, Signature Analysis). Refira-se que esta alternativa tem ainda a vantagem de nos chamar a atenção para vários aspectos relacionados com o auto-teste incorporado J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.

120 Uma implementação Windows do controlador 49. (BIST, Built-In Self-Test), onde estes métodos de geração de vectores e compactação de respostas encontram ampla aplicabilidade. No exemplo concreto que está a ser considerado colocaremos o primeiro componente da cadeia no modo gerador de estímulos pseudo-aleatórios e o segundo no modo análise de assinatura. A análise das informações presentes na folha de características destes componentes indica-nos que a sequência de acções que nos permite a colocação nestes modos de funcionamento é a seguinte:. Deslocar para o registo de instrução o código de BOUNDARY READ (por exemplo, X). 2. Inicializar o registo de varrimento periférico com o valor inicial pretendido. 3. Deslocar para o registo de instrução o código de TEST DATA REGISTER SCAN (por exemplo, X). 4. Deslocar para o registo de teste (test data register) o conteúdo pretendido ( para a geração pseudo-aleatória em modo 6 bits, ou para a análise de assinatura, também em modo 6 bits). 5. Deslocar para o registo de instrução o código de BOUNDARY RUN TEST (X). 6. Transferir o controlador do TAP para o estado Run Test / Idle, onde terá lugar a aplicação de impulsos em TCK. A aplicação de impulsos em TCK permitirá então a aplicação do teste, não sendo agora necessária a deslocação individual dos vectores e respectivas respostas. Uma vez concluída a aplicação do número de vectores pretendidos, a deslocação para o exterior do conteúdo do registo de varrimento periférico do segundo octal permite-nos analisar a assinatura resultante das respostas obtidas e concluir pela detecção ou não de erros. A implementação deste método levanta-nos no entanto duas questões que teremos que resolver: Como devemos proceder para determinar a assinatura correcta, de modo a que possamos concluir se existem ou não faltas presentes? (a análise de assinatura, no final, será feita pela instrução NSHFCP, em cujo argumento teremos que indicar o valor esperado) J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.

121 Uma implementação Windows do controlador 49. uantos vectores teremos que aplicar para darmos o teste por concluído? (a geração de vectores pseudo-aleatórios faz-se em 6 bits, mas para as 4 entradas do nosso grupo sem BST não serão naturalmente necessárias nem pretendidas, por razões óbvias de rapidez todas as combinações possíveis nas saídas do octal) Estas questões serão agora analisadas individualmente em maior detalhe Determinação da assinatura correcta A determinação do conteúdo esperado para o registo de varrimento periférico do segundo octal, após a conclusão do teste, pode ser efectuada por dois métodos:. Por simulação do conjunto total: gerador de estímulos pseudo-aleatórios + grupo sem BST + compactador de respostas. 2. Por leitura do conteúdo do registo de varrimento periférico do segundo octal, após a conclusão de um teste em que saibamos à partida não existirem faltas presentes. O primeiro método é naturalmente o mais moroso e que requer mais recursos, já que teremos que construir modelos de simulação para os três blocos referidos e proceder à respectiva simulação nas condições de aplicação do teste. Para este efeito poder-se-ia por exemplo recorrer às ferramentas da Altera (a versão MAX+PLUS II BASELINE é do domínio público) e utilizar a captura esquemática + simulação para atingir os objectivos pretendidos, estando ilustrados nas figuras 6. a 6.2 os modelos descritivos dos três blocos considerados. A construção do modelo de funcionamento para o circuito completo a simular seria efectuada pela inclusão dos símbolos correspondentes a estes três blocos, no mesmo diagrama esquemático, tal como se representa na figura 6.3. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.2

122 Uma implementação Windows do controlador 49. Figura 6.: Registo BST em modo PRPG 6 bits (74BCT8244). Figura 6.: Grupo sem BST. A simulação de funcionamento poderia agora ser efectuada e o resultado que pretendemos determinar lido nas saídas do bloco analisador de assinatura, após a aplicação do último impulso em TCK. Recomenda-se ao leitor a realização deste exercício, no sentido de verificar a igualdade entre o resultado obtido por este método e o que tem lugar na prática. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.3

123 Uma implementação Windows do controlador 49. Figura 6.2: Registo BST em modo SA 6 bits (74BCT8244). Figura 6.3: Representação esquemática do circuito total a simular. O segundo método referido permite-nos uma forma mais expedita de obter o valor esperado para a assinatura, pelo que se recomenda ao leitor que se comece por esta hipótese (bastará correr o programa de teste sem nenhuma falta inserida e suspender a respectiva execução antes da instrução NSHFCP final, deslocando então o conteúdo do registo BST do segundo octal para o exterior) Número de vectores pseudo-aleatórios a aplicar A segunda questão a considerar prende-se com a necessidade de determinarmos quando podemos interromper a aplicação de impulsos em TCK (cada impulso produz um novo vector pseudo-aleatório), por considerarmos que todas as combinações já terão sido aplicadas nas entradas (repare-se que, e apesar de continuarmos a optar por um teste do tipo exaustivo, a geração dos vectores não é J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.4

124 Uma implementação Windows do controlador 49. feita de forma determinística). A resposta a esta questão pode obter-se por duas vias:. Recorrendo uma vez mais à simulação através das ferramentas da Altera, desta vez apenas do bloco gerador de estímulos pseudo-aleatórios (ver figura 6.), e analisando os resultados da simulação até verificarmos que ocorreram todas as 6 combinações nas saídas que estão ligadas às 4 entradas do grupo sem BST. 2. Por simulação do modo de funcionamento PRPG, mas agora através da aplicação Scan Educator, que a Texas Instruments coloca no domínio público através da sua página na Internet. Figura 6.4: Aplicação Scan Educator no modo pretendido (controlo individual de um octal). Este segundo método é o mais expedito, bastando para a sua execução seleccionarmos sucessivamente as opções 4 (menu principal: scan control mode testing single device) e 3 (on your own) nesta aplicação. Estas opções levam-nos à situação ilustrada na figura 6.4, onde podemos iniciar a sequência de 6 operações descritas na introdução (deslocar as instruções e inicializar os registos de dados) e aplicar impulsos em TCK até verificarmos que as 6 combinações pretendidas nas saídas já foram conseguidas (este valor dependerá naturalmente J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.5

125 Uma implementação Windows do controlador 49. do conteúdo inicial do registo de varrimento periférico, que deverá ser diferente de zero). Recomenda-se para concluir que o leitor escreva o programa necessário ao teste do grupo sem BST de acordo com a abordagem proposta neste segundo texto e verifique a sua execução na prática, determinando ainda qual o número de impulsos de relógio em TCK, para o comparar com os 68 necessários para a abordagem inicialmente considerada Prática São propostos dois exercícios para consolidar os conceitos apresentados relativamente ao uso do BST ao nível da carta de circuito impresso, recorrendo ambos à carta de demonstração que foi apresentada no capítulo 5 (o respectivo diagrama esquemático está presente em anexo no final do capítulo 5, bem como as folhas de características dos componentes nela presentes): o primeiro exercício diz respeito à detecção de faltas através de vectores de teste determinísticos e o segundo através de métodos pseudo-aleatórios de geração de vectores de teste Detecção de faltas através de vectores de teste determinísticos Considerar o seguinte conjunto de faltas (por ordem de complexidade crescente): i) curto-circuito X6; ii) curto-circuito X7; iii) circuito aberto X4; iv) curtocircuito X9; v) curto-circuito X2; vi) curto-circuito X3. Para cada uma destas faltas: Determinar os vectores de teste que garantem a detecção, incluindo naturalmente a indicação das respostas esperadas e das respectivas máscaras de comparação. Serializar os vectores, de forma a obter a sequência de bits a deslocar para o interior dos registos BS. Desenvolver o programa de teste correspondente, usando para o efeito o conjunto de instruções suportadas pela aplicação Tapper. Validar o programa de teste desenvolvido, por verificação experimental da detecção da falta considerada (usando para o efeito a carta de demonstração e a aplicação Tapper). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.6

126 Uma implementação Windows do controlador Detecção de faltas através de vectores de teste pseudo-aleatórios O exercício proposto nesta secção diz especificamente respeito à detecção do curto-circuito X2, no interior do primeiro grupo de componentes sem BST, e deve ser realizada de acordo com as seguintes recomendações: Determinar o número mínimo de impulsos em TCK que garantem a detecção da falta X2, assumindo que as células BST que as alimentam estão a funcionar em modo de geração pseudo-aleatória de vectores de teste (PRPG, pseudo-random pattern generation). Determinar a resposta esperada na ausência de faltas, obtida nas células BST ligadas às saídas do grupo, assumindo que estas células efectuam a compressão de respostas por análise de assinatura (SA, signature analysis). Desenvolver o programa de teste que garante a aplicação de todas as combinações possíveis e verifica a assinatura resultante, usando para o efeito o conjunto de instruções suportadas pela aplicação Tapper. Validar o programa de teste desenvolvido, por verificação experimental da detecção da falta considerada (usando para o efeito a carta de demonstração e a aplicação Tapper). J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 6.7

127 7. Introdução ao auto-teste incorporado Concluída a apresentação das questões de ordem geral associadas ao projecto para a testabilidade e à infra-estrutura BST, é chegada a altura de abordarmos a extensão destes recursos com o objectivo de permitir a inclusão de funções de auto-teste ao nível do circuito integrado. A complexidade associada a este tema, bem como o carácter generalista deste texto, recomendam apenas uma abordagem de carácter introdutório, que constitui o objectivo deste capítulo. A existência de funções de auto-teste incorporado (BIST, Built-In Self-Test) constitui actualmente um requisito fundamental para permitir o fabrico de circuitos complexos, já que o custo do respectivo teste de produção os inviabilizaria como produto, no caso de todas as operações de teste terem que ser realizadas externamente. Esta afirmação chama-nos igualmente a atenção para a necessidade de se encontrar uma solução de equilíbrio adequada, no que respeita ao custo da inclusão de funções de auto-teste (que requerem área de silício adicional e contribuem para degradar o desempenho), já que a sobrecarga de teste necessária para permitir valores progressivamente crescentes de cobertura de faltas, sobrecarrega o custo do componente e pode igualmente inviabilizar o seu sucesso comercial. A nossa abordagem a este tema inicia-se com a consideração da arquitectura geral de auto-teste num CI, a que se segue a análise das principais alternativas para implementar as funções de auto-teste em circuitos combinatórios, em circuitos sequenciais e em macro-células. Uma vez concluída a apresentação das principais estruturas de auto-teste, consideraremos as vantagens e os requisitos inerentes ao seu interface com a infra-estrutura BST, nomeadamente através da instrução opcional RUNBIST e à perspectiva de se implementarem estratégias de auto-teste hierárquicas por esta via. A conclusão da nossa abordagem ao autoteste incorporado terá lugar através da consideração de um exemplo concreto, que neste caso corresponde ao microprocessador Pentium Pro da Intel. 7.. Apresentação geral da arquitectura de auto-teste num CI Em termos gerais, podemos considerar que o auto-teste incorporado está presente quando os recursos para a realização do teste nomeadamente, para a geração / aplicação de vectores e para a captura / análise das respostas estão incluídos no

128 Introdução ao auto-teste incorporado interior do próprio circuito. Esta definição chama-nos a atenção para a larga diversidade de alternativas disponíveis para a implementação das funções de auto-teste, que tem lugar essencialmente em hardware se estivermos a considerar o nível do CI (que constitui o âmbito deste capítulo), mas que pode igualmente ter lugar em firmware, se estivermos a considerar implementações ao nível da carta de circuito impresso (sobretudo se baseadas em microprocessadores / microcontroladores), ou mesmo em software, se estivermos a considerar as implementações ao nível do sistema. As principais decisões a tomar no que respeita à especificação das funções de auto-teste desejáveis para cada componente podem ser resumidas em duas questões principais, a saber: ual a cobertura de faltas pretendida através do auto-teste incorporado? ual a sobrecarga de teste admissível? (em termos de área de silício e de desempenho do circuito) Destas duas questões decorre a análise de custos e benefícios que determina a extensão das funções de auto-teste que se justifica incluir no componente, sendo de salientar que os custos se traduzem essencialmente nos factores que determinam a sobrecarga de teste (referidos acima) e nas correspondentes implicações sobre o desenrolar da fase de projecto (no que respeita ao tempo de projecto e aos recursos exigidos, humanos e materiais). A existência destes factores de custo deve no entanto ser contra-balançada pela redução do tempo necessário para passar do protótipo à produção (sobretudo se estas funções forem desde o início previstas para apoiar outras etapas que não apenas o teste de produção), para o próprio teste de produção (que constitui a principal razão para a inclusão destas funções) e para as operações de manutenção e diagnóstico, que terão lugar já após a instalação no cliente. Em termos gerais, a arquitectura de auto-teste num CI pode representar-se como se ilustra na figura 7., onde a lógica interna do componente surge rodeada por três tipos principais de blocos: Um bloco associado às entradas primárias, que pode funcionar em modo transparente ou em modo de geração e aplicação de vectores de teste Um bloco associado às saídas primárias, que para além do funcionamento em modo transparente, permite efectuar a captura e avaliação de respostas J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.2

129 Introdução ao auto-teste incorporado Finalmente, um bloco responsável pelo controlo das operações de auto-teste, que se responsabiliza por ditar o modo de funcionamento dos dois blocos anteriormente referidos Entradas primárias Acesso às funções de auto-teste Controlador do auto-teste Geração e aplicação de vectores Lógica a testar Captura / avaliação de respostas Saídas primárias Figura 7.: Representação geral da arquitectura de auto-teste num CI Geração e aplicação de vectores A geração e aplicação de vectores está associada ao bloco que na figura 7. se representa entre as entradas primárias e a lógica interna, sendo de referir a este respeito três alternativas de implementação principais: O recurso a ferramentas de geração automática de vectores de teste, para produzir o menor conjunto de vectores que garante a cobertura de faltas pretendida, e o seu armazenamento em ROM no interior do circuito a testar. Esta alternativa garante tempos de teste mínimos, já que se recorre ao menor número possível de vectores, mas tem associada uma desvantagem evidente: a necessidade de se dispor da área de silício necessária ao seu armazenamento interno, o que conduz a uma sobrecarga de teste inaceitável para a generalidade das situações. O teste exaustivo, que aplica todas as combinações possíveis ao circuito a testar, ou pseudo-exaustivo, no qual a aplicação de todas as combinações possíveis se realiza por blocos, cujas saídas dependem apenas das respectivas entradas. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.3

130 Introdução ao auto-teste incorporado Ao contrário do que sucedia com o armazenamento de vectores em ROM no interior do componente, onde o tempo de teste era mínimo, esta alternativa conduz a tempos de execução do teste que são impraticáveis na generalidade dos casos (a título de exemplo, qual seria o tempo necessário em anos para efectuar o teste exaustivo de uma ALU com operandos de 32 bits, assumindo que a aplicação de vectores de teste se fazia a uma cadência de GHz?). A realização de testes pseudo-exaustivos levanta por sua vez o problema de se encontrar a melhor partição do circuito (para permitir a divisão em blocos disjuntos, no que respeita à influência das entradas sobre as respectivas saídas), que constitui um problema para o qual não são conhecidos algoritmos de resolução executáveis em tempo polinomial. A terceira alternativa consiste na solução mais comum, correspondente à geração pseudo-aleatória de vectores de teste. Esta abordagem baseia-se nas propriedades matemáticas das sequências pseudoaleatórias, cuja capacidade de detecção de faltas é superior às das sequências binárias associadas ao teste exaustivo (para o mesmo número de vectores). As estruturas de hardware que efectuam a geração das sequências pseudo-aleatórias são também mais simples do que as correspondentes às sequências binárias, o que constitui um factor adicional a recomendar a sua adopção. Estes factos levam a que a mesma cobertura de faltas seja atingida após a aplicação de um número de vectores significativamente inferior, o que associa uma sobrecarga de teste reduzida (em termos da área de silício) à rapidez do teste (número de vectores necessários para atingir a cobertura de faltas pretendida) Captura e avaliação das respostas A captura e avaliação de respostas pode ter lugar essencialmente através de duas alternativas principais, que consideraremos nesta secção: Armazenamento das respostas em ROM e comparação vector a vector. Esta alternativa pode ser usada com qualquer dos processos anteriormente referidos para a geração de vectores, mas apresenta o problema da área de silício necessária para permitir o armazenamento das respostas em ROM. Unidade Lógica e Aritmética. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.4

131 Introdução ao auto-teste incorporado Nomeadamente, e se pretendermos armazenar a resposta esperada para cada vector, esta solução será inviável para a generalidade dos casos. Compactação das respostas, através de um dos vários processos possíveis, e.g. contagem de transições, contagem de, análise de assinatura. Para além de poder igualmente ser empregue com qualquer dos processos de geração que referimos na secção anterior, esta alternativa apresenta a vantagem de permitir a detecção de faltas através da análise de uma representação compacta das respostas obtidas para o conjunto total de vectores de teste. Para além de eliminar o problema da excessiva área de silício necessária no caso anterior, esta solução apresenta ainda a vantagem de minimizar o tempo de teste, já que se realiza apenas uma operação de comparação (e não uma por cada vector). O problema principal desta alternativa consiste na possibilidade de ocorrer o mascaramento de faltas (em inglês, aliasing), já que podem ocorrer situações nas quais a presença de uma falta não conduz a uma representação compacta diferente da que corresponde ao circuito sem faltas (tal como sucede por exemplo na prova dos nove, onde um erro numa soma não implica necessariamente um resultado errado para a prova) Controlador do auto-teste Este bloco é responsável pela calendarização das várias fases que integram o auto-teste (conforme o tipo de blocos a testar) e por sequenciar as operações que têm lugar em cada uma destas fases. Para o caso da geração pseudo-aleatória de vectores de teste e compactação de respostas por análise de assinatura, por exemplo, teremos que o controlador do auto-teste procederá à inicialização dos blocos que efectuam estas operações e comutará o seu modo de funcionamento (de transparente para teste), após o que se responsabilizará pela aplicação dos impulsos de relógio que cadenciam a geração dos vectores e a compactação das respostas, procedendo por fim ao encerramento do auto-teste e à disponibilização do resultado para o exterior. A implementação do interface com o exterior constitui aliás uma das funções principais deste bloco, já que permite integrar o auto-teste na estratégia global de teste do sistema. A análise das principais alternativas de implementação possíveis para cada um dos blocos representados na figura 7. constitui o tema das secções seguintes, primeiro para o caso dos circuitos combinatórios e sequenciais, a que se seguirá a J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.5

132 Introdução ao auto-teste incorporado consideração de macro-células que incluam no seu interior circuitos de ambos os tipos Auto-teste de circuitos combinatórios Os circuitos combinatórios constituem a classe de circuitos com menores problemas de testabilidade, já que não possuem memória (informação de estado interno) e que surgem frequentemente na forma de estruturas regulares, com propriedades bem estudadas. Estas características fazem com que todas as alternativas anteriormente consideradas, seja para a geração e aplicação de vectores, seja para a captura e avaliação de respostas, possam ser empregues com este tipo de circuitos. Naturalmente que se mantêm as vantagens e desvantagens já referidas para cada caso, levando a que as estruturas de auto-teste mais comuns para este tipo de circuitos recorram à geração pseudo-aleatória de vectores de teste e à compactação de respostas por análise de assinatura, que por essa razão serão analisadas em maior pormenor nas secções seguintes Geração pseudo-aleatória de vectores de teste A geração pseudo-aleatória de vectores de teste é normalmente efectuada através de uma estrutura a que se dá a designação de registo de deslocamento com realimentação linear (LFSR, linear feedback shift register), que é composta por um conjunto de FF e XOR 2 interligados de forma semelhante a um registo de deslocamento, mas onde existe um percurso de realimentação que estabelece um funcionamento cíclico, através de um conjunto de estados pré-definido. As portas XOR tanto podem ser colocadas no percurso de realimentação como entre os FF, embora nem todas as configurações permitam o máximo número de estados para o ciclo de funcionamento, que corresponde a 2 (N-) (como veremos no exemplo apresentado mais adiante, a combinação tudo- nas saídas dos FF bloqueia o funcionamento cíclico, mantendo o LFSR permanentemente neste estado). Com o objectivo de analisarmos em maior detalhe a geração pseudo-aleatória de vectores de teste, consideraremos como exemplo de aplicação o caso de um circuito cuja lógica interna se restringe a um multiplexador de 2:, para o qual a 2 Flip-flops e portas OU-EXCLUSIVO. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.6

133 Introdução ao auto-teste incorporado geração de vectores é efectuada através de um LFSR com 4 bits, com a configuração ilustrada na figura 7.2. D D D D CLK CLK CLK CLK 2 3 CLK A B F C Figura 7.2: LFSR de 4 bits para a geração pseudo-aleatória de vectores de teste. A consideração deste exemplo permite-nos chamar a atenção do leitor para um conjunto de aspectos subjacentes a qualquer solução deste tipo, nomeadamente: uais as ligações a efectuar entre as saídas do LFSR e as entradas do circuito a testar? Atendendo a que o LFSR apresentado na figura implementa um polinómio primitivo (i.e. o funcionamento cíclico atravessa 2 (N-) estados), e que o número de saídas do LFSR excede o número de entradas do circuito a testar, temos liberdade para escolher qualquer relação biunívoca entre (,,2,3) e (A,B,C). O número de vectores a aplicar para atingir uma determinada cobertura de faltas dependerá da solução escolhida, podendo ser necessário recorrer-se à simulação de faltas, conforme se discute no parágrafo seguinte. ual o número de impulsos de relógio a aplicar? Uma vez que o LFSR produz um novo vector nas saídas :3 por cada impulso de relógio que lhe é aplicado, torna-se fácil concluir que bastariam 5 impulsos para garantir que todas as combinações possíveis seriam aplicadas nas entradas do circuito multiplexador ilustrado na figura 7.2. Esta solução corresponderia no entanto a efectuar um teste exaustivo do multiplexador, o que eliminaria uma das vantagens de optarmos pela geração pseudo-aleatória: o reduzido número de J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.7

134 Introdução ao auto-teste incorporado vectores de teste. Com efeito, a principal razão que justifica o sucesso desta solução consiste em aliar a simplicidade da estrutura de geração de vectores (o LFSR) à possibilidade de se atingir uma elevada cobertura de faltas num reduzido espaço de tempo (número de impulsos de relógio). Apesar de o número de vectores de teste necessários para atingir uma determinada cobertura de faltas ser superior ao que corresponderia a um teste determinístico (que é optimizado pela ferramenta de geração automática de vectores de teste), constata-se ainda assim uma grande economia, face à aplicação de todas as combinações possíveis às entradas do circuito a testar. A determinação do número de impulsos de relógio a aplicar ao LFSR implica deste modo o recurso à simulação de faltas, que constitui a única forma de identificar o menor número de vectores pseudo-aleatórios que é necessário aplicar ao circuito, para atingir a cobertura de faltas pretendida. Por fim, refira-se ainda que o conteúdo inicial do LFSR não é importante desde que não seja tudo-, do qual o LFSR não consegue sair, já que a sequência de vectores de teste produzida é cíclica e sempre a mesma (o valor inicial apenas determina qual o ponto a partir do qual esta sequência se inicia). Seria possível usar um LFSR com 3 bits? Um LFSR de 3 bits que implemente um polinómio primitivo (gerando portanto sete vectores de teste) seria em princípio possível para o caso ilustrado na figura 7.2, a menos que se pretendesse uma cobertura de faltas de % e houvesse pelo menos uma falta apenas detectável pelo vector (repare-se que o uso de um LFSR com mais do que 3 bits nos permite também aplicar a combinação tudo- nas entradas do circuito). Como se comparam as sobrecargas de teste associadas à geração pseudoaleatória e à geração exaustiva de vectores de teste? Em termos gerais, a sobrecarga de teste pode aferir-se de acordo com três vertentes principais: a preparação do teste, a importância dos recursos adicionais necessários à sua implementação e o tempo de aplicação dos vectores. No que respeita à primeira destas vertentes, a geração pseudo-aleatória requer o recurso à simulação de faltas, se pretendermos determinar o número de vectores a aplicar (que constitui a situação mais comum), o que não sucede com o teste exaustivo, mas este requisito reflecte-se apenas sobre o tempo de projecto. No que respeita aos recursos necessários para a sua implementação, e às suas implicações sobre o J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.8

135 Introdução ao auto-teste incorporado desempenho do circuito (e.g. a área de silício adicional, pinos dedicados a funções de teste, atrasos nos tempos de propagação, etc.), estas duas alternativas não apresentam diferenças significativas, embora a estrutura de um LFSR seja mais simples do que a de um contador binário (mas a geração exaustiva poderia também ser feita através de um LFSR, para além de a diferença na área total de silício ser possivelmente pouco importante). Por fim, no que respeita ao tempo de aplicação do teste (que tem uma importância significativa sobre o custo de um componente), o muito menor número de vectores que está tradicionalmente associado à geração pseudo-aleatória constitui a vantagem principal que torna esta alternativa preferível para a generalidade dos casos Compressão de respostas por análise de assinatura Os LFSR podem igualmente ser usados para implementar blocos que efectuam a compactação de respostas, conduzindo a uma assinatura que corresponde ao conteúdo do LFSR (o estado dos FF), quando termina a execução do teste. A figura 7.3 ilustra um exemplo em que a lógica interna continua a ser o multiplexador de 2:, sendo o registo de assinatura implementado por um LFSR em configuração SISR (single-input signature register). A B F C D D CLK D CLK D CLK CLK 2 Figura 7.3: LFSR de 3 bits para a compactação de respostas por análise de assinatura. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.9

136 Introdução ao auto-teste incorporado Uma vez mais, aproveitaremos o exemplo apresentado para abordar um conjunto de questões cuja consideração está subjacente a qualquer solução deste tipo: uais as ligações a efectuar entre a saída do circuito a testar e a entrada do LFSR? Neste caso torna-se evidente que a saída F do multiplexador deve ser ligada à entrada D do LFSR, já que se trata de um circuito com apenas uma saída e de um compactador com apenas uma entrada. Refira-se no entanto que existem igualmente compactadores do tipo MISR (multiple-input signature register), para os quais a questão considerada não tem necessariamente uma única resposta. ual o número de impulsos de relógio a aplicar? Uma vez que o conteúdo do LFSR é actualizado por cada impulso de relógio, de acordo com o valor presente na entrada e com o estado dos FF, o número de impulsos a aplicar não é imposto pelo compactador, mas sim pelo bloco que efectua a geração dos vectores de teste (para o caso da geração pseudo-aleatória de vectores, este número é determinado pela simulação de faltas, como se descreveu na secção anterior). ual o valor inicial que deverá estar presente nas saídas do LFSR? Não existe um valor pré-determinado para as saídas do LFSR, já que diferentes opções correspondem apenas a diferentes assinaturas finais, de acordo com a sequência de respostas esperadas nas saídas do circuito a testar. O valor inicial tem no entanto que se conhecido, para se poder determinar a assinatura esperada na ausência de faltas, o que pode ter lugar matematicamente ou por recurso à simulação lógica. O mascaramento variará com o número de bits da assinatura? A análise matemática subjacente à compactação de respostas por análise de assinatura indica-nos que a operação realizada pelo registo corresponde à divisão polinomial, sendo a assinatura correspondente ao resto desta operação aritmética. Intuitivamente, e se considerarmos que as assinaturas resultantes da presença de cada falta se distribuem igualmente pelo conjunto de assinaturas possíveis, torna-se simples concluir que o número de faltas que produzem a assinatura correcta deverá decrescer com o número de bits (a detecção de paridade, que corresponde de facto a um SISR com um único bit, apresenta como é conhecido pouca fiabilidade no que respeita ao mascaramento). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.

137 Introdução ao auto-teste incorporado A análise de assinaturas não constitui a única possibilidade para a compactação de respostas, existindo outras alternativas já referidas, como é o caso da contagem de transições e da contagem de síndromas (número de que surgem nas saídas). Com o objectivo de permitir ao leitor apreciar melhor as vantagens e desvantagens de cada uma destas alternativas, recomenda-se como exercício a determinação dos resultados da compactação de respostas através de cada um dos três métodos referidos, considerando que se aplica um teste exaustivo ao multiplexador de 2: apresentado (em qual dos casos será maior a possibilidade de mascaramento?) Auto-teste de circuitos sequenciais Pelas razões já conhecidas, o teste de circuitos sequenciais é bastante mais complexo que o de circuitos combinatórios, sendo esta aliás a razão que determinou o desenvolvimento de técnicas de projecto para a testabilidade, no âmbito das quais se insere a temática do auto-teste incorporado. Por estas mesmas razões, nem todas as técnicas de auto-teste que foram descritas para os circuitos combinatórios são aplicáveis com circuitos sequenciais. Em particular, e devido à existência de informação interna de estado, podemos ter diferentes sequências nas saídas para a mesma sequência nas entradas, o que inviabiliza desde logo a aplicação de técnicas como a geração pseudo-aleatória de vectores de teste. Continuaria no entanto a ser possível o teste através de vectores de teste determinísticos armazenados em ROM, mas com os mesmos inconvenientes (em termos da sobrecarga de teste) que foram já referidos na secção anterior, para além das dificuldades associadas à respectiva geração. Repare-se no entanto que a reutilização dos métodos descritos na secção anterior para a captura e avaliação de respostas se coloca de forma diferente, já que as alternativas apresentadas para este efeito continuam a ser válidas. O auto-teste de circuitos sequenciais constitui no entanto um problema que está resolvido à partida, uma vez que o próprio fabrico dos circuitos a testar só é na maioria dos casos possível por se terem adoptado as medidas já conhecidas de projecto para a testabilidade, nomeadamente no que respeita ao projecto com varrimento, que nos permite eliminar o carácter sequencial do circuito, para efeitos de teste. Nestas circunstâncias, os mesmos métodos apresentados para os circuitos combinatórios são directamente reaplicáveis com os circuitos J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.

138 Introdução ao auto-teste incorporado sequenciais, onde aliás os FF de estado podem ser reutilizados na geração pseudo-aleatória de vectores e na análise de assinatura Auto-teste de macro-células A consideração de um tipo de bloco a que damos a designação de macro-célula, que não se integra num dos dois tipos anteriores, tem por objectivo permitir a reutilização de circuitos mais complexos, que internamente incluem redes de circuitos combinatórios e sequenciais, os quais poderão já dispor das correspondentes funções de auto-teste. Esta situação é relativamente comum no projecto de ASIC 3, onde os projectistas têm à sua disposição bibliotecas de blocos com funcionalidades pré-definidas e com um grau de complexidade muito variável. Uma vez estabelecidos os recursos internos de auto-teste da macrocélula (pelo próprio utilizador, de acordo com os princípios descritos nas secções precedentes, ou por fazerem já parte integrante da macro-célula), a questão que nos resta considerar consiste em definir a sua integração na estratégia global de auto-teste. Esta questão chama-nos por sua vez a atenção para o facto de a estratégia de auto-teste ao nível global ter que levar em consideração as questões de ordem hierárquica, que na maioria dos casos se iniciam precisamente na macro-célula e se estendem até ao nível do sistema (conjunto de cartas de circuito impresso). Apesar de termos já antecipado, no início do capítulo, que a consideração efectuada neste âmbito se restringe ao nível do CI, importa ainda assim situar a nossa abordagem no contexto global e discriminar entre as duas situações que consideraremos nas secções seguintes Macro-células de baixa / média complexidade As macro-células de baixa / média complexidade caracterizam-se de forma geral por requererem recursos de auto-teste relativamente homogéneos, pelo que existem soluções bem conhecidas que resolvem a generalidade dos casos. Os blocos de memória constituem um exemplo típico desta classe, que constituem já um exemplo de média complexidade, mas para os quais a inclusão de recursos de auto-teste não levanta normalmente problemas significativos: 3 Application-specific integrated circuit. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.2

139 Introdução ao auto-teste incorporado O auto-teste de uma ROM é frequentemente realizado através da leitura do conteúdo de todas as suas posições e pela análise da assinatura resultante, correspondendo ao que poderíamos classificar como um teste exaustivo com compactação de respostas. A complexidade do auto-teste de blocos RAM é já maior, pela variedade de modelos de faltas que devem ser levados em consideração, mas existem disponíveis na literatura um grande número de algoritmos de teste para este tipo de blocos. A integração do auto-teste de macro-células de baixa / média complexidade não levanta pois problemas de maior, sobretudo por serem bem conhecidos os métodos empregues nestes casos e pela disponibilidade geral dos recursos necessários à sua implementação Mega-células: a proposta IEEE P5 O auto-teste de macro-células de maior complexidade, e.g. um microcontrolador, que integram diversos tipos de circuitos, incluindo por sua vez macro-células de baixa / média complexidade no seu projecto, requer já a definição de métodos mais estruturados para facilitar a sua integração na estratégia global de autoteste definida para o sistema. A heterogeneidade das funções de auto-teste presentes no seu interior, bem como a necessidade de se protegerem os direitos de propriedade intelectual, justificaram mesmo a definição de uma norma IEEE a este respeito, que se encontra actualmente em desenvolvimento: o IEEE P5 Standard for Embedded Core Test. A proposta de norma IEEE P5 pretende definir um método para o teste de componentes que contenham mega-células reutilizáveis, independentemente da funcionalidade do componente ou das mega-células. Esta proposta define os requisitos de testabilidade para a detecção e o diagnóstico, e facilitará a interoperabilidade entre células de diferentes fabricantes, qualquer que seja a classe de operações que realizam e a sua estrutura hierárquica. Uma apresentação do conteúdo da proposta IEEE P5 transcende os objectivos deste texto, mas o leitor mais interessado poderá consultar em o conjunto de documentos disponibilizados pelo grupo de trabalho que tem promovido o respectivo desenvolvimento. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.3

140 Introdução ao auto-teste incorporado 7.5. Interface entre funções de auto-teste e a infra-estrutura BST A infra-estrutura BST constitui naturalmente um veículo privilegiado para aceder às funções de auto-teste existentes no interior de um componente, dispensando a existência de pinos adicionais dedicados para esse fim. Para além de todas as operações necessárias ao auto-teste poderem ser desencadeadas através do TAP, a norma 49. define já a instrução opcional RUNBIST, que especifica as condições em que deve decorrer o acesso às funções de auto-teste e a respectiva execução (independentemente do fabricante do circuito e das funções que ele desempenha) Arquitectura de um componente BST com auto-teste A arquitectura de testabilidade de um CI com BST e auto-teste incorporado pode representar-se em termos gerais como se ilustra na figura 7.4, onde podemos constatar a existência blocos de lógica interna com as respectivas estruturas de auto-teste, de um controlador global de auto-teste e do registo que permitirá transferir o resultado para o exterior (o registo opcional que na figura 7.4 se designa por dados A.T. ). O controlador global de auto-teste é necessário para sequenciar o funcionamento das correspondentes estruturas em cada um dos blocos presentes, que poderão ou não funcionar simultaneamente (alguns dos recursos necessários poderão ser parcialmente comuns a mais do que um bloco). Repare-se ainda que a própria infra-estrutura BST se pode encarregar de parte das funções inerentes ao autoteste, seja no que diz respeito às tarefas do controlador, seja nas que se relacionam com a geração / aplicação de vectores de teste e com a captura / avaliação de respostas (e.g. usando o próprio registo BST para efectuar a geração pseudo-aleatória de vectores de teste e a compactação de respostas por análise de assinatura). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.4

141 Introdução ao auto-teste incorporado Registo BST Barramento de auto-teste interno Mux dados Contr. Auto-Teste BP Dados A.T. Mux dados / instrução Desc. instrução TDO TDI Reg. instrução /TRST TMS TCK Controlador do TAP Figura 7.4: Representação geral da infra-estrutura de testabilidade num CI com BST e auto-teste A instrução RUNBIST revisitada As principais especificações da norma 49. a respeito da instrução opcional RUNBIST podem ser sumariadas como se segue: Após o carregamento da instrução, as funções de auto-teste iniciam a sua execução no estado RT/I (Run Test / Idle) A duração do auto-teste deve ser especificada em termos no número de ciclos de relógio (TCK) necessários à sua execução, após a entrada em RT/I O registo de dados seleccionado por RUNBIST deverá conter o resultado do auto-teste após a sua conclusão, pelo que a simples passagem de RT/I para S- DR (Shift-DR) nos permitirá deslocar para o exterior (através de TDO) a informação que nos indica se foram ou não detectadas faltas O protocolo para a execução do auto-teste num componente BST que suporte esta facilidade pode por conseguinte sumariar-se da seguinte forma: i) deslocar para o J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.5

142 Introdução ao auto-teste incorporado registo BST, ou para outros registos que o requeiram, os valores de inicialização das estruturas do tipo LFSR presentes; ii) deslocar para o registo de instrução o código de RUNBIST; iii) levar o controlador do TAP até ao estado RT/I e aplicar em TCK um número de impulsos não inferior ao especificado pelo fabricante; iv) levar o controlador do TAP até ao estado S-DR e deslocar para o exterior o resultado do auto-teste O auto-teste hierárquico A existência de componentes BST com auto-teste incorporado possibilita ainda uma forma simples de implementar uma estrutura de teste hierárquica, onde as funções de teste ao nível do sistema (normalmente implementadas em software ou em firmware) coordenam o funcionamento das mesmas funções ao nível da carta (agora mais provavelmente implementadas em firmware), que por sua vez interactuam com as estruturas de auto-teste presentes nos componentes (sobretudo implementadas em hardware, da forma que temos vindo a apresentar). A solução mais comum consistiria nestas circunstâncias em colocar em cada carta de circuito impresso um controlador de auto-teste, eventualmente na forma de um processador dedicado, que se responsabilizaria por controlar a infra-estrutura BST em cada componente e através dela as estruturas de autoteste existentes no seu interior. A existência da instrução opcional RUNBIST permite que a mesma infraestrutura de testabilidade usada ao nível da carta de circuito impresso (o BST) seja igualmente usada para despoletar as funções de auto-teste no interior dos componentes, deixando deste modo pré-definida a implementação de uma estratégia hierárquica de teste, da carta de circuito impresso para baixo (carta componente (e eventualmente) macro / mega célula, sobretudo quando a proposta IEEE P5 for aprovada como norma). A existência de BST nas cartas de circuito impresso permite igualmente pensar em expandir esta infra-estrutura de teste para o nível do sistema, o que possibilitaria a implementação de uma estratégia hierárquica, com uma sobrecarga de teste mínima. As limitações associadas a esta possibilidade prendem-se sobretudo com o facto de o BST ter sido desenvolvido para facilitar o teste estrutural de cartas de circuito impresso digitais, pelo que a constituição de cadeiras de varrimento ao nível do sistema enfrenta algumas limitações (recomenda-se ao leitor que considere o exercício de identificar algumas dessas limitações). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.6

143 Introdução ao auto-teste incorporado A extensão da infra-estrutura de testabilidade para o nível superior (carta de circuito impresso sistema) é portanto menos evidente, apesar de existir já há vários anos uma norma para este fim: a norma IEEE 49.5 (Standard for Test and Maintenance Bus), que define um barramento de teste ao nível do sistema, composto por 4+ linhas: MMD (Master Data), MSD (Slave Data), MCTL (Control), MCLK (Clock) e MPR (Pause Request). O facto de esta norma requerer uma infra-estrutura de testabilidade diferente do BST tem no entanto obstado à sua popularidade, uma vez que a definição de soluções que permitam utilizar a mesma norma permitiria uma melhor rentabilização do investimento em infraestruturas de teste. Existem deste modo várias propostas e soluções com este objectivo, que permitem efectivamente a implementação de estratégias globais de auto-teste, desde o nível do sistema até ao nível da macro / mega célula Projecto para a testabilidade e auto-teste no processador Pentium Pro Para encerrar o conjunto de questões relacionadas com o auto-teste incorporado, efectuaremos uma análise sumária do projecto para a testabilidade e auto-teste num caso concreto, nomeadamente o processador Pentium Pro. A descrição destas infra-estruturas está disponível em publicações de fácil acesso (veja-se por exemplo A. Carbine e D. Feltham, Pentium Pro Processor Design for Test and Debug, IEEE Design and Test of Computers, Julho-Setembro de 998, pp ) e tem o mérito particular de não se restringir apenas à correspondente descrição técnica, pretendendo antes apresentar uma visão integrada das vantagens e limitações que o projectista deve levar em conta ao efectuar a sua especificação. A perspectiva defendida pelos projectistas do processador Pentium Pro defende que se deve encontrar o melhor ponto de equilíbrio entre a área de silício reservada para a lógica funcional e aquela que se disponibiliza para funções de teste, já que em termos gerais o desempenho de cada nova geração de processadores está limitada pelos recursos necessários à implementação da correspondente arquitectura. Com efeito, e apesar de não ser possível excluir o projecto para a testabilidade, é necessário reforçar a ideia de que a área de silício gasta para este fim poderia ser usada para melhorar aspectos funcionais, aumentando as probabilidades de sucesso comercial do produto. Partindo desta J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.7

144 Introdução ao auto-teste incorporado premissa, os principais requisitos que orientaram o desenvolvimento das infraestruturas de testabilidade no processador Pentium Pro foram as seguintes: Não ter qualquer impacto negativo sobre o desempenho Ocupar a mínima área de silício possível Serem tanto quanto possível polivalentes (permitirem apoiar as tarefas de depuração, teste de produção, etc.) Estarem incluídas na especificação inicial do projecto Com base nestas orientações gerais, as características de projecto para a testabilidade presentes no Pentium Pro estão descritas na tabela 7., extraída da publicação citada anteriormente (os valores de área indicados referem-se à versão do Pentium Pro que inclui memória cache de 256 Kbytes, correspondendo a uma implementação que ocupa cerca de 2 milhões de transístores). Tabela 7.: Resumo das características de testabilidade no Pentium Pro. A análise das informações contidas nesta tabela permite-nos realçar os seguintes pontos principais: A infra-estrutura BST presente no Pentium Pro suporta sete instruções públicas e um largo número de instruções privadas, que proporcionam o acesso a diversas funções de teste e depuração. O modo de operação scan out recorre ao projecto com varrimento para permitir observar mais de 2. nós internos do processador, em modo snapshot (o estado interno é amostrado e deslocado para o exterior) ou J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.8

145 Introdução ao auto-teste incorporado signature (a amostragem é feita de forma contínua e os valores capturados são compactados internamente numa assinatura). O modo de depuração (debug mode) suporta o funcionamento em modo de teste interactivo, após o qual pode ser retomada a execução normal do programa. A inserção de pontos de paragem por condição (internal breakpoint mechanism) é também suportada por esta via e permite a especificação de diversos eventos internos e das acções de depuração subsequentes, após um intervalo de tempo também programável. A actualização de micro-código (microcode update) é outra das operações de depuração suportadas e permite efectuar modificações temporárias, para facilitar o diagnóstico e a resolução de erros detectados nas primeiras versões fabricadas. O modo IDD corresponde a uma das instruções BST privadas e permite inibir o funcionamento dos blocos que consomem corrente em modo estático, possibilitando a realização de testes por medida de corrente. No que respeita especificamente à realização do auto-teste, o Pentium Pro recorre a várias soluções, entre as quais merecem destaque as seguintes: Existe uma rotina de auto-teste que tem por objectivo principal comutar o valor lógico numa elevada percentagem de nós internos, para ser usada com o teste por burn-in. Apesar de a maioria das soluções de auto-teste terem sido implementadas em micro-código, são frequentemente usadas estruturas do tipo LFSR para efectuar o teste de blocos do tipo PLA (programmable logic arrays), dificilmente acessíveis por outra via. A memória cache L2 (de 256 Kbytes, na versão considerada) dispõe de recursos de auto-teste que executam sempre que é ligada a alimentação. Para além desta possibilidade, o Pentium Pro dispõe ainda de uma outra estrutura (a que foi dada a designação de PBIST) para o auto-teste desta memória, que constitui um gerador programável de vectores de teste, incluindo uma pequena memória de vectores e uma linguagem de programação para este efeito. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.9

146 Introdução ao auto-teste incorporado A concluir, é importante realçar que a eficácia do teste de produção se mede em última análise pelo número de componentes com defeito que são enviados para os clientes (em partes por milhão), e não pela cobertura de faltas atingida, sendo este um dos indicadores principais da eficácia das soluções de testabilidade e de auto-teste presentes em cada componente. Estas soluções requereram no Pentium Pro 4% da área de silício do CPU e 6% da correspondente área na memória cache L2, sem afectarem a frequência de relógio ou o número de instruções por ciclo de relógio que o processador é capaz de realizar Prática O objectivo principal deste exercício consiste em se aplicarem os princípios básicos inerentes ao auto-teste com geração pseudo-aleatória de vectores de teste e análise de assinatura, realizadas através da infra-estrutura BST, por implementação de uma instrução RUNBIST. A infra-estrutura BST simples que foi descrita no capítulo 2 deverá neste caso rodear um bloco de lógica interna correspondente a um multiplexador de 2:, tal como se ilustra abaixo na figura 7.5. Os blocos usados para a geração pseudo-aleatória de vectores de teste e a análise de assinatura deverão ser os que se ilustram nas figuras 7.6 e 7.7. A B F C Figura 7.5: Lógica interna. D D D D CLK CLK CLK CLK 2 3 CLK Figura 7.6: Bloco para a geração pseudo-aleatória de vectores de teste. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.2

147 Introdução ao auto-teste incorporado D D CLK D CLK D CLK CLK 2 Figura 7.7: Bloco para a compactação de respostas por análise de assinatura. Para o caso agora considerado, deve ser levado em consideração o seguinte conjunto de recomendações: Deve usar-se o registo BST para a implementação dos blocos ilustrados nas figuras 7.6 e 7.7. À instrução RUNBIST deve ser atribuído o código de instrução que estava livre (). O novo registo BST deve ter sete células, quatro baseadas na configuração comum, mas enriquecidas para permitir o funcionamento em modo PRPG, e as restantes mais simples, apenas para permitir ao registo original acomodar os sete andares que correspondem à concatenação dos blocos PRPG e SISR. O recurso a multiplexadores deverá permitir que as instruções obrigatórias EXTEST e SAMPLE / PRELOAD excluam do percurso de deslocamento as novas células, que estarão presentes apenas quando a instrução opcional RUNBIST estiver activa. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 7.2

148 8. O teste misto com base na norma IEEE 49.4 Foi já anteriormente referido que a norma 49. (BST) foi desenvolvida com o objectivo específico de simplificar o teste estrutural de CCI digitais. Esta área limitada de aplicação facilitou a aceitação da norma e acelerou a introdução de produtos BST, uma vez que minimizou o número de soluções de compromisso que requereram o comum acordo entre os sectores envolvidos (a comunidade de projecto e teste, os fabricantes de semicondutores e de equipamentos de teste automático, as empresas que desenvolvem e comercializam sistemas de CAD, etc.). A eficácia da tecnologia BST deu igualmente um importante contributo para o seu sucesso, mas é sabido que a conquista do mercado não depende apenas das boas características do produto. Por outro lado, a área limitada de aplicação do BST significa que uma larga variedade de problemas continuarão em lista de espera por uma solução mais abrangente. O teste de circuitos mistos (digitais e analógicos) constitui um destes problemas, que se converteu numa área de I&D com franca visibilidade nos últimos anos, devido à cada vez maior importância deste segmento de produtos no mercado. Uma das abordagens mais promissoras a esta área é precisamente a norma IEEE 49.4, que constitui o tema deste capítulo. 8.. Âmbito da norma IEEE 49.4 A norma 49.4 foi aprovada em Junho de 999 e é apresentada logo no início do respectivo texto com uma extensão da norma 49., desenvolvida com o objectivo de definir as estruturas que devem ser acrescentadas à arquitectura BST, para permitir o teste de circuitos mistos. É importante salientar que a infra-estrutura 49.4, sendo uma extensão do BST, expande o seu domínio de aplicação, mas mantém exactamente as mesmas características de uma infra-estrutura de varrimento com acesso série. Isto significa que áreas como a do teste funcional, por exemplo, não serão ainda satisfeitas por esta nova tecnologia de teste, quer pela natureza série das operações de varrimento, quer pela dificuldade de sincronizar os eventos funcionais e as operações de teste. Contudo, as operações de teste estrutural CAD: Computer Aided Design (projecto assistido por computador).

149 O teste misto com base na norma IEEE 49.4 possibilitadas pela infra-estrutura BST serão agora capazes de endereçar também os circuitos mistos. Mais ainda, algumas operações de teste paramétrico tornar-se-ão agora possíveis, tais como a medida da impedância de componentes discretos colocados entre pinos 49.4, ou a verificação dos limiares de tensão nas entradas, que provocam a transição das saídas em circuitos digitais. A introdução do 49.4 pode assim ser vista como uma extensão importante do conceito original do 49., mesmo se ainda largamente restrito à área do teste estrutural. O acrescento de instruções opcionais a componentes 49.4 irá no entanto com certeza ampliar o domínio de aplicação desta infra-estrutura de teste, permitindo eventualmente a depuração, operações de teste funcional, a detecção de falhas em tempo real, etc. (tal como é já hoje em dia possível em relação à infra-estrutura 49.) Apresentação geral do 49.4 Teremos nesta secção oportunidade para analisar globalmente as características da infra-estrutura 49.4, realçando os pontos comuns relativamente à sua congénere 49., e indicando ao mesmo tempo as principais diferenças entre ambas (e as suas implicações) A arquitectura básica 49.4 As estruturas adicionais definidas pelo 49.4, em relação ao 49., são as seguintes: Um porto de acesso ao teste analógico (ATAP 2 ) com dois pinos (AT e AT2). AT será normalmente usado para aplicar valores analógicos ao circuito interno ou aos pinos de saída analógicos, e AT2 para observar as respostas aos estímulos analógicos aplicados (a solução conceptual apresentada no texto da norma permitiria no entanto que AT e AT2 invertessem os papéis referidos). Um barramento interno de teste analógico composto por pelos menos duas linhas (AB e AB2), que são usadas para encaminhar os sinais analógicos 2 ATAP: Analog Test Access Port; TBIC: Test Bus Interface Circuit; ABM: Analog Boundary Module; DBM: Digital Bus Module. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.2

150 O teste misto com base na norma IEEE 49.4 para dentro ou fora do componente (seja o circuito interno ou pinos analógicos). Um circuito de interface ao barramento de teste (TBIC), inserido entre os pinos do ATAP e as linhas do barramento interno de teste analógico, e que define o tipo de ligações e sinais presentes nestas linhas analógicas. Módulos periféricos analógicos (ABM), inseridos entre os pinos analógicos e as ligações correspondentes ao circuito interno do componente. Estes módulos periféricos são os equivalentes 49.4 das células BS, que nesta norma se designam por ABM e DBM (módulos periféricos digitais, neste caso associados aos pinos digitais dos componentes 49.4). Excepto por preocupações de sobrecarga de teste (overhead), os ABM poderiam igualmente ser inseridos entre os pinos digitais a as suas ligações à lógica interna, enriquecendo o conjunto de operações de teste possíveis, mas naturalmente à custa de um acrescento de recursos significativos por cada pino. A arquitectura básica 49.4 pode ser representada como se ilustra na figura 8., que inclui as quatro estruturas adicionais anteriormente referidas. Figura 8.: A arquitectura básica J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.3

151 O teste misto com base na norma IEEE 49.4 Cada pino analógico de E/S 3 tem associado um ABM que estende as operações de controlabilidade e observabilidade ao domínio analógico, permitindo o teste de ligações na CCI e algumas operações de teste paramétrico. Repare-se ainda que os ABM e os DBM estão ligados em série, constituindo o registo de varrimento periférico (mantém-se a designação de registo BS) da arquitectura 49.4, que inclui igualmente células pertencentes ao TBIC. Com a excepção das estruturas adicionais referidas, a arquitectura global de teste é claramente idêntica à do 49., tal como seria de esperar. A operação da infra-estrutura 49.4 pode resumir-se da seguinte forma: O estímulo analógico é aplicado em AT e a resposta analisada em AT2. AT e AT2 são ligados ao barramento interno de teste analógico, respectivamente a AB e a AB2. A partir de AB, o sinal pode ser encaminhado para o circuito interno ou para um pino funcional de saída (com ABM). As respostas são encaminhadas para AB2 a partir do circuito interno ou de um pino funcional de entrada (com ABM) : Estrutura de registos de teste A arquitectura 49.4 pode alternativamente ser representada como se ilustra na figura 8.2, onde se realçam os registos de teste presentes. 3 E/S: Entrada / Saída. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.4

152 O teste misto com base na norma IEEE 49.4 Figura 8.2: Estrutura de registos de teste no A figura 8.2 mostra que a estrutura de registos do 49.4 é inteiramente digital e essencialmente idêntica à que é definida pelo 49.. O registo BS compreende os registos (conjuntos de quatro células) de controlo do TBIC e dos ABM, que definem os respectivos modos de operação As instruções 49.4 Para além das três instruções obrigatórias no 49., a norma 49.4 define uma quarta instrução obrigatória, designada por PROBE. A funcionalidade da instrução PROBE pode resumir-se nos seguintes termos: O registo de dados seleccionado é o registo BS. Cada ABM liga o respectivo pino ao seu terminal do circuito interno. AT e AT2 estão ligados a AB e AB2. A ligação entre os pinos analógicos de E/S e o barramento AB / AB2 é definida de acordo com o registo de controlo em cada ABM. Cada DBM funciona em modo transparente (tal como se a instrução carregada fosse SAMPLE / PRELOAD ou BYPASS). No que respeita às três instruções obrigatórias que são comuns à norma 49., aplicam-se as seguintes regras: J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.5

153 O teste misto com base na norma IEEE 49.4 Para SAMPLE / PRELOAD e BYPASS: i) AT / AT2 devem estar isolados de AB / AB2, tal como de quaisquer outras fontes de tensão; ii) todos os pinos funcionais analógicos devem estar ligados ao circuito interno; iii) todos os pinos funcionais analógicos devem ser isolados de AB / AB2, tal como de quaisquer outras fontes de tensão. Para EXTEST: Os ABM devem desligar o pino do circuito interno. As instruções opcionais 49.4 são as mesmas que para o 49. (INTEST, ID / USERCODE, RUNBIST, CLAMP, HIGHZ) e têm uma descrição idêntica, à qual se acrescentam as especificações relativas aos modos de operação que definem para o TBIC e os ABM : Os blocos principais A arquitectura básica definida pela norma 49.4, como se ilustra na figura 8., mostra que foram acrescentados dois blocos à infra-estrutura de teste 49. original, respectivamente o TBIC e os ABM. Estes blocos asseguram a característica principal do 49.4, que consiste em permitir a aplicação e captura de estímulos de teste analógicos. Cada um destes blocos compreende uma estrutura de comutação (que define a interligação entre os seus sinais de E/S) e uma estrutura de controlo (que define o modo de operação da estrutura de comutação), que serão agora analisados em detalhe O circuito de interface ao barramento de teste (TBIC) O TBIC estabelece as ligações entre o ATAP e as linhas do barramento interno de teste analógico. A norma 49.4 especifica que devem existir internamente pelo menos duas linhas analógicas de teste, AB e AB2, tal como se mostra na figura 8.. uando for este o caso, a estrutura de comutação do TBIC pode ser representada como se ilustra na figura 8.3. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.6

154 O teste misto com base na norma IEEE 49.4 Figura 8.3: Estrutura de comutação do TBIC. Os dez interruptores ilustrados na figura 8.3 (S a S) definem os sinais que estarão presentes no ATAP e nas linhas do barramento interno de teste analógico. Repare-se em particular que esta arquitectura de comutação do TBIC permite: Ligar AT / AT2 a VH / VL. Ligar AT / AT2 a AB / AB2. Ligar AT / AT2 à fonte interna de tensão VCLAMP. Efectuar uma representação, em um bit, da tensão em AT ou AT2 (através do resultado da sua comparação com a tensão de limiar VTH). O estado dos interruptores (aberto ou fechado) é definido pela estrutura de controlo do TBIC. Uma vez que nem todas as combinações são possíveis (ou legais), quatro bits são suficientes para seleccionar o modo de operação pretendido, como se ilustra na figura 8.4 (a norma define apenas dez combinações para o estado dos interruptores, que são capazes de satisfazer os requisitos básicos a que o TBIC dá resposta). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.7

155 O teste misto com base na norma IEEE 49.4 Figura 8.4: Estrutura de controlo do TBIC. A estrutura de controlo do TBIC faz parte do registo BS e a sua descrição pode resumir-se como se apresenta a seguir: Esta estrutura compreende quatro células (quatro bits), cada uma com um andar de captura / deslocamento e um andar de retenção, que não diferem significativamente da configuração típica para as células BS 49.. A principal diferença é a ausência de um multiplexador associado ao andar de retenção (à saída), que aqui não é necessário por estas células não terem uma entrada paralela exterior. A estas quatro células é dada a designação de CALIBRATE, CONTROL, DATA e DATA2. DATA e DATA2 capturam a representação em um bit das tensões presentes em AT e AT2, por comparação com VTH, enquanto CALIBRATE e CONTROL disponibilizam entradas de captura adicionais, de acordo com as condições específicas de cada circuito (a definir pelo projectista). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.8

156 O teste misto com base na norma IEEE 49.4 Os andares de retenção destas quatro células, em conjunto com as saídas MODE e MODE2 do descodificador de instruções, definem o modo de operação da estrutura de comutação do TBIC Os módulos periféricos analógicos (ABM) Os ABM constituem os blocos nucleares da arquitectura A aplicação de estímulos de teste e a captura de respostas através dos ABM tem lugar combinando o varrimento de vectores de teste digitais, através do registo BS, e os estímulos de teste analógico, através do ATAP. De forma semelhante ao que sucede com o TBIC, os ABM compreendem uma estrutura de comutação e uma estrutura de controlo, que em conjunto definem o fluxo de sinais analógicos de / para os pinos funcionais a que estão associados. A estrutura de comutação de cada ABM está representada na figura 8.5: Figura 8.5: Estrutura de comutação dos ABM. A estrutura de comutação apresentada compreende um comparador e seis interruptores, que no seu conjunto proporcionam a seguinte funcionalidade: Desligar o circuito interno do pino funcional. Controlar o pino a partir de AB (controlabilidade). Controlar AB2 a partir do pino (observabilidade). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.9

157 O teste misto com base na norma IEEE 49.4 Disponibilizar a representação em um bit da tensão presente no pino (por comparação com VTH). Ligar VH ou VL ao pino (para o teste de ligações na CCI). Ligar uma tensão de referência (gerada internamente) ao pino (útil para operações de teste paramétrico). A estrutura de controlo de cada ABM pode ser representada como se ilustra na figura 8.6: Figura 8.6: Estrutura de controlo dos ABM. Esta estrutura de controlo é semelhante à sua equivalente no TBIC e as suas características podem resumir-se como se apresenta da seguir: Compreende quatro células (quatro bits), cada uma com um andar de captura / deslocamento e um andar de retenção, exactamente como sucede no caso do TBIC. A estas quatro células é dada a designação de DATA, CONTROL, BUS e BUS2. DATA captura a representação em um bit da tensão presente no pino funcional, por comparação com VTH, enquanto as restantes células J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.

158 O teste misto com base na norma IEEE 49.4 disponibilizam entradas de captura adicionais, de acordo com as condições específicas de cada circuito (a definir pelo projectista). Os andares de retenção destas quatro células, em conjunto com as saídas MODE e MODE2 do descodificador de instruções, definem o modo de operação da estrutura de comutação do ABM O teste de ligações na CCI com o 49.4 A detecção de curto-circuitos e circuitos abertos, com o 49.4, é semelhante ao procedimento equivalente com o 49. e pode resumir-se como se apresenta a seguir: No caso de pinos digitais, os dados (bits do vector de teste) são carregados directamente nos DBM. No caso de pinos analógicos, os dados (bits do vector de teste) que determinam a aplicação das tensões VH ou VL aos pinos, são carregados nas células da estrutura de controlo dos ABM. A aplicação de vectores e captura de respostas inicia-se também aqui com a instrução SAMPLE / PRELOAD, para carregar o primeiro vector. Uma vez que os valores VH e VL são gerados internamente, todo o processo é exclusivamente digital (estímulos a aplicar e respostas a analisar) e realizado através do TAP. É particularmente importante realçar o facto de o teste de ligações na CCI recorrer apenas a vectores digitais, mesmo no que diz respeito às ligações entre pinos analógicos. Para além disso, são aplicáveis exactamente os mesmos algoritmos empregues no teste de ligações em CCI digitais, uma vez que: VH e VL são aplicadas nos pinos analógicos de acordo com a combinação (quatro bits) deslocada para a estrutura de controlo de cada ABM. As respostas presentes em cada pino analógico são convertidas para uma representação digital em um bit, através do comparador presente na estrutura de comutação de cada ABM (por comparação com VTH), que é lida através do andar de captura / deslocamento da célula DATA, pertencente à estrutura de controlo do ABM. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.

159 O teste misto com base na norma IEEE 49.4 O ATAP não é portanto usado para o teste de ligações na CCI, sendo apenas necessário quando se pretende efectuar a aplicação ou captura de sinais analógicos (e.g. no teste paramétrico), como teremos oportunidade de ver na próxima secção Medida de impedâncias com o 49.4 A medida de impedâncias requer já o uso do ATAP, em conjunto com o TBIC e os ABM, para efectuar a aplicação e captura de estímulos analógicos. Nesta secção apresentaremos apenas um exemplo de grande simplicidade, correspondente à medida de uma impedância presente entre um pino analógico e a massa, que pode ser efectuada através da configuração de teste ilustrada na figura 8.7. Figura 8.7: Configuração de teste para a medida de uma impedância entre pino analógico e massa. O procedimento de medida pode resumir-se como se segue: Uma corrente conhecida, de valor IT, é injectada através de AT e dos interruptores S5 e SB, atravessando a impedância cujo valor se pretende determinar (ZD). A tensão resultante VT é medida em AT2, que está ligado a ZD através de S6 e SB2. O valor de ZD pode então ser determinado como ZD = VT / IT. Repare-se que a margem de erro neste procedimento depende dos valores relativos da impedância que se pretende determinar (ZD), da impedância de entrada do voltímetro (ZV) e da impedância de cada interruptor presente no J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.2

160 O teste misto com base na norma IEEE 49.4 percurso de medida. O valor determinado para ZD será aceitável apenas se as seguintes assunções forem válidas: ZV >> ZS6 + ZSB2 (para garantir que a queda de tensão em S6 e SB2 é desprezável). ZV + ZS6 + ZSB2 >> ZD (para garantir que a percentagem de IT que não atravessa ZD é desprezável). Recomenda-se ao leitor que consulte o documento que define a norma 49.4, onde se apresentam outros exemplos de aplicação menos triviais Informações adicionais sobre o 49.4 Existem várias fontes de informação importantes em relação à norma IEEE 49.4 e aos problemas associados ao teste de circuitos mistos em geral. Atendendo à facilidade de consulta e à actualidade das referências disponíveis via Internet (apesar da sua frequente volatilidade), uma das mais relevantes é a da página do grupo de trabalho do IEEE que desenvolveu esta norma ( ilustrada na figura 8.8. Figura 8.8: Página do grupo de trabalho que desenvolveu a norma IEEE Outro importante recurso informativo neste domínio é a página da NORMATE ( ilustrada na figura 8.9. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.3

161 O teste misto com base na norma IEEE 49.4 Figura 8.9: Página da NORMATE. No que respeita a fontes impressas, a melhor referência é naturalmente o próprio documento que define a norma (49.4: Standard for a Mixed-Signal Test Bus), publicado pela IEEE Computer Society Prática São propostos três exercícios como complemento prático às noções apresentadas neste capítulo, todos eles relativos a uma infra-estrutura 49.4 simples que rodeia um circuito interno contendo duas funções identidade, uma no domínio analógico e a outra no domínio digital, tal como se ilustra na figura 8.. J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.4

162 O teste misto com base na norma IEEE 49.4 AB AB2 Entrada analógica AT AT2 ABM TBIC + - Circuito interno ABM DBM DBM Saída analógica Entrada digital Saída digital mux TDI Controlo BP Descodificador mux TDO Reg. instrução TMS TCK Controlador do TAP Controlo Figura 8.: Circuito misto com uma infra-estrutura Controlo da infra-estrutura de teste num CI 49.4 O objectivo principal deste exercício consiste em familiarizar os alunos com o funcionamento dos recursos internos disponíveis na infra-estrutura 49.4, através da escrita de um pequeno programa de teste. As seguintes recomendações deverão ser levadas em consideração: Definir o conteúdo das estruturas de controlo do TBIC e dos ABM, por forma a que o sinal presente em AT seja aplicado no pino de saída analógica e a que o sinal presente no pino de entrada analógica seja aplicado em AT2. Escrever um programa de teste (recorrendo às instruções suportadas pelo Tapper) que coloque a infra-estrutura 49.4 apresentada no modo de funcionamento pretendido, assumindo que se parte do estado TLR (Test Logic Reset). J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.5

163 O teste misto com base na norma IEEE Projecto da infra-estrutura de teste para um CI 49.4 O objectivo principal deste exercício consiste em proporcionar uma compreensão detalhada da arquitectura 49.4 ao nível do CI, através do projecto de uma versão simplificada da correspondente infra-estrutura de teste. As seguintes recomendações deverão ser levadas em consideração: Reaproveitando a especificação já apresentada para a implementação de uma infra-estrutura BST, identificar as modificações e acrescentos que deverão ter lugar para permitir a expansão do 49. para o 49.4, assumindo que todos os blocos analógicos (comparadores, fontes de tensão e interruptores) serão implementados externamente. Modificar a especificação PALASM disponível para a infra-estrutura 49. no sentido de acomodar os requisitos identificados na etapa anterior (escrever o código PALASM para as componentes digitais do TBIC, dos ABM e de todos os restantes acrescentos e modificações). Definir uma estratégia de validação e codificá-la numa secção de simulação a incluir na especificação PALASM desenvolvida na etapa anterior : Influência sobre o modelo do controlador ao nível da CCI Este exercício considera as instruções adicionais e os restantes recursos que serão necessários para lidar com cartas 49.4 (em relação aos que foram já referidos para as cartas 49.). As seguintes recomendações deverão ser levadas em consideração: Identificar os recursos adicionais que seriam necessários para permitir a especificação de um programa que verifique se o valor presente num pino analógico se encontra dentro de um intervalo ]V,V2[. Com base nas conclusões resultantes da etapa anterior, elaborar uma especificação sumária dos recursos adicionais que deveriam ser suportados (quer em termos de instruções Tapper quer no que respeita aos canais físicos de teste), no sentido de permitir a especificação e execução de programas de teste para CCI com J. M. Martins Ferreira - Universidade do Porto (FEUP / DEEC) 8.6

164 9. Referências O primeiro conjunto de referências apresentadas refere-se a livros que cobrem temas genéricos ou tópicos específicos tratados nos capítulos precedentes, que são então seguidos por uma lista de publicações recomendadas, disponíveis na forma de normas e artigos em revistas ou em conferências. 9.. Livros M. Abramovici, M. A. Breuer, A. D. Friedman, Digital Systems Testing and Testable Design, Computer Science Press, 99, ISBN , 653 pp. Conteúdo: Introduction Modeling Logic simulation Fault modeling Fault simulation Testing for single stuck faults Testing for bridging faults Functional testing Design for testability Compression techniques Built-in selftest Logic level diagnosis Self-checking design PLA testing System-level diagnosis. R. G. Bennetts, Design of Testable Logic Circuits, Addison- Wesley Publishing Company, 984, ISBN , 64 pp. Conteúdo: Digital testing: the need for testable designs Testability measurement: the CAMELOT approach Structured design techniques and self test Test generation for scan-designed circuits Practical guidelines for designing testable circuits Testable design: the future?. F. P. M. Beenker, R. G. Bennetts, A. P. Thijssen, Testability Concepts for Digital Ics: The Macro Test Approach, Kluwer Academic Publishers, 995, ISBN , 22 pp. Conteúdo: Introduction Defect-oriented testing Macro test: a framework for testable IC design Examples of leafmacro test techniques Scan chain routing with minimal test application time Test control block concepts Exploiting parallelism in leaf-macro access Timing aspects of CMOS VLSI circuits.

165 Referências H. Bleeker, P. van den Eijnden, F. de Jong, Boundary- Scan Test: A Practical Approach, Kluwer Academic Publishers, 993, ISBN , 225 pp. Conteúdo: PCB testing The boundary-scan test standard Hardware test innovations BST design languages PCB test strategy backgrounds Management aspects. L. Halbo, P. Ohlckers, Electronic Components, Packaging and Production, University of Oslo Press, 995, ISBN , 34 pp. (segunda edição) Conteúdo: Introduction Technologies for electronics: overview Materials and basic processes Components for electronic systems Printed wiring board PCB design Production of printed circuit boards Hybrid technology and multichip modules Micromachined devices. C. Maunder, The Board Designer's Guide to Testable Logic Circuits, Addison-Wesley Publishing Company, 99, ISBN , 92 pp. Conteúdo: Introduction to testing and testability Designfor-test techniques Boundary-scan Planning for design-fortest Test access techniques Designing self-testing products Component selection and design Circuit design Supplying power to the product Connector selection and layout Printed circuit layout Documentation. C. Maunder, R. Tulloss, The Test Access Port and Boundary- Scan Architecture, IEEE Computer Society Press, 99, ISBN , 372 pp. Conteúdo: Background Tutorial Applications to loadedboard testing Implementation examples and further applications Bibliography and reprints. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 9.2

166 Referências P. Mazumder, K. Chakraborty, Testing and Testable Design for High-Density Random-Access Memories, Kluwer Academic Publishers, 996, ISBN , 386 pp. Conteúdo: Introduction Electrical testing of faults Functional fault modeling and testing Technology and layout-related testing Built-in self-testing and design for testability Conclusion. A. Miczo, Digital Logic Testing and Simulation, John Wiley & Sons, 986, ISBN , 44 pp. Conteúdo: Introduction Combinational logic test Sequential logic test Simulation The automatic test pattern generator Automatic test equipment Design-fortest Memory system design and test Self-test and fault tolerance Functional test and other topics. W. Needham, Designer's Guide to Testable ASIC Devices, Van Nostrand Reinhold, 99, ISBN , 284 pp. Conteúdo: ASIC problems of today: or the cost of doing it wrong An overview of integrated-circuit logic testers Selection of processes, packages and vendors Tying together testing and design Design for testability Design and simulation for functionality, performance, and testing Review and conversion of test patterns Prototype generation Prototype verification Volume production Total system cost Special considerations. K. P. Parker, Integrating Design and Test: Using CAE Tools for ATE Programming, Computer Society Press of the IEEE, 987, ISBN , 44 pp. Conteúdo: Introduction A general model of a digital tester CAE workstations Simulators and the test problem Using a simulator for test development Translation issues Conclusion. J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 9.3

167 Referências K. P. Parker, The Boundary-Scan Handbook, Kluwer Academic Publishers, 992, ISBN , 262 pp. Conteúdo: Boundary-scan basics and vocabulary Boundaryscan testing Advanced boundary-scan testing Design for boundary-scan testing The future of boundary-scan. W. R. Simpson, J. W. Sheppard, System Test and Diagnosis, Kluwer Academic Publishers, 994, ISBN , 382 pp. Conteúdo: Introduction Maintainability: a historical perspective Field diagnosis and repair: the problem Bottom-up modeling for diagnosis System level analysis for diagnosis The information flow model System level diagnosis Evaluating system diagnosability Verification and validation Architectures for system diagnosis Inexact diagnosis Partitioning large problems Modeling temporal information Adaptive diagnosis Diagnosis: Art versus Science Normas e artigos em revistas ou conferências [Agra93] V. Agrawal, C. Kime, K. Saluja, A Tutorial on Built-In Self-Test Part : Principles, IEEE Design and Test of Computers, Março 993, pp , e A Tutorial on Built-In Self-Test Part 2: Applications, Junho 993, pp [Alve99a] Gustavo R. Alves, J. M. Martins Ferreira, From Design-for-Test to Design-for-Debug-and-Test: Analysis of Requirements and Limitations for 49., Proceedings of the VLSI Test Symposium (VTS 99), Dana Point (EUA), Abril de 999. [Alve99b] Gustavo R. Alves, J. M. Martins Ferreira, Using the BS Register for Capturing and Storing n-bit Sequences in Real Time, Proceedings of the European Test Workshop (ETW 99), Konstanz (Alemanha), Maio de 999. [Carb98] A. Carbine, D. Feltham, Pentium Pro Processor Design for Test and Debug, IEEE Design and Test of Computers, Julho-Setembro 998, pp J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 9.4

168 Referências [Chen9] Cheng, W. T., Lewandowski, J. L. and Wu, E. 99. Diagnosis for Wiring Interconnects. IEEE International Test Conference Proceedings, 99, pp [Eich77] E. Eichelberger, T. Williams, A Logic Design Structure for LSI Testability, Proceedings of the Design Automation Conference, 977, pp [Ferr93] J. M. Ferreira, M. G. Gericota, J. L. Ramalho e G. R. Alves, "BIST for 49.-Compatible Boards: A Low-Cost and Maximum-Flexibility Solution," Proceedings of the IEEE International Test Conference, Outubro 993, pp [Haye85] J. Hayes, Fault Modeling, IEEE Design and Test of Computers, Abril 985, pp [IEEE93] Test Technology Standards Committee of the IEEE Computer Society, IEEE Standard Test Access Port and Boundary-Scan Architecture, IEEE Std (inclui o IEEE Std 49.a-993), 993, ISBN [IEEE95] Test Technology Standards Committee of the IEEE Computer Society, IEEE Standard for Module Test and Maintenance Bus, IEEE Std , ISBN [IEEE99a] Test Technology Standards Committee of the IEEE Computer Society, IEEE Standard for a Mixed-Signal Test Bus, IEEE Std , 999. [IEEE99b] IEEE P5 Working Group, IEEE P5 Standard for Embedded Core Test, 999 ( [McCl85] E. McCluskey, Built-In Self-Test Techniques, IEEE Design and Test of Computers, Abril 985, pp. 2-28, e Built-In Self-Test Structures,, pp [Roth66] J. Paul Roth, Diagnosis of Automata Failure: A Calculus and a Method, IBM Journal, Julho 966, pp [Thom96] K. Thompson, Intel and the Myths of Test, IEEE Design and Test of Computers, Primavera 996, pp J. M. Martins Ferreira Universidade do Porto (FEUP / DEEC) 9.5

O teste misto (IEEE )

O teste misto (IEEE ) O teste misto (IEEE 1149.4) J. M. Martins Ferreira FEUP / DEEC - Rua Dr. Roberto Frias 4200-465 Porto - PORTUGAL Tel. 351-22-5081748 / Fax: 351-22-5081443 ([email protected] / http://www.fe.up.pt/~jmf) J. M.

Leia mais

Sistemas Digitais I LESI :: 2º ano. Introdução

Sistemas Digitais I LESI :: 2º ano. Introdução Sistemas Digitais I LESI :: 2º ano Introdução António Joaquim Esteves João Miguel Fernandes www.di.uminho.pt/~aje Bibliografia: capítulo 1, DDPP, Wakerly DEP. DE INFORMÁTICA ESCOLA DE ENGENHARIA UNIVERSIDADE

Leia mais

Teste de Circuitos Integrados PROF. PROTÁSIO DEE-UFPB

Teste de Circuitos Integrados PROF. PROTÁSIO DEE-UFPB Teste de Circuitos Integrados PROF. PROTÁSIO DEE-UFPB 2 DESIGN FOR TESTABILITY DISCIPLINA: TEEE TESTE DE CIRCUITOS INTEGRADOS Testabilidade (TESTABILITY) A noção de testabilidade é muito ampla e inclui

Leia mais

A representação de sistemas digitais. Circuitos combinatórios. Equações algébricas. Tabelas de verdade. Organização: Formas básicas de representação:

A representação de sistemas digitais. Circuitos combinatórios. Equações algébricas. Tabelas de verdade. Organização: Formas básicas de representação: ircuitos combinatórios Organização: ormas básicas de representação Síntese por mapas de Karnaugh Projectos com blocos SSI / MSI nálise e teste ircuitos combinatórios - representação de sistemas digitais

Leia mais

Circuitos sequenciais síncronos

Circuitos sequenciais síncronos Circuitos sequenciais síncronos Considerações gerais Modelos de Mealy e de Moore Projecto de circuitos sequenciais síncronos Usando lógica discreta Usando ROMs 2 1 Um contador ou um registo como os que

Leia mais

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL Sistemas Digitais MEMÓRIAS -! SUMÁRIO:! MEMÓRIAS INTEGRADAS! RAMs! ROMs! LÓGICA PROGRAMÁVEL! PROMs! PLAs! PALs! FPGAs! IMPLEMENTAÇÃO DE MÁQUINAS DE ESTADO UTILIZANDO

Leia mais

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL Setembro de 4 MEMÓRIAS - SUMÁRIO: MEMÓRIAS INTEGRADAS RAM ROM PROM EPROM LÓGICA PROGRAMÁVEL PLAs PALs FPGAs Setembro de 4 MEMÓRIAS - MEMÓRIAS Na sequência do

Leia mais

Circuitos sequenciais síncronos

Circuitos sequenciais síncronos Circuitos sequenciais síncronos Considerações gerais Modelos de Mealy e de Moore Projecto de circuitos sequenciais síncronos Usando lógica discreta Usando ROMs 2 1 Um contador ou um registo como os que

Leia mais

Sistemas Digitais (SD) Síntese de Circuitos Sequenciais: Definições

Sistemas Digitais (SD) Síntese de Circuitos Sequenciais: Definições Sistemas Digitais (SD) Síntese de Circuitos Sequenciais: Definições Aula Anterior Na aula anterior: Contadores síncronos Contadores de módulo 2 n Projecto de contadores Frequência máxima de funcionamento

Leia mais

O Mundo Real é Analógico ou Digital?

O Mundo Real é Analógico ou Digital? Analógico / Digital O Mundo Real é Analógico ou Digital? O que define uma grandeza analógica? Os sinais analógicos podem tomar qualquer valor num intervalo contínuo de tensão, corrente, resistência ou

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 2.0 - Português Aula N o 18: Título: Sumário: Síntese de Circuitos Sequenciais: Minimização do Número de Estados Especificação e projecto

Leia mais

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Capítulo 3 Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Objectivos Conhecer alguns dos principais circuitos digitais sequenciais

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar - Aula 1 - O NÍVEL DA LÓGICA DIGITAL 1. INTRODUÇÃO Na parte inferior da hierarquia da figura abaixo encontramos o nível da lógica digital, o verdadeiro hardware do computador. Este nível situa-se na fronteira

Leia mais

1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO Bases de Numeração Representação de Números em Base 2 5

1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO Bases de Numeração Representação de Números em Base 2 5 PREFÁCIO 1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO 1 1.1 Bases de Numeração 3 1.1.1 Representação de Números Inteiros em Base b 3 1.1.2 Representação de Números em Base 2 5 1.1.3 Representação de Números Fraccionários

Leia mais

Sistemas Digitais (SD)

Sistemas Digitais (SD) Sistemas Digitais (SD) Síntese de Circuitos Sequenciais: Minimização do Número de Estados S1 S2 S3 S4 S5 S6 S1-S3 S2-S4 S1-S5 S3-S5 S2-S6 S4-S6 S0 S1 S2 S3 S4 S5 Aula Anterior Na aula anterior: Definição

Leia mais

Projecto de Circuitos e Sistemas Digitais (MEEC1078) Mestrado em Engenharia Electrotécnica e de Computadores. (Informática Industrial)

Projecto de Circuitos e Sistemas Digitais (MEEC1078) Mestrado em Engenharia Electrotécnica e de Computadores. (Informática Industrial) Projecto de Circuitos e Sistemas Digitais (MEEC1078) Mestrado em Engenharia Electrotécnica e de Computadores (Informática Industrial) Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia

Leia mais

Dispositivos lógicos programáveis (DLP) Princípio de funcionamento dos DLP. DLPs: Extensão para circuitos sequenciais

Dispositivos lógicos programáveis (DLP) Princípio de funcionamento dos DLP. DLPs: Extensão para circuitos sequenciais Dispositivos lógicos programáveis (DLP) Organização: Princípio de funcionamento dos DLP Arquitectura de um componente típico: A 22V Metodologia de projecto com o PALASM A aplicação PALASM Um dado electrónico

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 3.0 - Português Aula N o 22: Título: Sumário: Máquinas de Estado Microprogramadas: Circuito de Dados e Circuito de Controlo Projecto de máquinas

Leia mais

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados.

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados. Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis slide 1 Temas abordados nesse capítulo: - Descrever as diferentes categorias de dispositivos de sistemas digitais. - Descrever os diferentes

Leia mais

Introdução aos circuitos integrados de aplicação específica

Introdução aos circuitos integrados de aplicação específica Introdução aos circuitos integrados de aplicação específica João Canas Ferreira 2007-09-17 Tópicos de Projecto de VLSI digital Assuntos Tópicos 1 2 Circuitos programáveis 3 Fluxo de projecto Contém figuras

Leia mais

Aula Expositiva 03. DCC 001 Programação de Computadores 2 o Semestre de 2011 Prof. Osvaldo Carvalho DCC

Aula Expositiva 03. DCC 001 Programação de Computadores 2 o Semestre de 2011 Prof. Osvaldo Carvalho DCC Aula Expositiva 03 2.2.5 Síntese de Circuitos Combinatórios (7 segmentos) 2.2.6 Multiplexadores e Demultiplexadores 2.3 Circuitos Sequenciais 2.3.1 Flip-flops e registradores 2.3.2 Barramentos e Controle

Leia mais

7. Hardware programável sequencial PAL sequencial Construção sequence present ATF750C

7. Hardware programável sequencial PAL sequencial Construção sequence present ATF750C 7. Hardware programável sequencial... 7-2 7.1 PAL sequencial... 7-2 7.2 Construção sequence present... 7-4 7.3 A750C... 7-5 7. HARDWARE PROGRAMÁVEL SEQUENCIAL Como anteriormente podemos observar na estrutura

Leia mais

Introdução aos Circuitos Integrados de Aplicação Específica

Introdução aos Circuitos Integrados de Aplicação Específica Introdução aos Circuitos Integrados de Aplicação Específica João Canas Ferreira Projecto de Circuitos VLSI FEUP/LEEC Contém figuras de Application-Specific Integrated Circuits, Michael J. S. Smith, Addison-Wesley

Leia mais

Trabalho Prático Nº3 Porta Paralela

Trabalho Prático Nº3 Porta Paralela Trabalho Prático Nº3 Porta Paralela 1. OBJECTIVOS - Utilização da porta paralela como porto genérico de Entrada e Saída. 2. INTRODUÇÃO A porta paralela é um meio frequentemente utilizado para efectuar

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Bloco I 11.º Ano Ficha de avaliação sumativa n.º 1 Duração: 50 min. + 50 min.

Leia mais

Parte # 2 - Circuitos Combinatórios

Parte # 2 - Circuitos Combinatórios CEFET Departamento de Engenharia Elétrica - DEPEL GELE 7163 Eletrônica Digital Parte # 2 - Circuitos Combinatórios 1 GELE 7163 Eletrônica Digital 2 Referências : Notas de Aula. Mendonça, Alexandre e Zelenovsky,

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 4.0 - Português Aula N o 23: Título: Sumário: Máquinas de Estado Microprogramadas: Endereçamento Expĺıcito/Impĺıcito Projecto de máquinas

Leia mais

Realização física de circuitos lógicos

Realização física de circuitos lógicos Realização física de circuitos lógicos Circuitos integrados digitais Famílias lógicas Níveis de tensão Atrasos Lógica positiva, negativa e de polaridade Realização usando ROMs 2 1 Acções e processamento

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Bloco I 11.º Ano Ficha de avaliação sumativa n.º 1 Duração: 50 min. + 50 min.

Leia mais

SISTEMAS DIGITAIS CIRCUITOS SEQUENCIAIS SÍNCRONOS

SISTEMAS DIGITAIS CIRCUITOS SEQUENCIAIS SÍNCRONOS IRUITOS SEQUENIIS SÍNRONOS Setembro de IRUITOS SEQUENIIS SÍNRONOS - 2 SUMÁRIO: IRUITOS E MOORE E MELY RTERIZÇÃO ESPEIFIÇÃO SÍNTESE ONVERSÃO EEMPLOS PROJETOS LTERNTIVOS FLIP-FLOP / ESTO UTILIZÇÃO E ONTORES

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Bloco I 11.º Ano Ficha de avaliação sumativa n.º 1 Duração: 50 min. + 50 min.

Leia mais

Sistemas Digitais (SD) Memórias

Sistemas Digitais (SD) Memórias Sistemas Digitais (SD) Memórias Aula Anterior Na aula anterior: Exemplo (Moore) Projecto de circuitos sequenciais baseados em contadores 2 Planeamento SEMANA TEÓRICA 1 TEÓRICA 2 PROBLEMAS/LABORATÓRIO 15/Fev

Leia mais

Sistemas Digitais Registos. João Paulo Carvalho

Sistemas Digitais Registos. João Paulo Carvalho Sistemas Digitais Registos João Paulo arvalho Registos Um FF permite memorizar um bit. Um Registo é um circuito que permite memorizar um conjunto de bits. registo permite tratar esse conjunto de bits como

Leia mais

Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuito de Dados e Circuito de Controlo

Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuito de Dados e Circuito de Controlo Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuito de Dados e Circuito de Controlo Aula Anterior Na aula anterior: Memórias: Circuitos e tecnologias de memória: o RAM: Estática Dinâmica

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Bloco I 11.º Ano Ficha de avaliação sumativa n.º 1 Duração: 50 min. + 50 min.

Leia mais

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações REGISTRADORES. Marcos Moecke. São José - SC,

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações REGISTRADORES. Marcos Moecke. São José - SC, MINISTÉRIO DA EDUCAÇÃO - Unidade de São José Curso Técnico em Telecomunicações REGISTRADORES Marcos Moecke São José - SC, 24-2 SUMÁRIO 6. REGISTRADORES... 1 6.1 REGISTRADORES DO TIPO PORTA PARALELA...1

Leia mais

Revisão de Circuitos Digitais

Revisão de Circuitos Digitais Revisão de Circuitos Digitais Adaptações Prof. José Artur Quilici-Gonzalez Elementos de Eletrônica Digital Idoeta e Capuano Embedded System Design Vahid e Givargis Logic and Computer Design undamentals

Leia mais

Laboratório 6 (Trabalho com Relatório) Semana 25 de Outubro a 29 de Outubro

Laboratório 6 (Trabalho com Relatório) Semana 25 de Outubro a 29 de Outubro Laboratório 6 (Trabalho com Relatório) Semana 25 de Outubro a 29 de Outubro Realização de módulo somador-subtractor. Utilização de ambiente Xilinx WebPack de edição de esquemáticos e simulação. Realização

Leia mais

Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Microprograma

Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Microprograma Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Microprograma Aula Anterior Na aula anterior: Projecto de máquinas de estados microprogramadas: Circuito de dados Circuito de controlo Implementação

Leia mais

Dispositivo Lógico Programável(PLD)

Dispositivo Lógico Programável(PLD) Dispositivo Lógico Programável(PLD) Para reduzir o número de CI's(Circuitos Integrados) a serem usados num projeto digital, é necessário colocar mais funções em um mesmo chip. Isso tem sido feito com evolução

Leia mais

SSC0112 Organização de Computadores Digitais I

SSC0112 Organização de Computadores Digitais I SSC2 Organização de Computadores Digitais I 4ª Aula Revisão de Lógica Digital Profa. Sarita Mazzini Bruschi [email protected] Aula ministrada por Prof. Paulo Sergio Lopes de Souza Revisão de Lógica Digital

Leia mais

CIRCUITOS SEQUENCIAIS. Adão de Melo Neto

CIRCUITOS SEQUENCIAIS. Adão de Melo Neto CIRCUITOS SEQUENCIAIS Adão de Melo Neto 1 EMENTA DEFINIÇÃO FLIP-FLOP SR FLIP-FLOP SR COM ENTRADA DE CLOCK FLIP-FLOP D COMPARAÇÃO DOS FLIP-FLOPS FLIP-FLOP X LATCH FLIP FLOP JK FLIP-FLOP D A PARTIR DO JK

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA

UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA UNIVERSIDADE FEDERAL DO PARANÁ SETOR DE CIÊNCIA E TECNOLOGIA ENGENHARIA ELÉTRICA RELATÓRIO CONTADOR DE 6 BITS PROGRAMÁVEL Trabalho apresentado à disciplina de Projeto de Circuitos Integrados Digitais,

Leia mais

Sistemas Digitais (SD) Contadores

Sistemas Digitais (SD) Contadores Sistemas Digitais (SD) Contadores Aula Anterior Na aula anterior: Registos Registos simples Banco de registos Registos de deslocamento Registos multimodo 2 Planeamento SEMANA TEÓRICA TEÓRICA 2 PROBLEMAS/LABORATÓRIO

Leia mais

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom) UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Departamento de Engenharia Informática Arquitectura de Computadores (ACom) LEIC-A, MEIC-A Acetatos das Aulas Teóricas Versão 1.0 - Português Aula

Leia mais

Hardware Reconfigurável

Hardware Reconfigurável Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto

Leia mais

ENGC40 - Eletrônica Digital

ENGC40 - Eletrônica Digital ENGC40 - Eletrônica Digital 1 a Lista de Exercícios Prof. Paulo Farias 1 de setembro de 2011 1. A Figura 1 mostra um circuito multiplicador que recebe dois números binários x 1 x 0 e y 1 y 0 e gera a saída

Leia mais

Sistemas Digitais (SD)

Sistemas Digitais (SD) Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuitos de Controlo, Transferência e Processamento de Dados Entradas de controlo Saídas de controlo Unidade de controlo Palavra de controlo

Leia mais

Registos. Registos de dados ( registers )

Registos. Registos de dados ( registers ) ESTV-ESI-Sistemas Digitais-Registos 1/9 Registos Registos de dados ( registers ) Os registos de dados são circuitos constituídos por um determinado número de flip-flops, normalmente do tipo D, com entradas

Leia mais

FPGA & VHDL. Tutorial

FPGA & VHDL. Tutorial FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves

Leia mais

Álgebra Booleana. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Álgebra Booleana. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática Arquitectura de Computadores I Engenharia Informática (11537) Tecnologias e Sistemas de Informação (6616) Álgebra Booleana Nuno Pombo / Miguel Neto Arquitectura Computadores I 2014/2015 1 Nas primeiras

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 2.0 - Português Aula N o 23: Título: Sumário: Máquinas de Estado Microprogramadas: Circuitos de Controlo, Transferência e Processamento de

Leia mais

Circuitos combinatórios. (Revisão)

Circuitos combinatórios. (Revisão) Circuitos combinatórios (Revisão) João Canas Ferreira Arquitectura de Computadores FEUP/MIEIC Contém figuras de Computer Organization and Design, D. Patterson & J. Hennessey, 3 a ed., MKP Tópicos Modelação

Leia mais

9. Hardware programável sequencial

9. Hardware programável sequencial 9. Hardware programável sequencial... 9-2 9. HARDWARE PROGRAMÁVEL SEQUENCIAL Como anteriormente podemos observar na estrutura PAL descrita no capítulo 5, a saída da função que é posta disponível num pino

Leia mais

Sistemas Digitais (SD)

Sistemas Digitais (SD) Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuitos de Controlo, Transferência e Processamento de Dados Entradas de controlo Saídas de controlo Unidade de controlo Palavra de controlo

Leia mais

PCS 2304 PROJETO LÓGICO DIGITAL 19/05/2006 Gabarito Preliminar 6 a Lista de Exercícios Contadores

PCS 2304 PROJETO LÓGICO DIGITAL 19/05/2006 Gabarito Preliminar 6 a Lista de Exercícios Contadores PCS 24 PROJETO LÓGICO DIGITAL 9/5/26 Gabarito Preliminar 6 a Lista de Exercícios Contadores ) Contador em anel. A Figura apresenta um contador em anel torcido semelhante aos vistos anteriormente em aula,

Leia mais

Instalação e Manutenção de Computadores Sandra Silva

Instalação e Manutenção de Computadores Sandra Silva Instalação e Manutenção de Computadores Sandra Silva 2010 Unicenter. Todos os direitos reservados Hardware vs software Hardware É a parte física do computador, ou seja, o conjunto de dispositivos responsáveis

Leia mais

Dispositivos de Lógica Programável

Dispositivos de Lógica Programável Dispositivos de Lógica Programável Evolução Válvula no início de 1940 Transistor em 1947 Não aquece como as válvulas Fisicamente menor 1961 primeiro integrado TTL 74LSXX Década de 1970 surge SPLD Simple

Leia mais

CURSO DE ELETRÔNICA DIGITAL OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS

CURSO DE ELETRÔNICA DIGITAL OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS LIÇÃO 7 OS FLIP-FLOPS E FUNÇÕES LÓGICAS EM CIRCUITOS INTEGRADOS Na lição anterior aprendemos como funcionam os principais tipos de flip-flops, verificando que, dependendo dos recursos que cada um possua,

Leia mais

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2012 RESUMO Nesta experiência será apresentada uma metodologia estruturada para projeto de sistemas digitais utilizando FPGAs

Leia mais

SISTEMAS DIGITAIS II Enunciados de Laboratório

SISTEMAS DIGITAIS II Enunciados de Laboratório SISTEMAS DIGITAIS II Enunciados de Laboratório Prof. José Sousa 2003/2004 JS/04 0 Sumário Trabalho - Memórias RAM... 2 Trabalho 2 - Memórias EPROM... 3 Trabalho 3 - Circuitos Sequenciais Síncronos Realização

Leia mais

Componentes Programáveis. PLD, CPLD e FPGAs. pelo Utilizador. José Miguel Vieira dos Santos. JMVS - SACP

Componentes Programáveis. PLD, CPLD e FPGAs. pelo Utilizador. José Miguel Vieira dos Santos. JMVS - SACP Componentes Programáveis pelo Utilizador PLD, CPLD e FPGAs José Miguel Vieira dos Santos [email protected] JMVS - SACP 2005 1 PLD- Progammable Logic Devices O termo PLD abrange uma vasta gama de componentes

Leia mais

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v CIRCUITOS SEQUENCIAIS ESTRUTURA GERAL Varáveis de entrada Variáveis de saída Variáveis de estado Circ. combinatório Memória Circuito Combinatório Memória Actual Seguinte CIRCUITOS SEQUENCIAIS Exemplo :

Leia mais

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2013 RESUMO Nesta experiência será desenvolvido um projeto de sistema digital em um dispositivo programável (FPGA) com a

Leia mais

Trabalho Prático Nº 8

Trabalho Prático Nº 8 ESTV-ESI-Sistemas Digitais-Trabalho Prático Nº8 /7 Trabalho Prático Nº 8 Projecto de um controlador de semáforos V2 S2 V S S GY R S2 R2 Y2 G2 Especificações funcionais: Controlador de semáforos de um cruzamento

Leia mais

Os computadores necessitam de uma memória principal, cujo papel primordial é armazenar dados e programas que estejam a ser utilizados no momento.

Os computadores necessitam de uma memória principal, cujo papel primordial é armazenar dados e programas que estejam a ser utilizados no momento. Memórias Os computadores necessitam de uma memória principal, cujo papel primordial é armazenar dados e programas que estejam a ser utilizados no momento. O computador, além da memória principal, necessita

Leia mais

Lic. Engenharia de Sistemas e Informática

Lic. Engenharia de Sistemas e Informática Conceitos de Sistemas Informáticos Lic. Engenharia de Sistemas e Informática 1º ano 2004/05 Luís Paulo Santos (baseado no trabalho de A.J.Proença) Módulo Arquitectura de Computadores LPSantos, CSI: Arquitectura

Leia mais

11/12/10. Básculas Flip-flops. Mário Serafim Nunes Guilherme Silva Arroz. Sistemas Digitais - Taguspark

11/12/10. Básculas Flip-flops. Mário Serafim Nunes Guilherme Silva Arroz. Sistemas Digitais - Taguspark Básculas Flip-flops Sinal de relógio Básculas actualizadas no flanco Flip-flops master-slave Flip-flops edge-triggered Flip-flops SR, D, JK e T Entradas directas Características temporais 2 1 Um circuito

Leia mais

Estrutura e Funcionamento do Computador

Estrutura e Funcionamento do Computador Estrutura e Funcionamento do Computador Um computador funciona com dois tipos de componentes essenciais: Hardware Software 2 Hardware São todos os componentes físicos (pode ser visto e tocado) de um computador.

Leia mais