a Sistemas Sequenciais - INESC-ID

Transcrição

a Sistemas Sequenciais - INESC-ID
UNIVERSIDADE TÉCNICA DE LISBOA
Instituto Superior Técnico
Aplicação da Abordagem de Auto-Teste
Integrado Baseado em Máscaras (m-BIST) a
Sistemas Sequenciais
Fernando Manuel da Costa Guerreiro
(Licenciado)
Dissertação para a Obtenção de Grau de Mestre em Engenharia
Electrotécnica e de Computadores
DOCUMENTO PROVISÓRIO
Orientador Científico: Prof. João Paulo Cacho Teixeira
Janeiro de 2006
aos meus pais,
com amor.
Agradecimentos
O trabalho que apresento nesta tese foi orientado pelo Professor João Paulo Cacho
Teixeira. A ele gostaria de expressar o meu profundo agradecimento, pelo precioso auxílio e
encorajamento, nas diferentes etapas deste trabalho.
Agradeço também, de forma especial, ao Professor Marcelino Santos pela sua
disponibilidade, dedicação e constante simpatia patentes ao longo de todo o período que
permaneci no Inesc-ID.
Quero igualmente deixar um agradecimento aos meus amigos e colegas, no Inesc-ID,
nomeadamente o Pedro Bento, pelo seu companheirismo, o Leong, pela sua singularidade, o
Victor Martins pela sua boa disposição, o Nelson, pois também não conheço outro igual e ao
Abílio, principalmente pela sua disponibilidade em ajudar e ser prestável. Agradeço-vos pelo
bom ambiente que criamos e no qual convivemos.
Agradeço à minha família, especialmente aos meus pais, pela sua disponibilidade e
atenção, pelo carinho, pela paciência que tiveram e têm comigo. Eu sou o que eles me
ensinaram.
Agradeço à Marisa, minha namorada, pelo apoio e força que me tem dado neste tempinho
que já estamos juntos.
Agradeço ao Inesc-ID Lisboa pelas condições proporcionadas e que foram
imprescindíveis para a realização do Projecto.
v
Resumo
Sistemas electrónicos complexos, tais como SoC (Systems on a Chip), realizados em
tecnologias de resolução nanométrica, requerem técnicas inovadoras de auto-teste integrado
(BIST, Built-In Self Test), que conduzam a uma cobertura de faltas dinâmicas elevada. As
restrições de consumo de potência e de energia (especialmente para aplicações de
equipamento móvel) necessitam de soluções BIST com sessões muito curtas. O objectivo
desta tese de Mestrado é o desenvolvimento de uma nova metodologia BIST de alta qualidade
para sistemas digitais sequenciais, e a sua aplicação no contexto do projecto de um produto
industrial.
A metodologia de BIST que se propõe é uma extensão (para sistemas sequenciais) de uma
metodologia anteriormente proposta. A metodologia de BIST baseada em mascaras (m-BIST)
identifica, a nível RTL (Register-Transfer Level), partes da funcionalidade difíceis de testar
com padrões de teste pseudo-aleatório, e gera vectores de entrada parcialmente
especificados (designados como máscaras), que forçam essa funcionalidade difícil de testar.
Explora a correlação entre a detecção múltipla de faltas RTL e a detecção singular de faltas
estruturais (tais como faltas do tipo linha Fixa-A (LSA (Line Stuck-AT)), a fim de
desenvolver, a nível RTL, soluções BIST que asseguram elevada cobertura de defeitos físicos.
A metodologia m-BIST proposta para sistemas sequenciais é uma técnica de teste ao ritmo do
relógio (test-per-clock) que não reconfigura o CUT (Circuit Under Test) em modo de BIST.
Esta característica permite realizar auto-teste à frequência nominal do relógio (at-speed
testing) e deverá conduzir a uma cobertura elevada de faltas dinâmicas, já que as
propriedades temporais do CUT não são modificadas significativamente no modo de autoteste. A metodologia explora duas abordagens – a baseada em simulação (com a ferramenta
VeriDOS) e a probabilística (com a ferramenta ASCOPA). Permite uma injecção de faltas
RTL quasi automática, a identificação e remoção de eventuais erros de projecto e a
identificação de problemas de testabilidade. A ferramenta ASCOPA gera automaticamente as
máscaras. Desenvolve-se uma nova técnica de injecção de máscaras, que permite a
realização de experiências de simulação de faltas a nível RTL e a reconfiguração de código
RTL, de tal forma que, quando o nível de testabilidade especificado é atingido, se dispõe de
uma descrição RTL do CUT e funcionalidade de m-BIST pronta para a síntese lógica. A
validação da qualidade da solução de auto-teste é realizada, a nível lógico, com recurso a
uma ferramenta de simulação de faltas comercial (Verifault™, da Cadence). A metodologia
foi incorporada no fluxo de projecto do parceiro industrial (Tecmic).
A metodologia m-BIST proposta é explicada com recurso a um circuito de referência de
reduzida complexidade (b13, do conjunto de ITC’99) e demonstrada usando o projecto
indutrial de um PIC, controlador de um contador estático de energia eléctrica. Mostra-se que
se podem desenvolver soluções m-BIST para sistemas sequenciais com elevada eficácia de
teste, sobrecarga de teste limitada (área e desempenho), comprimento de teste reduzido e
consumo de potência similar ao que se obtém com teste pseudo-aleatório.
Palavras-chave –Nível RTL, m – BIST, Teste de Circuitos Integrados, Geração de Padrões de
Teste, Inserção de Pontos de Teste, Coberturas de Faltas.
vii
Abstract
Complex electronic systems, such as SoC (Systems on a Chip), using nanometer technologies,
require innovative BIST (Built-In Self Test) techniques allowing very high coverage of
dynamic faults. Power and energy requirements (especially for mobile equipment) quest for
short BIST sessions. The purpose of this M.Sc work is the development of a new high-quality
BIST methodology for sequential digital systems and its application in the context of an
industrial design.
The proposed BIST methodology is an extension to sequential systems of a previously
proposed methodology (m-BIST). The masked-based (m-BIST) methodology identifies, at RTL
(Register-Transfer Level), parts of the functionality hard to test with pseudo-random (PR) test
patterns, and generates partially specified input vectors (referred as masks), which force the
activation of such hard functionality. It exploits the correlation between n-detection of RTL
faults and single detection of structural faults (like single LSA (Line Stuck-AT) faults) to
derive, at RTL, BIST solutions, which lead to high coverage of physical defects.
The proposed m-BIST methodology for sequential systems is a test-per-clock technique, which
does not reconfigure the CUT (Circuit Under Test) in BIST mode. This feature allows atspeed testing, and it is expected to lead to high coverage of dynamic faults, as the timing
properties of the CUT are not significantly modified in self-test mode. The methodology
exploits two approaches, simulation-based (with the VeriDOS tool), and probabilistic-based
(with the ASCOPA tool) approaches. It allows almost automatic RTL fault injection, the
identification and removal of design flaws and the identification of testability problems. The
ASCOPA tool automatically performs mask generation. A novel mask injection technique has
been developed, which allows RTL fault simulation experiments and RTL code
reconfiguration, in such a way that, when the specified testability level is reached, an RTL
description of the CUT and m-BIST functionality is ready for logic synthesis. The assessment
of the self-test solution quality is performed at logic level, using a commercial fault
simulation tool (Verifault™, from Cadence). The methodology has been incorporated in the
industrial partner (Tecmic) design flow.
The proposed m-BIST methodology is explained using a low-complexity benchmark circuit
(b13, from Torino’s ITC’99 suite), and demonstrated using an industrial design a PIC
controller of an electronic electric power meter for tele-counting applications. It is shown
that m-BIST solutions for sequential systems can be derived with high test effectiveness,
limited test overhead (area, and speed), short test length and test power similar to the one
obtained with PR testing.
Keywords –RT-level, m – BIST, IntegratedCircuits Test, Test Pattern Generation, Test Point
Insertion, Fault Coverage.
ix
ÍNDICE
1. INTRODUÇÃO ....................................................................................................... 1
1.1. Identificação do Problema................................................................................................ 5
1.2. Contexto do Trabalho ....................................................................................................... 8
1.3. Objectivos........................................................................................................................... 8
1.4. Contribuições Originais.................................................................................................. 10
1.5. Roteiro da Tese ................................................................................................................ 11
2. AUTO-TESTE INTEGRADO DE ALTA QUALIDADE.......................................... 13
2.1. Características Valorizadas e Métricas de Qualidade ................................................. 15
2.2. Arquitectura-base de Auto-Teste Integrado (BIST) .................................................... 17
2.2.1. Gerador de Vectores de Teste (TPG) ......................................................................... 18
2.2.2. Analisador de Assinatura (SA)................................................................................... 21
2.2.3. Controlador de Teste .................................................................................................. 25
2.3. Técnicas Básicas de BIST ............................................................................................... 25
2.3.1. Test-Per-Clock ........................................................................................................... 26
2.3.2. Test-Per-Scan ............................................................................................................. 27
2.4. BIST Determinístico........................................................................................................ 28
2.4.1. Geração Pseudo-aleatória Ponderada (WPR)............................................................. 30
2.4.2. Geração Pseudo-aleatória com Re-semeadura (Reseeding) ....................................... 30
2.4.3. Geração com Comutação de Registo (Bit-flipping) ................................................... 31
2.4.4. Geração com Fixação de Registo (Bit-fixing) ............................................................ 32
2.5. Metodologia m-BIST para Circuitos Combinatórios .................................................. 33
2.5.1. Abordagem de Simulação. Ferramenta VeriDOS ...................................................... 37
2.5.1.1. Subconjunto Verilog ........................................................................................... 37
2.5.1.2. Modelo de Faltas em RTL................................................................................... 38
2.5.1.3. Faltas do Tipo Linha Fixa-A (LSA).................................................................... 39
2.5.1.4. Faltas em Operadores .......................................................................................... 40
2.5.1.4.1. Operadores Aritméticos............................................................................. 40
2.5.1.4.2. Operadores Relacionais............................................................................. 43
2.5.1.4.3. Operador Condicional ............................................................................... 44
2.5.1.5. Faltas do tipo Anulação do Código (Null Statement).......................................... 44
2.5.1.6. Faltas em Condições IF/ELSE ............................................................................ 44
2.5.1.7. Faltas em Alternativas CASE.............................................................................. 45
2.5.1.8. Faltas em Ciclos FOR ......................................................................................... 45
2.5.1.9. Modelos de Faltas e Classes de Faltas Injectadas ............................................... 46
2.5.2. Abordagem Probabilística. Ferramenta ASCOPA ..................................................... 46
2.5.2.1. Abordagem Probabilística da Acessibilidade...................................................... 46
2.5.2.2. Ferramenta ASCOPA.......................................................................................... 48
xi
2.5.3. Injecção de Máscaras em CUT Combinatórios.......................................................... 51
2.6. Conclusões........................................................................................................................ 53
3. METODOLOGIA M-BIST PARA CIRCUITOS SEQUENCIAIS............................ 54
3.1. Princípios Subjacentes da Metodologia......................................................................... 54
3.2. Métricas de Testabilidade a Nível RTL......................................................................... 56
3.2.1. Acessibilidade de Variáveis RTL............................................................................... 57
3.2.2. Detecção Múltipla e Métricas de Testabilidade a Nível RTL .................................... 57
3.2.3. Graus de Testabilidade ............................................................................................... 62
3.2.4. Significado das Métricas de Testabilidade nas Condições......................................... 64
3.3. Linhas Gerais da Metodologia m-BIST para CUT Sequenciais ................................. 65
3.3.1. Metodologia de Geração de Padrões de Teste ........................................................... 70
3.3.2. Identificação de Cantos Escuros ................................................................................ 70
3.3.3. Geração de Máscaras.................................................................................................. 71
3.4. 1º. Ciclo: Preparação do Teste. Injecção de Faltas a Nível RTL ................................ 72
3.4.1. Alteração ao Código RTL Comportamental .............................................................. 73
3.4.1.1. Condições IF/ELSE............................................................................................. 73
3.4.1.2. Condições CASE................................................................................................. 75
3.4.1.3. Operador Soma ou Subtracção............................................................................ 75
3.4.2. Ferramenta RTL2FO (RTL to Fault-Oriented) ......................................................... 75
3.5. 1º. Ciclo: Preparação do Teste. Injecção de Máscaras ................................................ 78
3.5.1. BIST_C (Controlador de BIST e Injector de Máscaras) ............................................ 81
3.5.2. Lógica de Mascaramento de Entradas Primárias [P.I.] .............................................. 83
3.5.3. Lógica de Mascaramento de Entradas Secundárias [S.I.] .......................................... 84
3.6. 1º Ciclo: Preparação do Teste. Inserção de Pontos de Teste (TPI)............................. 86
3.7. 2º. Ciclo: Implantação do Auto-teste. Síntese Lógica. Validação da Qualidade do
Teste......................................................................................................................................... 86
3.8. Modificação do Fluxo de Projecto ................................................................................. 89
3.9. Conclusões........................................................................................................................ 91
4. EXEMPLO DE APLICAÇÃO: CIRCUITO DE REFERÊNCIA B13....................... 93
4.1. Funcionalidade ................................................................................................................ 93
4.2. 1º. Ciclo. Erros de Projecto ............................................................................................ 94
4.3. 1º. Ciclo: Preparação de Auto-teste a Nível RTL ......................................................... 95
4.4. 2º. Ciclo: Implantação de M-BIST............................................................................... 108
4.5. Conclusões...................................................................................................................... 111
xii
5. DEMONSTRAÇÃO DE RESULTADOS. PIC DE UM CONTADOR ESTÁTICO DE
ENERGIA ............................................................................................................... 115
5.1. Funcionalidade .............................................................................................................. 115
5.2. 1º. Ciclo: Erros de Projecto .......................................................................................... 117
5.3. 1º. Ciclo: Preparação de Auto-teste a Nível RTL ....................................................... 117
5.4. 2º. Ciclo: Implantação de M-BIST............................................................................... 134
5.5. Conclusões...................................................................................................................... 136
6. CONCLUSÕES .................................................................................................. 138
6.1. Conclusões...................................................................................................................... 138
6.2. Trabalho Futuro............................................................................................................ 140
7. BIBLIOGRAFIA.................................................................................................. 143
xiii
Lista de Figuras
Figura 2-1 – Arquitectura base de uma solução de auto-teste integrado (BIST)
17
Figura 2-2 – LFSR standard. ..........................................19
Figura 2-3 – LFSR modular. ...........................................19
Figura 2-4 – Esquema de um LFSR que gera 28 – 1 vectores de 8 bits
20
Figura 2-5 – Analisador de assinatura de m - bits ............23
Figura 2-6 - Estrutura MISR para um circuito com m saidas
23
Figura 2-7 – Test_per_clock de um sistema integrado com (a) um número reduzido e (b) um número
elevado de entradas.........................................................26
Figura 2-8 – Esquema de blocos de uma estrutura de test-per-scan.
27
Figura 2-9 – Registo de teste. .........................................28
Figura 2-10 – Arquitectura para implementação da técnica Test-per-Scan 32
Figura 2-11 – Arquitectura para adoptar a técnica de Bit Fixing em cadeias de Scan 33
Figura 2-12 – Implementação de diffi e de bori ...............43
Figura 2-13 – Esquema referente a um bit de uma saída observável
yj
.
50
Figura 2-14 – Arquitectura de aplicação da metodologia m-BIST a CUT combinatórios [26].
51
Figura 2-15 – Diagrama de blocos da funcionalidade MMIC [26]. 52
Figura 2-16 - Características dos MUT e das máscaras utilizadas [26].
53
Figura 3-1 – Controlabilidade de faltas RTL no circuito b10, com N=5000. 59
Figura 3-2 – Detectabilidade (n=5) de faltas RTL no circuito b10, com N=5000.
59
Figura 3-3 – Parte do diagrama de estados de uma FSM, ilustrando múltiplas activações.
60
Figura 3-4 – Resultados de Controlabilidade obtidos para o b10 com o VeriDOS e com o ASCOPA. 61
Figura 3-5 - As quatro situações distintas em função dos valores das métricas
63
Figura 3-6 – Fluxograma da metodologia m-BIST proposta66
Figura 3-7 – Faltas em condições IF ...............................74
Figura 3-8 – Interface da ferramenta RTL2FO ................76
Figura 3-9 – Diagrama de fluxos da ferramenta RTL2FO 77
Figura 3-10 – Arquitectura de BIST................................79
Figura 3-11 – Arquitectura de BIST para injectar máscaras em circuitos sequenciais
79
xv
Figura 3-12 – Mascaramento das S.I.s do CUT ...............80
Figura 3-13 - Interface da lógica de mascaramento, para forçar um valor numa variável genérica
83
Figura 3-14 – Funcionalidade quando se injecta um (‘1’) 84
Figura 3-15 – Funcionalidade quando se injecta um (‘0’) 84
Figura 3-16 – Interface da lógica de mascaramento, para forçar mais do que um valor numa variável RTL
genérica ..........................................................................84
Figura 3-17 – Excerto de código reconfigurado para injecção de máscaras para o caso do CUT b13. 85
Figura 3-18 – Fluxo de projecto de ASICs da Tecmic, incluindo a inserção de m-BIST a nível RTL. 90
Figura 4-1– Interface do circuito de referência b13. ........93
Figura 4-2 – Interacção entre as 4 máquinas de estado do circuito de referência b13 94
Figura 4-3 – Evolução da FC em função da periodicidade do sinal Reset
96
Figura 4-4 – Arquitectura da metodologia para injecção de máscaras com m-BIST e CUT sequencial.
..................................................................................... 104
Figura 4-5 – Gráfico da cobertura de faltas FC(n) após a injecção das máscaras.
Figura 4-6 – Valores de detectabilidade antes da aplicação das máscaras
106
107
Figura 4-7 – Alteração nos valores de controlabilidade devido às máscaras 107
Figura 4-8 - Cobertura de faltas a nível lógico (DC=FC(NSA) para o b13, com e sem a aplicação das
máscaras (versão delay, de período de relógio mínimo).110
Figura 4-9 - Cobertura de faltas a nível lógico (DC=FC(NSA) para o b13, com e sem a aplicação das
máscaras (versão area, de área de implantação mínima).110
Figura 5-1- Diagrama de blocos do contador estático de energia eléctrica. 115
Figura 5-2 - Diagrama de topo do controlador PIC do contador estático de energia eléctrica.116
Figura 5-3 – Arquitectura para comparação das funcionalidades dos dois módulos 117
Figura 5-4 - Evolução da FC em função da periodicidade do sinal Reset
118
Figura 5-5 –Código Verilog onde RTC_Min recebe valores de RTC_Min_int
120
Figura 5-6 – Código Verilog onde a o sinal Cond_L_654 controla a atribuição de valores a RTC_Min_int
..................................................................................... 121
Figura 5-7 – Código Verilog mostra a ligação entre as variáveis Load_Toggle e
Potencia_Load_Counter ............................................123
Figura 5-8 – Código Verilog onde se mostra a influência do problema de Cond_L_443 na variável
Contagem_Estatico....................................................125
Figura 5-9 – Código Verilog onde a P.I. Wdog_Clear pode provocar o Reset de Wd_Reset_Counter
..................................................................................... 128
xvi
Figura 5-10 - Código Verilog que mostra onde a variável Wd_Reset_Counter é utilizada 129
Figura 5-11 – Cobertura de faltas, a nível RTL, FC(5) para as diferentes simulações efectuadas
Figura 5-12 - Alteração nos valores de controlabilidade devido às máscaras
131
133
Figura 5-13 – Alteração nos valores de detectabilidade, devido à resolução dos problemas de testabilidade
..................................................................................... 133
Figura 5-14 – Cobertura de faltas a nível lógico (DC=FC(NSA) para o pic, com e sem a aplicação das
máscaras (versão area, de área de implantação mínima) 134
Figura 5-15 – Cobertura de faltas a nível lógico (DC=FC(NSA) para o pic, com e sem a aplicação das
máscaras (versão delay, de período de relógio mínimo) 135
xvii
Lista de Tabelas
Tabela 2-1 – Palavras reservadas da linguagem Verilog suportadas 37
Tabela 2-2 - Modelos de faltas a nível RTL disponíveis na ferramenta VeriDOS [31]
39
Tabela 2-3 – Código do ciclo FOR – método proposto em [31] para operador somador.
41
Tabela 2-4 – Código do ciclo FOR – Modelo proposto para o operador somador.
Tabela 2-5 – Tabela da verdade de um semi-subtractor (half-subtractor)
42
42
Tabela 2-6 – Código do ciclo FOR – Modelo proposto para o operador subtractor. 43
Tabela 2-7 – Correspondência, na ferramenta VeriDOS, entre Modelos e e Classes de faltas existentes.
.......................................................................................46
Tabela 2-8 – Descrição das Classes de Faltas..................46
Tabela 3-1 – Graus de gravidade nos problemas de testabilidade identificados pelo VeriDOS.
Tabela 3-2 – Função a desempenhar quando se pretende forçar um valor
62
84
Tabela 4-1 – Características do circuito de referência b1393
Tabela 4-2 – Problemas do tipo 1....................................96
Tabela 4-3 – Problemas do tipo 2....................................96
Tabela 4-4 – Activações dos estados da FSM1 ................97
Tabela 4-5 – Activações dos estados da FSM2 ................98
Tabela 4-6 - Problemas identificados no fluxo da FSM2 .98
Tabela 4-7 – Máscaras definidas para a FSM2 ................98
Tabela 4-8 – Activações dos estados da FSM3 ................99
Tabela 4-9 – Problemas identificados no flow da FSM3..99
Tabela 4-10 – Máscaras definidas para FSM2 e FSM3 ....99
Tabela 4-11 – Activações dos estados da FSM4 ............100
Tabela 4-12 – Problemas identificados no fluxo da máquina FSM4 100
Tabela 4-13 –Máscaras definidas para FSM 2, FSM3 e FSM4
102
Tabela 4-14 - Máscaras definidas..................................104
Tabela 4-15 – Problemas identificados no CUT ............105
Tabela 4-16 – Resumos das máscaras aplicadas. ...........106
Tabela 4-17 - Número de sinais mascarados, no módulo b13
108
xix
Tabela 4-18 – Ganhos na cobertura de faltas estrutural obtidos com m-BIST.
111
Tabela 4-19 – Sobrecarga de teste (aumento de área) no b13 com m-BIST. 111
Tabela 5-1 – Características do módulo PIC .................116
Tabela 5-2 – Lista de Problemas do tipo 1 no PIC.........119
Tabela 5-3 - Resultados do VeriDOS para a variável RTC_Min
120
Tabela 5-4 - Resultados do VeriDOS para a variável Cond_L_671
120
Tabela 5-5 - Resultados do VeriDOS para a variável RTC_Min_Int
121
Tabela 5-6 – Máscaras a injectar para resolver o problema de testabilidade em RTC_Min
122
Tabela 5-7 – Período total de aplicação das máscaras ...122
Tabela 5-8 - Resultados do VeriDOS para a variável Cond_L_530
123
Tabela 5-9 - Resultados do VeriDOS para a variável Cond_L_173
123
Tabela 5-10 – Período total de aplicação da máscara.....124
Tabela 5-11 – Variável RTL com problemas de observabilidade
124
Tabela 5-12 - Resultados do VeriDOS para a variável Cond_L_443
124
Tabela 5-13 – Período total de aplicação da máscara.....125
Tabela 5-14 - Resultados do VeriDOS para a variável Cond_L_736
126
Tabela 5-15 – Período total de aplicação das máscaras..127
Tabela 5-16 – Variável RTL com problemas de observabilidade
127
Tabela 5-17 - Resultados do VeriDOS para a variável Cond_L_131
127
Tabela 5-18- Período total de aplicação da máscara ......128
Tabela 5-19 - Resultados do VeriDOS para a variável Cond_L_188
Tabela 5-20 – Variável RTL com problemas de observabilidade
128
129
Tabela 5-21 - Período total de aplicação das máscaras para resolver o problema de Estatico_Prescaler
..................................................................................... 130
Tabela 5-22 – Variável RTL com problemas de observabilidade
130
Tabela 5-23 - Resultados do VeriDOS para a variável Clk32khz_Del
130
Tabela 5-24 - Resultados do VeriDOS para a variável Cond_L_628
130
Tabela 5-25 – Lista de todas as variável a observar, da análise de testabilidade efectuada a nível RTL
..................................................................................... 131
Tabela 5-26 – Número de sinais mascarados, no módulo PIC
132
xx
Tabela 5-27 - Ganhos na cobertura de faltas estrutural obtidos com m-BIST.
135
Tabela 5-28 – Sobrecarga de teste (aumento de área) no PIC com m-BIST 135
xxi
Acrónimos
AdI – Agência de Inovação
ASCOPA – Automatic Static Controllability Observability Probabilistic Analysis Tool
ASSOCIATE – Advanced Solutions for SOC Integration and Test in Europe
ATE – Equipamento Automático de Teste (Automatic Test Equipment)
ATPG – Geração Automática de Padrões de Teste (Automatic Test Pattern Generation)
BDD – Diagramas de Decisão Binária (Binary Decision Diagrams)
BIST – Auto-Teste Integrado (Built-In Self-Test)
CA – Autómata Celular (Cellular Automata)
CFG – Grafo de Fluxo de Controlo (Control Flow Graph)
CUT – Circuito em Teste (Circuit Under Test)
DC – Cobertura de Defeitos (Defect Coverage)
DFG – Grafo de Fluxo de Dados (Data Flow Graph)
DfT – Técnicas de Projecto para Testabilidade (Design for Testability)
DL – Nível de defeito (Defect Level)
DSM – Deep Sub-Micron
EDA – Automação de Desenho Electrónico (Electronic Design Automation)
EDT – Teste Determinístico Embutido (Embedded deterministic test)
EMI – Interferência Electromagnética (Electromagnetic Interference)
FC – Cobertura de Faltas (Fault Coverage)
FS – Simulação de Faltas (Fault Simulation)
HDL – Linguagem de Descrição de Hardware (Hardware Description Language)
IP – Propriedade Intelectual (Intellectual Property)
ITC – Conferencia Internacional de Teste (International Test Conference)
LBIST – Auto-Teste Lógico (Logic BIST)
LFSR – Gerador de Teste Pseudo-Aleatório (Linear Feedback Shift Register)
LSA – Linha Fixa A (line stuck at)
MISR – Compactador de Respostas (Multi-Input Shift Register)
MMIC – Circuito de Interface Baseado em Mascaras (Masked-based Multiplexer Interface
Circuit)
MPI – Entradas Primárias Mascaradas (Masked Primary Inputs)
MSI – Entradas Secundárias Mascaradas (Masked Secondary Inputs)
OOM – Modelação Orientada a Objectos (Object-Oriented Modelling)
xxiii
OPC – Correcção de Proximidade Óptica (Optical Proximity Correction)
PCB – Placa de Circuito Impresso (Printed Circuit Board)
PI – Entradas Primárias (Primary Inputs)
PO – Saídas Primárias (Primary Outputs)
PR – Pseudo-Aleatório (Pseudo Random)
PROSYS – Programmable Systems
ROM – Memória de Leitura (Read Only Memory)
RTL – Nível de transferência entre Registos (Register Transfer Level)
RTL2FO – RTL Orientado à Falta (RTL to Fault Oriented)
SA – Analisador de Assinatura (Signature Analyser)
SEU – Single Event Upset
TE – Eficácia do Teste (Test Effectiveness)
TL – Comprimento do Teste (Test Length)
TO – Sobrecarga de Teste (Test Overhead)
TP – Potência de Teste (Test Power)
TPG – Gerador de Padrões de Teste (Test Pattern Generator)
TPI – Inserção de Pontos de Teste (Test Point Insertion)
TRP – Repartição de Recursos de Teste (Test Resource Partitioning)
TS – Armazenamento de Teste (Test Storage)
SIP – Propriedade Intelectual de Semiconductores (Semiconductor IP)
VLSI – Integração de Larga Escala (Very Large Scale Integration)
UDL – Lógica Definida pelo Utilizador (User Defined Logic)
WPR – Geração Pseudo-aleatória Ponderada (Weighted Pseudo-Random)
xxiv
1. Introdução
No desenvolvimento de novos produtos electrónicos, os custos do teste estão se tornando
uma parcela crescente dos custos totais. Custos elevados ocorrem não apenas no planeamento
e na preparação do teste, no ambiente de projecto, como também na aplicação do teste, no
ambiente de produção. O incremento dos custos de teste decorre da confluência de um
conjunto de factores.
Em primeiro lugar, o percurso tecnológico da indústria semicondutora, com o seu
escalonamento até à resolução nanométrica, tornou possível o desenvolvimento de produtos
com valores crescentes de
complexidade (medida no número de dispositivos activos por circuito integrado),
desempenho (medido pela frequência dos relógios que marcam o sincronismo de
sistemas digitais) e
número de terminais (pinos) de entrada/saída (muito lentamente crescente), o que
limita severamente a controlabilidade e observabilidade dos nós internos do
sistema integrado.
Em segundo lugar, os requisitos de qualidade exigidos pelos clientes que integram tais
componentes complexos nos seus sistemas tem vindo a aumentar. Tal qualidade é usualmente
medida através do Nível de Defeito (DL, Defect Level), a percentagem de componentes
defeituosos que passam com sucesso o teste de produção e que, portanto são comercializados
como componentes bons [51]. Produtos de alta qualidade são caracterizados por Níveis de
Defeito da ordem de 100 ppm (partes por milhão), enquanto que produtos em aplicações
críticas de segurança têm especificações da ordem dos 10 a 1 ppm.
Em terceiro lugar, a gestão do consumo de potência de componentes integrados
complexos, operando na escala dos GHz, torna necessário a utilização de técnicas de projecto
de baixa potência (low power) e de técnicas de teste também muito exigentes em termos do
consumo de potência [84]. Adicionalmente, a explosão do mercado de sistemas móveis e
portáteis, alimentados a baterias, tornou crítico que a operação, não só em funcionamento
normal, como também em modo de teste, se realize com um consumo de energia mínimo.
1
O teste externo de componentes complexos impõe requisitos muito severos aos
equipamentos automáticos de teste (ATE, Automatic Test Equipment), o que torna o seu custo
proibitivo. Além disso, requer-se a existência de uma electrónica de comunicação entre o
ATE e o CUT (Circuito Sob Teste, ou Circuit Under Test) de banda larga, suportando um
tráfego de volume de dados muito elevado [88]. Todos estes requisitos conduziram a que se
desenvolvessem estratégias de Repartição de Recursos de Teste (TRP, Test Resource
Partitioning [92]) entre o ATE e o CUT, por forma a reduzir substancialmente o custo dos
testadores. A migração de parte da funcionalidade de teste para dentro do sistema integrado
fez proliferar as metodologias e ferramentas computacionais de auto-teste integrado ou
BIST (Built-In Self-Test) [1][2][3][4][6][48]. A inserção de BIST permite reduzir os custos de
ATE e viabiliza o teste, em paralelo, de diversos sub-sistemas do sistema integrado.
Exceptuando-se o caso de aplicações críticas de segurança, tais como módulos de electrónica
automóvel (ex., ABS), tráfego ferroviário (ex., TGV), ou equipamento médico implantado
(ex., marca-passo, ou pacemakers), basta que o auto-teste integrado seja realizado em modo
de teste (off-line), e não em concorrência com o funcionamento normal (on-line). Num
número crescente de aplicações, torna-se necessário viabilizar a realização de um processo de
auto-teste durante a vida útil do sistema integrado (lifetime test [7]), por exemplo quando o
sistema entra em operação (power-up). Assim, torna-se necessário realizar o projecto tendo
em vista a testabilidade (DfT, Design for Testability) e desenvolver soluções de auto-teste
integrado que se adaptem às novas tecnologias de fabricação.
O teste de alta qualidade em tecnologias emergentes, com resoluções litográficas de 90, 65
e 45 nm (até 2008) é ainda um problema não inteiramente solucionado [8]. O processo de
teste de sistemas digitais é usualmente suportado em modelos de faltas, que procuram
descrever o impacte dos defeitos físicos no comportamento lógico dos circuitos.
Tradicionalmente utilizaram-se modelos de faltas estáticos. O mais utilizado é o modelo de
faltas de Linha Fixa-A (ou LSA, Line Stuck-At). Este modelo presume que um defeito físico
conduz a que uma linha da descrição estrutural do circuito, a nível lógico, fique
permanentemente fixa a um dos dois valores Booleanos, ‘0’ ou ‘1’. A utilização de tais
modelos de faltas possibilitou o desenvolvimento de ferramentas computacionais eficientes
para a simulação de faltas (FS, Fault Simulation) , e para a geração automática de padrões de
teste (ATPG, Automatic Test Pattern Generation). Designa-se nesta tese por padrão de teste
um conjunto ordenado de vectores de teste, isto é, de palavras digitais a aplicar nas entradas
do CUT e que permitem detectar as faltas alistadas, correspondentes a um (ou mais) modelos
2
de faltas. Uma vez que um padrão de teste detecta não só as faltas-alvo (isto é, as faltas
utilizadas no processo de ATPG), como também muitas faltas não-alvo, verifica-se que
muitos defeitos físicos (por exemplo, curto-circuitos entre pistas condutoras associadas a
sinais distintos) podem ser descobertos com padrões de teste gerados para cobrir faltas-alvo
[32].
A identificação dos defeitos físicos mais prováveis de ocorrer numa linha de fabricação é
um processo difícil, moroso e dinâmico, à medida que os engenheiros de processo identificam
os passos de fabricação responsáveis por defeitos mais gravosos (yield killers) e os corrigem,
aumentando assim o rendimento do processo de fabricação (yield) e a sua rentabilidade
económica. Contudo, os novos nós tecnológicos, especialmente abaixo de 130 nm, obrigam à
utilização de novos materiais (por exemplo, dieléctricos de elevado e de reduzido valor da sua
constante dieléctrica), novos equipamentos e novos processos de fabricação (por exemplo,
OPC, Optical Proximity Correction [9]). Consequentemente, surgem novos mecanismos de
falha física, e novos defeitos que é necessário detectar. Como desafio, põe-se o problema de
projectar o teste para detectar defeitos que ainda não são inteiramente conhecidos.
A evidência disponível permite concluir que, adicionalmente ao teste estático, torna-se
imprescindível acrescentar o teste dinâmico, em particular o teste de atrasos (delay test) [10].
Este facto motivou uma actividade de investigação importante nos últimos anos
[17][11][12][13][14][15], visando melhorar a qualidade do teste. A eficácia do teste (TE,
Test Effectiveness [85]), isto é, a sua capacidade de detectar a quase totalidade dos defeitos
físicos (Nível de Defeito de poucos ppm) é uma característica essencial, tanto para melhorar a
qualidade do produto, como para auxiliar os engenheiros de produção a apressar o
crescimento do rendimento de produção (fast yield ramp-up).
O escalonamento da tecnologia de fabricação, com o aumento da resolução litográfica e a
redução das tensões de alimentação (a fim de conter a dissipação de potência), têm aumentado
a susceptibilidade dos sistemas integrados a perturbações ambientais, tais como a
interferência electromagnética (EMI, Electromagnetic Interference [16]), o ruído das
alimentações (power noise [17]), e os eventos intermitentes resultantes de radiação (SEU,
Single Event Upset [18][19]). Estas características tornam necessário o desenvolvimento de
teste paramétrico, e de técnicas para a detecção e correcção de erros.
3
Em resultado do exposto, têm-se desenvolvido uma panóplia de metodologias de teste,
com recurso à detecção de defeitos através da análise da tensão eléctrica, da corrente de
alimentação e dos atrasos de propagação, a fim de detectar faltas estáticas e dinâmicas,
permanentes e intermitentes. O teste de desempenho (performance testing) tornou-se assim
um alvo também a cobrir nas metodologias de auto-teste integrado, para garantir Níveis de
Defeito muito reduzidos [10]. Assim, tanto para o teste de produção, como para o teste
durante a vida útil do produto, torna-se necessário desenvolver técnicas de BIST dinâmico
[20]. Tais técnicas requerem não só o forçar de determinados vectores de teste, para cobertura
de faltas estáticas, como também o forçar de sequências de pares de vectores de teste, para
activar caminhos críticos de sinal para visualização dos seus atrasos e a presença eventual de
faltas dinâmicas. Uma forma economicamente viável de realizar isso é por procurar estender
técnicas de BIST estático para BIST dinâmico. Adicionalmente, o valor económico do
mercado de aplicações móveis torna ainda necessário que as soluções de BIST, a serem
activadas durante a vida útil dos sistemas, devam ser caracterizadas por baixo consumo de
energia, ou seja, devem conduzir a sessões de BIST curtas. Neste documento, define-se
sessão de BIST como a aplicação de um padrão de teste numa implementação de auto-teste
integrado, por forma a testar completamente um CUT. Tipicamente, uma sessão de BIST é
medida pelo comprimento do teste (TL, Test Lenght), isto é, pelo número de vectores de
teste que compõem o padrão de teste, ou pelo tempo de auto-teste, obtido pelo produto de TL
pelo período do sinal de relógio que sincroniza a sessão.
Uma vez que os custos do teste são elevados, e apresentam uma tendência preocupante
para se agravar, torna-se desejável introduzir metodologias de BIST tão cedo quanto possível
no fluxo de projecto. Isso significa introduzi-las em níveis de abstracção elevada, em
particular antes da síntese estrutural, portanto quando o sistema digital está ainda na sua
descrição a nível de transferência de registos (RTL, Register Transfer Level) [21]. Estratégias
de teste, introduzidas a este nível, podem ser também reutilizadas para a validação do projecto
e a validação de protótipos no silício [22].
Recentemente, os investigadores do Grupo de Qualidade e Teste do INESC-ID
propuseram uma metodologia BIST para sistemas digitais, designada por Auto-teste integrado
(BIST) baseado em Máscaras (Masked-based BIST, ou m-BIST) [21][23][24][25][26][31].
Esta metodologia, descrita no capítulo 2, explora a correlação entre a detecção múltipla de
faltas, a nível RTL, com a detecção singular de faltas a nível estrutural, em particular com a
4
detecção simples de defeitos físicos, assegurando um Nível de Defeito muito reduzido.
Conduz à definição de um conjunto de vectores de entrada parcialmente definidos 1, que são
designados por máscaras, e conduz a elevadas coberturas de defeitos com sessões de BIST
curtas, sendo assim uma metodologia que gera soluções BIST de baixo consumo de energia
[24]. A metodologia foi inicialmente desenvolvida com base em simulação de faltas multinível, para faltas estáticas.
Para circuitos combinatórios, desenvolveu-se uma técnica de injecção de máscaras em
hardware, como parte da funcionalidade de teste integrada no silício [26]. Todavia, a geração
de mascaras era manual, e portanto envolvia recursos humanos elevados e baixa
produtividade de projecto. Posteriormente, desenvolve-se um trabalho de doutoramento em
que se utilizam técnicas probabilísticas de avaliação da controlabilidade e da observabilidade
de variáveis e condições [27], e que viabilizou a geração automática de máscaras. É assim
possível o desenvolvimento de uma metodologia que possa ser introduzida no fluxo
automático de projecto de um sistema digital integrado [28].
1.1. Identificação do Problema
Como se referiu, a metodologia de auto-teste integrado m-BIST possui o potencial de
responder a diversos requisitos que se pretendem para uma nova metodologia BIST dinâmico
de reduzido consumo de energia:
pode estender-se a sistemas digitais sequenciais
pode ser aplicada na realização do teste à frequência normal de operação do CUT
(at-speed testing [20])
pode estender-se de faltas estáticas para faltas dinâmicas
permite definir sessões de BIST com valores reduzidos do Nível de Defeito, com
comprimentos de teste (TL) reduzidos (reduzido consumo de energia) e com uma
dissipação de potência comparável à de um teste pseudo-aleatório
permite introduzir a functionalidade de BIST a nível RTL, conduzindo assim a
uma síntese lógica que introduz uma sobrecarga de teste 2 reduzida
1
Nestes vectores, alguns bit têm valores forçados (‘0’ ou ‘1’), enquanto outros podem assumir qualquer valor
lógico (don’t care).
2
A sobrecarga de teste (TO, Test Overhead) é definida como o aumento percentual da área de implantação e a
redução percentual da máxima frequência de funcionamento do sistema integrado, devido à inclusão nele da
funcionalidade de auto teste.
5
pode ser automatizada, para inserção num fluxo de projecto de um sistema digital
integrado.
Assim, identificou-se o problema para o qual se pretende desenvolver uma solução no
contexto deste trabalho de Mestrado. Pretende-se primariamente estender a metodologia mBIST a sistemas digitais sequenciais, avaliando-a para faltas estáticas mas desenvolvendo-a
por forma a que a mesma possa ser utilizada na detecção de faltas dinâmicas. Para tal,
pretende-se que essa extensão seja realizada com a característica inovadora que se descreve a
seguir.
Tradicionalmente, as metodologias BIST off-line para circuitos sequenciais suportam-se
numa reconfiguração forte da topologia do circuito, utilizando a técnica de varrimento (scan)
[1][48]. Nesta técnica de DfT, separa-se a parte combinatória e a parte dos elementos de
memória, os registos. Estes são reconfigurados, em modo de teste, numa ou mais cadeias de
scan, como registos de deslocamento. O aumento de controlabilidade e observabilidade dos
elementos de memoria do circuito sequencial permite assim, durante o teste, deslocar em série
vectores de teste aleatórios ou determinísticos (shift-in), aplicá-los, capturar as respostas em
paralelo e analisar as respostas, ou deslocando-as para fora do sistema integrado, atraves
desses registos de deslocamento (shift-out), ou utilizando um compactador de respostas 3,
tipicamente um MISR (Multi-Input Shift Register). Tais técnicas, designadas como “teste por
varrimento” (test-per-scan) conduzem tipicamente a sessões de BIST extremamente longas
(consumo elevado de energia). Contudo, a reconfiguração altera significativamente os
caminhos de sinal e os seus tempos de propagação, interrompendo (em modo de teste) as
malhas de realimentação características da topologia do circuito sequencial. Dessa forma,
quando se procura analisar a cobertura de faltas dinâmicas, realiza-se tal actividade em modo
de teste, com o circuito reconfigurado, e não sobre o circuito em modo normal de operação.
Adicionalmente, estas técnicas de BIST com scan conduzem a sessões longas de auto-teste,
com elevado consumo de potência e de energia.
Assim, com a metodologia m-BIST estendida a sistemas digitais sequenciais, pretende-se
desenvolver uma metodologia que preserve, tanto quanto possível, a topologia do modo
normal de funcionamento, a fim de que a detecção de faltas dinâmicas seja reforçada. Tal
3
Tais compactadores são usualmente designados por analisadores de assinatura (SA, Signature Analisers [1]).
6
abordagem conduz a uma técnica de BIST pouco intrusiva [48]. Todavia, este é um
constrangimento sério, dado que é bem sabido que a detectabilidade de faltas em circuitos
sequenciais (em especial os que apresentam uma profundidade da sequencialidade elevada) é
normalmente reduzida, em particular com uma excitação pseudo-aleatória [1]. Saliente-se
que, para aplicações de elevada segurança (por exemplo, uso de cartões inteligentes (smart
cards) em processamento de informação bancária), os requisitos de segurança tornam as
técnicas de varrimento indesejáveis, já que o aumento da acessibilidade interna do chip
acarreta também uma diminuição da confidencialidade dos dados [87]. Assim, a metodologia
m-BIST para circuitos sequenciais que se propõe, não recorrendo a técnicas de scan, pode
também tornar-se útil para esse mercado de aplicações.
Pretende-se ainda reutilizar (e aprimorar, sempre que necessário) as ferramentas
computacionais de auxílio ao teste que suportam a versão anterior da metodologia m-BIST,
em particular o simulador de faltas multi-nível VeriDOS [21] [32] e o avaliador de
probabilidades ASCOPA [27]. Essas ferramentas, e em particular a ferramenta VeriDOS, são
compatíveis com sistemas EDA (Electronic Design Automation) comerciais, o que facilita a
implementação da metodologia de BIST no fluxo de projecto de um novo produto.
Os circuitos sequenciais possuem uma controlabilidade e uma observabilidade reduzidas,
em comparação com as correspondentes de um circuito combinatório. Pretende-se
desenvolver um procedimento sistemático de identificar as partes da funcionalidade difíceis
de controlar e/ou de observar, desenvolver uma estratégia de geração de máscaras
(eventualmente identificando pares de máscaras), e, na situação que requeira aumento de
testabilidade, definir uma eventual Inserção de Pontos de Teste (TPI, Test Point Insertion
[33]) através da identificação de saídas e/ou de registos com fraca observabilidade ou fraca
controlabilidade para mascaramento destes. Pretende-se ainda analisar a acessibilidade dos
registos já presentes a nível RTL, discriminando entre registos utilizados como bancos de
dados (por exemplo, para sincronismo entre módulos combinatórios) e registos de
realimentação (feedback) para implementação do carácter sequencial do circuito.
Finalmente, pretende-se realizar a demonstração de resultados num módulo digital
sequencial industrial, por forma a viabilizar a transferência de tecnologia de teste para uma
empresa do sector – a Tecmic [39].
7
1.2. Contexto do Trabalho
O trabalho desta tese de Mestrado insere-se no trabalho desenvolvido pelo Laboratório
PROSYS (Programmable Systems) do INESC-ID no contexto do Projecto Europeu Medea+ 4
A 503 5, designado Projecto ASSOCIATE (Advanced Solutions for SOC Integration and
Test in Europe). O coordenador do Projecto é a AMI Semiconductors (anteriormente Alcatel
Microelectronics), Bélgica, tendo como parceiros industriais a Alcatel Bell (Bélgica), a
Philips (França e Holanda), a Infineon (França), a Temento (França) e a Tecmic (Portugal), e
como parceiros de I&D, o LIRMM (Montpellier, França), o INESC-Porto e o INESC-ID
Lisboa.
O objectivo do projecto consiste no desenvolvimento de metodologias e ferramentas que
permitam o teste e a depuração (debug) de sistemas electrónicos físicos e lógicos
(hardware/software) ao longo da vida útil dos produtos e assegurar técnicas economicamente
competitivas de teste de produção de grande volume. As ferramentas desenvolvidas
permitirão manipular sistemas heterogéneos de grande complexidade, realizados com
tecnologias DSM (Deep Sub-Micron) operando no domínio temporal sub-nano-segundo,
sustentando assim a competitividade da indústria europeia no sector. O programa Medea+ é
de âmbito europeu, sendo os projectos avaliados e seleccionados a nível europeu. Contudo , o
seu financiamento é realizado através dos governos nacionais. Assim, ao Projecto Europeu
Associate corresponde um projecto nacional Associate 6, financiado pela AdI (Agência de
Inovação), no qual o principal parceiro é a Tecmic, sendo parceiros associados o INESC-ID
Lisboa e o INESC Porto. O demonstrador escolhido para validar a metodologia proposta nesta
tese foi, como se referiu, utilizado para se proceder a transferência de tecnologia de teste para
a empresa Tecmic, um dos objectivos do consórcio nacional do projecto Associate.
1.3. Objectivos
Com se compreende do exposto, o objectivo deste trabalho de Mestrado em Engenharia
Electrotécnica e de Computadores é desenvolver uma metodologia de auto-teste integrado
(BIST), recentemente proposta, para circuitos digitais sequenciais e, numa fase posterior,
aplicá-la a faltas dinâmicas. A metodologia em questão, baseada em máscaras e designada m-
4
http://www.medeaplus.net/
http://www.medeaplus.net/profiles/a503_profile.pdf
6
http://www.adi.pt/2200.htm
5
8
BIST, conduz a um auto-teste de alta qualidade, caracterizado por uma eficácia do teste
elevada (capacidade de detectar defeitos físicos prováveis de ocorrer na fabricação), um
comprimento do teste reduzido, uma dissipação de potência comparável à de um teste pseudoaleatório, e uma sobrecarga de teste (área adicional de silício e degradação de desempenho)
comparável à das técnicas de BIST existentes. A metodologia m-BIST assim estendida deve
ser pouco intrusiva, a fim de aumentar a detectabilidade de faltas dinâmicas no sistema real
(isto é, no sistema digital operando em modo normal de funcionamento).
Procura-se analisar o mapeamento entre a cobertura de faltas a nível RTL e a nível
estrutural (porta lógica), identificar as áreas funcionais difíceis de testar (designadas por
“cantos escuros” da funcionalidade), gerar máscaras e identificar uma configuração que
permita realizar um m-BIST com reduzida intrusão, relativamente ao modo normal de
funcionamento, e uma inserção de TPI ponderada. Um problema a analisar cuidadosamente é
a utilização dos graus de liberdade relativamente às máscaras escolhidas para personalizar o
teste 7, em particular que máscaras, que sequência de máscaras e qual o número de vectores a
aplicar por cada máscara.
Utilizar-se-á como ambiente de simulação a ferramenta VeriDOS [21] [32] e a ferramenta
comercial Verifault™, da Cadence [93]. A síntese lógica é realizada com o sistema Design
Vision™, da Synopsys [94]. Utiliza-se como caso de estudo o circuito sequencial de referência
b13 (do conjunto de referências ITC’99) [37][38] e, como demonstrador, um controlador PIC
de um sistema de tele-contagem de energia eléctrica, desenvolvido pela Tecmic no consórcio
Gerês 8. Para geração de máscaras, utiliza-se a metodologia baseada na avaliação
probabilística da controlabilidade e observabilidade de variáveis e sinais, e a ferramenta
ASCOPA [27].
Assim, o objectivo central desta tese é o desenvolvimento de uma metodologia de autoteste integrado de sistemas digitais sequenciais, a nível RTL, que permita gerar soluções mBIST e padrões de teste com elevada cobertura de defeitos físicos, aproveitando o padrão de
teste determinado ao nível RTL e sem recorrer a cadeias de varrimento. Para isso é
necessário:
7
Refere-se como personalização do teste a sobreposição, prevista na técnica m-BIST, nos vectores de teste, de
bit forçados (a ‘0’ ou a ‘1’) com a flutuação aleatória nos bit não especificados na máscara, realizada tipicamente
à custa de um LFSR (Linear Feedback Shift Register).
8
http://www.inov.pt/eng/systems/system/download/inov_telecontagem_14_02_2002_v3_eng.pdf
9
Desenvolver uma metodologia de preparação do teste, que defina o padrão de teste a
aplicar na sessão de BIST, o que inclui
Identificar os modelos de faltas RTL a utilizar com esse objectivo;
Definir as métricas de testabilidade que permitam estimar, a nível RTL, a eficácia
de um padrão de teste em cobrir defeitos físicos;
Desenvolver uma técnica para identificação expedita, a nível RTL, de partes da
funcionalidade difíceis de testar, através da estimação de métricas de
acessibilidade (controlabilidade e observabilidade);
Desenvolver uma técnica da inserção de pontos de teste (TPI) para controlo e/ou
observação;
Desenvolver uma metodologia para a injecção de máscaras, embutida no sistema
integrado, e que conduza a uma sobrecarga de teste reduzida;
Desenvolver uma metodologia cuja aplicação seja de fácil inserção num fluxo de
projecto, visando a sua automatização.
1.4. Contribuições Originais
No âmbito desta tese foi efectuado trabalho original em diversas áreas do teste de circuitos
e sistemas integrados digitais, merecendo destaque:
A extensão da metodologia m-BIST (auto-teste integrado baseado em máscaras)
para sistemas sequenciais, sem violação do carácter sequencial do sistema, numa
técnica de test-per-clock com elevada eficácia de teste, relativamente a faltas
estáticas (demonstrado ao longo do trabalho), e com potencial de exibir também
elevada eficácia de teste para faltas dinâmicas (trabalho futuro);
A preparação do auto-teste integrado a nível RTL, de acordo com a metodologia
proposta, confirmando que uma elevada cobertura de faltas RTL, com
multiplicidade n de detecção, se correlaciona bem com a elevada cobertura de
faltas estruturais, com detecção singular;
O desenvolvimento de uma metodologia de injecção de máscaras em hardware, a
nível RTL, podendo personalizar um subconjunto de entradas primárias (MPI,
Masked Primary Inputs) e secundárias (MSI, Masked Secondary Inputs), e que
conduz a uma sobrecarga de teste reduzida, mesmo quando comparada com a
10
sobrecarga de teste de soluções BIST utilizando cadeia de varrimento (em test-perscan)
O desenvolvimento de uma técnica de gestão da inserção de pontos de teste (TPI, )
que se suporta primariamente numa injecção de pontos de teste para reforço da
controlabilidade (através das máscaras) e residualmente, se necessário, numa
injecção de pontos de teste para reforço da observabilidade (através da adição de
algumas saídas secundárias à assinatura produzida pela sessão de teste, e gerada
pelo analisador de assinatura).
1.5. Roteiro da Tese
A tese está organizada como se descreve em seguida.
No capítulo 2 estabelece-se o contexto do trabalho desenvolvido, apresentando-se uma
panorâmica breve das principais técnicas de auto teste integrado (BIST) para circuitos digitais
integrados, em especial as que visam obter um teste de muito alta qualidade, com uma
cobertura de defeitos quase total (BIST determinístico). Neste capítulo perspectiva-se ainda a
metodologia-alvo que é extendida, nesta tese, ao auto-teste integrado de circuitos sequenciais
– a metodologia m-BIST, nas suas vertentes de abordagem em simulação e de abordagem
probabilística. Descreve-se ainda brevemente as ferramentas computacionais académicas,
VeriDOS e ASCOPA, que serão utilizadas para a validação da metodologia.
O capítulo 3 contém a proposta de metodologia para a extensão da tecnologia m-BIST de
sistemas digitais combinatórios para sequenciais, com um mínimo de reconfiguração no modo
de teste. Salienta-se como aproveitar as abordagens de simulação e probabilística, bem como
a informação disponível a nível RTL (de transferência de registos) e a nível lógico (estrutural,
após a síntese lógica), para derivar uma solução de auto teste integrado que privilegie a
cobertura de defeitos físicos, com uma sobrercarga de teste reduzida (área de silício e
degradação de desempenho) e com um comprimento de teste reduzido.
A fim de ilustrar, num exemplo de reduzida complexidade, a aplicação da metodologia
proposta, descreve-se no capítulo 4, passo a passo, a utilização da metodologia num circuito
digital sequencial de referência – o circuito b13, do conjunto de circuitos de referência
11
propostos na ITC’99 (International Test Conference [37][38]), um circuito sequencial
proposto pelo Instituto Politécnico de Turim.
A demonstração de resultados num módulo digital sequencial, de complexidade maior, é
realizada no capítulo 5, utilizando um exemplo industrial fornecido pela empresa Tecmic,
parceira do INESC-ID no projecto Associate. Trata-se de um módulo PIC de um sistema de
tele-contagem de energia electríca que esta empresa pretende disponibilizar como módulo de
propriedade intelectual (IP core, Intellectual Property core) no mercado SIP (Semiconductor
IP).
Finalmente, o capítulo 6 resume os principais resultados do trabalho descrito nesta tese, o
seu alcance e as suas limitações. Apresenta ainda as perspectivas de trabalho futuro, no
contexto do novo Projecto Medea+ 2A702, designado NANOTEST 9, que entretanto se
iniciou.
9
http://www.medea.org/webpublic/projects/projectslist_2a7.htm
12
2. Auto-teste Integrado de Alta Qualidade
Sistemas electrónicos complexos estão em numerosas situações sujeitos a testes, na sua
fase de produção e ao longo da sua vida útil, de forma a poder monitorizar o seu correcto
funcionamento. Estes testes e eventualmente o diagnóstico de falhas e sua correcção deverão,
a custos economicamente viáveis, ser rápidos, ter uma elevada cobertura de faltas e certificar
o funcionamento do componente.
Tradicionalmente os circuitos são testados com equipamento de teste automático (ATE)
[1], onde se armazenam os vectores de teste, se geram os estímulos a aplicar ao CUT (Circuit
Under Test) e se analisam as respectivas respostas aos estímulos. Durante o teste, este
equipamento é ligado às entradas e saídas do CUT, procedendo-se à respectiva excitação e
recolha dos valores das suas saídas. Uma desvantagem séria desta abordagem é o facto destes
equipamentos de teste serem muito dispendiosos. Adicionalmente o teste é lento, com muitos
vectores e limitações de memória por pino, resultando num tempo de utilização por
componente elevado. Para além destes inconvenientes, a electrónica por pino no ATE tem
vindo a aumentar com a complexidade dos sistemas, tornando difícil medir com precisão
sinais no CUT, o que é essencial no processo de teste. Os sistemas integrados VLSI (Very
Large Scale Integration) continuam a tornar-se cada vez mais complexos e rápidos com o
desenvolvimento das tecnologias de resolução nanométrica. Consequentemente, o tempo (e os
custos) para a geração e a aplicação dos vectores de teste torna-se cada vez maior [8].
Finalmente a quantidade de informação a permutar entre o ATE e o CUT e a ser armazenada
no ATE tem-se tornado proibitiva.
A forma para minorar estes problemas é especificar o teste (ou, pelo menos, a parte mais
crítica dele) como mais uma função do sistema integrado, de modo a torná-lo auto-testável.
Esta ideia motivou o desenvolvimento de métodos de auto-teste integrado (BIST)
[1][3][4][48], providenciando uma forma de decompor hierarquicamente o sistema em teste,
localizando-o em módulos menos complexos e por conseguinte acelerando o processo de
teste. Usualmente a metodologia de BIST depende da natureza funcional e estrutural do
CUT; por exemplo, o auto-teste de estruturas regulares, como as memórias semicondutoras, é
claramente diferente do teste de lógica que implementa a funcionalidade do sistema (LBIST,
Logic IST) [1][48]. Neste trabalho, visa-se o desenvolvimento de uma metodologia BIST para
LBIST. Adicionalmente, a localização da funcionalidade de teste no interior do sistema
13
integrado (on-chip) permite uma comunicação local de banda larga, ou seja, a realização do
teste à frequência normal de operação do CUT (at-speed testing [20]). Esta circunstância é
especialmente vantajosa para a detecção de faltas dinâmicas, um factor-chave de sucesso no
teste de qualidade de sistemas digitais em tecnologias nanométricas [86]. Em BIST procedese à inclusão de mais funcionalidade (e, portanto, de mais circuitos) no sistema original, de
modo a poder testá-lo. Desta forma, a maior parte das desvantagens do teste externo são
eliminadas pelo BIST, o processo é muito mais económico e passa a ser completamente
automático. Para além disso, outra vantagem é o facto das capacidades de teste
acompanharem a evolução da tecnologia VLSI, algo que não se verifica com o teste externo.
Portas lógicas tornam-se relativamente baratas, em comparação com o esforço para
desenvolver programas de teste e com o custo do equipamento de teste automático necessário.
Além disso, o auto-teste, sendo local, pode ser realizado em banda larga, logo até à frequência
nominal de trabalho do sistema.
Com um projecto bem desenvolvido, para implementar BIST, o custo da adição deste
hardware de teste é suportável e viável, pois aumenta de forma significativa os benefícios em
termos de qualidade e redução dos custos relacionados com a manutenção dos componentes.
Sistemas de grande complexidade só podem ser testados com alguma qualidade, em
termos de cobertura de faltas, sendo projectados de início para esta finalidade. Essas técnicas
de projecto para testabilidade são usualmente referidos como DfT (Design for Testability). De
entre as técnicas de DfT, a técnica BIST mostra-se muito eficaz, não apenas no teste de
produção (requerendo ATEs mais económicos), mas também possibilitando o teste durante a
vida útil dos sistemas (lifetime test), o que é crucial para o produto em estudo – o contador
estático de energia 10.
O BIST pode ser implementado em dois modos diferentes [1][48]:
•
Teste explicito (off-line) – Neste método uma sequência de teste é aplicada ao CUT e
a resposta do circuito é comparada com a do circuito sem faltas. Devido à natureza do
teste, o teste explícito requer que o CUT suspenda o seu modo normal de
funcionamento e entre em modo de teste.
10
Pretende-se instalar não só a funcionalidade de tele-contagem, mas também a de auto-teste periódico do
contador e a de auto-teste activado por controlo remoto, sempre que necessário.
14
•
Teste implícito (on-line) – Neste teste monitoriza-se o funcionamento do sistema em
modo normal; usualmente existem múltiplas cópias do circuito e, em modo normal de
funcionamento,
procede-se
à
comparação
das
saídas
das
várias
cópias.
Alternativamente, as saídas são comparadas com as respostas correctas, consideradas
como palavras de código [5].
No presente trabalho optou-se pelo modo de teste explícito, dado que o objectivo é
maximizar a cobertura de faltas, reduzir a área adicionada e a degradação de desempenho e
reduzir a energia consumida durante a sessão de BIST..
2.1. Características Valorizadas e Métricas de Qualidade
A qualidade da solução BIST proposta é aferida por diversas características valorizadas e
mensuráveis (através de métricas):
A eficácia do teste (TE, Test Effectiveness [85]) – medida pela cobertura de faltas
(FC, Fault Coverage), através do cálculo (no ambiente de projecto) da percentagem de
faltas alistadas que são detectadas pelo padrão de teste A FC deve ser avaliada em
diferentes níveis de abstracção e para diversos universos de faltas. As métricas de TE
a nível RTL são introduzidas no capítulo 3, junto com a descrição da metodologia
proposta. Quando existe informação disponível 11, define-se uma métrica adicional, a
nível estrutural – a cobertura de defeitos (DC, Defect Coverage) [51]. Dado um
sistema com uma descrição estrutural C, um padrão de teste, T={T1, T2, ... TNT} (NT
vectores de teste), e uma lista de N defeitos físicos, a cobertura de defeitos é avaliado
DC
=
N
N
d
∑ w
j=1
j
∑ w
i=1
i
por [50][51]
onde wj é o factor de ponderação (ou peso) da falta, wj= - ln (1-pj) e pj representa a
probabilidade de ocorrência da falta j [51]. Assim, a eficácia do teste, TE, é ponderada
11
É necessário conhecer, para uma dada linha de produção, informação relativa à estatística de defeitos mais
prováveis de ocorrer na fabricação – natureza do defeito e sua probabilidade de ocorrência.
15
pela probabilidade de ocorrência dos Nd defeitos que são detectados pelo padrão de
teste T.
O comprimento do teste (TL, Test Length) – medido pelo número de vectores de
teste a aplicar durante a sessão de BIST, para se atingir o valor de FC especificado.
Esta característica é essencial para assegurar um BIST de reduzido consumo de
energia.
A sobrecarga do teste (TO, Test Overhead) – avaliado (1) pelo aumento percentual
de complexidade (portas lógicas, ou área de silício) e (2) pela degradação do
desempenho
de
circuito
(aumento
percentual
dos
tempos
de
propagação
entradas/saídas), devido ao hardware de teste 12.
A potência de teste (TP, Test Power) (e a energia de teste) – avaliada pela potência
(energia) eléctrica consumida na sessão de BIST [84]. Há que assegurar que os limites
de potência (energia) especificados para o sistema integrado (para as baterias a
energizar o sistema) não sejam excedidos, nem em modo normal, nem em modo de
auto-teste.
Como se verá neste capítulo, torna-se necessário, para se obterem valores de FC próximos
de 100%, adicionar vectores determinísticos a vectores pseudo-aleatórios. Os vectores
determinísticos são armazenados no sistema integrado. Neste caso, é também usual definir-se
uma métrica adicional [49]:
O armazenamento de teste necessário (TS, Test Storage) - medido pelo produto da
dimensão da palavra digital de entrada pelo número de vectores determinísticos
necessários para, em conjunto com os vectores pseudo-aleatórios, assegurar o nível de
FC definido na especificação do produto.
Para a metodologia m-BIST que se pretende estender para circuitos sequenciais, os
vectores parcialmente determinísticos utilizados (as máscaras) são fixos, uma vez definido o
12
A introdução de funcionalidade de teste no sistema integrado (on-chip) pode adicionar mais um aspecto da
sobrecarga – o aumento do número de terminais acessíveis para efeitos do auto-teste. No caso do presente
trabalho, esse aspecto pode reflectir-se na observação de algumas saídas secundárias no analisador de assinatura.
Uma vez que esse aspecto se reflecte no aumento de área do analisador de assinatura e das interligações
necessárias, este aspecto adicional da sobrecarga do teste não é considerado explicitamente.
16
padrão de teste a aplicar na sessão de BIST, como se verá no capítulo 3. A sobrecarga de
teste, devida ao armazenamento das máscaras, pode ser proibitiva se não existir no sistema
integrado memória RAM que possa ser utilizada, em modo de teste, para armazenar
temporariamente esses vectores determinísticos. Assim, opta-se na metodologia proposta por
utilizar uma técnica de injecção de máscaras em hardware. Consequentemente, esta última
métrica – TS – torna-se desnecessária na versão da metodologia m-BIST que se propõe.
2.2. Arquitectura-base de Auto-Teste Integrado (BIST)
A figura 2.1 apresenta o diagrama de blocos de um CUT com BIST.
Figura 2-1 – Arquitectura base de uma solução de auto-teste integrado (BIST)
Os principais módulos de uma arquitectura de auto-teste integrada são [47][48]:
•
O gerador de padrões de teste (TPG – Test Pattern Generator) – hardware que tem
como função gerar a sequência de vectores de teste a aplicar ao CUT. A fim de limitar
a área de silício a utilizar para a implementação do TPG, recorre-se usualmente a um
gerador de teste pseudo-aleatório, tipicamente um LFSR (Linear Feedback Shift
Register) [1][47] ou um autómata celular (CA, Cellular Automata) [63];
•
O compactador da resposta ao teste – Dependendo da dimensão da palavra digital de
resposta do sistema e do comprimento do teste, o volume das respostas ao teste pode
ser muito elevado, o que torna inviável o seu armazenamento no próprio sistema
integrado. Consequentemente, as sucessivas respostas, ao longo do tempo, são
comprimidas durante a sessão de teste. No final do teste, procede-se à comparação
17
desta resposta comprimida (uma palavra digital) com a resposta esperada para um
circuito sem faltas (designada como assinatura);
•
O multiplexador de entrada (MUX), que selecciona ou as entradas primárias, ou os
vectores locais, gerados pelo TPG;
•
O comparador da (1) assinatura recolhida no compactador da resposta do teste com
(2) a assinatura correcta (a do circuito sem defeitos);
•
O controlador de BIST, para activar/desactivar o processo de teste. Na metodologia
que se pretende desenvolver, o controlador de teste pode assumir também a função de
comandar a injecção de vectores determinísticos (máscaras).
Descreve-se em seguida os principais módulos de uma arquitectura BIST convencional.
2.2.1. Gerador de Vectores de Teste (TPG)
Devido ao facto da sequência de teste ter de ser armazenada ou gerada no próprio circuito,
de modo a possibilitar o BIST, esta sequência deve ser curta ou possível de gerar com pouco
hardware. Uma solução é a utilização de ROMs (Read Only Memory) para armazenar padrões
de teste. Esta solução, no entanto, consumiria uma área demasiado elevada no chip. Outra
solução, como se referiu, é o recurso a circuitos que geram vectores de teste pseudoaleatórios. A geração pseudo-aleatória de padrões de teste é facilmente realizada por LFSRs
(Linear Feedback Shift Registers). Este método utiliza muito pouco hardware e apresenta
resultados muito úteis, já que permite gerar um padrão de teste que cobre tipicamente a
maioria das faltas. Todavia, conduz a comprimentos de teste (TL) elevados, e normalmente é
incapaz, por si só, de gerar um padrão de teste que conduza a FC=100%. Com efeito,
dependendo da topologia do CUT, existem faltas resistentes a padrões pseudo-aleatórios
(pseudo-random pattern-resistant faults), que tornam necessário o recurso a vectores de teste
determinísticos para a sua cobertura [71] [47].
A interligação destas duas soluções, LFSR e ROM, é um método eficaz, onde o LFSR é
usado como modo de teste primário, para detectar a maioria das faltas. A fim de detectar
faltas difíceis, não reveladas pela sequência de teste do LFSR, guardam-se em ROM de
pequea dimensão os vectores deterministicamente gerados por um ATPG (Automatic Test
Pattern Generator) para detectar as faltas difíceis. Neste trabalho, utilizam-se LFSR para a
18
geração do teste pseudo-aleatório. Contudo, os vectores determinísticos são injectados em
hardware, e não guardados em memória.
Os LFSR são as estruturas mais utilizadas para gerar vectores de teste pseudo-aleatórios.
Estes vectores gerados têm todas as propriedades dos números aleatórios, mas são gerados
algoritmicamente pelo gerador. Desta forma, é possível repetir a sequência, algo fundamental
no BIST. A sessão de BIST inclui a aplicação de uma sequência de vectores gerados pelo
LFSR. Com n registos, o comprimento máximo da sessão é da ordem de 2n. Com n da ordem
de 20, o número prático de vectores a aplicar é muito inferior a 2n. Assim, só se aplica uma
janela de vectores (N<<2n) 13. O padrão resultante depende do vector de inicialização do LFSR
(designado por semente (seed)) e do comprimento do teste, N. Depende ainda da topologia do
LFSR, que influencia a sequência de vectores pseudo-aleatórios. Existem duas topologias
base para um LFRS – standard e modular – ilustradas nas figuras 2.2 e 2.3. Qualquer um dos
LFSRs inclui n registos (elementos de memória) aos quais são adicionadas realimentações
usando portas ou-exclusivo (EXOR).
Figura 2-2 – LFSR standard.
A topologia LFSR standard é utilizada quando se pretende usar um registo de deslocamento
já existente no sistema para gerar os vectores de teste.
Figura 2-3 – LFSR modular.
13
Para ter significado estatístico, o número de vectores a aplicar, N, deve ser suficientemente elevado para que a
probabilidade, em cada terminal de entrada, de forçar um ‘0’ ou ‘1’ lógico seja de cerca de 50%.
19
Neste trabalho utiliza-se para o gerador de vectores de teste a topologia de um LFSR
modular. Contudo, a metodologia m-BIST proposta pode aplicar-se a qualquer topologia de
LFSR, ou a outro gerador de padrões pseudo-aleatórios. A topologia de LFSR modular
consegue operar a frequências superiores à da topologia LFSR standard, pois tem no máximo
o atraso de uma porta ou-exclusivo entre cada registo adjacente. A saída do último registo é
selectivamente escolhida para realizar a realimentação dos registos anteriores.
Todos os LFSRs são caracterizados por um polinómio de realimentação [4]. O polinómio
de realimentação para um LFSR de grau-n é dado por
Error! Objects cannot be created from editing field codes.
[ 2.1]
Nesta equação, φi = 1 indica a presença de realimentação na entrada Di. A título
exemplificativo, para o polinómio φ ( x) = 1 + x 2 + x 3 + x 4 + x 8 , o circuito correspondente é o
que se ilustra na figura 2.4.
Figura 2-4 – Esquema de um LFSR que gera 28 – 1 vectores de 8 bits
Se o LFSR fosse inicializado com zeros, a aplicação de um sinal de relógio não mudaria o
estado deste. Desta forma, à saída dos registos apareceria uma sequência onde todos os
registos têm ‘0’ na saída, e assim continuaria enquanto não fosse forçado um vector diferente.
Com qualquer outro vector-semente, a aplicação de um sinal de relógio resulta na geração de
um vector também diferente da sequência de zeros.
É o polinómio de realimentação que determina o período da sequência gerada pelo LFSR
[4][48]. O período máximo da sequência gerada por um LFSR de n-registos de deslocamento
é de 2n − 1 ciclos de relógio, sendo o estado no qual todos os registos são ‘0’ o único omitido.
Neste caso, o polinómio do LFSR é designado por primitivo. A sequência de saída gerada é
somente função do estado anterior do LFSR, devido à inexistência de outros sinais de entrada.
20
Quando esta estrutura composta por registos é utilizada com o propósito de gerar padrões
pseudo-aleatórios, as saídas de todos os registos são ligadas às entradas do circuito a testar.
Em cada ciclo de relógio, o conteúdo do LFSR de n-registos é usado como vector de teste.
Caso o CUT seja composto por um número relativamente reduzido de entradas, este pode
ser testado recorrendo à aplicação de todos os possíveis 2 n − 1 vectores de teste. Designa-se
este teste por teste exaustivo. No entanto, se o CUT for caracterizado por um número elevado
de entradas primárias, esta estratégia é proibitiva, devido ao tempo de teste ser demasiado
elevado.
Para uma determinada sequência pseudo-aleatória, a cobertura de faltas é geralmente
obtida por simulação. Neste trabalho, a avaliação das coberturas de faltas, a nível lógico, é
realizada recorrendo ao simulador de faltas comercial da Cadence [93], o Verifault™. Se a
cobertura de faltas for inferior à especificação, o número de vectores de teste pseudoaleatórios a aplicar é ampliado. Todavia, a saturação na curva FC(N) (onde N é o número de
vectores aplicados) torna-se evidente a partir de determinado comprimento de teste, devido à
presença de faltas resistentes a vectores pseudo-aleatórios. Por tal motivo, tem de se
adicionar, aos vectores pseudo-aleatórios, vectores determinísticos que as detectem.
2.2.2. Analisador de Assinatura (SA)
Após estudar a melhor forma de estimular o circuito de forma a levá-lo a passar pelo
maior número de estados possíveis, coloca-se a questão da recolha das respostas do circuito
aos estímulos aplicados. O problema é a enorme quantidade de informação que é necessária
recolher para posterior análise, de forma a poder concluir acerca do correcto funcionamento
do circuito.
Se um sistema integrado tiver x entradas primárias (PI, Primary Inputs), tiver m saídas
primárias (PO, Primary Outputs) e forem aplicados N vectores de teste, o volume de dados
associado à resposta do circuito ao teste é x × N × m . Este volume de informação necessita de
ser comparado com a resposta de um sistema sem faltas, cuja assinatura já é conhecida. O
armazenamento da totalidade da resposta (N vectores) ao teste no próprio circuito e a
21
realização de comparações não é viável. A solução para este problema está, como se referiu,
na compactação da resposta do CUT. Ao longo do teste procede-se à recolha das respostas do
circuito e simultânea compactação, resultando no final na obtenção de uma palavra digital – a
assinatura. Após a obtenção da assinatura final do teste, efectua-se uma comparação com a
assinatura do mesmo circuito sem faltas.
O principal problema com a compactação de respostas do teste é que, ao reduzir-se
drasticamente o número de bit da resposta original do circuito ao teste, perde-se alguma
informação [1][48]. Este fenómeno é designado por mascaramento de faltas (aliasing). Se o
número de saídas for elevado, a probabilidade de aliasing é muito reduzida. Desta forma,
apesar da assinatura do CUT ser idêntica à de um circuito sem faltas, existem três
possibilidades:
1. O circuito em teste não tem faltas;
2. O CUT tem faltas, mas a falta não foi sensibilizada pelo padrão de teste, ou seja não
aparece na saída, durante o teste;
3. O CUT tem faltas, estas foram sensibilizadas, por um ou mais vectores de teste, mas a
informação perdeu-se durante a compressão, obtendo-se uma assinatura final idêntica
à de um circuito sem faltas.
Existem várias técnicas de compactação da resposta do circuito, onde a probabilidade de
aliasing é inversamente proporcional à quantidade de hardware utilizada para a compactação.
Neste trabalho usou-se uma solução de compromisso entre a quantidade de hardware
necessária e uma probabilidade de aliasing suficientemente baixa.
A análise da assinatura consiste no processo de compactação da resposta do circuito aos
estímulos impostos pelos vectores de teste, numa palavra digital de comprimento muito
inferior à palavra sem compactação. Esta palavra representa uma propriedade estatística do
circuito, possibilitando uma forma de poder comparar o funcionamento deste com a de um
sem faltas e cuja assinatura já é conhecida.
A metodologia usada para comprimir a resposta ao teste consiste em ligar a saída i do
circuito à entrada menos significativa do LFSR, como se ilustra na figura 2.5.
22
Figura 2-5 – Analisador de assinatura de m - bits
Esta topologia é basicamente a mesma usada para gerar padrões pseudo-aleatórios. Antes
de se inicializar a compressão da resposta do teste o LFSR é inicializado com todos os
registos a ‘0’.
A questão se saber qual o polinómio de realimentação apropriado para o LFSR, tem sido
objecto de estudo. Concluiu-se que a probabilidade de aliasing, num modelo de erros
independente, é menor se a resposta ao teste for comprimida usando LFSRs com um
polinómio primitivo.
Esta técnica de compressão com LFSRs pode ser utilizada para cada saída do circuito.
Todavia, o aumento da área seria enorme. Também se poderia usar o mesmo LFSR e ir
testando uma saída de cada vez, o que aumentava consideravelmente o tempo dispendido no
teste. A alternativa mais usada, quando o circuito tem múltiplas saídas (i0, i1, ..., im-1), consiste
em aplicar a mesma técnica de compactação a todas elas, recorrendo à utilização de um
MISR (Multiple Input Shift Register), como se mostra na figura 2.6.
Figura 2-6 - Estrutura MISR para um circuito com m saidas
O polinómio de realimentação é o mesmo que o de um LFSR, ou seja um polinómio
primitivo, excepto que as m saídas do circuito se encontram ligadas agora às m entradas do
registo de deslocamento mediante portas lógicas ou-exclusivo (EXOR).
23
A questão que se coloca é saber qual o número de registos a utilizar na estrutura de
compactação da resposta de modo a minimizar a probabilidade de aliasing.
Considere-se de novo o polinómio:
Error! Objects cannot be created from editing field codes.
[2.2]
Seja R( x) = r0 r1...rn−1 a saída do circuito, onde r0 é a resposta ao primeiro vector e rn-1 é a
resposta ao último. Se R(x) for comprimida usando um MISR com o polinómio φ (x) , a sua
assinatura S(x) é dada por:
R ( x) = Q( x)φ ( x) + S ( x)
[ 2.3]
A resposta final, S(x), do MISR, é o resto da divisão da resposta do circuito R(x) pelo
polinómio φ (x) . Note-se que o grau da assinatura é sempre menor que o grau do polinómio
de realimentação.
As condições em que um circuito defeituoso origina uma resposta correcta podem ser
caracterizadas facilmente. Seja Rf(x) a resposta do circuito com faltas, onde Rf(x )≠ R(x).
A assinatura para esta resposta é:
Rf(x) = Qf(x) φ (x) +Sf(x)
[ 2.4]
Para que ocorra aliasing, a assinatura do circuito com faltas tem que ser idêntica à do
circuito sem faltas. As condições em que o erro leva a aliasing são as seguintes:
E(x) = φ (x) [Q(x)+ Qf(x)]
[ 2.5]
Dois aspectos importantes devem ser salientados:
1. O polinómio de erro causa aliasing se e só se for divisível pelo polinómio de
realimentação do MISR.
2. O aliasing não depende da natureza da resposta sem erros R(x), depende apenas do
erro. Esta é a principal diferença relativamente a outros métodos de compressão.
24
Se se admitir que todos os 2n polinómios de erro são igualmente prováveis, a
probabilidade de aliasing pode ser facilmente calculada. Todos os polinómios múltiplos de
φ (x) causam aliasing. Seja o grau de φ (x) , m, e seja o grau de E(x)≤ (n-1). φ (x) pode ser
multiplicado por todos os polinómios possíveis de grau menor ou igual que (n-1-m) para se
obterem todos os polinómios de erro, estes incluem o caso em que não ocorre erro. Por isso
existem 2n-m-1 polinómios de erro diferentes de zero que causam aliasing.
Uma vez que todos os polinómios de erro têm a mesma probabilidade de ocorrer, a
probabilidade de aliasing é dada por:
Pallia sin g =
2 n−m − 1
2n − 1
[ 2.6]
No caso em que 2 n >> 1 e 2 n−m >> 1 , o resultado anterior reduz-se simplesmente a:
Pallia sin g =
1
2m
[ 2.7]
Assim, se o número de registos (m) do compactador de assinuaturas for elevado, a
probabilidade de mascaramento de faltas é desprezável.
2.2.3. Controlador de Teste
Todo o processo de BIST é controlado por um conjunto de sinais que determinam a
sequência das operações realizadas. O bloco responsável pela geração destes sinais é o
controlador. Uma vez que esta sequência é específica de cada metodologia de BIST e de cada
CUT, o controlador desenvolvido para o presente trabalho será descrito na secção 3.5 deste
documento.
2.3. Técnicas Básicas de BIST
25
A fim de determinar qual a metodologia de BIST mais adequadas a solucionar o problema
identificado no capítulo 1, é útil recapitular brevemente as principais metodologias genéricas
de BIST.
2.3.1. Test-Per-Clock
Esta técnica consiste em testar o CUT em cada ciclo de relógio, aplicando um vector de
teste a todo o CUT, como se ilustra na figura 2.7 (a). Contudo, quando o CUT possui um
número elevado de entradas primárias, torna-se vantajoso aplicar um LFSR a um subconjunto
dessas entradas e utilizar o bit mais significativo do LFSR como entrada de um registo de
deslocamento, para providenciar os restantes valores às entradas do circuito em teste, como se
ilustra na figura 2.7 (b). Esta alternativa diminui significativamente o tempo de teste, apesar
de apresentar praticamente a mesma lógica.
LFSR
LFSR
R E G IS T O S
CUT
CUT
M IS R
M IS R
(a)
(b)
Figura 2-7 – Test_per_clock de um sistema integrado com (a) um número reduzido e (b) um número
elevado de entradas.
Outra técnica a utilizar quando o módulo a testar tem um número elevado de entradas
primárias (n > 20) é a possibilidade de aproveitar a existências de cones de sensibilidade.
Com efeito, num CUT combinatório (ou num CUT sequencial, reconfigurado em modo de
teste numa topologia de varrimento completo (full scan)), tipicamente cada saída do circuito
depende de um leque restrito de entradas do circuito. A técnica de explorar os cones de
sensibilidade existentes entre as entradas e as saídas do CUT, permite evitar um teste
26
exaustivo que levaria um tempo longo a finalizar devido ao elevado número de entradas do
circuito.
2.3.2. Test-Per-Scan
Todavia, existem sistemas integrados (CUT) para os quais, utilizando-se uma metodologia
de test-per-clock, o simples aumento do número de vectores de teste não é suficiente para se
atingir uma cobertura de faltas elevada. Nestas situações é obrigatório o recurso a outras
técnicas para se tornar eficaz o teste deste tipo de CUT [1].
Entre estas técnicas destaca-se a introdução de cadeias de varrimento (scan) no circuito a
testar. Nesta técnica, os vectores de teste são aplicados por cada varrimento dos sinais. A
introdução de cadeias de scan permite aumentar a probabilidade de detecção de faltas difíceis
e, desta forma, aumentar a cobertura de faltas do circuito. Nesta técnica aumenta-se, pois,
consideravelmente a controlabilidade e observabilidade de diversos nós internos do circuito,
forçando um estado ao circuito que de outra forma seria difícil de atingir. Exemplifica-se na
figura 2.8 uma estrutura de teste com Scan [4].
Figura 2-8 – Esquema de blocos de uma estrutura de test-per-scan.
Nas cadeias de scan, todos os elementos de memória (registos) do circuito são substituídos
por registos de teste da biblioteca. O objectivo é formarem, em modo de teste, um registo de
deslocamento. Quando o CUT é assim reconfigurado, em modo de teste, procede-se à
introdução, em série através da cadeia, de um vector de teste para testar a parte combinatória
27
do circuito. Após a aplicação de um relógio em modo normal de funcionamento do circuito,
por forma a aplicar ao circuito o vector de teste, procede-se ao deslocamento, também em
série, do estado a que o circuito chegou através da mesma cadeia de scan. Em simultâneo
procede-se ao carregamento do próximo vector de teste. Na figura 2.9 pode ver-se a estrutura
interna de um registo de teste.
S_Test
Rst
P.I.
MUX
Scan In
D
Q
Clk
Figura 2-9 – Registo de teste.
É facil de concluir que a técnica de test-per-clock conduz a um comprimento de teste (TL)
muito inferior do que a técnica de test-per-scan. Além disso, pode não conseguir, para um
CUT sequencial, o mesmo valor da cobertura de faltas (FC) que é obtido com o test-per-scan.
O consumo de energia de uma sessão de BIST com test-per-scan é elevado. Sistemas de EDA
comerciais podem gerar automaticamente, a nível estrutural, a reconfiguração do CUT
sequencial para a sua versão full-scan. A separação do CUT da funcionalidade de teste (TPG,
SA, controlador de BIST) na técnica de test-per-scan torna-a adaptável a uma descrição
funcional a nível RTL (desde que o CUT seja sintetizado para uma versão com full-scan).
Uma técnica que conduza a uma sequência muito longa de vectores de teste trás um problema
adicional: a avaliação da cobertura de faltas, no ambiente de projecto, usualmente realizada
com um simulador de faltas. Com efeito, sessões longas tipicamente têm custos
computacionais proibitivos. Nesse caso, pode ser necessário recorrer a técnicas de emulação
de faltas, tal como a descrita em [89].
2.4. BIST Determinístico
As técnicas de BIST que utilizam geração pseudo-aleatória têm limitações quanto à
eficácia do teste. Com efeito, a presença de faltas resistentes a padrões pseudo-aleatórios [71]
levam a que se tenham de desenvolver técnicas para aumentar a cobertura de faltas (FC), que
envolvem a aplicação de vectores parcial ou totalmente determinísticos – isto é, vectores que
visam a detecção de faltas específicas. Tais técnicas são genericamente designadas por BIST
determinístico [78][79][80][81][82]. A informação relativa aos vectores determinísticos pode
ser armazenada ou gerada por lógica on-chip, ou transferida do exterior do sistema integrado
28
(vinda do ATE, ou de um dispositivo que a armazene, por exemplo, uma ROM no PCB (placa
de circuito impresso, ou Printed Circuit Board) em que o sistema integrado se insere). No
caso de se viabilizar um auto-teste durante a vida útil do componente, e de se armazenar a
informação de teste determinístico no exterior do componente, esta terá necessariamente que
se guardada no PCB.
Nas técnicas de BIST determinístico, a maior parte do volume de dados de teste a aplicar
ao CUT é ainda obtida por geração pseudo-aleatória. Os vectores determinísticos a modular
o padrão de teste pseudo-aleatório são usualmente obtidos através da identificação de um subconjunto de faltas estruturais que não são detectadas por um conjunto de vectores pseudoaleatórios inicial, segunda da utilização de um ATPG a nível estrutural que gera os vectores
determinísticos a aplicar. Esta abordagem apresenta algumas limitações. Em particular, é
centrada num dado modelo de faltas estruturais (normalmente faltas estáticas), e conduz a
resultados eficazes para uma topologia específica de realização. Pode, por isso, não ser muito
eficaz (1) quando o sistema é reutilizado (por exemplo, como IP core) num nó tecnológico
diferente, para o qual outros defeitos físicos originam faltas de comportamento diferente, ou
(2) quando a mesma função, a nível RTL, seja sintetizada numa outra estrutura (por exemplo,
para optimização de atrasos). Como se verá adiante, na metodologia m-BIST, os vectores
determinísticos são gerados a nível RTL, e visam activar funcionalidade pouco exercitada, e
não linhas ou nós da descrição estrutural do CUT. São assim independentes do modelo de
faltas (ou dos defeitos físicos da tecnologia-alvo) e fracamente dependentes da tecnologia
semicondutora de implantação..
Conhecidos os vectores de teste determinístico a aplicar ao CUT, durante a sessão de
BIST, há que definir uma metodologia de aplicação desses vectores. Têm sido propostas um
grande número de técnicas de forçar, localmente, os vectores determinísticos. Essencialmente,
essas técnicas visam
(1)
modular o TPG [34][65][76][77] ou as suas saídas [67][68][70] (isto é, a própria
geração pseuso-aleatória),
(2)
modular directamente os estados dos registos do CUT [28], ou
(3)
inserir (num CUT com BIST em test-per-scan) directamente os vectores
determinísticos nas cadeias de scan, resultantes da configuração dos registos do
CUT em um ou mais registos de deslocamento [48].
29
2.4.1. Geração Pseudo-aleatória Ponderada (WPR)
Um dos primeiros aspectos a analisar é a natureza das entradas primárias (PI) e
secundárias (SI). Com efeito, existem entradas de dados e de controlo. Existem entradas que
preferencialmente assumem um valor lógico, e não o seu complementar. Este é um caso típico
de um sinal de Set (ou Reset). O funcionamento normal do CUT ocorre sem que tal sinal
mude de valor. Se esse terminal de entrada for feito variar aleatoriamente (isto é, com 50% de
probabilidade de assumir o valor ‘0’, e 50% de probabilidade de assumir o valor ‘1’), o CUT
sequencial dificilmente consegue percorrer todos os estados da(s) sua(s) máquina(s) de estado
e, dentro de cada estado, dificilmente consegue exercitar toda a estrutura lógica que
implementa a sua função. Assim, uma das primeiras tentativas de aumentar a FC foi o
desenvolvimento de técnicas de teste pseudo-aleatório ponderado (WPR, Weighted PseudoRandom) [70][71][72][73][74][75].
Tipicamente, a utilização (para entradas específicas) de lógica que force o AND ou OR de
diversos bit do LFSR força a predominância do ‘0’ ou do ‘1’, respectivamente, na sua saída,
permitindo assim a geração de um bit de entrada com probabilidade ponderada. Por vezes
surgem restrições conflitantes nos valores de entrada necessários para detectar as faltas
resistentes a padrões pseudo-aleatórios, pelo que se torna necessário utilizar múltiplos
conjuntos de factores de ponderação [73].
2.4.2. Geração Pseudo-aleatória com Re-semeadura (Reseeding)
Admitindo que se utiliza um LFSR para a geração pseudo-aleatória e que a sessão de
BIST tem um comprimento de teste TL = N<<2n (em que n é o número de elementos de
memória do LFSR), dispõe-se de uma enorme variedade de padrões de teste de comprimento
N. Com efeito, pode-se (1) utilizar diversas topologias (anteriormente, referiram-se as
topologias standard e a modular), (2) utilizar diversos polinómios primitivos, e (3) para cada
topologia e polinómio primitivo, utilizar (2n-1) sementes diferentes. Uma das ideias que logo
vem à mente, para a detecção de faltas estáticas, é a inserção de diversas sementes, durante a
sessão de BIST, sendo que cada semente é um dos vectores determinísticos que detectam
faltas difíceis. Esta técnica veio a ser conhecida como reseeding, ou re-semeadura [53]-[61],
[64]. Pode ser utilizada com LFSR, bem como com outros geradores pseudo-aleatórios tais
como autómatas celulares [63] e contadores [57][58][64]. A ordem em que as sementes são
30
introduzidas e o número de vectores pseudo-aleatórios que se aplicam a seguir a cada semente
influenciam, para o mesmo valor de N, a cobertura de faltas (FC) obtida.
Uma estrutura que permita não só injectar diversas sementes, mas também modificar o
polinómio primitivo, tal como foi proposta em [54], é muito flexível. Todavia, conduz a uma
sobrecarga de teste normalmente inaceitável. Numa implementação de BIST para teste de
produção e para teste durante a vida útil do sistema integrado, é necessário guardar
internamente as sementes (supondo que se fixa um só polinómio primitivo, ou uma só
estrutura de hardware para o TPG). Isso pode ser feito por armazenamento em memória (onchip), ou codificando a geração de sementes através de lógica (por exemplo, usando um
contador para o número de sementes a utilizar). Uma boa solução (em termos de sobrecarga
de teste) é a proposta em [59], em que é codificado em lógica a forma como são geradas as
sucessivas sementes, com base no estado actual do LFSR, como se ilustra na figura 2.10. De
facto, o próprio estado do LFSR activa a sua inicialização com uma nova semente, quando a
lógica de controlo (sediada no controlador de BIST) assim o permitir.
Figura 2.10 – Técnica de reseeding com reduzida sobrecarga de teste [59].
2.4.3. Geração com Comutação de Registo (Bit-flipping)
No projecto industrial de SoC complexos, com auto-teste integrado nos seus blocos
funcionais, a técnica mais usual de BIST utilizada é uma técnica de test-per-scan. Esta
técnica tem vantagens, relativamente à técnica de test-per-clock, nomeadamente a de poder
ser facilmente implementada em CUT sequenciais reconfiguráveis com varrimento completo
31
(full scan), e de introduzirem uma degradação de desempenho limitada (tipicamente menor
que na técnica de test-per-clock) (Figura 2-10).
P.I.
LFSR
CUT
(Circuito Under Test)
P.O.
Cadeia de Scan
Anal. Assinaturas
(MISR)
Figura 2-11 – Arquitectura para implementação da técnica Test-per-Scan
O problema de introdução de vectores determinísticos, na topologa base de uma técnica
de test-per-scan, foi abordado em [66] de forma inovadora, por observação que um teste
pseudo-aleatório contém normalmente muitos vectores inúteis, no que se refere ao incremento
da cobertura de faltas. Tais vectores podem se transformados em vectores úteis, se tão
somente se comutarem (flipping) alguns bit. A função de bit flipping (BFF) tem um reduzido
off-set, que corresponde aos vectores PR úteis (usualmente, asseguram a cobertura de uma
fracção significativa de faltas – as faltas fáceis de detectar). Contém ainda um conjunto
reduzido de bit que necessitam ser comutados (derivados de cubos de teste, com muitos
dont’cares) e finalmente um conjunto amplo de don’t cares. Este facto explica que existe uma
margem grande de optimização da função BFF, que os autores exploram em [66].
2.4.4. Geração com Fixação de Registo (Bit-fixing)
Uma técnica de BIST em test-per-scan, alternativa da proposta em [66], foi introduzida
por Touba e McCluskey [67] e depois expandida por outros autores [68][69]. Trata-se
igualmente de uma técnica mista, na qual são embutidos, numa sequência de vectores pseudoaleatórios, cubos de teste determinísticos. O esquema de base da técnica proposta é ilustrado
na Figura 2-12. Tal como na tecnica de bit-flipping, não se armazenam no chip os cubos de
teste, ou vectores determinísticos. Antes, adiciona-se lógica na saída série do LFSR que gera a
sequência pseudo-aleatória que é injectada na cadeia de scan. Essa lógica adicional destina-se
a selectivamente modificar certos bit da saída série do LFSR, de tal maneira que os vectores a
injectar na cadeia de scan sejam parcialmente deterministicos, e detectem as faltas resistentes
a padrões pseudo-aleatórios. Os autores designam este processo por “correcção do bit” (ou bit
32
fixing) (Figura 2-13). Esta técnica possui características similares às da técnica de bit flipping:
em articular, ambas alteram a sequência série gerada pelo LFSR. Todavia, como os autores
descrevem, os procedimentos para projectar a lógica de alteração dos bit do LFSR são
significativamente diferentes. Por um lado, relacionam os cubos de teste com a posição dos
bit, a fim de minimizar o hardware de teste. Por outro lado, conseguem que o controlo da
lógica seja mais simples do que descrito em [66], o que reduz a sobrecarga de teste associada
ao controlador de BIST. Finalmente, esta técnica permite a utilização de LFSR com um
número reduzido de registos, sendo que pode explorar-se o compromisso entre a dimensão do
LFSR e a complexidade da lógica de mascaramento, por forma a minimizar a sobrecarga de
teste, no que se refere à área de silício.
LFSR
Cadeia de Scan
Fixa-a-1
Gerador de Seq. de
Fixação de Bit
Fixa-a-0
Figura 2-14 – Arquitectura para adoptar a técnica de Bit Fixing em cadeias de Scan
2.5. Metodologia m-BIST para Circuitos Combinatórios
No fluxo de projecto, desenvolve-se uma arquitectura-solução para realizar a
funcionalidade do sistema em desenvolvimento. Um sistema complexo, físico e lógico
(hardware/software) implementa parte da sua funcionalidade em hardware e outra parte em
software. Neste trabalho, considera-se apenas a funcionalidade implementada em hardware.
Uma única funcionalidade pode ser traduzida por muitas descrições comportamentais,
utilizando diversas linguagens de descrição de hardware (HDL, Hardware Description
Languages). As linguagens mais utilizadas, a nível RTL, são as linguagens VHDL e Verilog.
A validação do projecto é levada a cabo, neste nível de abstracção, para verificar se toda a
funcionalidade pretendida pelo cliente (e traduzida nas especificações de sistema) está
correctamente implementada. Ao mesmo tempo que se realiza a validação do projecto, deve
levar-se a efeito uma avaliação, a nível RTL, da testabilidade evidenciada pela arquitecturasolução.
33
Usualmente, definem-se métricas de alto nível, que medem até que ponto os módulos (ou
os objectos, numa técnica de modelação por objectos – OOM (Object-Oriented Modeling))
são coesos e fracamente interligados. Diz-se que um módulo (ou entidade, em linguagem
VHDL) é coeso quando a sua funcionalidade interna (o seu conjunto de métodos, em OOM))
é consistente, isto é, a maior parte dos processos funcionais a executar no módulo necessitam
de dados e controlo disponível localmente. A coesão articula-se com a fraca
interconectividade entre módulos. Do ponto de vista da testabilidade, os módulos internos de
um sistema complexo serão mais facilmente testáveis se exibirem elevada acessibilidade. Em
particular, quanto mais forte é a interligação entre módulos, mais difícil é isolá-los e testá-los.
Assim, a qualidade da arquitectura deve ser escrutinada, em simultâneo, tanto do ponto de
vista do projecto, como do ponto de vista do teste [95]. Neste trabalho, admite-se que a equipa
de projecto do sistema já fixou a arquitectura-solução, e que esta está disponível a nível RTL.
Uma vez que as ferramentas da metodologia m-BIST foram desenvolvidas para a linguagem
Verilog, de aqui em diante assume-se que a descrição RTL de partida é em linguagem
Verilog. Contudo, a metodologia é válida qualquer que seja a linguagem HDL de descrição.
O desenvolvimento de um teste funcional, que permita escrutinar toda a funcionalidade
do sistema, não é uma tarefa trivial. Se se pretender que esse teste seja também realizado
durante a vida útil do sistema, isso requer que o padrão de teste de referência (test bench)
possa ser gerado localmente, com baixo custo em termos da funcionalidade de teste residente
no sistema [22]. Conforme se mencionou, isso é feito primariamente com TPG que geram
testes pseudo-aleatórios. Assim, na metodologia m-BIST, realiza-se uma primeira
experimentação, correndo uma simulação a nível RTL, em que o sistema é actuado por um
padrão de teste pseudo-aleatório.
Como se pode avaliar em que extensão a funcionalidade é exercitada? Uma forma
consiste na utilização de métricas originalmente oriundas do domínio do software, tais como a
cobertura de ramos no grafo de fluxo de controlo (CFG, Control Flow Graph), e a cobertura
de caminhos. Outra forma consiste em assumir modelos de falta, a nível RTL, afectando as
variáveis e condições, e verificar, por simulação de faltas, a taxa de cobertura destas faltas. A
simulação de faltas permite ainda identificar quais as faltas não activadas, e localizar as linhas
de código, na descrição RTL do sistema, às quais elas estão associadas. Esta é a base da
abordagem de simulação da metodologia m-BIST. As faltas RTL difíceis de detectar pelo
padrão pseudo-aleatório estão associadas às partes da funcionalidade difíceis de activar (ou
34
“iluminar”) por um teste pseudo-aleatório – pelo menos, pelo padrão específico de teste
pseudo-aleatório utilizado na simulação 14. Por outras palavras, a simulação de faltas RTL
permite identificar o que se designa, nesta metodologia, por “cantos escuros” da
funcionalidade. Na Figura 2.11 representa-se esquematicamente os dois tipos de cantos
escuros prováveis de obter num sistema digital – independentes, e dependentes ou
embricados, como o caso de um conjunto de condições IF embricadas. Quanto mais restritiva
for a condição (IF de nível inferior), menos provável é que o padrão pseudo-aleatório a active.
Partes funcionais
masks
Dependentes ou embricadas
IF / IF /CASE
Partes
Funcionais
Independentes
IF /
/ IF
IF /IF
/IF
IF
CANTO ESCURO
Figura 2.11– “Cantos escuros” da funcionalidade de um sistema integrado.
PR
TPG
(LFSR)
Vectores PR personalizados
Interface
PR
mi<<n
Másc. 1
Másc. 2
Másc. 3
Másc. 4
Bit “mascarados”
Figura 2.12 – Padrão de auto-teste pseudo-aleatório (PR) personalizado com máscaras.
Uma vez que sejam identificadas as partes da funcionalidade difíceis de testar, torna-se
necessário definir, a partir das entradas do sistema, as variáveis (tipicamente de controlo) que
podem forçar a “entrada” nos cantos escuros. Define-se como máscara o vector de entrada,
14
Desde que o comprimento do padrão de teste seja suficiente para a experiência ter significado estatístico,
verifica-se que a abordagem de simulação permite identificar, com uma única experiência, as partes da
funcionalidade que trazem maior problema, em termos de testabilidade. Além disso, a ideia é reutilizar o mesmo
padrão pseudo-aleatório quando a solução de auto-teste for finalmente aplicada, a nível estrutural.
35
parcialmente definido, que impõe a activação da funcionalidade de um canto escuro. È
razoável concluir que cantos escuros provenientes de partes funcionais independentes
necessitem, cada um, de uma máscara. Para cantos escuros associados a partes funcionais
dependentes ou embricadas, uma ou mais máscaras serão necessarias.
Tipicamente, é necessário forçar um número reduzido de bit, em cada vector de entrada,
ao aplicar uma máscara. De facto, se designarmos por mi o número de bit (com posições
definidas na palavra digital de entrada, de dimensão l) que necessitam ser especificados (com
valor lógico ‘0’ ou ‘1’), tem-se tipicamente que mi << l. Na metodologia m-BIST (ou de autoteste baseado em máscaras), define-se o padrão de teste personalizando um conjunto de
vectores pseudo-aleatórios (PR), de tal forma que os bit não forçados por uma máscara são
preenchidos pelos bit pseudo-aleatórios gerados pelo TPG interno ao sistema. Como se ilustra
na Figura 2.12, isto resulta, quando se aplicam m mascaras, num auto-teste fracamente
determinístico e com um comprimento de teste total reduzido. A aplicação da metodologia mBIST, para um CUT combinatório, torna necessário um circuito de Interface, por forma a
forçar os bit determinísticos à saída do TPG (LFSR). Uma possível solução é descrita adiante
na secção 2.5.3.
Uma vez que à funcionalidade, descrita a nível RTL, corresponderá uma estrutura fisica
no sistema integrado, obtida por síntese lógica e por realização do projecto físico de
implantação no silício (layout), é de esperar que a activação da funcionalidade associada aos
cantos escuros, pelas máscaras, conduza ao exercitar dessa estrutura, por forma a assegurar a
comutação frequente do nível lógico (‘0’ e ‘1’) (toggling) em cada linha da estrutura, desde
que o número de vectores durante os quais se força a activação da funcionalidade seja
elevado. Esse número deve ser tanto mais elevado quanto mais complexa for a funcionalidade
activada pela máscara. Assim, a detecção múltipla de faltas RTL deve estar correlacionada
com a detecção singular de faltas estruturais. Este é um dos princípios subjacentes da
metodologia m-BIST.
Uma vantagem adicional desta metodologia, qiuando comparada com outras metodologias
que aplicam vectores determinísticos, é que a metodologia m-BIST está orientada à
funcionalidade, enquanto que outras estão orientadas a um modelo de faltas. Com efeito,
técnicas usuais, por exemplo de bit-flipping (secção 2.4.3), usam vectores determinísticos
gerados por um ATPG que define vectores capazes de detectar faltas estruturais difíceis de
36
detectar, por exemplo, faltas do tipo LSA. Contudo, na metodologia m-BIST, os vectores
parcialmente determinísticos (as máscaras) forçam a activação de partes da funcionalidade
difíceis de activar (os cantos escuros), independentemente da estrutura que realiza a
funcionalidade. Desse modo, se se pretender detectar defeitos físicos em tecnologias
semicondutoras emergentes, para os quais nem sempre se conhece, a priori, o seu modelo de
faltas, a metodologia m-BIST é especialmente promissora, pois não está polarizada para a
detecção de um tipo específico de faltas, numa estrutura específica.
A geração de máscaras não é um processo trivial, especialmente no caso de sistemas
sequenciais complexos. Assim, desenvolveu-se posteriormente uma segunda abordagem à
metodologia m-BIST – a abordagem probabilística. O conceito básico é a análise
automática do grafo descritivo do sistema, por forma a estimar as probabilidades de controlar
e de observar cada bit de cada variável ou condição na descrição RTL, e a geração
automática, por atravessamento do grafo, das máscaras. Assim, nesta secção descreve-se
primeiro a abordagem de simulação, e depois a abordagem probabilística.
2.5.1. Abordagem de Simulação. Ferramenta VeriDOS
Nesta sub-secção apresenta-se o conjunto de modelos de faltas adoptados, no nível RTL,
úteis para a geração de vectores de teste que assegurem uma elevada cobertura de defeitos.
2.5.1.1. Subconjunto Verilog
Como anteriormente referido, a linguagem de descrição de hardware (HDL) utilizada para
descrever os circuitos no nível RTL foi a linguagem Verilog. Na Tabela 2-1 apresenta-se o
subconjunto de palavras reservadas Verilog para a simulação de faltas no nível RTL.
Tabela 2-1 – Palavras reservadas da linguagem Verilog suportadas
always
and
assign
begin
buf
bufif0
bufif1
case
x
x
x
x
initial
inout
input
integer
join
large
macromodule
x
medium
x
x
x
x
rtranif0
rtranif1
scalered x
small
specify
specparam
strong0
strong1
37
casez
casex
cmos
deassign
default
defparam
disable
edge
else
end
endcase
endfuntion
endmodule
endprimitive
endspecify
endtable
endtask
event
for
force
forever
fork
function
highz0
highz1
if
ifnone
x
x
x
x
x
x
x
x
x
x
x
module
nand
negedge
nmos
nor
not
notif0
notif1
or
output
parameter
pmos
posedge
primitive
pull0
pull1
pulldown
pullup
reg
rcmos
real
realtime
release
repeat
rnmos
rpmos
rtran
x
x
x
x
x
x
x
x
x
x
supply0
supply1
table
task
time
tran
tranif0
tranif1
tri
tri0
tri1
triand
trior
trireg
vectored
wait
wand
weak0
weak1
while
wire
wor
xnor
xor
x
x
x
x
x
x
2.5.1.2. Modelo de Faltas em RTL
O objectivo de um teste de produção é a detecção de defeitos físicos que discrimine os
componentes bons dos defeituosos. Como se referiu, a fim de reduzir o nível do defeito, DL,
na produção, torna-se necessário avaliar, no ambiente de projecto, a cobertura de defeitos
(DC) ou de faltas realistas, e não apenas a cobertura de faltas do tipo linha fixa-a (LSA).
Neste trabalho, visa-se preparar o teste a nível RTL, de forma a poder reutilizá-lo no teste de
produção e no teste durante a vida útil do sistema.
Os modelos de faltas no nível RTL procuram utilizar a informação do nível RTL para
maximizar a cobertura de faltas realistas. Segue-se uma discussão sobre cada um dos modelos
disponíveis, pormenorizado diferenças e justificando a selecção através da relevância para o
fim pretendido – a detecção de faltas realistas.
38
Os modelos de faltas foram originalmente propostos e avaliados [31] na sua capacidade
de serem usados para a geração de padrões de teste capazes de detectar faltas realistas,
especialmente as de difícil detecção.
Os modelos de faltas, a nível RTL, que a ferramenta VeriDOS permite injectar estão
alistados na Tabela 2-2 ([31], pág. 77).
Tabela 2-2 - Modelos de faltas a nível RTL disponíveis na ferramenta VeriDOS [31]
Modelo de Faltas RTL
LSA
Aritméticos
Faltas em Operadores
Relacionais
Anulação de Código
IF/ELSE
CASE
FOR
Descrevem-se em seguida os tipos de faltas RTL passíveis de serem injectadas ([31], pág.
83) e ([31], pág. 146).
2.5.1.3. Faltas do Tipo Linha Fixa-A (LSA)
A utilização do modelo de faltas do tipo linha fixa-a (LSA) no nível RTL é uma herança
natural vinda do nível lógico. Este modelo permite forçar a ‘1’ ou a ‘0’ os bits individuais de
cada variável, composta ou não por conjunto de bits, nomeadamente os registos e os inteiros,
e corresponde a faltas na saída da variável em questão.
A utilização de inteiros deve de ser evitada no nível RTL pois a síntese com a ferramenta
de síntese Design Vision da Synopsys [94] atribui a um sinal deste tipo uma variável composta
de 32 bits, pelo que é preferível alterar o tipo da variável sempre para registo. Variáveis dão
origem a tantas faltas RTL quanto o dobro do número de bits que as integram.
O modelo de faltas tipo LSA, a nível RTL, é aplicável a um universo menor que o do nível
lógico. Com efeito, as variáveis explícitas a nível RTL estão presentes, após a síntese lógica,
no nível estrutural. Contudo, a síntese lógica adiciona novas variáveis lógicas que também
podem estar sujeitas a faltas do tipo LSA. Assim, a lista de faltas do tipo LSA, a nível RTL, é
sempre menor (e um sub-conjunto) da lista de faltas do tipo LSA a nível estrutural. Quando
há injecção de faltas do tipo LSA em elementos no nível RTL, considera-se que uma falta
39
LSA numa saída significa forçar globalmente um valor num nó, registo, ou bit, ou seja, na
própria variável como acontece no nível lógico. Uma falta do tipo LSA numa entrada
implica, no nível lógico, que só à referida entrada desse elemento será aplicada a
correspondente falta. Esse raciocínio extrapolado para o nível RTL, implica uma falta do tipo
LSA numa entrada e só se aplica à linha de entrada correspondente – entendendo aqui
“entrada” em sentido mais lato, como referência a uma variável.
No nível RTL os operadores (variáveis) podem combinar-se em expressões complexas,
sem que o resultado de cada operação fique guardado numa variável ou sinal controlável. A
injecção da falta LSA num bit da primeira ocorrência de um registo não deveria alterar o valor
das futuras ocorrências, na mesma expressão. A injecção deste tipo de faltas não pode ser
efectuada directamente pois altera o valor do registo globalmente – alterando por conseguinte
em todas as ocorrências do registo na expressão – correspondendo a uma falta do tipo LSA
numa saída. Devido a esta dificuldade de injecção, a ferramenta VeriDOS não possibilita a
inclusão automática deste tipo particular de faltas LSA na lista de faltas RTL.
2.5.1.4. Faltas em Operadores
2.5.1.4.1. Operadores Aritméticos
A ferramenta VeriDOS, na sua versão presente, possibilita a injecção de faltas do tipo
LSA em cada um bit dos operandos e, no caso de expressões aritméticas e mediante algumas
alterações, nos resultados parciais da expressão de dados. Desta forma não se compromete a
independência tecnológica e tira-se partido da informação estrutural explícita na expressão.
Este procedimento de injecção de faltas nos operadores não se encontra automatizado.
O modelo de faltas adoptado para operadores aritméticos e relacionais surge da
necessidade de aumentar a correlação entre a detecção múltipla de faltas no nível RTL e a
detecção singular de faltas realistas neste tipo de operadores. Enquanto que as operações
lógicas são realizadas frequentemente recorrendo a uma porta lógica por bit, as operações
aritméticas e as comparações são sintetizadas num conjunto significativo de portas lógicas.
Considerar apenas faltas do tipo LSA nos bits dos operandos e no resultado das operações [+,
-, >, <, >= e =<] é insuficiente para assegurar uma elevada cobertura de defeitos físicos.
40
Enquanto que a cobertura de faltas LSA atinge 100%, a cobertura de faltas realistas no
circuito que implementa a operação sobe de forma mais lenta como demonstrado em ([31],
pág. 83). O modelo de faltas adoptado, apesar de não depender da estrutura lógica, leva em
consideração as variáveis implícitas no operador e permite averiguar da sua funcionalidade
com as diferentes combinações de dados.
O modelo de faltas a nível RTL, para Operadores Aritméticos somadores (+) e
subtractores (–), utilizado no trabalho desta Tese é uma extensão do modelo anteriormente
proposto em [31]. A ideia original consiste em adicional, para cada variável Sinal (resultado
da operação) uma nova variável, Sinal_C, representando a variável de transporte (carry e
borrow), implícita na operação. Assim, passa a incluir-se, na lista de faltas, as faltas que
podem ocorrer em sinais de carry e borrow nas estruturas aritméticas. correspondentes a
faltas LSA1 e LSA0 em cada bit da variável de transporte (carry e borrow) (N-1 bits em
operadores de dimensão N, [31]). No caso de se tratar de uma operação com inteiros assumese que estes têm 32 bits.
Relativamente ao modelo de faltas anteriormente assumido, as diferenças são as que se
indicam a seguir. Em primeiro lugar, em [31] o modelo foi desenvolvido e utilizado apenas
com um contador de 32 bit. Com contadores de maior dimensão, torna-se necessário, para
reduzir o comprimento do teste, de efectuar uma operação frequente, já mesmo nas técnicas
ad-hoc de Dft (Design for Testability): o fraccionamento em diversos contadores de menor
dimensão [1].
Em segundo lugar, foi necessário aprimorar o modelo em si. A injecção das faltas deste
modelo implica a expansão da operação aritmética em ciclos FOR. O modelo de faltas para o
operador somador anteriormente proposto (ver Tabela 2-3) descreve a forma como a nova
variável (Sinal_C) é definida. Esta variável está associada ao sinal de transporte (carry) que
segue a estrutura do ripple carry num ciclo FOR. Por simplicidade, designa-se Sinal_C como
vector de carry 15.
Tabela 2-3 – Código do ciclo FOR – método proposto em [31] para operador somador.
reg [n:0] Sinal_C;
output Sinal_C;
15
No caso do operador subtracção, define-se no modelo uma variável Sinal_C, associada ao sinal de Borrow.
41
Sinal_C[0] = 1;
for (j=1; j<n+1; j=j+1)
Sinal_C[j] = Sinal[j-1] & Sinal_C[j-1];
Sinal <= Sinal - 1;
O modelo descrito na Tabela 2-3 permite injectar faltas RTL na saída do operador (Sinal)
e na variável implícita (Sinal_C), o que aumenta a representatividade do universo de faltas
RTL, relativamente a faltas estruturais. Todavia, fazia-se depender Sinal_C de Sinal, mas não
se fazia depender Sinal de Sinal_C. Esta opção tem reflexos nos valores de acessibilidade
calculados pelo VeriDOS. No caso geral, em que não só os contadores presentes na descrição
RTL podem ser de dimensão elevada, como também o resultado da operação (e da variável
implícita de carry ou de borrow) pode não ser directamente observável (isto é, não ser uma
PO). Assim, o modelo de faltas para o operador somador (+) é o indicado na Tabela 2-4.
Neste modelo, Sinal já depende de Sinal_C.
Tabela 2-4 – Código do ciclo FOR – Modelo proposto para o operador somador.
reg [n:0] Sinal_C
//Sinal <= Sinal - (Teste ? n'h010101: 1);
//Sinal <= Sinal + 1;
Sinal_C[0] = 1;
for (j=1; j<n-1; j=j+1)
begin
if ( (j mod 8)==0 )
Sinal_C[j] = Teste OR (Sinal[j-1] & Sinal_C[j-1]);
else
Sinal_C[j] = Sinal[j-1] AND Sinal_C[j-1];
end
Sinal <= Sinal XOR Sinal_C;
Analogamente, pode utilizar-se o mesmo raciocínio para o caso do operador subtractor (-)
e para o cálculo da variável associada ao borrow. A tabela de verdade de um semi-subtractor
(Half Subtractor) está na Tabela 2-5. A implementação do cálculo do diffi e do bori é a
representada pela lógica da Figura 2-15. Analiticamente as funções dos sinais são diffi (ai,bi) =
ai ⊕ bi e bori (ai,bi) = ~ai ● bi.
Tabela 2-5 – Tabela da verdade de um semi-subtractor (half-subtractor)
ai bi diffi bori+1
0 0
0
0
0 1
1
1
1 0
1
0
42
1
ai
bi
1
0
0
diff i
bor i
Figura 2-15 – Implementação de diffi e de bori
A diferença para a estrutura de um somador (half-adder) é o cálculo do borrow passar a
incluir o uso de uma porta inversora para o seu cálculo. A diferença no código do ciclo FOR
para um cálculo correcto do sinal do borrow (Sinal_C) encontra-se assinalada na Tabela 2-6
Tabela 2-6 – Código do ciclo FOR – Modelo proposto para o operador subtractor.
reg [n:0] Sinal_C
//Sinal <= Sinal - (Teste ? n'h010101: 1);
//Sinal <= Sinal - 1;
Sinal_C[0] = 1;
for (j=1; j<n-1; j=j+1)
begin
if ( (j mod 8)==0 )
Sinal_C[j] = Teste OR (~Sinal[j-1] & Sinal_C[j-1]);
else
Sinal_C[j] = ~Sinal[j-1] AND Sinal_C[j-1];
end
Sinal <= Sinal XOR Sinal_C;
O modelo de faltas a nível RTL, para Operadores Aritméticos entre operandos de N bits,
origina a inclusão na lista de faltas de 2(N-1) faltas: N-1 faltas correspondentes à presença
incorrecta de transporte (PIT), e N-1 faltas correspondentes à ausência devida de transporte
(ADT). No bit menos significativo não são consideradas estas faltas por este não existir
implicitamente [31].
2.5.1.4.2. Operadores Relacionais
O modelo de faltas a nível RTL, para Operadores Relacionais entre operandos de N bits,
origina a inclusão na lista de faltas de N faltas da classe DEB (Decisão Errada no Bit) [31].
43
2.5.1.4.3. Operador Condicional
A linguagem Verilog inclui um operador condicional que permite seleccionar um de dois
valores possíveis, dependendo do valor de uma variável do tipo binário. O modelo de faltas
adoptado para este operador corresponde a forçar a variável de selecção a assumir cada um
dos valores lógicos possíveis. A variável de selecção deve ser utilizada unicamente no
operador condicional em causa, a fim de assegurar que a perturbação introduzida pela falta
não seja múltipla.
2.5.1.5. Faltas do tipo Anulação do Código (Null Statement)
As faltas do tipo Anulação do Código, incluídas na ferramenta VeriDOS, inibem a
execução de uma instrução da descrição do sistema no nível RTL. O modelo de faltas para as
alternativas CASE e para as condições IF (simples, sem ELSE [a variável de controlo começa
por “_ _ _”]) inclui a inibição de execução do código nelas contido. A detecção de faltas
associadas às condições IF/ELSE assegura igualmente a activação do código associado.
Assim, a aplicação deste modelo de faltas correspondente à anulação do código é
aconselhada exclusivamente onde a activação e a observabilidade de processamento associado
ao código respectivo no estão já assegurados por outro modelo.
2.5.1.6. Faltas em Condições IF/ELSE
Este modelo de faltas consiste em forçar a condição a assumir ambas as possibilidades
(stuck-at true, stuck-at false), originando duas faltas por cada condição IF/ELSE. Para a
injecção da falta, em cada condição, será criada uma nova variável. O valor a atribuir a esta
nova variável deve ser uma cópia exacta da expressão na condição original. A nova variável é
utilizada como variável de selecção na condição. No caso da condição ser simples (ou seja, no
valor de bit e uma variável), testa-se se o valor dessa variável se encontra sempre a ‘0’ ou
sempre a ‘1’. No caso de uma condição mais complexa, tal como valor de um conjunto de
registos, testa-se se o resultado desse os registos passam por esse valor, o que consiste em
entender esta falta não como uma falta tipo LSA em todos os registos, mas antes como uma
falta LSA na saída da última porta lógica que permite implementar a verificação da condição.
A fim de tornar mais útil a simulação de faltas, por permitir maior precisão na identificação de
possíveis problemas de testabilidade, é aconselhável que a injecção da falta, em cada
condição, seja realizada à custa da definição de uma nova variável. O valor a atribuir a esta
44
nova variável deve ser feito imediatamente antes da condição IF/ELSE. A nova variável é
utilizada como variável de selecção na condição. Uma vez que esta nova variável não é
utilizada em nenhuma outra parte do código, isso garante que percorrer os caminhos do grafo
associado ao IF/ELSE é condição suficiente para a activação das faltas nesta condição,
procedendo à activação do respectivo grafo.
2.5.1.7. Faltas em Alternativas CASE
Para garantir a selecção de todos os valores possíveis para a variável de selecção, além de
serem consideradas as faltas correspondentes a forçar alternativas, também se consideram as
faltas correspondentes a inibir alternativas. Tal como nas condições IF/ELSE, e pelos mesmos
motivos – maior precisão na identificação de possíveis problemas de testabilidade – propõese, para cada alternativa CASE, a criação de uma nova variável. Alternativas CASE originam
a inclusão, na lista de faltas, das faltas que forçam na variável de selecção cada um dos
valores enumerados no CASE, de um valor diferente de todos os enumerados, e ainda das
faltas que correspondem à inibição de cada um dos valores enumerados.
2.5.1.8. Faltas em Ciclos FOR
O modelo de faltas em ciclos FOR consiste na alteração da descrição RTL, por forma a
permitir a perturbação da execução do ciclo pela utilização dos restantes modelos de faltas de
forma individual em cada iteração do ciclo. A alteração da descrição RTL é necessária no
caso de existirem, dentro do ciclo, variáveis não indexadas cujo valor seja atribuído em cada
iteração deste. Neste caso, as variáveis em causa devem de ser expandidas, por exemplo
formando um array, para permitir a injecção de faltas individualmente em cada iteração do
ciclo.
Quando se realiza a síntese lógica, os ciclos FOR são sintetizados normalmente através da
sua expansão, concretizando os valores possíveis da variável de iteração e utilizando
paralelismo no hardware, de forma a efectuar a funcionalidade do ciclo completo. Este tipo
de procedimento pode ser antecipado, a fim de permitir injectar faltas nas variáveis que serão
implementadas durante a síntese.
A injecção de faltas no código interior de um ciclo for, em variáveis não indexadas pela
variável de iteração, equivale à injecção simultânea de um conjunto de faltas no circuito
45
expandido pela síntese. Esta injecção múltipla afasta-se da realidade topológica dos níveis
inferiores. O modelo de faltas para os ciclos for consiste na alteração da descrição RTL de
forma a permitir a perturbação da execução do ciclo pela utilização dos restantes modelos de
faltas de forma individual em cada integração do ciclo.
2.5.1.9. Modelos de Faltas e Classes de Faltas Injectadas
Após se referirem os modelos de faltas para o nível RTL que o VeriDOS suporta, e quais
os tipos de faltas que cada modelo permite injectar, descreve-se na Tabela 2-7 a
correspondência entre estes modelos e as classes de faltas (descritas na ferramenta VeriDOS
através de um código numérico) que passam a existir, durante a simulação. A descrição das
classes encontra-se na Tabela 2-8.
Tabela 2-7 – Correspondência, na ferramenta
VeriDOS, entre Modelos e e Classes de faltas
existentes.
Modelos de Faltas Classes de Faltas
LSA
0/1, 40/41 e 50/51
Arit.
60/61
Operadores
Relac.
70
Anulação Código
22 e 32
IF/ELSE
20/21
CASE
30/31
FOR
40/41
Tabela 2-8 – Descrição das Classes de Faltas.
Classe
0
1
20
21
22
30
31
32
40
41
50
51
60
61
70
Descrição
Wire ou bit de registo LSA0
Wire ou bit de registo LSA1
“IF” ou “?” stuck-at false
“IF” ou “?” stuck-at true
Atribuição inibida
Alternativa
“CASE”
desactivada
Alternativa “CASE” forçada
“CASE” inibido
Bit de inteiro LSA0
Bit de inteiro LSA1
Bit de registo não expandido
LSA0
Bit de registo não expandido
LSA1
ADT, bit de registo de
transporte LSA0
PIT, bit de registo de transporte
LSA1
DEB, decisão errada nos bits
2.5.2. Abordagem Probabilística. Ferramenta ASCOPA
2.5.2.1. Abordagem Probabilística da Acessibilidade
46
A abordagem por simulação da metodologia m-BIST mostra-se muito vantajosa, mas tem
as suas limitações. Com efeito, não permite automatizar a geração de máscaras, o que é uma
limitação séria à sua introdução no fluxo de projecto de novos produtos. Adicionalmente,
abordagens baseadas em simulação requerem a definição de padrões de teste adequados.
De facto, o colocar a descoberto dos cantos escuros da funcionalidade requer que o padrão
de teste utilizado assim o realize. Na abordagem que se segue, como se tem em mente uma
solução de auto-teste integrado, recorre-se a padrões de teste pseudo-aleatório, já que
finalmente a base do TPG a inserir no sistema integrado será um gerador pseudo-aleatório.
Contudo, os custos de simulação de faltas (em especial, para circuitos sequenciais) são muito
elevados 16. Assim, pode acontecer que um padrão de teste com N vectores (N<<2n-1), relativo
a um polinómio primitivo e a uma semente, sejam insuficientes para identificar todos os
verdadeiros cantos escuros. Pode classificar-se como cantos escuros partes da funcionalidade
que seria exercitada, sem grande dificuldade, por outro padrão pseudo-aleatório. O processo
de ATPG (geração automática de padrões de teste determinísticos), a níveis de abstracção
elevados e, em particular, para circuitos sequenciais, é muito complexo e dispendioso, do
ponto de vista computacional [43]. Assim, seria desejável dispor de uma abordagem diversa
que (1) permitisse a geração automática de máscaras e que (2) dispensasse a existência de
padrões de teste para exercitar a descrição do sistema a nível RTL.
Este é o racional por detrás da abordagem probabilística. Desenvolve-se presentemente
uma nova abordagem num trabalho de Doutoramento [25][27][28], baseado numa técnica de
modelação estatística originalmente proposta por Fallah et al. [45][46]. Contudo, o cálculo
probabilístico da controlabilidade e da observabilidade de cada bit de cada variável ou
condição, é feito directamente sobre a descrição do sistema a nível RTL e não utilizando
também a descrição a nível lógico do sistema, após a síntese lógica como é considerado por
Fallah et al.. Com esta abordagem, pretende-se estimar, com base num grafo que descreva o
comportamento do sistema, a nível RTL, qual é a probabilidade de controlar e de observar
cada bit de cada variável ou condição ao valor lógico ‘0’ ou ‘1’ (probabilidades
complementares), supondo que se conhecem as probabilidades de cada bit da palavra digital
de entrada assumirem o valor lógico ‘0’ ou ‘1’. Para um teste pseudo-aleatório, estas são de
16
Recorde-se que se pretende uma solução de auto-teste integrado pouco intrusiva, na qual se preserve, tanto
quanto possível, os laços de realimentação que caracterizam o circuito sequencial no seu modo normal de
funcionamento.
47
50% (excepto para sinais especiais, como sinais de Set/Reset). Em termos de testabilidade,
quando a probabilidade de controlar e de observar cada bit de cada variável ou condição ao
valor lógico ‘0’ ou ‘1’ é de cerca de 50%, o CUT é facilmente testável. Probabilidades muito
desequilibradas, face a 50%, indicam problemas de controlabilidade e/ou de observabilidade,
que necessitam ser ultrapassados através de vectores determinísticos – as máscaras, na
abordagem m-BIST.
2.5.2.2. Ferramenta ASCOPA
A ferramenta ASCOPA (Automatic Static Controllability Observability Probabilistic
Analysis Tool) tem estado a ser desenvolvida para implementar a abordagem probabilística
acima descrita. A ferramenta aceita como entrada um sub-conjunto da linguagem Verilog de
descrição de Hardware, baseado nas normas IEEE 1364 1995 and IEEE 1364.1 1999
[40][41]. Depois da análise (parsing) da descrição Verilog, constrói um Grafo de Fluxo de
Controlo (CFG, Control Flow Graph) do sistema em projecto [52]. Cada nó do CFG é
associado com o correspondente Grafo de Fluxo de Dados (DFG, Data Flow Graph). Cada
nó do CFG é associado com uma declaração (statement) Verilog. Consideram dois tipos de
nós do CFG: nós de expressões aritméticas, e nós de expressões Booleanas. Cada nó é
associado com uma construção (construct) Verilog no código, tal como IF, CASE ou
CASETAG. Cria-se, de forma concorrente, um grafo de dependências das variáveis (a nível
de bit), enquanto se atravessa a descrição Verilog. À medida que este grafo é construído,
identificam-se os caminhos de condições através dos quais se realiza a atribuição de cada bit
das variáveis, sem se perder a informação hierárquica, mantendo-se assim uma ligação directa
com as linhas de código da descrição a nível RTL. A fim de reduzir os custos computacionais
e poder lidar com sistemas complexos, usam-se métodos de representação simbólica da
funcionalidade do circuito que recorrem a diagramas de decisão binária (BDD, Binary
Decision Diagrams).
Após criar o grafo de dependências das variáveis, a ferramenta ASCOPA resolve as
equações de Chapman-Kolmogorov [44] que descrevem o regime forçado do circuito, e
calcula a probabilidade, Pi, de atribuição do valor lógico ‘1’ associada a cada estado da cadeia
de Markov, isto para cada bit (i) da descrição RTL. Numa primeira abordagem, para o cálculo
destas probabilidades, a ferramenta ASCOPA assume que as probabilidades Pi são
independentes, e calcula a probabilidade de cada estado como o produto das probabilidades
48
dos bits do registo de estado (state register). Esta hipótese pode ser a fonte de erros no cálculo
dos valores das probabilidades. De facto, tais erros dependem da codificação dos estados.
Com o objectivo de reduzir tais erros, podem calcular-se as probabilidades utilizando pares de
bits [42]. Após a convergência, o valor obtido para Pi constitui uma medida da
controlabilidade de cada nó ao valor lógico ‘1’. O valor (1 – Pi) constitui uma medida da
controlabilidade de cada nó ao valor lógico ‘0’.
Tendo obtido uma medida probabilística da controlabilidade de cada bit a ‘1’ ou a ‘0’ (Pi,
(1 – Pi)), a ferramenta ASCOPA avalia uma medida de observabilidade de cada bit, utilizando
o princípio apresentado em [1]. O cálculo da métrica de observabilidade é realizado por
ordem topológica inversa, relativamente ao cálculo da métrica de controlabilidade. De facto, a
ferramenta ASCOPA utiliza um processo de propagação inversa (backward) através do grafo
de dependências das variáveis, partindo de cada bit de saída. Diz-se que um bit de variável xi
é observável se, ao atribuir um valor lógico q a xi em vez de atribuir um valor p , isso causar
uma modificação num bit de variável observável
probabilidade de realizar esta observação por
yj
do valor k para o valor l . Designa-se a
O y j :k , l ( x i : p , q )
. Esta probabilidade é calculada
de modo diferente, caso o bit de variável xi seja uma entrada primária (PI) ou um bit de uma
variável interna.
Caso 1: O bit de variável observável, xi , é uma PI
Neste caso, o valor da observabilidade é calculado a partir de:
O y j :k ,l ( x i : p, q ) =
∑ P( f y =k ( xi = p) ∧ f y =l ( xi = q))
k ≠l
j
(1)
j
com k , l , p, q ∈ [0,1] e p ≠ q . Cada transição do bit xi pode, potencialmente, ser observada
por cada bit de cada variável de saída. Portanto,
O y j :k , l ( x i : p , q )
tem de ser calculado para cada
PO. Os valores da observabilidade podem ser estimados, de forma conservadora, através de
O ( x : p, q) = max O y j ( x : p, q) . Por simetria, obtem-se
j∈{1,..., m }
O ( x : p, q ) = O ( x : q, p ) .
Caso 2: O bit de variável observável, xi , é um bit de uma variável interna
49
Seja x o bit do nó interno, e h x uma função que representa a dependência de x com as PI e
os registos. Considerando uma saída y j dependendo de x (ou: podendo observá-lo), através
da funçaõ f y j , seja f yx a função no nó y j em função das PI’s, dos registos e do nó interno x ,
j
conforme representado na Figura 2-16:
f yx = f y j ( x1 , xi −1 , x, x i +1 ,..., x n )
j
Neste caso, o valor da observabilidade é calculado através de:
O y j :k ,l ( x : p, q ) = ∑
P( f yx = k ( x = p ) ∧ f yx =l ( x = q ) ∧ h x = p )
k ≠l
j
j
P(h x = p )
x1
x2 x 2
x3
hx
x4
x5
...
xn − 2
xn −1
f yx
com k , l , p, q ∈ [0,1] e p ≠ q .
j
yj
xn
Figura 2-16 – Esquema referente a um bit de uma saída observável
yj
.
O termo h x = p é incluído com o objectivo de calcular a probabilidade condicionada ao facto do
nó x ter o valor lógico p (formula de Bayes). Neste caso não existe simetria e a relação
O ( x : p, q ) = O ( x : q, p )
pode já não ser verdadeira.
Além de calcular as métricas probabilísticas de controlabilidade e de observabilidade, a
ferramenta ASCOPA também pode gerar automaticamente máscaras para a activação de cada
condição [27]. O processo de geração de máscaras é realizado durante a construção do grafo
de dependência das variáveis. Embora se possa gerar máscaras para todas as condições
explícitas na descrição Verilog do sistema, a nível RTL, a geração de máscaras, pelo
ASCOPA, é realizada a pedido do utilizador. Como se referiu, após a identificação dos cantos
escuros da funcionalidade, importa gerar um sub-conjunto específicos de máscaras. Cada uma
dessas máscaras deve ser inserida no padrão de teste pseudo-aleatório e experimentada,
através de simulação de faltas, com o VeriDOS, para avaliar da sua utilidade para obter FC(n)
próximo de 100%. Deste modo, na metodologia m-BIST (tanto na sua vesão anterior, como
50
na versão proposta nesta Tese para circuitos sequenciais), a geração de máscaras é automática.
Contudo, a selecção final das máscaras, sua sequência, sua instanciação e o número de ciclos
de relógio em que são activadas, em cada instância, é realizada manualmente pelo projectista.
2.5.3. Injecção de Máscaras em CUT Combinatórios
No caso de um CUT combinatório, a solução mais adequada é uma técnica de test-perclock, que permite um auto-teste à velocidade normal de funcionamento (at-speed testing).
Como se mostrou na Figura …, a injecção de mascaras é realizada, após uma sequência de N0
vectores pseudo-aleatórios (PR), forçando durante Ni ciclos de relógio, um conjunto restrito
de mi bit da palavra digital de entrada (PI) e preenchendo os restantes (1- mi) bit com os
valores lógicos gerados pelo LFSR. Torna-se assim adicionar alguma lógica de
mascaramento, entre a saída do LFSR e a entrada do CUT, para personalizar deste modo o
teste PR. Essa lógica pode ser reunida ao multiplexador (MUX) que selecciona como entradas
do CUT, ou as entradas primárias (PI), ou os valores gerados localmente pelo TPG (LFSR).
Juntar a funcionalidade do MUX e da lógica de mascaramento tem a vantagem de, ao se
proceder à síntese lógica, se obter uma solução de bIST com uma sobrecarga de teste mais
reduzida. Designa-se por MMIC (Masked-based Multiplexer Interface Circuit) a
funcionalidade de interface (Figura 2-17).
PI0
PI
TPG
LFSR
LFSR
CUT
PIn
POm
...
MMIC
...
n
PO0
n
SA
MISR
MISR
BIST Controller
MMIC - Masked-based Multiplexer Interface Circuit
Figura 2-17 – Arquitectura de aplicação da metodologia m-BIST a CUT combinatórios [26].
Em [26] propuseram-se duas arquitecturas para implementação do MMIC, uma das quais
introduz uma sobrecarga de teste apreciável, e termos de área de silício (embora com reduzida
degradação do desempenho). Por tal motivo, nesta secção revê-se brevemente apenas a
solução arquitectural mais interessante.
51
O diagrama de blocos proposto está ilustrado na Figura 2-18. Nesta figura, k representa o
número de mascaras e s o número de bit de selecção – s = log 2 (k + 2) . A geração de sinais de
selecção, SEL signals, que seleccionam qual vector deve ser aplicado nas entradas do MUT
(Module Under Test) (PI, LFSR (sem máscara) ou Mi, forçando a máscara i) é implementada
como uma máquina de estados (FSM) simples, utilizando um contador. A fim de manter
estáveis, durante o ciclo de relógio, as saídas do módulo MMIC, inserem-se registos de saída.
A sobrecarga de teste, em termos da degradação de desempenho dependerá, para cada
tecnologia e biblioteca de células, da ferramenta de síntese (e das opções de síntese utilizadas
nesse processo). O habitual compromisso entre minimização de área ou maximização da
rapidez de resposta ditará como se reparte a sobrecarga de teste nestes dois factores
conflituantes.
C ontroller
S E L0
S E Ls
PI i
L FS R i
M0B 0
MUX
MUT i
M kB n
{SEL = 0}
{SEL = 1}
{SEL = 2}
{SEL = k+2}
=>
=>
=>
···
=>
{MUT} = {PI}
{MUT} = {LFSR}
{MUT} = {M1}
{MUT} = {Mk}
Figura 2-18 – Diagrama de blocos da funcionalidade MMIC [26].
A fim de ilustrar as potencialidades da metodologia m-BIST, recordam-se resultados
obtidos com alguns circuitos de referência da colecção ITC’99 [37], em particular módulos de
processadores CMUDSP [97] e Torch [98], Figura 2-19.
52
RTL
AGU_ control
Módulo
# lines
(LOC)
# RTL
faults
# logic
gates
# real.
faults
4 000
698
466
2853
AGU_control
714
972
640
3489
PCU_control
Cp0_control
503
Orig.
MOA_PPsum
Logic
110
100
474
9912
13200
39682
96
Exp.317
#
máscaras
# PI
# Total de
bit
definidos
14
35
217
PCU_control
6
347
241
Cp0_control
3
28
16
MOA_Ppsum
3
272
270
Figura 2-19 - Características dos MUT e das máscaras utilizadas [26].
Para um dos exemplos, o circuito AGU_Ctr, obtém-se a mesma cobertura de defeitos
(DC=97%) com 5000 vectores (e máscaras) e com 2.500.000 vectores pseudo-aleatórios.
2.6. Conclusões
Neste capítulo enquadra-se o trabalho a desenvolver na Tese, no que diz respeito às
principais metodologias e arquitecturas-base para implementar um auto-teste integrado
(BIST) num sistema digital realizado de forma monolítica.
Assim, recordou-se a arquitectura-base de BIST, com controlador de BIST, TPG e
analisador de assinatura, e as duas técnicas base de realização ao auto-teste – o teste ao ritmo
do ciclo de relógio (normalmente mais utilizado em teste de CUT combinatórios) (test-perclock), e o teste por varrimento (usualmente utilizado no auto-teste de sistemas sequenciais,
como é o objectivo do presente trabalho) (test-per-scan). Salientou-se a vantagem de poder
realizar o teste ao ritmo do ciclo de relógio no que se refere (1) a poder realizar um BIST à
frequência nominal de operação (at-speed test) e (2) a poder detectar faltas dinâmicas,
utilizando-se uma topologia de CUT basicamente não reconfigurado, isto é, mantendo a
topologia que tem no seu modo normal de operação.
Trouxe-se à atenção as técnicas que envolvem o BIST de alta qualidade – o que assegura
uma eficácia de teste muito elevada – que necessitam de garantir a detecção de faltas
resistentes a padrões pseudo-aleatórios (PR). Apresentou-se, pois, uma breve panorâmica de
BIST determinístico, nas suas soluções conceptuais – WPR, reseeding, bit-flipping, bit-fixing
– e numa solução comercial vocacionada para o BIST de SoC complexos – o teste
53
determinístico embutido (EDT). Tais técnicas, para sistemas sequenciais, essencialmente
assentam em soluções de teste por varrimento.
Finalmente, apresentou-se uma revisão da metodologia m-BIST, visto que serve de base a
todo o trabalho desta Tese. Forneceu-se o detalhe necessário para a extensão da metodologia
m-BIST a sistemas sequenciais (que se apresenta no capítulo 3). Descreveram-se as duas
abordagens complementares – de simulação, e probabilística e as duas ferramentas de suporte
– o simulador multi-nível, VeriDOS, e o estimador probabilístico ASCOPA. Apresentaram-se
os modelos de faltas, a nível RTL, e como podem ser considerados pelo simulador VeriDOS.
Salientou.se a necessidade de alteração do código RTL inicial, a fim de permitir a injecção de
faltas. Finalmente, abordou-se o problema da injecção de máscaras em hardware nos CUT
combinatórios, visto que este é um problema importante a ser resolvido na extensão da
metodologia m-BIST para CUT sequenciais.
3. Metodologia m-BIST para Circuitos Sequenciais
3.1. Princípios Subjacentes da Metodologia
Pretende-se neste trabalho desenvolver uma nova metodologia de auto-teste integrado
(BIST) dinâmico de reduzido consumo de energia caracterizada por:
Estender a metodologia m-BIST a sistemas digitais sequenciais
Poder ser aplicada na realização do auto-teste à frequência normal de operação do
CUT (at-speed testing)
Poder estender-se de faltas estáticas para faltas dinâmicas, sendo assim
caracterizada por uma solução BIST pouco intrusiva, sem desfazer os laços de
realimentação que estão associados ao carácter sequencial do CUT
Permitir definir sessões de BIST com valores reduzidos do Nível de Defeito (isto
é, com valores elevados de Cobertura de Faltas (FC) estruturais), com
comprimentos de teste (TL) reduzidos (reduzido consumo de energia), com uma
dissipação de potência comparável à de um teste pseudo-aleatório e com uma
sobrecarga de teste comparável à de outras metodologias BIST
54
Permitir introduzir a functionalidade de BIST a nível RTL, conduzindo assim a
uma síntese lógica que reduza a sobrecarga de teste, em comparação com a
sobrecarga que resulta da introdução de BIST a nível estrutural
Poder ser automatizada, de forma a que a sua aplicação (com recurso, no presente,
às ferramentas VeriDOS e ASCOPA) no fluxo de projecto de um sistema digital
integrado seja fácil.
Com estes objectivos em mente, e tendo em conta as principais características da
metodologia m-BIST para circuitos combinatórios, definiram-se os seguintes princípios
subjacentes para a metodologia que se propõe nesta Tese:
A metodologia a desenvolver reutilizará, sempre que possível, os princípios
orientadores utilizados na metodologia m-BIST para CUT combinatórios
A metodologia proposta desenvolve-se em dois ciclos, com objectivos
complementares:
1º. Ciclo, de preparação do auto-teste a nível RTL, que visa definir (a esse
nível de abstracção) o padrão de auto-teste a aplicar ao sistema sequencial
(como uma associação de teste pseudo-aleatório (PR, Pseudo-Random) e de
teste determinístico (as máscaras)). Este primeiro ciclo, necessariamente mais
longo que o segundo ciclo, torna necessário a geração, a nível RTL, da
funcionalidade de BIST requerida para a injecção de máscaras.
2º. Ciclo, de implantação do auto-teste integrado, que visa gerar a descrição
estrutural do CUT com m-BIST e validar, a nível estrutural, a qualidade do
auto-teste definido no 1º. Ciclo. Este 2º. Ciclo inicia-se com a geração do
MISR para compactação de assinatura, inclui a síntese lógica e pode ir até ao
projecto fisico, com a implantação (layout) no semiconductor, no caso de
sistemas integrados SoC (não implementados em componentes programáveis,
tais como FPGA (Field Programmable Gate Arrays)).
A fim de aumentar a detecção de faltas dinâmicas, a solução m-BIST pouco
intrusiva mantém o carácter sequencial do CUT, sendo em realidade uma solução
de test-per-clock, e não uma solução de test-per-scan.
A metodologia proposta permite, na fase inicial, realizar uma depuração (debug)
do projecto, já que, ao escrutinar a descrição RTL da funcionalidade do sistema,
permite identificar falhas de projecto (design flaws), por exemplo, partes de
55
funcionalidade que não podem nunca ser exercitadas. Esta particularidade pode
revelar-se muito útil, já que o projecto de sistemas integrados complexos SoC se
baseia na reutilização, sempre que possível, de módulos funcionais usados com
sucesso em projectos anteriores, quer sejam IP cores provenientes de diversos
vendedores, que sejam módulos de lógica definidos na empresa em projectos
anteriores (UDL, User Defined Logic) [96].
O processo de TPG (geração do padrão de teste pseudo-aleatório embricado com
as máscaras) deve ser guiado por duas características. Primeiro, deve tomar em
consideração a natureza das PI, SI, PO, e SO. Em particular, procura-se aplicar
teste PR em todas as variáveis menos sinais de relógio e sinais de Set/Reset.
Segundo, o processo de TPG deve procurar uma solução que restrinja, o mais
possível, (1) o número de máscaras, (2) o número de instanciações das máscaras,
(3) o número de bit fixos por máscara (isto é, o número de MSI (Masked
Secondary Inputs) e de MPI (Masked Primary Inputs)), e finalmente (4) o
comprimento do teste – o número total de vectores PR não mascarados (N0) e o
número de vectores personalizados por cada máscara (Ni).
O processo de TPI (Test Point Insertion) é conduzido com dois objectivos, em
fases distintas do processo de preparação do teste. Realiza-se TPI para reforçar a
controlabilidade de variáveis através da acção de injectar máscaras, forçando
assim o controlo de valores lógicos em bit específicos de variáveis (MSI, MPI).
Realiza-se eventualmente TPI, na fase terminal da selecção do padrão de teste,
para reforçar a observabilidade de variáveis, tornando observáveis alguns bit de
algumas SO (observáveis no MISR de compactação da assinatura).
A metodologia é descrita nas secções seguintes. Todavia, para facilitar a compreensão,
introduz-se, primeiro, na próxima secção as métricas de testabilidade, a nível RTL, que são
utilizadas na metodologia proposta.
3.2. Métricas de Testabilidade a Nível RTL
Este termo designa as medidas que quantificam o grau de dificuldade associado ao
controlo e à observação das variáveis do sistema integrado. O objectivo é, através do uso
destas métricas, realçar as características desfavoráveis do sistema e/ou do padrão de teste que
se pretende definir e reutilizar para o auto-teste integrado, quer durante a produção, quer
durante a vida útil do sistema integrado.
56
3.2.1. Acessibilidade de Variáveis RTL
A cada modelo de faltas usado para o nível RTL está associado uma variável. Se, durante
uma simulação com um padrão de teste, esta variável nunca apresentar um valor lógico que
permita activar a falta correspondente, tal facto representa um problema de controlabilidade.
Por exemplo, se um dado bit de uma variável de 8 bit sempre apresentar o valor lógico ‘0’ na
actuação de todos os vectores de teste que compõem o padrão de teste, é impossível, com este
padrão, activar a falta desse bit LSA0 (ou fixo a ‘0’).
Similarmente, se uma falta é activada repetidas vezes mas essa activação não se repercute
como uma diferença observável nas saídas primárias, existe um problema de observabilidade.
A acessibilidade de cada bit de cada variável (isto é, a sua controlabilidade e a sua
observabilidade) constitui assim o critério de avaliação da testabilidade. As faltas difíceis de
detectar, identificadas pelas medidas de testabilidade no nível RTL, correspondem a caminhos
funcionais difíceis de activar e/ou cujo processamento é difícil de observar. Essa dificuldade
tem necessariamente o seu impacte a nível estrutural. Com efeito, após a síntese, no nível
lógico, esses caminhos serão implementados por portas lógicas e nós do circuito com
controlabilidade e/ou observabilidade reduzidas.
3.2.2. Detecção Múltipla e Métricas de Testabilidade a Nível RTL
Um teste de produção de elevada qualidade requer uma cobertura simples, ou singular,
muito elevada de defeitos físicos (DC, Defects Coverage) [51]. A detecção singular de faltas
RTL, embora possibilitando assegurar perto de 100% da cobertura do faltas a nível RTL e
permitindo uma validação do projecto, não garante por si só valores elevados de DC. De
facto, muitas variáveis implícitas (isto é, não explícitas no código RTL) e muitas linhas e nós,
a nível estrutural, estão ausentes da descrição RTL, e portanto da lista de faltas cuja detecção
é avaliada, a esse nível. Verificou-se, porém, que a detecção múltipla de faltas RTL pode
aumentar significativamente a probabilidade de activação e de propagação de defeitos físicos
[31]. É este o princípio subjacente à utilização das métricas de testabilidade em circuitos
sequenciais, baseadas em simulação, a nível RTL, que se procura explorar.
Após um processo de simulação de faltas, a nível RTL, com um padrão de teste
representativo, as faltas que apresentam um número reduzido, ou eventualmente um número
57
nulo, de detecções e/ou números reduzidos de controlabilidade, serão naturalmente alvo de
análise bem como o código que lhes está associado. Recorde-se que a detectabilidade de uma
falta está associado à verificação cumulativa de duas condições: (1) a sua controlabilidade e
(2) a sua observabilidade. Um aspecto fundamental para melhorar níveis reduzidos de
testabilidade obtidos com um dado padrão de teste (na abordagem de simulação) é conhecerlhes a sua causa. Esta pode ser a não activação das faltas (ausência de controlabilidade), ou a
ausência de propagação de diferenças Booleanas pelo menos para uma saída observável
(ausência de observabilidade), ou a ocorrência em simultâneo das duas causas anteriores. A
informação da simulação, com o VeriDOS, permite dispor do número de detecções como
também do número de activações da falta, o que permitirá distinguir entre estas duas causas.
Estes números (ou, mais precisamente, as percentagens, relativamente aos valores
máximos possíveis) de activações e de detecções das faltas são os parâmetros que constituem
as métricas de testabilidade para um circuito representado no nível RTL.
Considere-se então um sistema digital C com um conjunto F de Nf faltas a nível RTL (F =
{f1,f2,...,fi,...,fNf}), ao qual é aplicado um padrão de teste T com uma sequência de N vectores
de teste (T = T1,...Ti,...,TN). Se cada falta fi for activada nai vezes e detectada ndi vezes,
definem-se as seguintes métricas de testabilidade:
•
Controlabilidade-n da falta fi:
⎧ n ai
⎫
⎪ , n ai < n ⎪
⎬
COi = COi ( fi, n ) = ⎨ n
⎪1, n a ≥ n ⎪
i
⎩
⎭
•
Detectabilidade-n da falta fi:
DO
•
i
⎧ ndi
⎫
⎪ , ndi < n⎪
= DOi ( fi, n ) = ⎨ n
⎬
⎪1, n d ≥ n ⎪
i
⎩
⎭
Observabilidade-n da falta fi:
OO = OO ( fi, n) =
i
i
DO
CO
i
i
com nai e ndi ∈ (0,...,N). O grau de multiplicidade da detecção, n, pode ser definido pelo
utilizador. Contudo, verificou-se que um valor de n entre 5 e 10 era suficiente para assegurar
58
uma correlação elevada entre a detecção múltipla de faltas RTL e a detecção singular de faltas
estruturais [31]. Assim, neste trabalho assumiu-se n=5. Tipicamente utiliza-se inicialmente
uma sequência de N = 5000 vectores pseudo-aleatórios.
A título ilustrativo, apresenta-se nas Figura 3-1 e Figura 3-2 os resultados de
controlabiladade (COi) de detectabilidade (DOi) obtidos com o VeriDOS para o circuito de
referência b10 [37], quando a simulação de faltas é realizada com N = 5000 vectores.
B10: CO com PR
CO
1
0,75
0,5
0,25
0
0
20
40
60
80
100
# Faltas RTL
Figura 3-1 – Controlabilidade de faltas RTL no circuito b10, com N=5000.
B10: DO com PR
DO
35
30
25
20
15
10
5
0
0
20
40
60
80
100
# Faltas RTL
Figura 3-2 – Detectabilidade (n=5) de faltas RTL no circuito b10, com N=5000.
Como pode observar-se, existe um sub-conjunto de faltas RTL de controlabilidade nula,
inferior ao conjunto de faltas não detectadas pelo padrão de teste pseudo-aleatório. Isso
significa que existem faltas activadas, mas não detectadas pelo menos 5 vezes.
59
Considere-se o caso da observabilidade múltipla OOi obtida pala ferramenta VeriDOS em
função das outras duas anteriores. Se o sistema C for puramente combinatório (ou
combinatório com entradas e saídas terminadas por registos), conclui-se que ter-se-á sempre
DOi < COi, uma vez que a detecção de uma falta obriga à sua prévia activação. Na situação
do sistema C ser sequencial, a desigualdade já não se verifica necessariamente.
Considerando um sistema C que descreva uma máquina de estado (FSM; Finite State
Machine), actuado por um dado padrão de teste. Pode verificar-se que, no decurso da
simulação de faltas, a simples atribuição a uma variável de um valor lógico ‘0’ ou ‘1’, Figura
3-3, seja suficiente para desencadear, em cascata nos sucessivos ciclos de relógio posteriores,
um número elevado de transições entre estados que abra a possibilidade de múltiplas
detecções.
0
X
1
Figura 3-3 – Parte do diagrama de estados de uma FSM, ilustrando múltiplas activações.
Assim, observa-se uma característica importante que distingue os sistemas combinatórios
dos sequenciais. Com efeito, no caso de sistemas C combinatórios, a detecção de uma falta
estática é (ou não) realizada em cada período de relógio. A detecção da falta obriga, como
condição necessária, a sua activação nesse período de relógio. No caso dos sistemas C
sequenciais, a activação da falta é também condição necessária; contudo, essa activação pode
ocorrer em ciclos de relógio anteriores à sua detecção, já que a geração de uma diferença
Booleana, no interior de um circuito sequencial, pode propagar-se, nos sucessivos ciclos de
relógio posteriores, para uma saída observável. Esta uma característica observável na
abordagem de simulação, com o VeriDOS, mas não observável, na sua versão actual, pela
abordagem probabilística, com a ferramenta ASCOPA.
60
Todavia, os valores de controlabilidade e de observabilidade obtidos com as duas
ferramentas convergem para um número N de vectores PR relativamente reduzido, como se
pode observar na Figura 3-4 para o caso do circuito de referência b10 [37][38]. Para este
circuito, conduziu-se a simulação com o VeriDOS para N ∈ (5000, 100.000) vectores. Como
se pode observar, a maioria das variáveis tem controlabilidades (a ‘0’) de cerca de 50%, o que
significa que tanto é fácil forçar um valor lógico ‘0’, como um valor lógico ‘1’. Contudo,
algumas variáveis (por exemplo, sign_0, sign_1, sign_2 e sign_3) apresentam valores de
controlabilidade muito próximo de 100%, ou de 0%, o que significa que um (e apenas um)
dos valores lógicos é forçado em quase todos os vectores de teste, ao passo que o valor lógico
complementar não é quase nunca activado. Essas são as variáveis que evidenciam problemas
de controlabilidade e, em consequência, problemas de detectabilidade. A elas estão associados
cantos escuros.
B10: Convergence (P-based (ASCOPA), S-based (VeriDOS))
VeriD-5k
VeriD-25k
VeriD-50k
1
0,8
VeriD-100k
ASCOPA
0,6
0,4
0,2
voto3_0
voto2_0
voto1_0
voto0_0
v_out_3_0
v_out_2_0
v_out_1_0
v_in_3_0
v_out_0_0
v_in_2_0
v_in_1_0
test_0
v_in_0_0
stato_3_0
stato_2_0
stato_1_0
start_20
stato_0_0
sign_3_0
sign_2_0
sign_1_0
sign_0_0
rtr_20
rts_20
last_r_0
r_button_0
key_20
last_g_0
g_button_0
ctr_0
cts_0
0
RTL Variables
Figura 3-4 – Resultados de Controlabilidade obtidos para o b10 com o VeriDOS e com o ASCOPA.
Assim, é com base nos valores de controlabilidade e detectabilidade múltipla (obtidos na
abordagem de simulação, com a ferramenta VeriDOS) que se definem as medidas de
activação e de detecção de multiplicidade n de faltas para o sistema integrado.
•
Controlabilidade-n das faltas RTL:
NF
FCC (n) =
∑ CO (n)
i
i =0
NF
61
•
Detectabilidade-n das faltas RTL:
NF
FC (n) =
∑ DO (n)
i
i =0
NF
Como já foi constatado [31], a detecção de faltas com multiplicidade n é uma medida bem
correlacionada com a cobertura de faltas realistas, em particular com faltas de difícil detecção.
Esta boa correlação permite a utilização de FC(n), no nível RTL, para avaliar diferentes
estratégias na procura de um teste de produção (ou a aplicar durante a vida útil do produto) de
alta qualidade.
3.2.3. Graus de Testabilidade
Os dados recolhidos pela ferramenta VeriDOS com a simulação de faltas a nível RTL, em
função das métricas de testabilidade definidas, permitem distinguir entre as 4 situações
possíveis, alistadas na Tabela 1.
Dados (CO, DO)
Boa detectabilidade e
Boa controlabilidade
Fraca detectabilidade
e boa controlabilidade
Boa detectabilidade e
Fraca
Controlabilidade
Fraca detectabilidade
e fraca
controlabilidade
Conclusões
Situação desejável
Problema de observabilidade
Variáveis fracamente controladas mas
observáveis o suficiente. A fraca
controlabilidade cria “Cantos Escuros”
Variáveis fracamente controladas, o que
força detectabilidade fraca. Esta pode advir
adicionalmente de fraca observabilidade. A
fraca controlabilidade cria “Cantos Escuros”
Grau de
gravidade
Tipo
de
situação
4º
4
3º
3
2º
2
1º
1
Tabela 3-1 – Graus de gravidade nos problemas de testabilidade identificados pelo VeriDOS.
O diagrama da Figura 3-5 procura explicitar as condições que criam os diferentes tipos de
situação, directamente relacionados com a gravidade do problema de testabilidade que
acarretam.
62
CO
< COi, < DOi
1
CO
< COi, > DOi
2
1. Melhorar
CO
2. Melhorar
OBS
Canto Escuro
OBS
> COi, < DOi
3
> COi, > DOi
Sem Problema
4
Figura 3-5 - As quatro situações distintas em função dos valores das métricas
A situação desejável é a que corresponde ao tipo 4. Todas as faltas cujos dados de COi,
DOi indiquem situações dos tipos 1, 2 e 3 são objecto de análise. Em termos de
acessibilidade, a prioridade vai para resolver os problemas de controlabilidade. Com efeito,
sem controlabilidade, a detactabilidade é impossível. Os vectores determinísticos a definir (as
máscaras, na abordagem m-BIST) visam controlar os bit das variáveis associadas a
funcionalidade difícil de activar com o padrão pseudo-aelatório – assim, valores insuficiente
de controlabilidade indicam a existência de “Cantos Escuros”.
Qualquer introdução de vectores determinísticos no padrão de auto-teste em construção
pode alterar os valores de COi e DOi associados às restantes faltas. É de supor que a
resolução, em primeiro lugar, de problemas do tipo 1 (pela introdução de máscara(s)) elimine
problemas do tipo 2. Por outras palavras, a resolução de problemas de controlabilidade em
determinadas variáveis melhora a controlabilidade de outras. Diversos problemas do tipo 2
acabam por originar problemas do tipo 1 – aumento dos cantos escuros. É portanto também
possível que a resolução de problemas do tipo 2 elimine problemas do tipo 1.
Os problemas do tipo 3 [Fraca detectabilidade e boa controlabilidade] derivam
directamente de fraca observabilidade e só devem ser resolvidos após a resolução dos
problemas de controlabilidade.
63
3.2.4. Significado das Métricas de Testabilidade nas Condições
A contabilização do número de vezes que um ramo do grafo que descreve o circuito no
nível RTL é percorrido, pode ser feita com rigor a partir do número de activações e detenções
das faltas RTL.
No caso do modelo de faltas para as instruções CASE, a simulação permite aferir, a partir
dos resultados, qual a percentagem do tempo ocupada em cada estado. O número de vezes que
a falta associado à entrada no ramo numa condição IF/ELSE é activado constitui o número de
vezes que o ramo é percorrido, para este padrão de teste. Uma falta considera-se activada
sempre que ocorrer um valor lógico na variável de selecção que permita a entrada no ramo
que possibilita a execução daquele pedaço de código.
A detecção das faltas em condições IF/ELSE e em alternativas CASE, que são injectadas
por alteração dos valores dessas variáveis, assegura que os ramos associados seriam
percorridos se a injecção não tivesse tido lugar. Assim sempre que uma falta numa condição
ou alternativa CASE for detectada é assegurado que o ramo associado é percorrido. É no
entanto, possível que a falta seja activada mas não ocorra detecção por falta de
observabilidade.
A detecção da falta associada a uma variável de selecção utilizada numa instrução
IF/ELSE permite verificar que a falta associada
à saída da última porta lógica que
implementar a condição de teste altera a funcionalidade do circuito permitindo a observação
de diferenças booleanas nas saídas observáveis.
O número de activações de faltas nas condições alternativas informa sobre a facilidade da
variável em questão apresentar valores que activem a falta, no caso da falta LSA0 apresentar
o valor um e no caso da falta LSA1 apresentar o valor 0. No caso de condições IF/ELSE
dentro de alternativas CASE os valores de activação têm de ser calculados em função de uma
probabilidade composta, ou a variável da condição IF/ELSE passa também a contemplar a
localização dentro da alternativa.
A nova variável y_t irá substituir a anterior variável y, e durante
a simulação da injecção de faltas a nível RTL, a estatística referente
wire y_t = y AND x = A
case (x)
A: if(y_t)
B:
C:
64
à nova variável y_t contabiliza o número efectivo de activações. No caso contrário a variável
y podia até ter o valor para possibilitar a execução da instrução IF mas é irrelevante uma vez
que o processamento não decorre de momento na alternativa A.
Um teste que assegure a detecção múltipla das faltas RTL nas condições IF/ELSE e nas
alternativas CASE assegura, a cobertura múltipla dos ramos do grafo que descreve o circuito.
3.3. Linhas Gerais da Metodologia m-BIST para CUT Sequenciais
A partir do código RTL fonte de um circuito sequencial e recorrendo às ferramentas
VeriDOS e ASCOPA, é possível realizar um processamento que identifica eventuais erros de
projecto e os problemas de testabilidade do CUT e permite orientar a realização de uma
arquitectura de teste integrado que possibilita uma cobertura de faltas a nível RTL de 100% e
igualmente elevada a nível lógico. A Figura 3-6 descreve o fluxo da metodologia m-BIST
para sistemas sequenciais que se propõe, e que foi utilizado nos casos de estudo descritos nos
capítulos 4 e 5.
65
Código RTL Fonte
(Verilog)
RTL2FO
[P-Based]
P(CO)
P(OBS)
Geração de Máscaras
ASCOPA
Código RTL
Reconfigurado
para Injecção de
Faltas
VeriDOS
- Padrão PR
- Reset
FC(n) de faltas
RTL
[Sim-Based]
P(Co)
P(Do)
Alteração do
periodo do
Reset
S
FC (n, Reset)
OK?
N
S
COi, DOi,
FC(n)
N
P(CO)
P(OBS)
Alteração do CUT
(Remoção dos ciclos
expandidos)
Geração MISR
Design
Flaws?
Design_Vision
FC(n)=100%
s
Síntese Lógica
(com opções)
N
Reconfiguração para
injecção de
máscaras
(CUT, BIST_C, ML)
VeriDOS
VeriFault
Máscaras
TPI(CO)
Start_BIST
# Ciclos
FC (NSA, LSA)
S
FC(n) de faltas
RTL
N
1. Máscaras
2. TPI(OBS)
Análise dos
Resultados
COi >
DOi >
FC(n) = 100%
Figura 3-6 – Fluxograma da metodologia m-BIST proposta
66
O fluxo da metodologia proposta pode ser descrito como segue.
1. 1ª. Reconfiguração do código RTL: numa primeira fase, o código RTL fonte é
modificado para permitir a injecção de faltas ao nível RTL, e assim realizar a
simulação de faltas RTL com o VeriDOS. Para tal, utiliza-se a ferramenta
RTL2FT (RTL to Fault Oriented), descrita na secção 3.4.2.. A reconfiguração para
permitir a injecção de faltas em operadores aritméticos é ainda manual. As
modificações introduzidas automaticamente pelo RTL2FO dizem respeito às
restrições que a seguir se enunciam:
•
As casetags não podem ser labels
•
As instruções IF/ELSE com condições de verificação complexas têm de ser
substituídas por variáveis simples.
•
As variáveis de estado que condicionem a execução de uma instrução CASE
têm de ser estendidas para a dimensão máxima da variável que se encontre
nessas condições. Esta reconfiguração originará mais faltas ao nível RTL
fictícias (dummy), que depois têm de ser filtradas.
2. 1ª. Iteração para Fixação da periodicidade do sinal de Set/Reset: na primeira
iteração da simulação de faltas, recorre-se somente a LFSRs (Linear Feedback
Shift Register) para aplicação dos vectores de teste nas P.I.s do CUT, como se de
um circuito combinatório se tratasse. Esta simulação inicial com um padrão PR
visa também explorar a periodicidade da aplicação do sinal de Reset e apreender
qual a influência deste sinal na evolução da cobertura de faltas, descrita pelas
curvas FC(n, N) em que N representa o número de vectores de teste do padrão de
BIST. Os resultados das simulações iniciais com o VeriDOS conduzem à fixação
da periodicidade de aplicação do sinal de Reset nas simulações subsequentes, e
fornece o valor da probabilidade deste sinal de entrada, a fornecer à ferramenta
ASCOPA, a fim de que os resultados das duas ferramentas possam ser
comparados.
3. Identificação de Eventuais Erros de Projecto: a análise de dados
disponibilizados pelas ferramentas VeriDOS e ASCOPA permitem por a
descoberto eventuais erros de projecto, que justifiquem uma primeira correcção à
descrição RTL do sistema em projecto. Deste modo, a metodologia m-BIST pode
ser aproveitada, com vantagem, na validação do projecto. Variáveis RTL do
circuito com probabilidades iguais a 1 ou 0 significa que os respectivos bits não
67
variam ao longo do tempo pelo que podem ser substituídos por hardwires. Como a
ferramenta ASCOPA faz uma análise probabilística, e não depende do conjunto de
vectores aplicados, garante-se que a análise efectuada não está dependente do
padrão de teste aplicado.
4. Identificação de Problemas de Testabilidade: a mesma análise dos dados
provenientes da simulação de faltas RTL (VeriDOS) e da análise probabilística
(ASCOPA) permite identificar os principais problemas de testabilidade no sistema
integrado em projecto. Os “cantos escuros” da funcionalidade identificados nesta
análise prévia, resultantes, quer da falta de controlabilidade (CO), quer da falta de
observabilidade (OBS), estão na origem dos fracos resultados obtidos inicialmente
pelo VeriDOS, em termos da cobertura de faltas RTL, FC(n). Os cantos escuros
estão associados a faltas RTL com uma detectabilidade n=5 (grau de
multiplicidade da detecção) inferior a 100%.
5. Geração de máscaras: a geração de máscaras a aplicar é realizada pela ferramenta
ASCOPA.
6. 2ª. Reconfiguração do código RTL: necessária para começar a introduzir a
funcionalidade de auto-teste. Essa reconfiguração inclui a descrição RTL dos
módulos de BIST (controlador de BIST, LFSR, lógica de injecção de máscaras em
PI e reconfiguração do CUT, para injecção de máscaras em SI), de acordo com o
descrito adiante na secção 3.5.
7. 2ª. Iteração para análise do reforço da testabilidade: re-simulação de faltas com
o VeriDOS e averiguação das melhorias resultantes da aplicação das máscaras.
Experimentação, com variação (1) do número de máscaras, (2) do número de
instanciações das máscaras, (3) do número de bit fixos por máscara (isto é, do
número de MSI e de MPI), e finalmente (4) do comprimento do teste – do número
total de vectores PR não mascarados (N0) e do número de vectores personalizados
por cada máscara (Ni). A iteração é realizada com retorno ao passo 6, até se obter
FC(n) = 100%. A obtenção deste resultado é primeiro conseguida por aplicação e
escolha das máscaras (TPI para reforço da CO) e, em segundo lugar, pela selecção
criteriosa de algumas SO, tornando-as observáveis no MISR (TPI para reforço da
OBS). Quando termina este processo iterativo, todas as faltas RTL do sistema
apresentam uma detectabilidade igual ou superior a n=5.
8. Início do 2º. Ciclo da metodologia: o 2º. Ciclo visa gerar a estrutura do CUT com
BIST e validar a qualidade do auto-teste. Assim, uma vez que terminaram as
68
simulações a nível RTL, o 1º. Passo deste 2º. Ciclo consiste na 3ª. Reconfiguração
do código RTL. Nesta reconfiguração, retiram-se todas as alterações realizadas no
passo 1 para injecção das faltas RTL, e adiciona-se a descrição do MISR. Segue-se
a
9. Síntese Lógica: síntese, para uma biblioteca-alvo, do sistema integrado depurado
dos erros de projecto identificados e com a funcionalidade de auto-teste integrado,
incluindo a funcionalidade de injecção de máscaras. A ferramenta utilizada neste
trabalho é o Design Vision da Synopsys [94]. A síntese lógica foi, neste trabalho,
concretizada para uma biblioteca de células da AMS (Austria Microsystems) com
opções de síntese a privilegiarem quer a área quer o atraso (delay) (circuito mais
complexo).
10. Avaliação, a nível estrutural, da qualidade do auto-teste: repetição das
simulações com injecção de faltas, agora ao nível lógico. Neste trabalho, a
simulação de faltas estruturais foi realizada com a ferramenta comercial
Verifault™, da Cadence [93]. Obtenção da evolução da cobertura de faltas a nível
estrutural, FC(N), em que N é o número de vectores do padrão de teste.
Comparação das coberturas de faltas RTL (n=5) e cobertura de faltas a nível
lógico. Se necessário, aprimorar o padrão de teste, por exemplo alongando o
número de ciclos de relógio durante os quais se aplica uma dada máscara, que
activa uma estrutura não completamente excrutinada.
Recorde-se que a aplicação de um auto-teste integrado a um circuito sequencial, numa
técnica test-per-clock sem cadeias de varrimento, dá origem normalmente a resultados pouco
satisfatórios, implicando coberturas de faltas reduzidas. Em consequência, usualmente
procede-se ao desenvolvimento de uma técnica BIST em test-per-scan. Contudo, visa-se neste
trabalho o desenvolvimento de uma técnica BIST aplicável a faltas dinâmicas com elevada
eficácia de teste (TE). Assim, de acordo com a metodologia m-BIST desenvolvida, impõe-se
a restrição de aplicar o auto-teste com um mínimo de perturbação do sistema sequencial no
seu modo normal de funcionamento – ou seja, mantendo a característica de test-per-clock.
69
3.3.1. Metodologia de Geração de Padrões de Teste
Embora se pretenda preparar um teste funcional, que cubra a funcionalidade descrita a
nível RTL, procura-se usar, como motor para a definição do padrão de teste, modelos de faltas
cuja ocorrência modifique, de forma marginal (e não radical) essa funcionalidade. A razão
deste princípio assenta no facto de a ocorrência de defeitos físicos, pontuais (spot defects),
prováveis de ocorrer na produção, modificar marginalmente a funcionalidade ou então serem
facilmente detectáveis. A dificuldade da geração do teste reside na definição de padrões que
sejam capazes de descobrir os defeitos difíceis de detectar.
3.3.2. Identificação de Cantos Escuros
Define-se canto escuro como uma parte do código da descrição RTL de um circuito digital
cujas faltas associadas apresentam detectabilidade-n inferior a um mínimo estipulado quando
o circuito é estimulado por um conjunto suficientemente vasto de vectores de teste. Desta
definição fazem parte duas grandezas que, até agora, não estão quantificadas: (1) o número, n,
mínimo de vezes que uma diferença Booleana tem de ser observada para assegurar uma boa
detectabilidade e (2) o número, N, de vectores aleatórios a aplicar. Efectivamente estes
números são parâmetros da metodologia que dependem do circuito em análise.
O número de vectores a aplicar depende da complexidade do circuito, decorrente da sua
dimensão e da dificuldade de teste que apresenta devido a sua funcionalidade. Se as medidas
de testabilidade apresentarem globalmente valores reduzidos, isso poderá indicar que um
número N insuficiente de vectores de teste está a ser utilizado ou que é necessária a adição de
pontos de teste. O número mínimo de detecções que cada falta RTL requer deveria,
idealmente, ser determinado perspectivando a síntese de que o código RTL será alvo. No
entanto, devido à dificuldade de perspectivar individualmente a importância relativa de cada
caminho de um circuito complexo, esta avaliação deve ser feita com base das medidas de
testabilidade propostas. Em estudos anteriormente efectuados, com o recurso às mesmas
métricas, e para os casos de estudo analisados, obtiveram-se bons resultados impondo valores
a n na ordem de 5 a 10, para a multiplicidade de detecção de cada falta RTL, com padrões de
teste de comprimento N=5000 [31].
70
3.3.3. Geração de Máscaras
Uma vez identificados os cantos escuros, torna-se necessário obter as máscaras que
forcem os bits necessários para que os referidos cantos escuros sejam perscrutados ou
iluminados.
O número de máscaras a definir em cada iteração da metodologia proposta deve ser o
mínimo possível. Todavia, deve ser suficiente para assegurar o aumento da probabilidade de
activação / detecção das faltas RTL que corrija as métricas de testabilidade obtidas. Esta
minimização é particularmente importante se as máscaras forem posteriormente utilizadas no
auto-teste integrado (BIST), pois a aplicação de cada máscara requer a introdução de lógica
adicional.
A minimização do número de máscaras consegue-se identificando os cantos escuros que
estão embutidos noutros e não gerando máscaras para estes numa primeira iteração. Pode
também conseguir-se, gerando máscaras para condições e deixando de fora a contemplação
das alternativas, nomeadamente CASE, onde se encontram as condições.
O aumento do valor das métricas de testabilidade associadas à falta de um canto escuro
mais abrangente é usualmente acompanhado pelo aumento dos valores das métricas de
testabilidade associadas às faltas dos cantos escuros nele embutidos.
As máscaras a obter para cada canto escuro podem ter diferentes objectivos que dependem
dos valores das medidas de testabilidade obtidos. Se os valores correspondem à activação das
faltas for reduzido (um valor de controlabilidade inferior a 5% do número total de vectores
aplicados. É considerado um valor baixo – que revela um problema de activação, as máscaras
para este canto escuro devem procurar inicialmente forçados os bits que garantem a activação.
No caso de CUT combinatórios, pode-se colocar a hipótese de forçar um número extra de bits
para melhorar a observabilidade de diferenças Booleanas geradas, caso os valores
correspondentes à activação das faltas não sejam suficientemente acompanhados pela subida
dos valores das detecções correspondentes. No caso dos circuitos sequenciais, normalmente
será necessário forçar outra máscara ou uma sequência de máscaras, o que pode acarretar uma
sobrecarga de teste significativo.
71
Assim, o critério de geração de máscaras assenta em assegurar, numa primeira fase, o
cumprimento das condições necessárias (activação as faltas). Depois, uma vez que as
máscaras geradas pelo ASCOPA só contemplam a activação de faltas, a observação de
valores incorrectos é resolvida com recurso a TPI que resolvam o problema de
observabilidade. As faltas classificadas com prioritárias (e que, portanto, são analisadas
primeiro) são as que apresentam valores reduzidos de COi. Utiliza-se, adicionalmente, uma
propriedade conhecida a nível estrutural: a geração de vectores para detecção de certas faltas
usualmente aumenta a cobertura de faltas não-alvo. A aplicação de máscaras para “iluminar”
um canto escuro também pode aumentar a detectabilidade-n de outras faltas noutros cantos
escuros.
O reforço na detecção de faltas pode não ser conseguido pelo aumento do número de
activações. Caso se trate de condições IF, então a introdução do TPI para resolver o problema
de observabilidade deverá contemplar um dos sinais do interior da condição, pois é de supor
que estes apresentam problemas de observabilidade; caso contrário, a activação (ou não) de
determinado caminho (ramo do grafo) era observável.
3.4. 1º. Ciclo: Preparação do Teste. Injecção de Faltas a Nível RTL
A ferramenta VeriDOS injecta faltas ao nível RTL em todos os modelos de faltas
definidos no capítulo 2, desde que as modificações à descrição comportamental do circuito
tenham sido efectuadas, de forma a satisfazer os critérios para a respectiva injecção.
Presentemente, o VeriDOS não realiza a reconfiguração automática do código RTL, pelo que
esta tem de ser realizada manualmente. Desenvolveu-se uma ferramenta auxiliar (RTL2FO)
para aliviar este problema. A ferramenta é descrita na secção 3.4.2. Algumas alterações ao
código original são explicadas nesta Tese, em particular para a respectiva falta do modelo
fazer parte de lista de injecção. A fim de permitir a injecção de faltas em cada componente
específico da descrição Verilog a nível RTL, é pois necessária a alteração do código. As
alterações incluem a expansão de ciclos FOR, a substituição da expressão de controlo em
cada alternativa CASE e, em cada condição IF/ELSE por uma nova variável.
72
3.4.1. Alteração ao Código RTL Comportamental
A fim de utilizar a ferramenta VeriDOS como simulador de faltas, a nível RTL, com o
conjunto de modelos de faltas RTL definidos na secção 2.5.1, torna-se necessário modificar,
para a injecção de alguns tipos de faltas, o código RTL que descreve a funcionalidade-alvo do
sistema integrado em projecto. Nas sub-secções seguintes, descrevem-se (1) as modificações
a introduzir, para os diferentes modelos de faltas, e (2) a funcionalidade da ferramenta auxiliar
RTL2FO (RTL to Fault-Oriented), desenvolvida neste trabalho para automatizar a introdução
dessas modificações.
3.4.1.1. Condições IF/ELSE
De forma a utilizar o simulador de faltas VeriDOS é necessário alterar as instruções
IF/ELSE no código Verilog modificando-as do modo como se descrve a seguir:
If (!variável)
If(variável op variável) Para a forma if (variável)
If(variável op valor)
Nesta transformação, cada variável criada, do tipo wire ou integer, tem o valor exacto da
expressão na condição original.
O uso de variáveis de selecção diferentes para condições IF/ELSE iguais é uma questão
importante a considerar. Todas estas variáveis apresentam valores iguais de activação, pois
têm a mesma condição de activação – apesar de se encontrarem em diferentes ramos do grafo
do circuito. Contudo, podem apresentar valores de detecção diferentes. Caso se perspective a
síntese lógica destas condições apercebemo-nos que, por exemplo, no caso de máquinas de
estado (FSM), as mesmas condições em diferentes fases do grafo do circuito originam
diferentes conjuntos do lógica (pelo menos em parte), pelo que o uso de diferentes condições
ajudará a completar a informação disponibilizada pela simulação. A injecção de todas estas
faltas referentes a uma mesma condição provoca um mimetismo análogo à injecção de faltas
em entradas, que presentemente não existe no nível RTL.
Nas descrições RTL de circuitos é normal encontrar-se instruções IF com condições iguais
de activação. Qual deverá ser o método a usar para estas situações?. Dependendo das opções
de síntese (area, delay, redundância) é de supor que, caso as condições complexas se repitam,
o hardware, ou parte deste, seja reutilizado.
73
Caso se opte por declarar uma nova variável de selecção para a instrução IF (apesar de já
anteriormente ter sido declarada uma), obtém-se a vantagem de diminuir a granularidade do
sistema (correspondendo a um aumento do número de faltas). Esta situação é análoga à
introdução de faltas em entradas. Se a condição se repete no código RTL, mas, na injecção de
faltas no código RTL, a simulação processa-se de forma diferente pois apesar das condições
serem iguais foram contempladas com variáveis de selecção diferentes, resultando em
instantes de injecção diferentes. Em vez de em todo o circuito a condição ser forçada, só em
parte é que o é, Figura 3-7. Se extrapolarmos para o nível lógico, no modelo LSA, é isso que
acontece quando se injectam faltas em entradas de células. Esta opção de criar novas variáveis
para condições iguais revela-se a mais indicada.
Na situação de a condição a ser testada ser o estado de um bit, testado inúmeras vezes.
Origina-se tantas faltas quantas o dobro de vezes que a condição seja testada (pois cada
condição é testada em 2 valores TRUE/FALSE) apesar de se tratar de um só bit que no
máximo tinha duas faltas, LSA0 e LSA1. No entanto, se extrapolarmos para o nível lógico, a
analogia mantém-se. Com efeito, tem-se o nó de saída e temos as linhas de entrada em
células.
// Código RTL
.
.
Comb.
IF (A ● B) // Cond1
.
.
.
IF (A ● B) // Cond2
.
.
.
A
B
1
Comb.
2
Figura 3-7 – Faltas em condições IF
Cond1 LSA0, LSA1;
Opc1
Opc2
Cond2 LSA0, LSA1;
Cond 12 LSA0, LSA1
Corresponde a injectar faltas em entradas, só
determinados ramos do fluxo sentem a injecção.
Corresponde a injectar faltas em saídas, todos os
nós ligados são afectados.
74
A opção mais válida é a Opc1, pois o facto de detectar uma falta em 1 não implica que
detecte uma falta LSA em 2, mas o contrário é verdade se não estivermos numa situação de
fan-out reconvergente.
3.4.1.2. Condições CASE
As tags da condição CASE não podem ser constantes e a variável de teste para o CASE
deve ser simples.
Exemplo:
parameter GP001[2:0] = 3'b000;
parameter GP001[2:0] = 3'b000;
*
*
*
*
case (S1)
GP001:
Begin
case (S1)
3'b000:
begin
Situação original
Situação corrigida
3.4.1.3. Operador Soma ou Subtracção
Terá de ser criado um ciclo FOR para permitir realizar a respectiva operação e assegurar
uma melhor correlação entre a cobertura múltipla de faltas RTL e a cobertura singular de
faltas estruturais. Este artifício permite injectar faltas nas variáveis internas do ciclo FOR,
aumentando a lista de faltas a injectar. O objectivo é procurar aumentar o matching entre uma
versão estrutural, na qual esta operação é considerada complexa, pois requer o uso de várias
portas lógicas para efectuar a operação, enquanto que ao nível RTL não passa de uma
instrução cuja única possibilidade de injecção de falta passava por inibir a instrução.
3.4.2. Ferramenta RTL2FO (RTL to Fault-Oriented)
A ferramenta RTL2FO, desenvolvida, permite automatizar operações no circuito que se
pretende simular. Algumas das alterações que são necessárias efectuar num CUT original para
possibilitar a injecção de todos modelos de faltas possibilitados pela ferramenta VeriDOS, são
75
realizadas pela ferramenta RTL2FO, de modo a tirar partido das potencialidades do VeriDOS
e permitir um modelo mais completo de faltas..
A simulação é sempre possível em qualquer CUT, no entanto, caso não se tenha em
atenção, existe um leque de alterações que é necessário efectuar para não se correr o risco de
excluir modelos de faltas. Esta exclusão diminui a já pequena granularidade do nível RTL em
comparação com a do nível RTL, impossibilitando a recolha de informações eventualmente
importantes de testabilidade.
A ferramenta foi desenvolvida em C, e tem a interface ilustrada na Figura 3-8.
Código RTL
Fonte (Verilog)
RTL2FO
Código RTL
Reconfigurado para
Injecção de Faltas.
Figura 3-8 – Interface da ferramenta RTL2FO
A ferramenta gera, a partir do código RTL fonte de um circuito, o novo código
reconfigurado possibilitando a injecção de faltas. A execução da ferramenta processa-se
somente sobre o código original, sem a activação de quaisquer flags e apresenta um código
final, igualmente sintetizável e que exibe, como é lógico, a mesma funcionalidade.
Das alterações a nível RTL, que são necessárias garantir, a ferramenta RTL2FO permite
automatizar a referente às alterações das condições IF/ELSE e alternativas CASE. O diagrama
de fluxos encontra-se esquematizado na Figura 3-9, pormenorizando-se, de seguida, o
processamento efectuado em cada um dos processos.
1) Fase que se processa no inicio do ficheiro de fonte, e que consiste na criação de uma base
de dados, com informação relativa às constantes declaradas no ficheiro Verilog
(parameter) e associação a uma label – casetags.
2) Nesta fase, e até à ultima linha do ficheiro, obter uma linha deste e processar 2 situações:
a) Proceder à análise da linha para saber se existe um label – casetag para substituir pela
constante reservada (codificação de estado)
b) Averiguar se a linha possui uma instrução IF/ELSE cuja condição seja complexa.
Neste caso, cada condição complexa é substituída por uma variável do tipo wire,
gerada em função da linha de código onde esta se situa, p.e., Cond_L_123 para uma
76
condição na linha 123. Actualizar uma nova base de dados que contem a nova variável
criada e qual a condição que se substitui.
3) O ficheiro com o código reconfigurado, volta a ser editado, nesta fase para contemplar a
declaração das variáveis wire criadas, com base na estrutura de dados criada para
monitorizar o processo.
Inicio
Construção da base
de dados com as
labels dos Casetags
1
Reconfiguração do
ficheiro RTL
2
Declaração das
variáveis wire
criadas
3
Fim
Figura 3-9 – Diagrama de fluxos da ferramenta RTL2FO
Após este processamento final, a operação de reconfiguração do código RTL fonte é
finalizada e obtém-se o código RTL reconfigurado para injecção de faltas.
Nas alterações necessárias de efectuar no código RTL fonte, somente a alteração no
modelo de faltas para operadores aritméticos é necessária efectuar manualmente. Esta
alteração contempla a criação de sinais para albergar os sinais de carry ou borrow. Novas
variáveis do mesmo tamanho do sinal do contador a que se referem. operação acessível. A
alteração contempla também a criação dos ciclos FOR para implementação dos cálculos dos
77
bit de carry ou borrow, onde caso ocorra partição do contador, se torna menos acessível, e de
processamento mais complexo, dependendo o ciclo FOR do módulo pelo qual se pretende
dividir o contador. Operação esta que depende individualmente do tamanho do contador.
3.5. 1º. Ciclo: Preparação do Teste. Injecção de Máscaras
O processo de injecção das máscaras resulta do controlo síncrono da variável a mascarar.
O modo de injecção deve-se à maneira como é descrito um circuito em linguagem de
descrição de hardware. Uma vez que as variáveis RTL a mascarar são, nos casos analisados,
sempre registos, terão de ser controlados no processo onde são escritos – sob pena de originar
um erro de multisource. O que sucede é que, quase sempre nos vários processos que
descrevem o sistema, existem outras variáveis RTL que são escritas no mesmo processo e nas
quais não há interesse em controlar (através de máscaras). Quando se procede à alteração do
código RTL para procurar implementar o carácter assíncrono da máscara na variável que se
pretende controlar, modifica-se o funcionamento normal desse processo. Por outras palavras,
não é possível implementar em Verilog o carácter assíncrono de uma máscara sem que a
variável a controlar esteja isolada num processo. Como isso raramente sucede, a viabilidade
desta opção é reduzida. Assim, a alternativa será reescrever o código RTL para contemplar
esta situação.
A análise efectuada com os resultados das ferramentas VeriDOS e ASCOPA permite
seleccionar o conjunto de variáveis RTL, cuja controlabilidade deverá ser assegurada em
instantes chaves de simulação, de forma a resolver problemas de testabilidade detectados. Em
seguida, torna-se necessária desenvolver um método de injecção das máscaras, quer primeiro
na fase no nível RTL quer depois o resultado final depois da síntese e já em hardware.
A arquitectura BIST para um sistema (CUT) combinatório, antes da introdução das
entidades responsáveis pela injecção das máscaras, é a descrita na Figura 3-10. O auto-teste é
aplicado como teste ao ritmo do relógio (test-per-clock). Se se pretender injectar máscaras,
pode complicar-se o bloco MUX, substituindo-o por um circuito de interface mais complexo,
como o bloco MMIC descrito na secção 2.5.3.
78
P.I.s
M
U
X
L
F
S
R
P.I.s
CUT
P.O.s
(Comb)
M
I
S
R
BIST
Controller
(BIST_C)
Start_Test
Figura 3-10 – Arquitectura de BIST
Geralmente nos circuitos sequenciais, procede-se à inserção de cadeias de varrimento, já
no nível lógico, de forma a melhorar a controlabilidade e a observabilidade dos sinais do CUT
(test-per-scan). Na metodologia m-BIST que se propõe, pretende-se evitar esta solução e
procurar desenvolver uma solução em test-per-clock.
A topologia que se propõe, numa arquitectura que possibilita a injecção de máscaras, é
ilustrada na Figura 3-11. Admite-se que, das (m+n) PI, apenas n precisam ser mascaradas.
Analogamente, da totalidade das entradas secundárias (SI), apenas uma pequena fracção
(MSI<<SI) necessita ser modificada, para a injecção de máscaras. Finalmente, assume-se que,
da totalidade das saídas secundárias (SO), apenas uma pequena fracção necessita ser tornada
observável através da sua captura no MISR.
P.I.s
m+n
m
L
F
S
R
BIST_C
(BIST Controller
+ Mask Injector)
M
U
X
m
n
P.I.s
P.O.s
P.I.s (M)
Masking Logic
(ML)
n
CUT
S.O.s
M
I
S
R
M.S.I.s
Start_Test
Masks to apply
Figura 3-11 – Arquitectura de BIST para injectar máscaras em circuitos sequenciais
79
Considerando o circuito CUT descrito de forma a evidenciar a sua sequencialidade, é
possível descrever mais em pormenor como se modula as S.I.s através do forçar dos sinais
M.S.I.s (Masked Secondary Input) provenientes do controlador de BIST, cuja funcionalidade
necessita ser expandida para incluir a função de controlo da injecção das máscaras. A Figura
3-12 ilustra a forma como se procede à injecção de máscaras nos bit dos registos que
efectuam a realimentação no circuito sequencial. Tal modificação funcional, introduzida a
nível RTL, irá influenciar, a jusante, a síntese lógica. Todavia, o facto da modificação ser
introduzida em alto nível permite gerar uma solução estrutural com uma sobrecarga de teste
reduzida (área de implantação e degradação do desempenho). Na figura 16, “log” refere a
lógica de selecção entre as SI e as MSI na captura pelos registos que efectuam a
realimentação. O conjunto desses registos é sub-dividido em dois, conforme necessitam (ou
não) de ser mascarados.
CUT
P.O.s
P.I.s
FF
C
S.O.s
FF
FF
Log
M.S.I.s
Figura 3-12 – Mascaramento das S.I.s do CUT
Como hipótese alternativa, poder-se-ia proceder à injecção das máscaras de forma
assíncrona, procurando explorar os pinos de Reset e Set dos registos das variáveis RTL [28].
No entanto, verificou-se que tal era inviável, devido à forma como são descritos os circuitos
utilizando as linguagens de descrição de hardware. Com efeito, a única forma da descrição de
uma variável RTL ser actuada por sinais de Reset ou Set e, na síntese, de ser reconhecida a
funcionalidade que se pretende é quando a variável é descrita isoladamente num processo ou
com outras variáveis que tenham o mesmo comportamento (assíncrono). Por limitações da
linguagem não é possível definir uma variável com um Reset assíncrono e uma variável com
80
Reset síncrono. Para este objectivo, têm de se utilizar dois processos, um para cada variável.
Como geralmente nos processos se encontram englobadas diversas atribuições entre diversas
variáveis, a alteração do comportamento de uma delas implicava reescrever todo o código
RTL fonte para contemplar esta possibilidade. Caso a injecção ocorra de forma síncrona,
basta acrescentar ao processo onde a variável é escrita, o sinal M.S.I, com origem no BIST_C,
para o mascaramento se realizar. O facto deste processo ser mais simples e mais robusto, uma
vez que a atribuição ocorre de forma síncrona filtrando os possíveis glitches, fez com que se
adoptasse esta técnica na metodologia proposta.
3.5.1. BIST_C (Controlador de BIST e Injector de Máscaras)
É a unidade que controla a aplicação do auto-teste integrado e as máscaras a injectar.
Numa fase anterior da metodologia já foi identificado o problema de testabilidade e
definido, para cada caso, qual a variável a controlar e qual o valor lógico injectar. Por cada
variável que é necessário controlar, existem duas situações possíveis:
1 - Na variável a controlar é necessário forçar um só valor.
•
Nesta situação, por cada variável a controlar é criada uma saída no módulo
BIST_C, sendo um bit de controlo, para controlar a injecção. Quando esta saída
estiver activa, a variável RTL é controlada ao valor lógico pretendido. Quando a saída
estiver inactiva, o valor da variável RTL é originada pela sequencialidade do circuito
em função dos estímulos aplicados.
2 - Na variável a controlar é necessário forçar mais de um valor lógico, em ciclos de
relógio diferentes durante a simulação.
•
Neste caso, a variável RTL aparece em diferentes condições, possivelmente em
expressões complexas e é necessário garantir o seu valor naquele instante. Durante a
aplicação da metodologia ao circuito de referência b13 [38] (capítulo 4) ocorre uma
situação destas.
81
•
Nesta situação, por cada variável a controlar são criadas duas saídas no
BIST_C, sendo uma delas um bit de controlo e a outra uma saída com o novo valor
lógico da variável, podendo variar a dimensão desta última variável desde um bit até
um barramento.
A presença destes sinais de activação das máscaras, permite definir dois graus liberdade da
metodologia:
- O instante da injecção (isto é, o ciclo de relógio em que a máscara é injectada)
- A duração da injecção (isto é, o número de ciclos de relógio durante os quais os valores
lógicos definidos pela máscara são forçados). Enquanto a saída de controlo de uma máscara
do BIST_C estiver activa, a máscara é injectada. Quando a saída de controlo estiver inactiva,
a variável afectada deixa de ser mascarada.
A topologia do módulo responsável pela injecção das mascaras é fácil de gerar e as
alterações para definir o instante a aplicar a máscara e a duração da injecção simples são
simples de aplicar. As diversas iterações pela qual a metodologia passa até se identificar quais
as melhores máscaras, sua instanciação e sequência, e os melhores instantes de injecção e sua
duração implicam a alteração do módulo em questão. No entanto, assim que o objectivo final
é atingido e é identificado o padrão de teste final (que conduza a FC(n)=100%), a arquitectura
é fixada (freezed), o hardware de injecção determinado e não se efectuam mais
reconfigurações. Assim, para conter os custos associados à sobrecarga de teste, o módulo em
questão, após a síntese, deixa de ser parametrizável. Não é, pois, mais possível alterar a ordem
das máscaras, o instante de injecção ou a sua duração 17. Se tal fosse considerado no projecto,
as alterações a contemplar no módulo para suportar estas funcionalidades modificaram de
forma drástica a sua complexidade resultando numa síntese com maior penalização de área.
Como a ideia é aplicar a metodologia numa arquitectura de BIST, faz todo o sentido
simplificar o processo, para minimizar a sobrecarga de teste (TO, test overhead), uma vez que
as diversas iterações já identificaram o padrão de teste que conduz à situação mais favorável
(FC(n)=100%).
17
Presentemente, encara-se a possibilidade de explorar uma eventual variação na duração da aplicação de
alguma máscara se, após a deifinição estrutural, se verifique aque a cobertura de faltas a esse nível necessita ser
incrementada. Essa, como se refe no capítulo6, é uma das perspectivas de trabalho futuro.
82
O módulo é constituído genericamente por um contador que controla o desenvolvimento
do processo de BIST. O controlo do valor de contagem do contador permite definir qual o
instante para aplicação da máscara. O registo do novo valor a aplicar, que constitui a máscara,
permite manter o valor aplicado possibilitando a duração da aplicação da máscara.
3.5.2. Lógica de Mascaramento de Entradas Primárias [P.I.]
No caso de não haver necessidade de se proceder ao mascaramento de P.I.s, este bloco
responsável pela funcionalidade não existe. No caso de haver necessidade de mascarar pelo
menos um bit de uma P.I., pode igualmente ocorrer duas situações, análogas ao sucedido para
as entradas S.I.s do CUT. De facto, o módulo do BIST_C responsável pela injecção da
máscara não distingue entre as máscaras para as P.I.s e as S.I.s, o que torna mais modular o
desenvolvimento do módulo, pois o objectivo é o mesmo, mascarar uma variável.
A lógica de mascaramento, tem a seguinte funcionalidade consoante o objectivo que se
pretenda:
1 - Na variável a controlar é necessário forçar um só valor.
Neste caso, a variável RTL pode ser formada por um bit ou por um barramento de bits
pois a questão é saber se é necessário forçar um valor, e neste caso, um bit de controlo é
suficiente. Nestas circunstâncias, o módulo recebe o valor do LFSR e o bit de controlo, com
se ilustra na Figura 3-13:
LFSR[i]
Lógica de
Mascaramento
S.I.[i]
Act_Sinal
Figura 3-13 - Interface da lógica de mascaramento, para forçar um valor numa variável genérica
A tabela da verdade da função realizada pela Lógica de Mascaramento (ML, Masking
Logic) é a indicada na Tabela 3-2.
83
Tabela 3-2 – Função a desempenhar quando se pretende forçar um valor
Lfsr[i] Act_Sinal
0
0
1
1
0
1
0
1
Valor a forçar Valor a forçar
(1)
(0)
0
0
1
0
1
1
1
0
A lógica responsável pela função de mascaramento de uma entrada primária ou secundária
é, caso se pretenda forçar somente um bit (0 ou 1), a das Figura 3-14 e Figura 3-15.
LFSR[i]
LFSR[i]
S.I.[i]
S.I.[i]
Act_Sinal
Act_Sinal
Figura 3-14 – Funcionalidade quando se injecta um
Figura 3-15 – Funcionalidade quando se injecta um
(‘1’)
(‘0’)
Verilog: Assign S.I.[i] = LFSR[i] OR Act_Sinal;
Verilog: S.I.[i] = LFSR[i] AND (NOT Act_Sinal);
2 - Na situação em que é necessário forçar mais do que um valor numa variável RTL, em
ciclos de relógio diferentes da simulação, passa a ser necessário um bit de controlo e um sinal
com o valor a fixar. Neste caso, a ML assume a configuração da Figura 3-16.
LFSR[i]
Act_Sinal
Lógica de
Mascaramento
S.I.[i]
Act_Sinal_Valor
Figura 3-16 – Interface da lógica de mascaramento, para forçar mais do que um valor numa variável RTL
genérica
Nesta situação passamos a ter um multiplexador (MUX), onde o bit de selecção é o bit de
controlo da máscara e é possível seleccionar entre o valor do LFSR ou o novo valor a impor à
variável.
3.5.3. Lógica de Mascaramento de Entradas Secundárias [S.I.]
84
Como ilustrado na Figura 3-12, o sinal M.S.I.s (Masked Secondary Inputs) é responsável
por activar a injecção de uma máscara numa S.I. Podem existir duas situações: (1) somente
um bit de controlo para activar a máscara ou (2) um bit de controlo e um sinal com o valor a
injectar. A injecção de uma máscara numa S.I do CUT requer, como se referiu, a alteração do
código RTL fonte. A forma como se procede para ambas as situações é descrito em seguida.
Por cada S.I. a mascarar, altera-se a interface do CUT por forma a adicionar mais uma
entrada, situação em que a variável só necessita de um bit de controlo para a injecção e é
independente do tamanho da variável a controlar. Caso seja necessário forçar mais de um
valor lógico, para além do de controlo é necessário outro sinal tamanho depende da variável a
mascarar e possui o valor a impor na injecção.
A reconfiguração do código RTL fonte, de modo a incluir as alterações atrás referidas, é
exemplificada na Figura 3-17.
Os sinais
M.S.I.s são
aplicados
nesta
localização.
always @(posedge clock or posedge reset)
begin
if (reset)
begin
S1 <= 4'b0000 ;
soc <= 1'b0 ;
canale <= 4'b0000 ;
conta_tmp <= 4'b0000;
send_data <= 1'b0 ;
load_dato <= 1'b0 ;
mux_en <= 1'b0 ;
end
else
begin
case (S1)
4'b0000 :
begin
mux_en <= 1'b1 ;
S1 <= 4'b0001 ;
end
.
.
.
endcase
end
end
if (M.S.I.1 active)
begin
S.I.1 <= Masked
end
if (M.S.I.n active)
begin
S.I.n <= Masked
end
Figura 3-17 – Excerto de código reconfigurado para injecção de máscaras para o caso do CUT b13.
No excerto do código é exemplificado o local onde a adição da condição deve ser
efectuada. Se a alteração for realizada noutra localização da descrição RTL, o comportamento
85
do código passa a ser outro. Em consequência, na síntese lógica, existem problemas com as
ferramentas de síntese, pois a descrição deixou de representar uma template para corresponder
a um comportamento de uma porta lógica.
3.6. 1º Ciclo: Preparação do Teste. Inserção de Pontos de Teste (TPI)
As métricas de testabilidade, anteriormente definidas, possibilitam guiar a escolha de
pontos adicionais de teste. A inserção de pontos adicionais de teste (TPI, Test Point Insertion)
é a técnica que permite injectar as máscaras para aumentar a
controlabilidade e/ou a
observabilidade, em nós do circuito em que tal seja necessário por não ser possível elevar os
valores das métricas de testabilidade observando as saídas e aplicando vectores de teste nas
entradas primárias do circuito. As métricas de testabilidade usadas permitem, pois:
•
Apoiar a selecção do tipo e da localização de pontos adicionais de teste:
•
A inserção de pontos de controlo visa sinais associados a faltas com reduzido o valor
de controlabilidade. Em técnicas de test-per-scan, pode forçar a interrupção de
realimentações no circuito;
•
A inserção de pontos para observação é realizada para facilitar a detecção de faltas
com reduzido valor de detectabilidade-n, mas com valor elevado de controlabilidaden.
•
Avaliação da qualidade do teste obtido após a inserção de pontos de teste – máscaras e
de S.O. seleccionadas - a correlação entre a detecção com a multiplicidade n de faltas
RTL e a detecção de faltas realistas difíceis permite a utilização de FC(n) para avaliar
ganhos associado a diferentes selecções de pontos de teste adicionais, e assim estudar
os compromissos do projecto.
3.7. 2º. Ciclo: Implantação do Auto-teste. Síntese Lógica. Validação da
Qualidade do Teste
Quando se obtém, a nível RTL, uma detecção múltipla (n=5) de faltas RTL no sistema
sequencial, modificado para permitir a injecção de faltas nos registos de realimentação,
entende-se que se dispõe de um auto-teste integrado (m-BIST) pouco intrusivo, que mantém o
carácter sequencial do CUT e que deve permitir um auto-teste eficaz a nível estrutural.
Procede-se assim para o 2º. Ciclo da metodologia, que consiste
86
(1)
na implantação final da arquitectura m-BIST,
(2)
na síntese lógica para geração da descrição estrutural do sistema com autoteste e finalmente
(3)
na validação da qualidade do teste gerado a nível RTL, através da
simulação de faltas estruturais.
A implantação final da arquitectura m-BIST visa obter a versão final do código RTL
contendo a descrição do sistema integrado com auto-teste. Neste sub-processo do fluxo de
projecto, executam-se duas tarefas: (1) remoção das alterações efectuadas no código RTL para
a injecção de faltas, compatível com a ferramenta VeriDOS, e (2) geração do módulo
analisador de assinatura (o MISR), a ligar na saída do CUT. A razão de relegar para o 2º.
Ciclo a geração do MISR resulta de se procurar conter os custos de simulação. Com efeito,
supondo que o efeito de mascaramento (aliasing) do MISR é desprezável, se as faltas forem
detectadas, ciclo a ciclo de relógio, na saída do CUT, também o serão na assinatura final do
MISR. Desse modo, é preferivel aliviar os custos de simulação a nível RTL, realizando-a sem
o MISR, e só o inserir antes da síntese lógica.
A síntese lógica é realizada, de acordo com as especificações do projecto, e não depende
da introdução da funcionalidade de teste. Nesta Tese, ilustra-se duas opções de síntese, uma
valorizando a minimização lógica (e, portanto, de área de implantação (layout)), e outra,
valorizando a maximização do desempenho do sistema (isto é, a sua rapidez de resposta).
Dispor de duas estruturas, implementando a mesma funcionalidade, permite verificar se a
metodologia m-BIST para sistemas sequenciais que se propõe é fracamente dependente da
topologia de realização.
Após a síntese lógica, há que validar a qualidade da solução de auto-teste integrado a que
se chegou (de acordo com as características valorizadas – em particular, TE, TO, TL). Para
tal, procede-se à simulação de faltas a nível lógico. Para tal, pode recorrer-se
à ferramenta académica VeriDOS, uma vez que é um simulador multi-nível, que
aceita até modelos de faltas estruturais associados aos defeitos físicos – tais como
curto-circuitos entre pistas condutoras [32], ou
a uma ferramenta comercial, tal como o simulador Verifault™, da Cadence.
87
A simulação de faltas, a nível estrutural, com a ferramenta VeriDOS de sistemas
digitais, para permitir um modelo de faltas associadas às entradas e saída de cada elemento
lógico, requer, para cada tecnologia semicondutora, uma caracterização de cada biblioteca
de células (cell library). Tal caracterização está realizada para uma biblioteca de células de
elevada qualidade, desenvolvida no Grupo de Qualidade e Teste de Sistemas Electrónicos
do INESC-ID, a biblioteca Idlib10 [90]. Com efeito, a forma do VeriDOS injectar faltas
(por exemplo, do tipo LSA) nas entradas de cada elemento lógico passa por a ferramenta
conhecer a função lógica de cada elemento lógico, e portanto avaliar como essa tabela de
verdade se modifica, na presença da falta.
Assim, o processo de simulação de faltas com o VeriDOS em circuitos já sintetizados para
bibliotecas não caracterizadas nesta ferramenta, resulta numa avaliação da cobertura de faltas
por excesso, mais favorável, da que resultaria se se utilizasse um modelo de faltas estruturais
nas entradas e saídas de cada elemento lógico. De facto, sem essa caracterização, o modelo de
faltas alista apenas faltas nas saídas de cada elemento lógico, isto é o modelo de faltas NSA
(Node Stuck-At). Em nós com leque de saída (fan-out) superior à unidade, tais faltas impõem
uma diferença Booleana em todas as linhas lógicas que saem desse nó. Adicionalmente, a
simulação de faltas com a ferramenta VeriDOS é computacionalmente menos eficiente do que
a simulação de faltas com uma ferramenta comercial, o que pode ser crítico na simulação de
faltas de sistemas sequenciais complexos, como o PIC utilizado no capítulo 5 como
demonstrador.
A utilização de um simulador de faltas comercial, tal como o Verifault™, da Cadence,
permite utilizar modelos de faltas estruturais nas entradas e nas saídas de elementos lógicos
(tal como o modelo de faltas do tipo LSA), de forma computacionalmente muito eficiente.
Além disso, apresenta outra vantagem significativa: pretendendo introduzir a metodologia
proposta no fluxo de projecto de um sistema integrado, a ser levado a cabo por uma empresa
industrial, é vantajosa a utilização de ferramentas comerciais. Este é o caso deste Projecto
ASSOCIATE, no qual um dos seus objectivos é a transferência da tecnologia de teste para a
Tecmic [39]. Este assunto é abordado na secção seguinte.
88
3.8. Modificação do Fluxo de Projecto
A metodologia de m-BIST para sistemas sequenciais desenvolvida nesta Tese foi
introduzida, com carácter experimenal, no fluxo de projecto de circuitos integrados de
aplicação específica (ASIC, Application Specific Integrated Circuit) da empresa Tecmic.
Ilustra-se na Figura 3-18 o novo fluxo de projecto. A metodologia foi ensaiada com o
demonstrador que se descreve no capítulo 5 – o controlador PIC de um sistema electrónico
que realiza a função de contador estático de energia eléctrica. A intervenção da metodologia
no fluxo de projecto realiza-se basicamente a dois níveis de abstracção: a nível RTL e a nível
lógico. A nível RTL, realiza-se todo o 1º. Ciclo da metodologia proposta, definindo-se o
padrão de auto-teste e a descrição comportamental de toda a funcionalidade de BIST
(controlador, LFSR, MISR, lógica de mascaramento e CUT reconfigurado para suportar a
injecção de máscaras). Neste 1º. Ciclo avaliam-se ainda as métricas de testabilidade e
removem-se eventuais erros de projecto. A nível lógico, após a síntese lógica, realiza-se a
simulação de faltas estruturais e procede-se a avaliação final da qualidade do auto-teste – a
eficácia do teste (TE), medida por FC, a sobrecarga do teste (TO), medida pelo aumento
percentual de área e a redução percentual da frequência de trabalho, o comprimento do teste
(TL) (definido a nível RTL, e eventualmente aprimorado a nível lógico) e a potência do teste
(TP).
89
Processo de
desenvolvimento
de um ASIC na
Tecmic
Especificação
do ASIC
Descrição VHDL RTL
Ferramentas:
VeriDOS
ASCOPA
Análise DFT e Inserção
de estruturas de m-BIST
a nível RTL
Correcções
Nova solução para
DFT
mostradas
em roxo
Simulação de Alto nível
Parâmetros da
biblioteca de
ASIC (design kits)
Actividades
em
azul são executadas
externamente pela
ASIC foundry
Simulação
Funcional OK?
Não
Sim
Síntese para nível lógico, considerando atrasos
das portas lógicas
Optimização
fina da
arquitectura
do circuito
com m-BIST
Simulação Temporal e
Simulação de faltas
Simulação Temporal e
Simulação Faltas OK?
Não
Sim
Envio da descrição
estrutural para uma foundry
Processo de fabrico em
curso numa Foundry
Teste dos protótipos
Figura 3-18 – Fluxo de projecto de ASICs da Tecmic, incluindo a inserção de m-BIST a nível RTL.
90
3.9. Conclusões
Neste capítulo descrevem-se as métricas de testabilidade, baseados nos modelos de faltas
anteriormente definidos, e a definição de uma metodologia de preparação de auto-teste para
aplicação na produção, baseada no entanto a nível RTL, que visa uma cobertura de faltas
realistas elevada. Esta orientação é efectuada com base nos diferentes modelos de faltas
usados a nível RTL.
As métricas de testabilidade para o nível RTL, controlabilidade-n FCC(n), e
detectabilidade-n, FC(n) são baseados no número de activações e de detecções de cada falta
obtidas com um dado padrão de teste.
A metodologia de preparação do teste no nível RTL é baseada nas métricas de
testabilidade e na sua correlação iterativa, perscrutando os cantos escuros da funcionalidade
com vectores que são obtidos a partir de máscaras geradas automaticamente pela ferramenta
ASCOPA. Estas máscaras definem os bits necessários para assegurar a activação da
funcionalidade associada aos cantos escuros. Dessa forma, pode maximizar-se a probabilidade
de detecção de faltas realistas, a nível estrutural, sendo a cobertura de faltas fracamente
dependente da estrutura final do circuito a sintetizar.
Identificaram-se os graus de liberdade da metodologia proposta: o grau de multiplicidade
de detecção de faltas RTL requerido, n, a periodicidade da aplicação do sinal de Set/Reset, o
número total de vectores a aplicar, N, o número de vectores a forçar com cada máscara, e a
ordem de aplicação das máscaras e o número de vezes em que são instanciadas.
As métricas identificam problemas de testabilidade do sistema integrado, mesmo que o
número de vectores aleatórios utilizado para as obter seja reduzido.
Foi discutida a geração e a aplicação das máscaras tendo em vista a minimização do
número de máscaras e do número de bits definidos nestas.
Foi referido que, com valores de multiplicidade n entre 5 e 10, se obtém bons valores de
correlação entre a doberture múltipla de faltas a nível RTL (FC(n)) e a cobertura de faltas
estruturais (FC, para faltas do tipo LSA, ou DC, para faltas realistas). A metodologia permite
ainda a identificação de erros de projecto (identificando “funcionalidade” impossível de
91
activar) e uma análise crítica à arquitectura RTL proposta para o projecto, do ponto de vista
da sua testabilidade. Em particular, a metodologia explora a inserção criteriosa de pontos de
teste (TPI), reforçando primeiro a controlabilidade de variáveis e condições (através das
máscaras) e, em segundo lugar, reforçando a observabilidade (através da inclusão de algumas
saídas secundárias (SO) no analisador de assinatura.
92
4. Exemplo de Aplicação: Circuito de Referência b13
Um dos casos de estudo utilizado para avaliar a metodologia e ferramentas utilizadas
neste trabalho é o circuito de referência b13 do ITC’99 de Torino [37][38] (numa descrição
comportamental RTL em VHDL traduzido para Verilog).
4.1. Funcionalidade
O circuito realiza 4 máquinas de estados de Moore. É composto por 53 registos: 10
para as saídas registadas {soc, load_dato, add_mpx2, mux_en, error, data_out e
canale[3:0]} e 43 registos de realimentação { S1[2:0], S2[1:0], mpx, rdy, send_data,
confirm, shot, send_en, tre, out_reg[7:0], next_bit[3:0], tx_end, itfc_state[1:0], send,
load, tx_conta[9:0] e conta_tmp[3:0] }. Existem 12 entradas primárias {eoc, dsr,
data_in[7:0], reset e clock}.
O diagrama de topo do módulo b13, contendo a identificação da sua interface com o
exterior, é representado na Figura 4-1. As suas principais características são resumidas na
Tabela 4-1.
Figura 4-1– Interface do circuito de referência b13.
Tabela 4-1 – Características do circuito de referência b13
# FF
P.I.
P.O.
53
10+2
10
Caracteristicas do circuito b13
# Linhas Verilog
# processos
430
5
Função
Interface para sensores
meteorológicos
93
O circuito implementa a função projectada através da interface entre as quatro
máquinas de estado cuja interacção é reproduzida na Figura 4-2 para facilitar a
compreensão.
conta_tmp[3:0]
soc
canale[3:0]
FSM 1
- S1 -
eoc (P.I.)
load_dato
(P.O.)
mux_en
send_data
mpx
rdy
add_mpx2 (P.O.)
FSM 2
- S2 -
shot
confirm
FSM 3
- itfc_state -
load
send
Regs. Internos
+
Lógica
tx_conta[9:0]
error (P.O.)
Regs. Internos
+
Lógica
tx_end
FSM 4
- next_bit send_en
data_out (P.O.)
Regs. Internos
+
Lógica
dsr (P.I.)
data_in[7:0] (P.I.)
Figura 4-2 – Interacção entre as 4 máquinas de estado do circuito de referência b13
4.2. 1º. Ciclo. Erros de Projecto
Aplicando a metodologia proposta, são recolhidos dados da avaliação das
probabilidades de controlabilidade e de observabilidade de variáveis e condições com a
ferramenta ASCOPA. Os resultados probabilísticos do ASCOPA permitem averiguar,
nesta fase, da existência de algum erro de projecto (design flaw) na descrição
comportamental do circuito.
94
Neste caso foi detectado um desses erros. A variável interna tx_conta foi declarada
como sendo um vector de 10 bits e implementa a funcionalidade de um contador. Esta
variável é comparada com o valor de uma constante Delaytime que vale 104 =
10’b0001101000; e no caso de ser superior, a variável tx_conta é colocada a zero. Desta
forma, os 3 bit mais significativos (MSBs) nunca deixam de ter o valor lógico ‘0’.
Consequentemente, quando se proceder à injecção de faltas, tem-se obrigatoriamente 3
faltas LSA @ 0 não detectadas. Como o objectivo é garantir uma FC ao nível RTL de
100%, esta situação foi corrigida. A variável tx_conta foi redimensionada para ter
somente 7 bits.
4.3. 1º. Ciclo: Preparação de Auto-teste a Nível RTL
Após as alterações no código Verilog comportamental (RTL), de forma a permitir a
injecção de faltas, através da ferramenta RTL2FO, realizou-se a simulação de faltas, a
nível RTL, com a ferramenta VeriDOS, para estudar primeiro a influência do sinal de
Reset na cobertura de faltas do circuito.
A simulação de faltas foi efectuada com um padrão de faltas de 10k vectores gerados
por um LFSR de 10 bits. A lista de faltas a nível RTL contém um universo de 230 faltas.
A periodicidade do sinal de Reset foi variada entre 250 e 2500. A cobertura de faltas a
nível RTL, FC(n), foi calculada para uma detecção múltipla de n=5. A simulação de uma
falta, a nível RTL, é abandonada pelo VeriDOS quando é detectada 30 vezes (fault
dropping). Esta estratégia permite reduzir muito os custos computacionais do processo de
simulação de faltas. Os resultados de simulação obtidos encontram-se no gráfico da
Figura 4-3.
95
Figura 4-3 – Evolução da FC em função da periodicidade do sinal Reset
O valor máximo de FC(n) atingido, para este conjunto de vectores de teste pseudoaleatórios, foi de 89,74% para uma periodicidade de 2500. No entanto, como a
periodicidade do sinal de Reset é muito grande, e o objectivo é apresentar um auto-teste
integrado de curta duração, optou-se por usar a periodicidade de 1250. Este valor inferior
da periodicidade do sinal de Reset apresenta a melhor evolução da cobertura de faltas no
imediato, conduzindo também a um resultado de cobertura de faltas próximo do máximo
obtido, 87,91%.
Os resultados recolhidos das simulações permitiram identificar quais os cantos
escuros da funcionalidade e eventuais problemas de controlabilidade e observabilidade.
Na Tabela 4-2 e Tabela 4-3 encontram-se listados os problemas do tipo 1 e tipo 2
identificados. Nestas tabelas alista-se o número de detecções (DO) e de vezes que as
condições são controladas (CO).
Tabela 4-2 – Problemas do tipo 1
Tipo 1
Condições
DO
Cond_149_20
0
Rdy_1
0
Tre_1
17
Mpx_0
0
Cond_208_21
0
CO
0
56
80
532
596
Tabela 4-3 – Problemas do tipo 2
Tipo 2
Condições
DO
Tx_end
30
Confirm_0
30
Cond_4_20
17
Cond_319_20 30
Cond 2
30
CO
3
3
80
5
8
96
Cond_304_20
S2_0_0
Shot_0
Send_20
Load_20
Cond_3_20
Data_out_1
Cond_349_20
S2_1_1
Cond_199_21
Itfc_state_0_1
Itfc_state_0_1
Cond_129_20
Add_mpx2_0
30
30
30
30
30
30
22
30
30
30
30
30
30
30
8
11
11
11
11
11
22
33
67
70
92
92
120
532
Uma vez que o circuito de referência b13 apresenta um carácter de controlo muito
acentuado, em virtude da interligação de 4 máquinas de estado, um bom ponto de partida
é averiguar qual é a probabilidade (em percentagem) de um estado ocorrer em cada uma
das máquinas. Estados pouco exercitados deverão corresponder a “cantos escuros” do
circuito, situação que deverá ser corrigida de forma a aumentar a testabilidade da
estrutura que implementa essa funcionalidade.
1ª máquina de estado - FSM1 (FSM, Finite State Machine)
Variável de estado é o registo S1 [2:0], estando definidos todos os 8 estados possíveis. A
Tabela 4-4 resume os valores de activações dos estados durante a simulação efectuada.
Tabela 4-4 – Activações dos estados da FSM1
Variável de estado - S1 [2:0]
Codificação Nº de Activações Percentagem
000
1102
11,02%
001
1108
11,08%
010
1107
11,07%
101
2268
22,68%
110
1105
11,05%
111
1104
11,04%
100
1104
11,04%
Consultando os diagramas das máquinas de estado (FSM) para este circuito, pode
constatar-se que, numa primeira fase de análise, não se identifica nenhum problema de
testabilidade no fluxo desta máquina.
2ª máquina de estado - FSM2
97
Variável de estado é o registo S2 [1:0], estando definidos todos os 4 estados possíveis. A
Tabela 4-5 resume os valores de activações dos estados durante a simulação efectuada.
Tabela 4-5 – Activações dos estados da FSM2
Variável de estado - S2 [1:0]
Codificação Nº de Activações Percentagem
00
56
0,56%
10
9933
99,33%
11
0
0,00%
01
11
0,11%
A análise daTabela 4-5 permite identificar problemas sérios de testabilidade no fluxo
desta máquina de estado. Pode constatar-se que a máquina passa a maior parte da
simulação “presa” no estado 2 (codificação: 10). A consulta do fluxograma identifica que
a condição Confirm = 0 é activada demasiadas vezes, o que “prende” a máquina neste
estado. Informação sobre a variável Confirm encontra-se resumida na Tabela 4-6.
Tabela 4-6 - Problemas identificados no fluxo da FSM2
Variável RTL
CONFIRM
Faltas Associadas
CONFIRM_LSA@0
CONFIRM_LSA@1
Activações a ZERO
9997
Controlab Detectab
9997
Activações a UM
3
Controlab Detectab
3
30
30
Portanto, uma máscara útil deverá garantir que a condição Confirm adquira a valor
lógico ‘1’ por um número razoável de períodos de relógio, de forma a permitir a natural
transição entre estados. A informação, sobre as máscaras, fica resumida na Tabela 4-7.
Tabela 4-7 – Máscaras definidas para a FSM2
Máscaras
Confirm
Valor a forçar
UM
Este problema já tinha sido descoberto e considerado como sendo do tipo 2, ou seja,
boa detectabilidade mas reduzida controlabilidade. Se se proceder à análise do código
RTL para perceber qual a razão do sinal CONFIRM ter uma fraca controlabilidade a 1, a
justificação está na 3ª máquina de estados, como se pode depreender da Figura 4-2.
3ª máquina de estado - FSM3
98
Variável de estado é o registo Itfc_state [1:0], estando definidos todos os 4 estados
possíveis. A Tabela 4-8 resume os valores de activações dos estados durante a simulação
efectuada.
Tabela 4-8 – Activações dos estados da FSM3
Variável de estado - Itfc_state [1:0]
Codificação Nº de Activações Percentagem
00
81
0,81%
01
11
0,11%
10
11
0,11%
11
9897
98,97%
Também aqui a análise da Tabela 4-8 permite identificar problemas de testabilidade
sérios no fluxo desta máquina de estado. Podemos constatar que a máquina passa grande
parte da simulação “presa” no estado 3 (codificação: 11). A consulta do fluxograma
identifica que a condição Tx_end = 0 é activada também demasiadas vezes, o que
“prende” a máquina neste estado. Informação sobre a variável Tx_end encontra-se
resumida na Tabela 4-9.
Tabela 4-9 – Problemas identificados no flow da FSM3
Variável RTL
TX_END
Faltas Associadas
CONFIRM_LSA@0
CONFIRM_LSA@1
Activações a ZERO
9997
Controlab Detectab
9997
Activações a UM
3
Controlab Detectab
3
30
30
Portanto, uma máscara útil deverá garantir que a variável Tx_end adquira a valor
lógico ‘1’ por um número razoável de períodos de relógio, de forma a permitir a natural
transição entre estados. A Tabela 4-10 apresenta a informação, relativamente a máscaras,
até agora possivelmente definidas.
Tabela 4-10 – Máscaras definidas para FSM2 e FSM3
Máscaras
CONFIRM
TX_END
Valor a forçar
UM
UM
Também este problema já tinha sido detectado e classificado como sendo do tipo 2. É
devido ao deficiente flow desta máquina que a problema detectado na 2ª máquina de
estado (FSM2) existe. Contudo, verifica-se, com base no código RTL, que a resolução do
problema de controlabilidade do sinal Tx_end (através da máscara que force Tx_end=’1’)
vai minorar o problema de testabilidade associada à condição CONFIRM estar demasiado
tempo forçada a ‘0’. Com efeito, convém recordar que os resultados de simulação, a nível
99
RTL, dependem do padrão pseudo-aleatório (ou pseudo-aleatório com máscaras) que é
utilizado como ficheiro de estímulos. Sendo uma amostra de simulação, não é um cálculo
probabilístico, que forneça informação sobre a controlabilidade e observabilidade de uma
variável ou condição. Sendo assim, para este caso de estudo, talvez não se justifique a
aplicação destas 2 máscaras, pois uma delas [Tx_end (1)] deverá resolver o problema de
testabilidade que a outra iria resolver.
4ª máquina de estado FSM4
Variável de estado é o registo Next_bit [3:0]. Neste caso, só estão definidos 10 de todos
os estados possíveis (24 =16). A Tabela 4-11 resume os valores de activações dos estados
durante a simulação efectuada.
Tabela 4-11 – Activações dos estados da FSM4
Variável de estado - Next_bit [3:0]
Codificação Nº de Activações Percentagem
0000
6933
69,33%
0010
523
5,23%
0011
318
3,18%
0100
318
3,18%
0101
318
3,18%
0110
318
3,18%
0111
318
3,18%
1000
318
3,18%
1001
318
3,18%
0001
318
3,18%
A análise da Tabela 4-11 permite identificar igualmente problemas de testabilidade no
fluxo desta máquina de estado. Pode constatar-se que a máquina passa uma boa parte da
simulação “presa” no estado 0 (codificação: 0000). A consulta do fluxograma identifica
que a condição para transitar deste para outro estado obriga à verificação de duas
condições: Send_en = 1 e (Tx_conta > DelayTime). A Tabela 4-12 procura resumir a
informação sobre estas condições.
Tabela 4-12 – Problemas identificados no fluxo da máquina FSM4
Variável RTL
Cond_l_349 = ((tx_conta > DelayTime) && send_en);
Send_en
Faltas RTL Associadas
SEND_EN_LSA@0
SEND_EN_LSA@1
TX_CONTA_G_DelayTime_LSA@0
TX_CONTA_G_DelayTime _LSA@1
Activações a ZERO
9967
6297
Controlab Detectab
6297
30
9967
30
Activações a UM
33
3703
Controlab Detectab
3703
30
33
30
100
A condição Send_en = 1 tem uma boa probabilidade de se verificar (37%). Contudo,
a condição cumulativa (Send_en=1 e ((Tx_conta > DelayTime)) só apresenta uma
percentagem de 0,33% de ser verdadeira. Este facto explica a razão da 4ª máquina de
estado apresentar uma distribuição de probabilidades dos estados tão desequilibrada.
A execução do flow desta máquina é defeituosa devido à existência de um contador,
que somente possibilita a transição de estados a cada 105 impulsos de relógio.
Apesar da probabilidade de Send_en ser aceitável e uma vez que é necessário
mascarar a condição cumulativa para haver transição entre estados, de nada serve o
mascaramento se afinal nessa altura a primeira condição não se verifica (Send_en=1).
Portanto para obrigar à transição convém forçar ambas as condições.
A análise RTL do código fonte revela que a resolução do problema de flow de FSM4
implica uma alteração da controlabilidade, para melhor, relativamente ao valor 1 na
variável de um bit, Tx_end. Variável essa que já tinha sido identificada como sofrendo
um problema de controlabilidade, a esse valor “1”, motivo pelo qual tinha já sido
definida uma máscara para resolver o problema de testabilidade. Portanto a resolução do
problema da FSM4, irá minorar o problema de testabilidade identificado relativamente a
Tx_end, pelo que talvez não surta efeito a aplicação da máscara definida relativa a
Tx_end.
O que se verifica num circuito fortemente sequencial, é como é possível que
diferentes variáveis estejam fortemente relacionadas. Deste modo, um possível problema
de testabilidade, numa variável genérica, pode implicar uma intervenção directa e local
na própria variável para resolver o problema de testabilidade em questão, ou procurar
averiguar qual a origem desse problema de testabilidade. Isto implica perceber quais as
variáveis RTL relacionadas com o problema de testabilidade e que o originam. Este tipo
de intervenção surte melhor efeito, pois ajuda a reduzir o número de máscaras aplicadas.
A Tabela 4-13 resume a informação de todas as máscaras definidas até ao momento
com base na análise dos problemas de testabilidade encontrados.
101
Tabela 4-13 –Máscaras definidas para FSM 2, FSM3 e FSM4
Máscaras
Confirm
Tx_end
Send_en
Tx_conta
Valor a forçar
UM
UM
UM
DelayTime +1
Analisadas que estão as 4 máquinas de estado e identificados alguns dos cantos
escuros deveria proceder-se a uma nova simulação para aferir da cobertura de faltas com
a injecção das máscaras, ou seja, forçando os respectivos bits a mascarar em diferentes
alturas para averiguar das alterações nas faltas não detectadas. No entanto, não se
procedeu a nenhuma simulação nesta fase, pois o tempo em que este circuito está em
análise sugere que outros problemas estão por resolver. A tabela dos problemas do tipo 2
é disso exemplo.
A análise da tabela de problemas do tipo 3, permite concluir sobre o motivo da sua
fraca detectabilidade e, no entanto, boa controlabilidade de vários sinais.
Condições
Out_reg_0_0
Out_reg_0_1
Out_reg_1_0
Out_reg_1_1
Out_reg_2_0
Out_reg_2_1
Out_reg_3_0
Out_reg_3_1
Out_reg_4_0
Out_reg_4_1
Out_reg_5_0
Out_reg_5_1
Out_reg_6_0
Out_reg_6_1
Out_reg_7_0
Out_reg_7_1
Data_in_0_0
Data_in_0_1
Data_in_1_0
Data_in_1_1
Data_in_2_0
Data_in_2_1
Data_in_3_0
Data_in_3_1
Data_in_4_0
Data_in_4_1
Data_in_5_0
Data_in_5_1
Tipo 3
Detec Control
<5
2557<x<7443
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
“
102
Data_in_6_0
Data_in_6_1
Data_in_7_0
Data_in_7_1
“
“
“
“
“
“
“
“
A análise das faltas não detectadas em bits de variáveis RTL demonstra um certo
padrão. Como a métrica de testabilidade considera detecções múltiplas ao nível RTL,
verifica-se que a entrada primária, de 8 bits, data_in e a variável interna out_reg,
igualmente com 8 bits, avolumam a lista de faltas não detectadas (n < 5) para todos os
bits das variáveis. A análise dos resultados mostra que todas estas variáveis têm valores
aceitáveis de controlabilidade e fraca detectabilidade.
A análise do código RTL permite concluir que a variável data_in é carregada, em
certas condições, para a variável interna out_reg e posteriormente é efectuado o
deslocamento série deste valor por uma saída primária data_out, deslocamento esse
controlado pela 4ª máquina de estados.
Uma solução fácil seria tornar observável a variável interna out_reg, pois estamos na
presença de um tipo de problema do tipo 3. Desta forma, o impacte no circuito seria
mínimo. Contudo, esta forma de TPI (Test Point Insertion) para aumentar a
observabilidade é muito penalizadora, já que obriga a adicionar mais 8 saídas primárias
para o MISR. Assim, procurou-se antes explorar a funcionalidade do circuito e controlar
o carregamento do data_in para o out_reg e o seu posterior deslocamento para o exterior
mediante o uso de máscaras.
O controlo do carregamento da variável data_in para a variável out_reg é efectuado
pelas condições Load = 1 e Tre = 0 (variáveis RTL internas). Após o carregamento, temse de inibir novos carregamentos até se efectuar o deslocamento para fora do valor
carregado, controlado pela 4ª máquina de estado cujas máscaras para permitir a
circulação entre estados já foram identificadas. Caso contrário, ir-se-ia corromper os
dados carregados. A variável Load = 0 impede novos carregamentos para a variável
out_reg.
Assim, numa primeira fase da análise, obtiveram-se as 4 máscaras definidas na Tabela
4-14.
103
Tabela 4-14 - Máscaras definidas
Máscaras
Load(1) e Tre(0)
Load(0) e Tx_conta(105d) e Send_en(1)
Tx_end (1)
Confirm(1)
Máscara
M1
M2
M3
M4
Ordem
1ª
2ª
-
Destas máscaras, somente se aplicam as 2 primeiras. Como anteriormente referido, a
resolução do problema de flow da 4ª máquina de estados (FSM4) permitirá resolver o
problema de Tx_end que foi identificado como sendo do tipo 2 que, por sua vez, vai
minorar o problema de controlabilidade do sinal Confirm.
Seguindo a metodologia proposta, segue-se a simulação de faltas a nível RTL com a
injecção de máscaras e análise de resultados.
O diagrama que descreve a metodologia proposta para a injecção de máscaras já foi
apresentado no capítulo 3, e é aqui repetido na Figura 4-4, para ajudar na compreensão.
Nele se ilustra como se procede à injecção de máscaras em RTL. Esta arquitectura
acabará por ser igualmente aplicada no nível lógico.
P.I.s
m+n
m
L
F
S
R
BIST_C
(BIST Controller
+ Mask Injector)
M
U
X
m
n
P.I.s
P.O.s
P.I.s (M)
Masking Logic
(ML)
n
CUT
S.O.s
M
I
S
R
M.S.I.s
Start_Test
Masks to apply
Figura 4-4 – Arquitectura da metodologia para injecção de máscaras com m-BIST e CUT
sequencial.
Após a re-simulação, usando uma topologia onde se injectam as máscaras, é
apropriado mostrar quais as alterações que sucedem na lista de problemas do tipo 1 e 2,
bem como no funcionamento das máquinas de estado e os valores atingidos de FC.
104
A Tabela 4-15 apresenta os seguintes problemas do tipo 2 detectados:
Tabela 4-15 – Problemas identificados no CUT
Tipo 2
Condições
Detect
cond_l_149_20
30
cond_l_129_20
30
cond_2_20
30
cond_l_319_20
30
confirm_0
30
cond_4_20
30
shot_0
30
send_20
30
cond_3_20
30
tx_end_20
30
S2_0_0
30
Control
75
119
165
173
318
318
326
326
326
371
483
Houve uma diminuição em relação ao número de problemas do tipo 2.
Adicionalmente, deixaram de haver problemas do tipo 1 (< COi, < DOi). Ao contrário da
situação anterior, antes da injecção de máscaras, já não existem problemas do tipo 3 (>
COi, < DOi). A situação actual é de cobertura de faltas a 100%. No entanto, não se
atingiu uma situação em que todos os problemas sejam do tipo 4 (> COi, > DOi). A Tabela
4-15 resume os problemas existentes actualmente, ou seja boa detectabilidade mas ainda
existindo problemas de controlabilidade [tipo 2]. No entanto, como a detectabilidade
atingida é de 100%, entende-se que os problemas de testabilidade estão resolvidos.
A aplicação do padrão de teste, orientado pelas métricas de testabilidade
disponibilizados pelos resultados da ferramenta VeriDOS permitiu obter o gráfico de
coberturas de faltas RTL da Figura 4-5.
105
Figura 4-5 – Gráfico da cobertura de faltas FC(n) após a injecção das máscaras.
No modelo de faltas a nível RTL utilizado, todas as faltas são detectadas, obtendo-se
pois uma cobertura de faltas de 100% com pouco mais de 6000 vectores. O efeito em
FC(n) da aplicação das máscaras é prontamente evidente na Figura 4-5. Com efeito, a
aplicação de M1&M2 num número relativamente reduzido de ciclos de relógio, permite a
detecção múltipla (n=5) de um número significativo de faltas RTL. Note-se ainda, em
especial na curva FC(n) sem máscaras (ou seja, apenas com teste pseudo-aleatório), o
efeito da activação do sinal de Reset, para N= 1250, 2500, 3750, 5000, etc., em particular
nas primeiras activações desse sinal. Os instantes ou intervalos de aplicação das máscaras
estão resumidos na Tabela 4-16 e assinalados na Figura 4-5.
Tabela 4-16 – Resumos das máscaras aplicadas.
Valores da Máscara
LOAD(1) e Tre(0)
LOAD(0)
TX_CONTA(105d)
SEND_EN(1)
designação
M1
M2
Período de Injecção
1260, [3000,3500], 4505, 5008 e 6004
[1261, 2499]; [4506, 4999]; [5009, 5997] e [6005, 6998]
106
Como se observa na Figura 4-5, existe a necessidade de re-aplicar as máscaras para
exercitar suficientemente a funcionalidade do circuito b13. Neste caso, a funcionalidade
explorada é o deslocamento série dos dados da entrada para a saída.
A situação dos valores de detectabilidade antes da aplicação de máscaras, encontrase ilustrada na Figura 4-6.
B13: DO
DO
35
30
25
20
15
10
5
0
0
50
100
150
200
250
# Faltas RTL
Figura 4-6 – Valores de detectabilidade antes da aplicação das máscaras
Os valores de controlabilidade, das faltas no nível RTL, apresentam as alterações
expostas na Figura 4-7
B13: CO - Uso de máscaras
% @ 0/1
10000
8000
6000
4000
Com Máscaras
2000
Sem Máscaras
0
0
50
100
150
200
250
# Faltas RTL
Figura 4-7 – Alteração nos valores de controlabilidade devido às máscaras
107
Após a aplicação das máscaras e análise dos resultados, se procedermos a uma
investigação do tipo de sinais mascarados podemos ter uma ideia dos fenómenos
desencadeados.
As duas máscaras injectadas permitem controlar 4 sinais no nível RTL: Load, Tre,
Send_en e Tx_conta. Estes sinais são sinais de controlo do fluxo de módulo b13. A sua
utilização ao longo do código RTL permite orientar as funcionalidades do circuito,
evidenciando a necessidade de os manipular de forma a exercitação ser a pretendida.
A Tabela 4-17 apresenta de uma forma resumida as estatísticas sobre a porção das
entradas primárias (MPI) e entradas secundárias (MSI) que foram efectivamente
mascaradas relativamente ao total de sinais existentes. A eficácia do teste foi obtida,
mascarando 4 entradas secundárias, o que corresponde a 12,5% das existentes e a 8% do
total de sinais RTL existentes. Como é possível constatar, o mascaramento de entradas
secundárias (MSI) incidiu somente sobre sinais de controlo, o que era previsível devido
ao carácter deste.
Tabela 4-17 - Número de sinais mascarados, no módulo b13
P.I.
S.I.
Entradas #
dados
controlo
total
dados
controlo
total
Total
CUT
8
4
12
8
32
50
62
MPI
0
0
0
0
MSI
0
4
4
4
% MPI
0
0
0
-
% MSI
0
12.5
8.0
6.5
4.4. 2º. Ciclo: Implantação de M-BIST
O próximo passo consiste em passar à síntese do circuito. Para tal, utilizou-se a
ferramenta comercial Design Vision da Synopsys e uma biblioteca de células (cell
library) cyx_3.3V da tecnologia CMOS AMS 0,35μm, privilegiando, quer a área, quer o
período de relógio mínimo (fMAX). No caso da optimização para área, optou-se por definir
o registo por defeito (default) como sendo o registo DFAQ – tipo de registo só com uma
saída (Q). No caso da optimização por período mínimo, optou-se por definir um relógio
108
com um período de 1 ns, que informa a ferramenta de síntese para a minimização de
níveis de lógica entre registos que se pretende para operar nesta frequência de relógio.
A Figura 4-4, contém o diagrama genérico que descreve a metodologia proposta para
a injecção de máscaras em hardware. Nele se ilustra como se procede à injecção de
máscaras em RTL. A arquitectura ilustrada é utilizada quer no nível mais abstracto, nível
de transferência entre registos, quer já na síntese lógica, conduzindo a uma arquitectura
igual entre níveis. No entanto, o módulo do CUT que inicialmente se encontrava descrito
em RTL é agora substituído por uma descrição estrutural pretendida, obtida com
diferentes opções de síntese, encontrando-se a arquitectura pronta para proceder à
injecção de faltas. As interfaces entre os módulos da arquitectura não mudaram, o que
permite usar a mesma arquitectura e aproveitar todo o trabalho desenvolvido no nível
RTL, nomeadamente a definição do padrão de teste a aplicar. A fim de demonstrar que a
metodologia m-BIST estendida a circuitos sequenciais conduz a uma solução fracamente
dependente da topologia final (estrutura) de implementação da função, a síntese é
realizada com duas opções no que se refere ao CUT, em particular visando a
minimização lógica (área mínima) e o tempo de propagação dos sinais (frequência de
operação máxima).
Com a descrição estrutural (duas versões, area e delay), procedeu-se à simulação de
faltas, a nível lógico. Poder-se-ia utilizar a ferramenta VeriDOS. Contudo, preferiu-se
utilizar uma ferramenta comercial – o VeriFault™, da Cadence, uma vez que é uma
ferramenta que uma empresa como a Tecmic pode utilizar e apresentar os resultados de
simulação aos seus clientes. Com a ferramenta VeriFault™ utilizou-se o modelo de faltas
NSA (Net Stuck-At), ocorrendo uma maior correlação com os resultados obtidos a nível
RTL. Os resultados estão ilustrados nas Figura 4-8 e Figura 4-9 para as duas versões
sintetizadas. Observam-se ganhos significativos na cobertura de faltas, por aplicação das
máscaras (Tabela 4-18). Uma comparação com os gráficos FC(n) obtidos a nível RTL, no
1º. Ciclo da aplicação da metodologia evidencia a boa correlação entre a cobertura
múltipla de faltas RTL e a cobertura singular de faltas a nível estrutural.
109
Figura 4-8 - Cobertura de faltas a nível lógico (DC=FC(NSA) para o b13, com e sem a aplicação das
máscaras (versão delay, de período de relógio mínimo).
Figura 4-9 - Cobertura de faltas a nível lógico (DC=FC(NSA) para o b13, com e sem a aplicação das
máscaras (versão area, de área de implantação mínima).
110
Tabela 4-18 – Ganhos na cobertura de faltas estrutural obtidos com m-BIST.
Circuito b13 estrutural
(w=with, wo=without)
Struct_Area (wo_m)
Struct_Area (w_m)
Struct_Delay (wo_m)
Struct_Delay (w_m)
DC=FC(NSA)
90,55%
96,51%
91,40%
97,19%
Procedeu-se em seguida à avaliação da sobrecarga de teste introduzida pela
funcionalidade de auto-teste integrado. Os resultados, obtidos com a ferramenta Design
Vision, estão apresentados na Tabela 4-19.
Tabela 4-19 – Sobrecarga de teste (aumento de área) no b13 com m-BIST.
Módulo
B13 (wo_m) (Área mínima)
B13 (w_m) (Área mínima)
B13 (Área) c/ cadeia de scan
B13 (wo_m) (Optimização delay)
B13 (w_m) (Optimização delay)
B13 (Delay) c/ cadeia de scan
BIST_C
LFSR_10
MISR_10
Unids de Área
214701,8
221214,8
264152,0
260016,9
274602,1
310461,2
114278,0
20066,1
40139,3
[%]
0,0
+3,0
+23,03
0,0
+5,6
+19,40
----
4.5. Conclusões
A metodologia proposta de m-BIST estendida a circuitos sequenciais foi aplicada no
circuito de referência b13. Conforme se observa, num 1º. Ciclo, a metodologia realiza a
preparação do auto-teste integrado, a nível RTL, utilizando-se principalmente a
abordagem por simulação.
Realiza-se uma primeira reconfiguração do código de descrição do b13, a nível RTL
e em linguagem Verilog, para injecção de faltas na ferramenta VeriDOS com recurso à
ferramenta RTL2FO. A simulação é realizada sobre o circuito em modo normal de
funcionamento, isto é, é uma simulação de faltas de um circuito sequencial. Estuda-se
primeiro o efeito do sinal de Reset, escolhendo-se uma periodicidade de activação que
permite quase maximizar a cobertura múltipla de faltas a nível RTL.
Identificam-se a seguir, com recurso a esse padrão de activação do sinal de Reset, os
principais cantos escuros da funcionalidade, que, no b13, abrange 4 máquinas de estado.
111
A FSM1 não apresenta cantos escuros, contrariamente ao que se observa para as FSM 2,
3 e 4. Analisam-se primeiro os problemas de controlabilidade, verificando-se que certos
estados quase não são visitados no decorrer da simulação de um padrão pseudo-aleatório
de N=10000 vectores. Para cada FSM, identificam-se as máscaras que permitem activar
esses cantos escuros. Dada a dimensão do circuito em análise, não se torna necessário
utilizar a ferramenta ASCOPA para a geração automática de máscaras. Verifica-se, como
era de esperar, que a introdução de uma máscara modifica a detectabilidade de faltas
associadas a outros cantos escuros. Assim, após algumas experiências de simulação,
define-se um conjunto mínimo de máscaras a utilizar, qual a sequência de activação, e
qual o número de ciclos de relógio necessários por cada activação de cada máscara.
Consegue-se uma cobertura FC (n=5) = 100% com 2 máscaras e cerca de N=6000
vectores, o que assegura uma solução de reduzido consumo de energia.
Concluído o ciclo de preparação do m-BIST (1º. Ciclo), em que se define o padrão de
auto-teste a utilizar durante a sessão de BIST, procede-se ao 2º. Ciclo da metodologia – o
ciclo de implantação do m-BIST na versão final do circuito. Retiram-se as modificações
do código RTL efectuadas para injecção de faltas, ficando disponível a descrição Verilog
do circuito de referência, b13, com a funcionalidade de teste – o LFSR, o controlador de
BIST, a ML (Masking Logic) e a reconfiguração limitada do CUT (o b13), para assegurar
a injecção de máscaras em entradas secundárias (M.S.I.). Gera-se a descrição
comportmental do MISR. De seguida, procede-se à síntese lógica da versão m-BIST do
b13 (de acordo com a metodologia proposta) e do b13 sem auto-teste, para efeitos de
avaliação da sobrecarga do teste. Utilizam-se para o efeito duas opções de síntese (área
mínima, e período de relógio mínimo).
Finalmente, concluiu-se a caracterização da solução obtida, através do cálculo das
métricas de testabilidade. Primeiro, a eficácia do teste (TE) é avaliada, através do cálculo da
cobertura singular de faltas NSA, a nível estrutural. Verifica-se a boa correlação entre a
cobertura múltipla de faltas RTL (n=5) e a cobertura singular de faltas a nível lógico (NSA).
Avaliou-se também a sobrecarga do teste, em especial em termos do aumento percentual de
área devido à implantação de funcionalidade de auto-teste integrado. Como era de esperar, um
CUT de complexidade reduzida introduz, percentualmente, uma sobrecarga elevada. À
medida que a complexidade do CUT aumenta, a aplicação da metodologia m-BIST proposta
conduzirá a valores da sobrecarga de teste mais reduzidos,. Salienta-se o facto de, numa
112
arquitectura de teste onde se pretende-se aplicar a técnica de test-per-scan, só a introdução de
um cadeia de full-scan, à partida, resultar numa sobrecarga no CUT de mais de 23%, no caso
da optimização para área, ou de mais de 19% no caso da optimização para FMAX.
113
5. Demonstração de Resultados. PIC de um Contador Estático de Energia
O módulo onde se procura averiguar a eficácia da metodologia de m-BIST para sistemas
sequenciais é o de um PIC. Este controlador é inserido no projecto de um Contador Estático
de Energia Eléctrica desenvolvido pela Tecmic [39]. A Figura 5-1 apresenta o diagrama de
blocos do sistema, e qual o módulo usado para a metodologia.
8051
ROM
RAM
RTC &
Counters
(PIC)
Voltage
A/D
Converter
Latch/
Registers
LCD
Controller
Calculation
Block
Current
ASIC
ASIC
LCD Display
Figura 5-1- Diagrama de blocos do contador estático de energia eléctrica.
5.1. Funcionalidade
Numa breve descrição geral do funcionamento deste circuito dada pela Tecmic, é referido
que o módulo implementa os contadores dos impulsos de energia, e o contador do RTC (Real
Time Clock).
A funcionalidade implementada por este módulo é similar à de um PIC (Programmable
Interrupt Controller) sendo constituído por diversos contadores internos e lógica para
sinalização de interrupções.
A Figura 5-2 apresenta a interface do módulo com o exterior.
115
Wdog_Clear
Watchdog_Time[7:0]
Voltage_Sample[7:0]
Voltage[7:0]
Wd_Reset
Violacao
Voltage_Interrupt
Teste
Violacao_Interrupt
Status_Read
Reg_Potencia_Leit[15:0]
Load_Calibracao
RTC_Min[15:0]
Impulso_Ferraris
RTC_Interrupt
Impulso_Estatico_Prescaled
PIC
Interrupt
Impulso_Estatico
Imp_Ferraris_Interrupt
Ferraris_PF
Imp_Estatico_Interrupt
Estatico_CLK
Ferraris_PF_Int
Clear_RTC
Contagem_Ferraris[15:0]
Calibracao[7:0]
Contagem_Estatico[15:0]
Botao
Botao_Interrupt
Reset
Clk1
Clk32kHz
Figura 5-2 - Diagrama de topo do controlador PIC do contador estático de energia eléctrica.
As principais características, do circuito, são resumidas na Tabela 5-1.
Tabela 5-1 – Características do módulo PIC
# FF
274
P.I
44+3
P.O.
Caracteristicas do módulo PIC
# Linhas Verilog
# processos
73
800
25
Notas
Possui 5 somadores no total [4 de
16 e 1 de 15 bits]; e 5 subtractores
[25, 24, 22, 8 e 6 bits
respectivamente]
Antes de entrar propriamente no 1º Ciclo da metodologia foi necessário traduzir o código,
originalmente descrito em VHDL, para Verilog, de forma a proceder à sua simulação na
ferramenta VeriDOS. A análise de ferramentas existentes no mercado para este efeito recaiu
na ferramenta X-HDL 3.2.52 18 que apresentou bons resultados. Alguma depuração teve de ser
efectuada. Contudo, foi possível gerar uma descrição Verilog que descreve idêntica
funcionalidade que a descrição VHDL de partida.
18
http://www.x-tekcorp.com/Xhdl.php
116
Um Testbench projectado para o efeito foi usado para cruzar os resultados da simulação
das duas descrições (VHDL original e Verilog), a fim de verificar a correcção da tradução e a
manutenção da funcionalidade. O seu esquema é ilustrado na Figura 5-3.
PIC
(VHDL)
L
F
S
R
=
PIC
(Verilog)
TestBench
Controller
Figura 5-3 – Arquitectura para comparação das funcionalidades dos dois módulos
O próximo passo foi, seguindo a metodologia, a alteração do ficheiro em Verilog para
suportar a injecção de faltas ao nível RTL. Para tal, recorreu-se à ferramenta RTL2FO.
5.2. 1º. Ciclo: Erros de Projecto
Aplicando a metodologia proposta, são recolhidos dados de simulação com o VeriDOS e
de avaliação das probabilidades de controlabilidade e de observabilidade de variáveis e
condições com a ferramenta ASCOPA. Neste caso, a análise destes dados não denunciou a
existência de design flaws.
5.3. 1º. Ciclo: Preparação de Auto-teste a Nível RTL
O módulo PIC é composto por dez contadores, estando presentes contadores de até 24
bits. Com o objectivo de aumentar a controlabilidade dos elementos de memória, a técnica
adoptada foi partir todos os contadores. O sinal Teste (entrada primária), presente no módulo
original, utilizado para partir alguns dos contadores, foi usado para partir todos os contadores,
originando contadores de, no máximo, 8 bit.
O processo de simulação de faltas decorreu com um LFSR de 20 bits a gerar vectores de
teste para aplicar nas entradas do módulo, durante N=15k vectores. Apesar de haver 4
barramentos de entrada com 8 bit, optou-se por, a partir de um LFSR de 20 bits, garantir a
117
exercitação de todas elas, e de todas as restantes de single bit, reduzindo desta forma a
sobrecarga final do teste.
A análise da influência da periodicidade do sinal Reset na evolução das coberturas de
faltas, para diferentes valores, revelou que pouca alteração ocorre. As curvas, na Figura 5-4,
apresentam uma convergência muito similar. Optou-se por garantir uma periodicidade de
2500 durante a simulação, o que garantia à partida uma cobertura de faltas na ordem dos 37%.
Este valor é efectivamente muito reduzido, o que denota a existência de vários problemas de
testabilidade que é necessário resolver. Essa análise é efectuada no nível de transferência
entre registos (RTL).
Figura 5-4 - Evolução da FC em função da periodicidade do sinal Reset
Os próximos parágrafos descrevem os problemas encontrados e as soluções adoptadas
para maximizar a cobertura ao nível RTL.
A lista de problemas de testabilidade detectados após a simulação com a ferramenta
VeriDOS são disponibilizados num dos ficheiros resultantes do processo de injecção de faltas.
Esta lista encontra-se ordenada pelo valor de detectabilidade de todas as variáveis às quais se
associa um modelo de faltas.
118
A lista de problemas de testabilidade apresenta diversas situações. Convém ao projectista
concentrar-se primeiro na resolução de problemas do tipo 1, detectabilidade e controlabilidade
reduzidas. A Tabela 5-2 apresenta a listagem obtida com base nas simulações do VeriDOS.
Tabela 5-2 – Lista de Problemas do tipo 1 no PIC
Sinal RTL
RTC_Min_0_0
***
RTC_Min_15_0
Contagem_Estatico_4_0
Contagem_Estatico_5_0
Contagem_Estatico_5_0
Contagem_Estatico_6_0
Contagem_Estatico_11_0
Contagem_Estatico_12_0
Contagem_Estatico_13_0
Contagem_Estatico_14_0
Reg_Potencia_Leit_0_0
***
Reg_Potencia_Leit_15_0
Contagem_Estatico_C_4_0
Contagem_Estatico_C_5_0
Contagem_Estatico_C_5_0
Contagem_Estatico_C_6_0
Contagem_Estatico_C_8_1
Contagem_Estatico_C_11_0
Contagem_Estatico_C_12_0
Contagem_Estatico_C_13_0
Contagem_Estatico_C_14_0
Contagem_Ferraris_C_0_1
Contagem_Ferraris_C_8_1
Reg_Potencia_C_0_1
Reg_Potencia_C_8_1
Q_C_8_1
RTC_Min_int_C_1_0
RTC_Min_int_C_1_1
***
***
RTC_Min_int_C_14_0
DO
0
*
0
0
0
0
0
0
0
0
0
0
*
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
*
*
0
CO
0
*
0
0
0
0
0
0
0
0
0
0
*
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
*
*
0
RTC_Min_int_C_14_1
Wd_Reset_Counter_C_8_1
Wd_Reset_Counter_C_16_1
Potencia_Load_Counter_C_8_
1
Potencia_Load_Counter_C_16
_1
Second_C_4_0
Second_C_5_0
Voltage_Timer_C_8_1
Voltage_Timer_C_16_1
Voltage_Timer_C_23_1
Second_4_1
Second_5_1
RTC_Min_int_0_0
RTC_Min_int_1_0
***
RTC_Min_int_15_0
RTC_Min_Del_0_0
RTC_Min_Del_1_0
***
RTC_Min_Del_14_0
Teste_1
Voltage_Interrupt_0
Interrupt_1
Reg_Potencia_Int_1
RTC_Interrupt_0
Cond_L_389_20
Cond_L_505_20
Cond_L_591_20
Cond_L_654_20
Cond_L_736_20
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
*
0
0
0
*
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
*
0
0
0
*
0
0
0
0
0
0
0
0
0
0
0
1º Problema
Na lista de faltas com problemas de testabilidade encontramos o sinal RTC_Min[15:0] com
problemas de controlabilidade e detectabilidade nas faltas LSA 0, nos bits da variável. A
Tabela 5-3 apresenta os resultados do VeriDOS
119
Tabela 5-3 - Resultados do VeriDOS para a variável RTC_Min
Problema
RTC_Min_15_0
DO
0
CO
0
0
0
..........................
RTC_Min_0_0
Como se observa, não são detectadas as faltas LSA 0 em todos os registos do sinal
RTC_Min. Este sinal é uma saída primária, pelo que o problema resulta directamente da
inexistente controlabilidade do sinal.
O problema de controlabilidade detectado significa que este sinal não se encontra a
receber valores. A análise do código RTL, repetida aqui para fácil compreensão Figura 5-5,
revela que o sinal em questão recebe valores do sinal RTC_Min_Int[15:0]. Assim, uma de duas
situações ocorre: 1) ou é a condição Cond_L_671, que controla a atribuição de valores a
RTC_Min, que apresenta problemas de activação, ou 2) o sinal RTC_Min_Int tem problemas
de controlabilidade.
Assign Cond_L_671 = (Clk32kHz == 1'b0 & Clk32kHz_Del == 1'b1);
always @(posedge Clk1 or posedge Reset)
begin
if (Reset)
RTC_Min <= 0 ;
else
begin
if (Cond_L_671)
RTC_Min <= RTC_Min_int ;
else
RTC_Min <= RTC_Min ;
end
End
Figura 5-5 –Código Verilog onde RTC_Min recebe valores de RTC_Min_int
A análise dos resultados da simulação indica que a condição Cond_L_671, Tabela 5-4, que
controla a recepção de valores, não tem nenhum problema de controlabilidade, para além do
de detectabilidade. Por exclusão de partes, é o sinal que fornece os dados de origem
RTC_Min_Int que apresentará problemas de controlabilidade.
Tabela 5-4 - Resultados do VeriDOS para a variável Cond_L_671
Condição
Cond_L_671_20
DO
0
CO
7499
0
7501
..........................
Cond_L_671_21
120
Igualmente pertencendo à lista de problemas do tipo 1 encontra-se o sinal RTC_Min_Int,
onde as faltas LSA 0 não são detectadas e apresentam problemas de controlabilidade, como se
verifica na Tabela 5-5.
Tabela 5-5 - Resultados do VeriDOS para a variável RTC_Min_Int
Problema
RTC_Min_Int_15_0
DO
0
CO
0
0
0
..........................
RTC_Min_ Int_0_ 0
A condição Cond_L_654, Figura 5-6, que possibilita que o sinal RTC_Min_Int (contador de
16 bits) possa ser activado, apresenta um problema de controlabilidade DO = 0 e CO = 0. A
condição em causa testa o sinal Q (contador de 15 bits) e o sinal Second (subtractor de 6 bits)
a zero, algo que não se chegou a verificar na simulação.
assign Cond_L_650 = (Clear_RTC_Flag_Del == 1'b1 & Clear_RTC_Flag_Del2 == 1'b1);
assign Cond_L_654 = (Q == 0 & Second == 0);
always @(posedge Clk32kHz or posedge Reset)
begin
if (Reset)
begin
RTC_Min_int <= 0 ;
end
else
begin
if (Cond_L_650)
begin
RTC_Min_int <= 0 ;
end
else if (Cond_L_654)
begin
RTC_Min_int <= RTC_Min_int + 1;
end
end
End
Figura 5-6 – Código Verilog onde a o sinal Cond_L_654 controla a atribuição de valores a RTC_Min_int
A primeira fase da injecção de máscaras possibilitará resolver este problema. Com o
objectivo de se controlar a controlabilidade a zero das variáveis Q e Second, são adicionadas,
à interface do CUT, duas entradas primárias Act_Q e Act_Second (MSI), o que obriga as
variáveis internas RTL do PIC a serem zero quando activas. A estas entradas primárias, e com
o objectivo de garantir a execução desta instrução encadeada, é necessário adicionar mais uma
entrada primária para prevenir que a condição anterior se verifique, forçando
121
Clear_RTC_Flag_Del@0, para prevenir que se realize um Reset ao sinal que procuramos
exercitar.
Desta análise obtem-se a máscara M1 descrita na Tabela 5-6.
Tabela 5-6 – Máscaras a injectar para resolver o problema de testabilidade em RTC_Min
Designação Máscara
M1
Clear_RTC_Flag_Del
Q
Second
Teste
Valor
1’b0
15’d0
6’d0
1’b1
Definição
input Act_Clear_RTC_Flag_Del;
input Act_Q;
input Act_Second;
Entretanto torna-se necessário definir mais 2 máscaras para exercitar a funcionalidade ao
máximo: (1) a máscara M2, para aplicar a máscara M1 mas com a diferença do sinal Teste ser
a ‘0’, e (2) a máscara M3 para aplicar um Reset ao circuito e voltar a aplicar a mesma
sequência de máscara de forma a repetir a exercitação anterior.
Percurso dos valores nas variáveis:
RTC_Min_Int
RTC_Min
RTC_Min_Del
A Tabela 5-7 resume o intervalo de tempo durante o qual são aplicadas as máscaras para
resolver o problema de testabilidade.
Tabela 5-7 – Período total de aplicação das máscaras
Período de aplicação da máscaras e de reactivações Inicio Fim
M1, M2, M3
3000 6050
M15
12500 13000
É necessário proceder a activações e reactivações das máscaras injectadas. Este processo
de re-aplicação de máscaras têm um impacte na sobrecarga de área do módulo BIST_C, pois
o objectivo é procurar explorar a funcionalidade implícita do PIC. Neste caso, a condição das
variáveis Q e Second serem ‘0’ permite a soma de um contador de 16 bits. Devido ao facto
deste último contador se encontrar partido e de forma a explorar a transição do contador, com
tudo a uns, para ‘0’ é necessário desactivar e reactivar a injecção da máscara. O objectivo é
exercitar, ao máximo, os bits de carry do contador.
2º Problema:
122
A condição seguinte Cond_L_530 possui uma controlabilidade reduzida, como se observa
na Tabela 5-8, o que influencia a controlabilidade de Reg_Potencia_Leit[15:0] colocando-a na
lista de sinais com problemas de testabilidade (DO = 0 e CO = 0).
Tabela 5-8 - Resultados do VeriDOS para a variável Cond_L_530
Condição
Cond_L_530_20
Cond_L_530_21
Instrução
DO
0
30
CO
6
14994
Load_Toggle == 1'b1 & Load_Toggle_Del == 1'b0
No entanto, a condição Cond_L_530, que depende dos valores da variável Load_Toggle,
depende da funcionalidade da variável Potencia_Load_Counter através da Cond_L_173,
cujos dados de simulação estão apresentados na Tabela 5-9.
Tabela 5-9 - Resultados do VeriDOS para a variável Cond_L_173
Condição
Cond_L_173_20
Cond_L_173_21
Instrução
DO
0
30
CO
4
14996
Potencia_Load_Counter == 0
A variável Potencia_Load_Counter (contador de 22 bits) apresenta o valor Zero um
número insuficiente de vezes, o que limita a controlabilidade de Cond_L_530, por intermédio
de Load_Toggle. O código da Figura 5-7 mostra a interacção entre as variáveis.
Assign Cond_L_173 = (Potencia_Load_Counter == 0);
always @(posedge Clk1 or posedge Reset)
begin
if (Reset)
begin
Load_Toggle <= 1'b0 ;
end
else
begin
if (Cond_L_173)
begin
Load_Toggle <= ~Load_Toggle ;
end
else
begin
Load_Toggle <= Load_Toggle ;
end
end
End
Figura 5-7 – Código Verilog mostra a ligação entre as variáveis Load_Toggle e Potencia_Load_Counter
123
A aplicação de uma máscara para aumentar a controlabilidade da condição Cond_L_173
resolverá alguns problemas de testabilidade. A interface, do módulo PIC, passa a ter mais
uma entrada primária (MSI) Act_Potencia_Load_Counter que, quando activa, permite forçar
o valor da variável interna RTL Potencia_Load_Counter a Zero.
A Tabela 5-10 resume o intervalo de tempo durante o qual a máscara (M4) é aplicada.
Tabela 5-10 – Período total de aplicação da máscara
Período de aplicação da máscaras e reactivações: Inicio Fim
M4
6050 6700
M14
11500 12500
As faltas da variável Potencia_Load_Counter LSA 0 não são detectadas. Apesar da
excelente controlabilidade, existe um problema de observabilidade.
A Tabela 5-11 apresenta as variáveis RTL que têm problemas de observabilidade.
Tabela 5-11 – Variável RTL com problemas de observabilidade
S.O
Variável RTL
Potencia_Load_Counter
Bits
22
3º Problema
A saída primária Contagem_Estatico[15:0] apresenta problemas de controlabilidade nos
bits mais significativos (MSB). A condição Cond_L_443, Tabela 5-12, limita a funcionalidade
do
contador
em
questão.
Como
os
sinais
Impulso_Estatico_Prescaled_Del
e
Impulso_Estatico_Prescaled_Del2 não apresentam problemas de testabilidade, o problema
reside no sinal Estático_Prescaler[7:0] (subtractor de 8 bits), que, na Cond_L_443 é testado a
zero, apresentando problemas de actividade. O código referente encontra-se transcrito na
Figura 5-8.
Tabela 5-12 - Resultados do VeriDOS para a variável Cond_L_443
Condição
Cond_L_443_20
Cond_L_443_21
Detecção
30
30
Controlabilidade
37
14963
124
assign Cond_L_443 = (Impulso_Estatico_Prescaled_Del == 1'b1 &
Impulso_Estatico_Prescaled_Del2 == 1'b0 &
Estatico_Prescaler == 0);
always @(posedge Clk1 or posedge Reset)
begin
if (Reset)
Contagem_Estatico <= 0 ;
else
begin
if (Cond_L_443)
begin
Contagem_Estatico <= Contagem_Estatico + 1 ;
end
else
Contagem_Estatico <= Contagem_Estatico ;
end
End
Figura 5-8 – Código Verilog onde se mostra a influência do problema de Cond_L_443 na variável
Contagem_Estatico
A máscara Act_Estatico_Prescaler força o valor do contador a zero, o que permite
melhorar a controlabilidade de Contagem_Estatico[15:0].
Uma outra máscara permite aplicar a máscara M5 mas com o sinal Teste a ‘0’. Desta
forma, é possível exercitar a transição de tudo a ‘1’ para tudo a ‘0’ na variável
Contagem_Estatico[15:0].
A Tabela 5-13 resume o intervalo de tempo durante o qual as máscaras são aplicadas.
Tabela 5-13 – Período total de aplicação da máscara
Período de aplicação da máscaras e de reactivações: Inicio Fim
M5, M6
6700 9600
4º Problema
A entrada primária Watchdog_Time[7:0] tem problemas de observabilidade e a variável
RTL Voltage_Timer_C[24:0] relacionada com os bits de borrow do subtractor
Voltage_Timer[24:0] tem problemas de controlabilidade. A funcionalidade deste contador
contempla o carregamento paralelo da variável Watchdog_Time na parte mais alta da variável
Voltage_Timer[24:0] caso uma determinada condição seja verificada, Cond_L_736. Para
resolver este problema de testabilidade, tem de ser gerada uma sequência de máscaras, que
procura exercitar a seguinte funcionalidade:
125
1) Forçar a P.I Watchdog_Time[7:0] (MPI) com tudo a ‘1’;
2) Forçar a condição Cond_L_713 a verificar-se, o que implica forçar a P.I. Voltage[7:0]
(MPI) a ‘0’, para carregar a variável Watchdog_Time[7:0] em Voltage_Timer[24:17];
3) Forçar a P.I. Voltage[7:0] (MPI) com tudo a ‘1’ para a condição Cond_L_713 não se
verificar;
4) Aguardar ciclos de relógios suficientes, para a variável Voltage_Timer[24:0] chegar a
Zero e Voltage_Timer_Del[24:0] ser 1;
Com esta sequência de máscaras pretende-se resolver os problemas de testabilidade
relacionados com as variáveis envolvidas.
No entanto, para melhorar a multiplicidade da detecção das faltas relacionadas com esta
fase da injecção de máscaras, e não alongar o período de teste, decidiu-se adicionar uma
entrada primária, à interface, o sinal Act_Voltage_Timer (MSI). Esta MSI permite forçar o
valor de Voltage_Timer[24:0] a 1, melhorando desta forma a controlabilidade da condição
Cond_L_736, que actualmente tinha os valores da Tabela 5-14. A Cond_L_736, ao influenciar
directamente uma saída primária, Voltage_Interrupt, melhora a detectabilidade de
Voltage_Timer[24:0].
Tabela 5-14 - Resultados do VeriDOS para a variável Cond_L_736
Condição
DO
2
30
Cond_L_736_20
Cond_L_736_21
Instrução
CO
1
14999
(Voltage_Timer[24:0] == 0) & (Voltage_Timer_Del[24:0] == 1)
As alterações efectuadas melhoram a multiplicidade da detecção das faltas RTL
relacionadas com esta injecção de máscaras, mas não permitem detectar mais nenhuma falta.
As faltas Voltage_Timer_Del LSA 0, continuam por detectar. bem como as Voltage_Timer
LSA 0 apesar da excelente controlabilidade. O problema em questão passou a ser de
observabilidade.
A
utilização
destas
2
variáveis:
Voltage_Timer[24:0]
e
Voltage_Timer_Del[24:0] no circuito resume-se à participação na Cond_L_736 sendo analisado
o seu valor. A cobertura de faltas associadas à condição Cond_L_736 mantém-se, apesar da
sua controlabilidade ter melhorado, graças à injecção de máscaras. A análise do código revela
126
que, caso se melhore a controlabilidade, a cobertura não é afectada. Assim, a solução é tornar
a variável Voltage_Timer_Del[24:0] observável. Uma vez que as variáveis, em questão, são
testadas somente a zero, e são constituídas por vários bits, torna-se difícil a detecção LSA 0.
Uma vez que a variável Voltage_Timer_Del[24:0] recebe o valor de Voltage_Timer[24:0], no
ciclo de relógio seguinte, a observação de Voltage_Timer_Del[24:0] será suficiente para
garantir a detectabilidade das variáveis envolvidas.
A Tabela 5-15 resume o intervalo de tempo durante o qual a máscara é aplicada.
Tabela 5-15 – Período total de aplicação das máscaras
Período de aplicação da máscaras e reactivações: Inicio Fim
M7, M8, M9, M10, M11, M12
10000 10550
A Tabela 5-16 apresenta uma nova variável RTL que tem problemas de observabilidade.
Tabela 5-16 – Variável RTL com problemas de observabilidade
S.O
Variáveis RTL
Voltage_Timer_Del[24:0]
Bits
25
5º Problema
A lista de problemas de testabilidade revela que existem problemas de controlabilidade na
variável Wd_Reset_Counter_C para bits superiores ao 11 até ao 24 e que de forma geral os
bits de Wd_Reset_Counter[23:0] apresentam pouca controlabilidade. A análise do código
revela o problema de testabilidade. A condição Cond_L_131, ver os dados na Tabela 5-17,
provoca o Reset da variável em questão, impossibilitando a exercitação efectiva do subtractor,
Figura 5-9. Como a condição depende de uma entrada primária, o sinal Wdog_Clear, a sua
exercitação aproxima-se dos 50%, algo que deve de ser mascarado para possibilitar o normal
funcionamento da estrutura aritmética.
Tabela 5-17 - Resultados do VeriDOS para a variável Cond_L_131
Condição
Cond_L_131_20
Cond_L_131_21
DO
30
0
CO
7574
7426
127
assign Cond_L_131 = (Wd_Reset_Counter == 0) | (Wdog_Clear == 1'b1);
always @(posedge Clk1 or posedge Reset)
begin
if (Reset)
begin
Wd_Reset_Counter <= 16000000 ;
end
else
begin
if (Cond_L_131)
begin
Wd_Reset_Counter <= 16000000 ;
end
else
begin
Wd_Reset_Counter <= Wd_Reset_Counter - 1;
end
end
End
Figura 5-9 – Código Verilog onde a P.I. Wdog_Clear pode provocar o Reset de Wd_Reset_Counter
Durante o período de aplicação da máscara à entrada primária. Wdog_Clear tem o valor
zero.
A Tabela 5-18 resume o intervalo de tempo durante o qual a máscara é aplicada.
Tabela 5-18- Período total de aplicação da máscara
Período de aplicação da máscaras: Inicio Fim
M13
10750 11500
Após o mascaramento da P.I. Wdog_Clear passamos a ter somente problemas de
detectabilidade nas faltas relacionadas com Wd_Reset_Counter[23:0]. Os problemas de
controlabilidade deixaram de existir. A análise do código RTL revela que a variável é
utilizada numa única condição, Cond_L_188, para testar o seu valor e em função deste alterar
uma saída primária, Wd_Reset. Os dados de simulação da variável encontram-se
reproduzidos na Tabela 5-19 e o código correspondente na Figura 5-10.
Tabela 5-19 - Resultados do VeriDOS para a variável Cond_L_188
Condição
Cond_L_188_20
Cond_L_188_21
Detecção
30
0
Controlabilidade
70
14930
128
O facto de testarmos o valor do subtractor caso seja menor com o valor de uma constante,
permite detectar faltas nos MSB de Wd_Reset_Counter[23:0]. Todavia, as faltas nos LSB
apresentam problemas de detectabilidade. O facto do Reset ser feito para um valor binário
quando o subtractor chega a zeros, também não ajuda à activação das cadeias de borrow, pois
a exercitação máxima ocorre quando, num subtractor com o valor zero, se procede à operação.
Por esta razão, e pelo facto de não fazer sentido aplicar máscaras durante 15k ciclos e depois
aplicar uma máscara e aguardar 64k ciclos, optou-se por tornar Wd_Reset_Counter[23:0]
observável.
assign Cond_L_188 = (Wd_Reset_Counter < 1600000);
always @(Wd_Reset_Counter)
begin
if (Cond_L_188)
begin
Wd_Reset <= 1'b1 ;
end
else
begin
Wd_Reset <= 1'b0 ;
end
End
Figura 5-10 - Código Verilog que mostra onde a variável Wd_Reset_Counter é utilizada
A Tabela 5-20 refere a variável RTL, em questão, que tem problemas de observabilidade.
Tabela 5-20 – Variável RTL com problemas de observabilidade
S.O
Variável RTL
Wd_Reset_Counter[23:0]
Bits
24
6º Problema
A lista de problemas do tipo 1 continua a apresentar problemas de testabilidade que a
injecção de máscaras, para resolver problemas anteriores, acabou por não resolver. As linhas
do sinal Estatico_Prescaler_C apresentam problemas ao nível da controlabilidade (alguns
bits) e definitivamente ao nível da detectabilidade, Tabela 5-2.
A análise do código RTL revela que a variável interna de 8 bit Estatico_Prescaler, possui
um carregamento paralelo, controlado por Load_Calibracao (P.I.), que, como é exercitada por
um bit do LFSR, com polinómio primitivo, apresenta uma probabilidade de ser ‘1’ de 50% e
50% de ser ‘0’. Isto revela ser um problema de testabilidade, na medida em que impossibilita
o decremento correcto do subtractor (Estatico_Prescaler). A exercitação máxima dos bits de
129
borrow é atingida quando se carrega o valor h’80 em Estatico_Prescaler e se procede à
subtração de uma unidade.
Tabela 5-21 - Período total de aplicação das máscaras para resolver o problema de Estatico_Prescaler
Período de aplicação da máscaras: Inicio Fim
M16, M17
13000 13555
A análise da lista das variáveis com problemas de testabilidade apresenta agora diversos
casos onde o problema passou a ser a observabilidade, uma vez que a controlabilidade está já
completamente assegurada. Nesta situação encontram-se as variáveis: Q[14:0] e Second[5:0],
Tabela 5-22.
Tabela 5-22 – Variável RTL com problemas de observabilidade
S.O
Variáveis RTL
Bits
15
6
Q
Second
Outros dos problemas detectados é o seguinte:
A falta correpondente ao registo Clk32khz_Del LSA 1 não é detectada, e apresenta um
problema de observabilidade, Tabela 5-23.
Tabela 5-23 - Resultados do VeriDOS para a variável Clk32khz_Del
Condição
Clk32kHz_Del_1
DO CO
0
7503
A condição Cond_L_628 apresenta um problema de observabilidade, Tabela 5-24.
Tabela 5-24 - Resultados do VeriDOS para a variável Cond_L_628
Condição
DO
CO
Cond_L_628_21
0
Instrução
Clear_RTC_Flag_Del == 1'b1 & Clear_RTC_Flag_Del2 == 1'b1
5437
E por isso passa a ser observada, Tabela 5-25.
130
Tabela 5-25 – Lista de todas as variável a observar, da análise de testabilidade efectuada a nível RTL
Variável RTL
Potencia_Load_Counter
Voltage_Timer_Del
S.O
Wd_Reset_Counter
Q
Second
Clk32khz_Del
Cond_L_628
S.O.
TOTAL
Bits
22
25
24
15
6
1
1
94
Após a aplicação das máscaras para a resolução dos problemas de testabilidade
identificados, obteve-se o gráfico da Figura 5-11 com as curvas de coberturas de faltas para as
situações descritas e resolvidas. É possível constatar, pelas curvas disponibilizadas, as
evoluções que ocorrem quando se aplicam as máscaras. Ilustradas estão as situações onde se
efectua a simulação sem máscaras e sem observar as saídas secundárias com problemas de
observabilidade [Wom (Without mask), WoSo (Without Secondary Output)], sem máscara e
com as SO [Wom], com máscara e sem SO [Wm (With mask), WoSo] e finalmente a situação
final, com máscaras e com as SO.
Figura 5-11 – Cobertura de faltas, a nível RTL, FC(5) para as diferentes simulações efectuadas
131
A Tabela 5-26 apresenta, de forma resumida, as estatísticas sobre o número de entradas
primárias (MPI) e de entradas secundárias (MSI) que foram efectivamente mascaradas e a sua
percentagem, relativamente ao total de entradas existentes. Como se observa, obteve-se uma
eficácia do teste elevada, mascarando 55% das entradas primárias existentes e 28% do total de
entradas secundárias RTL existentes. Como é possível constatar, o mascaramento de entradas
secundárias (MSI) incidiu somente sobre sinais de controlo, o que era previsível devido ao
carácter destes. No caso das MPI, tornou-se necessário mascarar tanto sinais de controlo,
como seria de esperar, como sinais de dados – que, por sua vez, são utilizados internamente
como sinais de controlo (daí a importância de os controlar).
Tabela 5-26 – Número de sinais mascarados, no módulo PIC
Entradas #
dados
P.I. controlo
total
dados
S.I. controlo
total
Total
CUT
30
17
47
89
189
278
325
MPI
16
10
26
26
MSI
0
77
77
77
% MPI % MSI
53.0
59.0
55.0
0.0
41.0
28.0
31.7
Os valores de controlabilidade das faltas no nível RTL, antes e após a injecção de
máscaras, apresentam as alterações expostas na Figura 5-12. Como se observa, existe uma
melhoria significativa na controlabilidade de variáveis difíceis de controlar com o teste
pseudo-aleatório, e uma tendência para nos aproximarmos de controlabilidades da ordem de
50%.
132
PIC: CO - Uso de máscaras
% @ 0/1
1
0,8
0,6
0,4
CO(Sem Máscaras)
0,2
CO(Com Máscaras)
0
0
200
400
600
800
1000
# Faltas RTL
Figura 5-12 - Alteração nos valores de controlabilidade devido às máscaras
A evolução dos valores de detectabilidade, para as situações (1) sem máscaras, (2) com
máscaras e sem os problemas de observabilidade resolvidos e, finalmente, (3) para a situação
final (TPI para reforço da controlabilidade e da observabilidade), encontra-se ilustrada na
Figura 5-13. Os ganhos são evidentes, e prenunciam ganhos na cobertura de faltas estruturais
significativos.
PIC: DO - Uso de máscaras
DO
30
25
20
15
DO(Sem máscaras)
10
DO(Co m máscaras, Co m SO)
5
DO(Co m máscaras, Sem SO)
0
0
200
400
600
800
1000
Faltas RTL
Figura 5-13 – Alteração nos valores de detectabilidade, devido à resolução dos problemas de testabilidade
133
5.4. 2º. Ciclo: Implantação de M-BIST
Concluído o 1º. Ciclo, retiraram-se as alterações ao código RTL para permitir a injecção
de faltas e gerou-se o MISR. Em seguida, procedeu-se à síntese lógica do PIC com m-BIST.
Para tal, utilizou-se a ferramenta comercial Design Vision da Synopsys e uma biblioteca de
células (cell library) cyx_3.3V da tecnologia CMOS AMS 0,35 μm, privilegiando quer a área
e quer o período de relógio mínimo (fMAX). Em ambas as optimizações, optou-se por definir o
registo por defeito (default) como sendo o registo DFAQ – tipo de registo só com uma saída
(Q). No caso da optimização por período mínimo, optou-se por definir um relógio com um
período de 1 ns, que informa a ferramenta de síntese para a minimização de níveis de lógica
entre registos que se pretende para operar nesta frequência de relógio.
Com a descrição estrutural (duas versões, area e delay), procedeu-se à simulação de
faltas, a nível lógico. O VeriFault™, da Cadence, foi novamente a ferramenta utilizada. Os
resultados permitiram obter o gráfico da Figura 5-14, para a situação da optimização para área,
e o da Figura 5-15, para a optimização para período mínimo. As duas estruturas conduzem a
uma evolução das curvas de cobertura de faltas FC(N) para o caso onde a simulação decorre
sem máscaras e sem SO [Wom, WoSo], sem máscara e com SO [Wom], com máscaras e sem
SO [Wm, WoSo]e finalmente a situação final.
Figura 5-14 – Cobertura de faltas a nível lógico (DC=FC(NSA) para o pic, com e sem a aplicação das
máscaras (versão area, de área de implantação mínima)
134
Figura 5-15 – Cobertura de faltas a nível lógico (DC=FC(NSA) para o pic, com e sem a aplicação das
máscaras (versão delay, de período de relógio mínimo)
A Tabela 5-27 resume os valores obtidos para os ganhos nas coberturas de faltas, obtidos
com m-BIST, nas versões estruturais do módulo PIC.
Tabela 5-27 - Ganhos na cobertura de faltas estrutural obtidos com m-BIST.
Circuito
Struct_Area (wo_m)
Struct_Area (w_m)
Struct_Delay (wo_m)
Struct_Delay (w_m)
DC
71,08%
95,59%
69,74%
94,17%
Procedeu-se em seguida à avaliação da sobrecarga de teste introduzida pela
funcionalidade de auto-teste integrado. Os resultados, obtidos com a ferramenta Design
Vision, estão apresentados na Tabela 5-28.
Tabela 5-28 – Sobrecarga de teste (aumento de área) no PIC com m-BIST
Módulo
PIC (wo_m) (Optimização Área)
PIC (w_m) (Optimização Área)
PIC (Opt. Área) c/ Cadeia de Scan
PIC (wo_m) (Optimização Delay)
PIC (w_m) (Optimização Delay)
Unids de Área [%]
1109330,5
0,0
1136940,8 +2,49
1406531,3 +26,79
1464746,6
0,0
1561791,4 +6,6
135
PIC (Opt. Delay) c/ Cadeia de Scan
BIST_C
LFSR_20
MISR_167
Ou
MISR_84
Xor_168_84
MISR_84+ Xor_168_84
Area
Total
Delay
1860323,0
188702,6
38577,2
762510,7
+27,0
--0,0
383800,4
83160,7
466961,1
1831181,70
2256032,30
---38,76
65,0
54,0
5.5. Conclusões
A metodologia proposta de m-BIST estendida a circuitos sequenciais foi aplicada no
circuito demonstrador PIC. Conforme se observa, num 1º. Ciclo, a metodologia realiza a
preparação do auto-teste integrado, a nível RTL, utilizando-se principalmente a
abordagem por simulação.
Realiza-se uma primeira reconfiguração do código de descrição do PIC, a nível RTL
e em linguagem Verilog, para injecção de faltas na ferramenta VeriDOS com recurso à
ferramenta RTL2FO. A simulação é realizada sobre o circuito em modo normal de
funcionamento, isto é, é uma simulação de faltas de um circuito sequencial. Estuda-se
primeiro o efeito do sinal de Reset, escolhendo-se uma periodicidade de activação que
permita quase maximizar a cobertura múltipla de faltas a nível RTL.
Identificam-se a seguir, com recurso a esse padrão de activação do sinal de Reset, os
principais cantos escuros da funcionalidade descriminados ao longo de capítulo e as
medidas tomadas para os resolver.
Dada a dimensão do circuito em análise, torna-se necessário utilizar a ferramenta
ASCOPA para a geração automática de máscaras. Verifica-se, como era de esperar, que a
introdução de uma máscara modifica a detectabilidade de faltas associadas a outros
cantos escuros. Assim, após algumas experiências de simulação, define-se um conjunto
mínimo de máscaras a utilizar, qual a sequência de activação, e qual o número de ciclos
de relógio necessários por cada activação de cada máscara. Consegue-se uma cobertura
136
FC(n=5)=100% com 17 máscaras e cerca de N=13500 vectores, o que assegura uma
solução de reduzido consumo de energia.
Concluído o ciclo de preparação do m-BIST (1º. Ciclo), o que inclui a definição do
padrão de auto-teste a utilizar durante a sessão de BIST, procede-se ao 2º. Ciclo da
metodologia – o ciclo de implantação do m-BIST na versão final do circuito. Regressa-se
à versão original da descrição Verilog do circuito demonstrador, PIC, à qual se adicionou
a funcionalidade de teste – o LFSR, o controlador de BIST, a ML (Masking Logic) e a
reconfiguração limitada do CUT (o PIC), já efectuada no 1º Ciclo aquando da injecção de
faltas no nível RTL, para assegurar a injecção de máscaras em entradas secundárias
(M.S.I.). Gera-se o analisador de assinatura (MISR) e, de seguida, procede-se à síntese
lógica da versão m-BIST do PIC (de acordo com a metodologia proposta) e do PIC sem
auto-teste, para efeitos de avaliação da sobrecarga do teste. Utilizam-se para o efeito duas
opções de síntese (área mínima, e período de relógio mínimo).
Finalmente, concluiu-se a caracterização da solução obtida, através do cálculo das
métricas de testabilidade. Primeiro, a eficácia do teste (TE) é avaliada, através do cálculo
da cobertura singular de faltas NSA, a nível estrutural. Verifica-se a boa correlação entre
a cobertura múltipla de faltas RTL (n=5) e a cobertura singular de faltas a nível lógico
(NSA). Avaliou-se também a sobrecarga do teste, em especial em termos do aumento
percentual de área devido à implantação de funcionalidade de auto-teste integrado.
Salienta-se, novamente, o facto de numa arquitectura de teste onde se pretendesse aplicar
a técnica de test-per-scan, só a introdução de um cadeia de full-scan, à partida, resultar
numa sobrecarga no CUT de mais de 26%, no caso da optimização para área, ou de 27%
no caso da optimização para FMAX.
137
6. Conclusões
6.1. Conclusões
Como se identificou no início deste trabalho, sistemas electrónicos complexos, realizados
em tecnologias de resolução nanométrica, requerem técnicas inovadoras de auto-teste
integrado (BIST), que conduzam a uma cobertura de faltas dinâmicas elevada. As restrições
de consumo de potência e de energia necessitam de soluções BIST com sessões muito curtas.
Nesta tese de Mestrado desenvolveu-se uma nova metodologia BIST de alta qualidade para
sistemas digitais sequenciais. A metodologia foi aplicada no contexto do projecto de um
produto industrial (controlador PIC).
A metodologia de BIST proposta é uma extensão (para sistemas sequenciais) da
metodologia de BIST baseada em mascaras (m-BIST) A metodologia m-BIST proposta para
sistemas sequenciais é uma técnica de teste ao ritmo do relógio (test-per-clock) que não
reconfigura o CUT em modo de BIST. Esta característica permite realizar auto-teste à
frequência nominal do relógio (at-speed testing) e deverá conduzir a uma cobertura elevada
de faltas dinâmicas, já que as propriedades temporais do CUT não são modificadas
significativamente no modo de auto-teste.
A metodologia explora duas abordagens – a baseada em simulação (com a ferramenta
VeriDOS) e a probabilística (com a ferramenta ASCOPA). Permite uma injecção de faltas
RTL quasi automática, a identificação e remoção de eventuais erros de projecto e a
identificação de problemas de testabilidade. A ferramenta ASCOPA gera automaticamente as
máscaras. Desenvolveu-se uma nova técnica de injecção de máscaras, que permite a
realização de experiências de simulação de faltas a nível RTL e a reconfiguração de código
RTL, de tal forma que, quando o nível de testabilidade especificado é atingido, se dispõe de
uma descrição RTL do CUT e funcionalidade de m-BIST pronta para a síntese lógica. A
validação da qualidade da solução de auto-teste é realizada, a nível lógico, com recurso a uma
ferramenta de simulação de faltas comercial (Verifault™, da Cadence). A metodologia foi
incorporada no fluxo de projecto do parceiro industrial (Tecmic).
138
A metodologia m-BIST proposta foi validada para faltas estáticas, a nível RTL e a nível
estrutural. A metodologia é caracterizada, no seu fluxo de procedimentos, por dois ciclos, o
primeiro inteiramente a nível RTL, e o segundo primariamente a nível estrutural (lógico).
No primeiro ciclo, efectua-se uma reconfiguração do código RTL para injecção de faltas
(em parte realizada pela ferramenta RTL2FO, em parte manualmente), identificam-se e
removem-se eventuais erros de projecto, e identificam-se os principais problemas de
testabilidade. Identificam-se, a nível RTL as partes da funcionalidade difíceis de testar (cantos
escuros) com padrões de teste pseudo-aleatório. A abordagem de simulação (VeriDOS) e a
probabilística permitem discriminar entre problemas de controlabilidade e/ou de
observabilidade. A ferramenta ASCOPA gera automaticamente as máscaras necessárias para
reforçar a controlabilidade e a detectabilidade do sistema. O código RTL é progressiva e
iterativamente reconfigurado para incluir a funcionalidade de auto-teste (controlador, LFSR,
MUX, ML, e a reconfiguração do CUT para injecção de máscaras nas SI (MSI)). A TPI
(inserção de pontos de teste) é realizada, primeiro, para reforço da controlabilidade (através
das máscaras), e segundo, para reforço da observabilidade (através de tornar observável
algumas SO no MISR). Quando a cobertura múltipla (n=5) de faltas RTL atinge os 100%, o
processo iterativo cessa.
No 2º. Ciclo, reconfigura-se novamente o código RTL para remover as modificações
associadas à injecção de faltas, e para gerar a descrição comportamental do MISR. Procede-se
à síntese lógica, e à validação da qualidade do teste a nível estrutural. Essa validação, em
termos de eficácia do teste, é efectuada com simulação de faltas estruturais, recorrendo-se a
um simulador comercial (Verifault™). A síntese, junto com a simulação lógica, permite
identificar a sobrecarga de teste em termos de área adicional e de degradação do desempenho.
A metodologia m-BIST proposta foi explicada, na sua execução passo a passo, com
recurso ao circuito de referência de b13, (do conjunto de ITC’99). A metodologia foi validada
usando o projecto industrial de um PIC, controlador de um contador estático de energia
eléctrica.
Mostrou-se que a correlação entre a cobertura múltipla de faltas RTL (judiciosamente
escolhidas, para que os modelos de faltas reflictam a expansão topológica que se observa, a
139
nível estrutural) e a cobertura singular de faltas estruturais (tais como faltas LSA, ou defeitos
físicos) continua a verificar-se no caso dos sistemas sequenciais.
Demonstrou-se que se podem desenvolver soluções m-BIST para sistemas sequenciais
com elevada eficácia de teste, sobrecarga de teste limitada (área e desempenho), comprimento
de teste reduzido e consumo de potência similar ao que se obtém com teste pseudoaleatório 19.
No caso do b13, utilizam-se 2 máscaras, não é necessário TPI para observabilidade (isto
é, não é preciso tornar SO observáveis no MISR ) e, com cerca de N=7000 vectores, obtém-se
97% de cobertura de faltas estruturais, mantendo o carácter sequencial do CUT. Em
percentagem, apenas 15% das SI (MSI) e 0% das PI (MPI) precisam ser forçadas. A
sobrecarga de teste é bem modesta, quando comparada com a sobrecarga que resulta da
aplicação de uma técnica de test-per-scan.
No caso do controlador PIC (sistema sequencial muito mais complexo), utilizam-se 17
máscaras. Neste caso, torna-se necessário observar 94 bit (SO) no MISR. Com cerca de
N=14.000 vectores, obtém-se 95% de cobertura de faltas estruturais, mantendo o carácter
sequencial do CUT. Neste caso, 41% das SI (MSI) e 55% das PI (MPI) (32% de todas as
variáveis) precisam ser forçadas. Novamente, se verifica que a sobrecarga de teste é reduzida,
quando comparada com a sobrecarga que resulta da aplicação de uma técnica de test-perscan.
6.2. Trabalho Futuro
O autor deste trabalho tem consciência das limitações da metodologia agora
proposta, e do trabalho que deve ser realizado a fim que a mesma possa ter uma aplicação
no mundo real, industrial. Tais limitações, e as melhorias que podem ser realizadas,
enquadram as perspectivas de trabalho futuro, já previsto (pelo menos em parte) no novo
projecto Medea+, designado NANOTEST.
19
O cálculo da potência dissipada pode ser realizado pela ferramenta VeriDOS, que calcula automaticamente a
actividade de comutação ponderada (WSA, Weighted Switching Activity) [24]. Forçando os bit determinísticos e
mantendo-os a um valor fixo durante um número significativo de ciclos do relógio, reduz-se a actividade das
entradas, relativamente ao teste pseudo-aleatório. Tipicamente, isso conduz a uma actividade do CUT menor ou
igual à que se verifica quando este é exercitado pelo padrão pseudo-aleatório.
140
Em primeiro lugar, refira-se a dificuldade (que o autor enfrentou) de trabalhar com
ferramentas computacionais académicas (VeriDOS e ASCOPA), em fase de permanente
desenvolvimento, depuração e aprimoramento. Tais ferramentas são, em boa verdade,
demonstradoras dos algoritmos e metodologias em desenvolvimento, e não são
ferramentas estabilizadas e inteiramente confiáveis. Por exemplo, pretende-se que, no
futuro, a ferramenta VeriDOS realize (se possível) automaticamente todo o processo de
injecção de faltas RTL. Assim, o processamento realizado pela ferramenta auxiliar
RTL2FO deve migrar para o VeriDOS. O estudo da possibilidade de automatizar a
injecção de faltas em operadores aritméticos deve também ser conduzido. A geração de
máscaras, realizada pela ferramenta ASCOPA, poderá também ser aprimorada.
Em segundo lugar, existe a possibilidade de, apesar da correlação elevada entre a
detecção-n de faltas RTL e a detecção singular de faltas estruturais, não se conseguir
valores de cobertura de faltas singular de acordo com as especificações. Isso significará
que haverá que realizar um refinamento (a posteriori, depois da síntese lógica) da
qualidade do teste. É convicção do autor que esse refinamento pode ser efectuado sem
modificação significativa da solução de auto-teste obtida. Todavia, a confirmação disso
necessita de trabalho futuro. Com efeito, pode verificar-se que o comprimento do teste
associado a cada máscara, julgado suficiente a nível RTL (uma vez que conduz a uma
saturação da curva FC(n)) não o seja a nível estrutural, pelo facto de que a estrutura a ser
escrutinada, por activação da máscara, seja de complexidade apreciável. Assim, há que
experimentar alongar certas partes da sessão de BIST, realizando isso criteriosamente,
tendo em atenção a complexidade da funcionalidade não inteiramente exercitada, a nível
lógico (isto é, reutilizando a informação disponível em RTL).
Em terceiro lugar, uma perspectiva muito interessante e natural, como sequência
deste trabalho, é a análise da capacidade da solução m-BIST encontrada servir para se
obter elevadas coberturas de faltas dinâmicas. Uma vez que estas dependem, não apenas
dos vectores, mas também das sequências de pares de vectores, isso pode justificar (1)
uma análise da vantagem (ou não) de recorrer a outros geradores de padrões pseudoaleatórios, tais como CA, ou TPG aritméticos, ou (2) a geração de pares de máscaras que
activem caminhos críticos de sinal (mesmo a nível RTL) entre entradas e saídas
observáveis.
141
Uma perspectiva adicional de trabalho futuro é a possibilidade de reutilizar a técnica
de injecção de máscaras que se propõe (mantendo o carácter sequencial do CUT) para
outro tipo de vectores determinísticos. De facto, conceptualmente, nada impede que os
vectores determinísticos julgados necessários na aplicação de uma técnica de test-perscan, tal como a de bit-fixing, sejam injectados na técnica test-per-clock proposta.
142
7. Bibliografia
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
M.L. Bushnel, V.D. Agrawal, “Essentials of Electronic Testing for Digital Memory and
Mixed-Signal VLSI Circuits”, Kluwer Academic Publishers, 2000.
R. Rajsuman, “Digital Hardware Testing: Transistor-Level Fault Modeling and Testing”,
Artech House, Boston, London, 1992.
P. Bardell, W. McAnney, J. Savir, “Built-In Self Test for VLSI: Pseudo-Random Sequences”,
John Wiley and Sons, Somerset, New Jersey, 1987.
H. Fujiwara, “Logic Testing and Design for Testability”, MIT Press, Cambridge, USA, 1985.
N. K. Jha, S. Kundu, “Testing and Reliable Design of CMOS Circuits”, Kluwer Academic
Publishers, 1990.
G. Hetherington, T. Fryars, N. Tamarapalli, M. Kassab, A. Hassan, J. Rajski, “Logic BIST for
Large Industrial Designs: Real Issues and Case Studies”, Proc. IEEE Int. Test Conf. (ITC), pp.
358-367, 1999.
S. Swaminathan and K. Chakrabarty, "A deterministic scan-BIST architecture with
application to field testing of high-availability systems", Proc. IEEE Custom Integrated
Circuits Conference, pp. 259-262, May 2001.
ITRS, International Technology Roadmap for Semiconductors, versão de 2004 (disponível em
http://www.itrs.net/Common/2004Update/2004_02_Test.pdf ).
OPC, http://www.synopsys.com/products/ntimrg/opc_ds.html 2005.
K.-T. Cheng, S. Devadas, K. Keutzer, “Delay Fault Test Generation and Synthesis for
Testability under a Standard Scan Design Methodology”, IEEE Trans. on CAD of Int. Circs.
and Systems, vol. 12, nº. 8, pp. 1217-1231, August 1993.
Franco, P., and E.J. McCluskey, "Delay Testing of Digital Circuits by Output Waveform
Analysis", Proc. 1991 Int. Test Conf., Nashville, TN, pp. 798-807, Oct. 26-30, 1991.
Jonathan T.-Y. Chang and E. J. McCluskey, “Detecting Delay Flaws By Very-Low-Voltage
Testing”, Proc. International Test Conference, 1996.
W.B. Jone, Y.P. Ho, S.R. Das, “Delay Fault Coverage Enhancement Using Variable
Observation Times”, Journal of Electronic Testing: Theory and Applications (JETTA), vol.
11, pp. 131-146, 1997.
Keerthi Heragu, Janak H. Patel, and V. D. Agrawal, “Segment Delay Faults: A new Fault
Model”, Proc. of the VLSI Test Symposium, pp. 32-39, April 1996.
Manish Sharma, “Enhancing Defect Coverage of VLSI Chips by Using Cost Effective Delay
Fault Tests“,UILU-ENG-03-2220, October2003, available at
http://www.crhc.uiuc.edu/TechReports/reports.html
S. Bendhia, M. Ramdani, E. Sicard, “Electromagnetic Compatibility of Integrated Circuits”,
Springer, ISBN 0-387-26600-3, Nov. 2005.
A. Krstic, Y-M. Jiang, K.-T. Cheng, "Pattern Generation for Delay Testing and Dynamic
Timing Analysis Considering Power-Supply Noise Effects" IEEE Transactions on CAD, vol.
20, nº. 3, pp. 416-425, 2001.
T. Karnik, P. Hazucha, J. Patel, “Characterization of Soft Errors Caused by Single Event
Upsets in CMOS Processes”, IEEE Trans. On Dependable and Secure Computing, vol. 1, Nº.
2, pp. 128-143, April-June 2004.
S. Mitra, N. Seifert,M. Zhang, Q. Shi, K.S. Kim, “Robust system design with built-in softerror resilience”, IEEE Computer, vol. 38, nº. 2, pp. 43- 52, February 2005.
S. Pateras, “Achieving at-speed structural test”, IEEE Design & Test of Computers, vol. 20,
nº. 5, pp. 26-33, Sept- Oct. 2003.
M.B. Santos, F.M. Gonçalves, I.C. Teixeira and J.P. Teixeira, "RTL-Based Functional Test
Generation for High Defects Coverage in Digital Systems", Journal of Electronic Testing,
Theory and Application (JETTA), vol. 17, Nº 3/4, pp. 311-319, Kluwer, June/August 2001.
C. Leong, P. Bento, J. P. Teixeira, I. C. Teixeira, P. Rodrigues, A. Trindade, J. C. Silva, J.
Varela, J. Rego, J. Nobre, P. Lousã, “Design and Test Methodology for a Reconfigurable
143
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
[36]
[37]
[38]
[39]
[40]
[41]
[42]
PEM Data Acquisition Electronics System”, Proc. of 15th. Int. Conf. On Field-Programmable
Logic and Applications (FPL), 2005.
M.B. Santos, F.M. Gonçalves, I.C. Teixeira and J.P. Teixeira, "Implicit Functionality and
Multiple Branch Coverage (IFMB): a Testability Metric for RT-Level", Proc. of the
International Test Conf. (ITC), pp. 377-385, 2001.
M. B. Santos, I.C. Teixeira, J. P. Teixeira, S. Manich, R. Rodriguez and J. Figueras, "RTLevel Preparation of High-Quality/Low Energy/Low-Power BIST", Proc. of the International
Test Conf. (ITC), pp.814-823, October, 2002.
M. B. Santos, J.M. Fernandes, I.C. Teixeira, J.P. Teixeira, “RTL Test Pattern Generation for
High Quality Loosely Deterministic BIST”, Proc. of the Design Automation and Test in
Europe Conference (DATE), pp. 994-999, March 2003.
J. Braga, P. Coimbrão, M. B. Santos, I.C. Teixeira and J. P. Teixeira, "On the Practical
Implementation of Masked-based BIST", Proc. of the 18th. Conf. On Design of Circuits and
Integrated Systems (DCIS), pp. 139-144, November 2003.
J. M. Fernandes, M. B. Santos, A. L. Oliveira, J. C. Teixeira, “A Probabilistic Method for the
Computation of RTL Constructs”, Proc. of the Design Automation and Test in Europe
Conference (DATE), pp. 176-181, February 2004.
F. Guerreiro, J.M. Fernandes, M.B. Santos, A.L. Oliveira, I.M. Teixeira, J.P. Teixeira,
“Probabilistic and Simulation-Based Masked-BIST Implementation”, Proc. Of the Design of
Circuits and Integrated Systems Conference (DCIS), Bordeaux, France, November 2004.
F. Guerreiro, J.M. Fernandes, M.B. Santos, A.L. Oliveira, I.M. Teixeira, J.P. Teixeira,
“Probabilistic and Simulation-Based Approaches to Off-Line BIST of Sequential IP Cores”,
Proc. of the 8th. Design and Diagnostics of Electronic Circuits and Systems Workshop
(DDECS), pp. 174-177, April 2005.
F. Guerreiro, M.B Santos and J.P. Teixeira, “LPBIST Methodology”, Associate Project
Deliverable R5.1, April 2004.
Marcelino B. dos Santos, "Preparação de Teste de Sistemas Digitais a Nível de Transferência
de Registos para Detecção de Defeitos Físicos", Tese Doutoramento, DEEC / IST, 2001.
M. B. Santos, F.M. Gonçalves, I.C. Teixeira and J. P. Teixeira, “Defect-Oriented Verilog
Fault Simulation of SoC Macros using a Stratified Fault Sampling Technique”, Proc. of the
IEEE VLSI Test Symposium (VTS), pp. 326-332, 1999.
K.-T. Cheng, C.J. Lin, “Timing-driven Test Point Insertion for Full-Scan and Partial Scan
BIST”, Proc. IEEE Int. Test Conf. (ITC), pp. 506-514, 1995.
S. Wang, “Low Hardware Overhead Scan-based 3-weight Weighted Random BIST”, Proc.
IEEE Int. Test Conf. (ITC), pp. 868-877, 2001.
K.-T. Cheng, C.J. Lin, “Timing-driven Test Point Insertion for Full-Scan and Partial Scan
BIST”, Proc. IEEE Int. Test Conf. (ITC), pp. 506-514, 1995.
M. B. Santos, F.M. Gonçalves, I.C. Teixeira and J. P. Teixeira, “Defect-Oriented Verilog
Fault Simulation of SoC Macros using a Stratified Fault Sampling Technique”, Proc. of the
IEEE VLSI Test Symp. (VTS), pp. 326-332, 1999.
Scott Davidson, “ITC’99 Benchmark Circuits – Preliminary Results”, Proc. IEEE
International Test Conf (ITC), pp. 1125, 1999; benchmarks available at
http://www.cerc.utexas.edu/itc99-benchmarks/bench.html.
F. Corno, M. Sonza-Reorda, G. Squillero, “RT-level ITC’99 Benchmarks and First ATPG
Results”, IEEE Design & Test of Computers, July-August 2000, pp. 44-53.
Tecmic, http://www.tecmic.pt/eng/index.html
IEEE Standard 1364-1995, “IEEE Standard Hardware Description Language Based on the
Verilog Hardware Description Language”, IEEE, Inc., New York, NY, USA, October 14,
1996.
IEEE Standard P1364.1/D1.4, “Draft Standard for Verilog Register Transfer Level
Synthesis”, IEEE, Inc., New York, NY, USA, April 26, 1999.
R. Marculescu, D Marculescu, and M. Pedram, “Probabilistic Modeling of Dependencies
During Switching Activity Analysis”, IEEE Trans. on Computer Aided Design of Int. Circuits
and Systems, Vol. 17, Nº. 2, pp. , 1998.
144
[43]
[44]
[45]
[46]
[47]
[48]
[49]
[50]
[51]
[52]
[53]
[54]
[55]
[56]
[57]
[58]
[59]
[60]
[61]
[62]
[63]
[64]
G. Ferrara, F. Ferrandi, A. Fin, F. Fummy, D. Sciuto, “Functional Test Generation for
Behaviorally Sequential Models”, Proc. of the Design Automation and Test in Europe
Conference (DATE), pp. 403-410, March 2001.
A. T. Freitas and A. L. Oliveira, “Implicit resolution of the Chapman-Kolmogorov equations
in sequential circuits: An application in power estimation”, Proc. of the Design Automation
and Test in Europe Conference (DATE), pp. 764-769, March 2003.
F. Fallah, S. Devadas, K. Keutzer, “OCCOM: Efficient Computation of Observability-Based
Code Coverage for Functional Verification “, Proc. of the 34th. Design Automation
Conference (DAC), pp. 152-157, June 1998.
F. Fallah, P. Ashar, S. Devadas, “Simulation Vector Generation from HDL Descriptions for
Observability-Enhanced Statement Coverage”, Proc. of the 35th. Design Automation
Conference (DAC), pp. 666-671, 1999.
R. David, “Random Testing of Digital Circuits – Theory and Application”, Marcel Dekker,
Inc., 1998.
C.E. Stroud, “A Designer’s Guide to Built-In Self Test”, Kluwer Academic Pubs., ISBN 14020-7050-0, 2002.
G. Jervan, “Hybrid Built-In Self-Test and Test Generation Techniques for Digital Systems”,
Ph.D. thesis, Linkoping University, Sweden, July, 2005.
F.M. Gonçalves, M.B. Santos, I.C. Teixeira, J.P.Teixeira, “Defect-Oriented Test Quality
Assessment using Fault Sampling and Simulation”, Proc. Int. Test Conf. (ITC), pp. 35-41,
1998.
J.J.T. Sousa, F.M. Gonçalves, J.P.Teixeira, C. Marzocca, F. Corsi, T.W. Williams, "Defect
Level Evaluation in an IC Design Environment", IEEE Trans. on CAD, vol. 15, nº. 10, pp.
1286-1293, 1996.
SIS: A System for Sequential Circuits Synthesis, Electronics Research Laboratory,
Memorandum No. UCB/ERL M92/41, Dept. EECS, University of California, Berkeley, May
1992.
B. Koenemann, “LFSR-coded test patterns for scan designs”, Proc. IEEE European Test
Conference (ETC), pp. 237-242, 1991.
S. Hellebrand, S. Tarnick, J. Rajski, B. Courtois, “Generation of vector patterns through
reseeding of multiple-polynomial linear feedback shift registers”, Proc. Int. Test Conference
(ITC), pp. 120-129, 1992.
N. Zacharia, J. Rajski, J. Tyszer, “Decompression of test data using variable length-seed LFSR”,
Proc. VLSI Test Symposium (VTS), pp. 426-433, 1995.
L.-R. Huang, J.-Y. Jou, S.-Y. Kuo, “Gauss-elimination-based generation of multiple seedpolynomial Pairs for LFSR”, IEEE Trans. On CAD of ICS, vol. 16, nº9, pp.1015-1024, 1997.
D. Kagaris, S. Tragoudas, “On the design of optimal counter-based schemes for test set
embedding”, IEEE Trans. On CAD of ICS, vol. 18, nº 2, pp. 219-230, 1999.
K. Chakrabarty, B. Murray, V. Yyengar, “Deterministic Built-in test pattern generation for highperformance circuits using twisted ring counters”, IEEE Trans. On VLSI Systems, vol. 8, nº5,
pp. 633-636, 2000.
A. Al-Yamani, E. McCluskey, “Low overhead built-in BIST reseeding”, Proc. IEEE Test
Resource Partitioning Workshop (TRP), 2002.
A. Stroele, H. Wunderlich, “Hardware Optimal Test Register Insertion”, Proc. TCAD, pp. 531540, 1998.
S. Ravi, G. Lakshminarayana, “TAO-BIST a framework for testability analysis and
Optimization of RTL circuits for BIST”, Proc. IEEE VLSI Test Symposium (VTS), pp. 398406, 1999.
F. Corno, M. Rebaudengo, M. Sonza-Reorda, M. Violante, “A new BIST architecture for low
power circuits”, Proc. IEEE European Test Workshop (ETW), pp. 160-164, 1999
A. A. Al-Yamani, E.J. McCluskey, “Seed Encoding with LFSRs and Cellular Automata”, Proc.
ACM/IEEE Design Automation Conf. (DAC), pp. 560-565, 2003.
S. Hellebrand, H. G. Liang, H.-J. Wunderlisch, “A Mixed-mode BIST Scheme Based on
Reseeding of Folding Counters”, Proc. IEEE Int. Test Conf. (ITC), pp. 778-784, 2000.
145
[65]
[66]
[67]
[68]
[69]
[70]
[71]
[72]
[73]
[74]
[75]
[76]
[77]
[78]
[79]
[80]
[81]
[82]
[83]
[84]
[85]
[86]
[87]
H. G. Liang, S. Hellebrand, H.-J. Wunderlisch, “Two-dimensional Test Data Compression for
Scan-based Deterministic BIST”, Proc. IEEE Int. Test Conf. (ITC), pp. 894-902, 2001.
H.-J. Wunderlisch, G. Kiefer, “Bit-flipping BIST”, Proc. Int. Conf. On Computer-aided Design
(ICCAD), pp. 337-343, 1996
N. A. Touba, E. J. McCluskey, “Altering a Pseudo-random Bit Sequence for Scan-based BIST”,
Proc. IEEE Int. Test Conf. (ITC), pp. 167-175, 1996.
G. Kiefer, H.-J. Wunderlisch, “Deterministic BIST with Multiple Scan Chains”, Proc. IEEE Int.
Test Conf. (ITC), pp. 1057-1064, 1998.
W. Li, C. Yu, S.M. Reddy, I. Pomeranz, “A Scan BIST Generation Method Using a Markov
Source and Partial Bit-fixing”, Proc. ACM/IEEE Design Autom. Conf. (DAC), pp. 554-559,
2003.
H. D. Schnurmann, E. Lindbloom and R.G. Carpenter, "The Weighted Random TestGenerator", IEEE Trans. Computers, vol. 24, no.7, pp.695-700, July 1975.
E.B. Eichelberger, E. Linbloom, “Random-Pattern Coverage Enhancement and Diagnosis for
LSSD Logic Self-Test”, IBM Journal of Research and Development, vol. 27, nº. 3, pp. 265-272,
May 1983.
J. A. Waicukauski, E. Lindboom, E.B. Eichelberger and O.P. Forlenza, "A Method for
Generating Weighted Random Test Patterns", IBM J. Research & Development, vol. 33, no. 2,
pp 149-161, March 1989.
H.-J. Wunderlich, “Multiple Distributions for Biased Random Test Patterns”, IEEE Trans. On
Computer-aided Design, vol. 9, nº. 6, pp. 584-593, 1990.
D. Neebel and C. Kime, “Cellular Automata for Weighted Random Pattern Generation”, IEEE
Trans. On Computers, vol. 46, no. 11, pp. 1219-1229, November 1997.
S. Wang, “Low Hardware Overhead Scan-based 3-weight Weighted Random BIST”, Proc.
IEEE Int. Test Conf. (ITC), pp. 868-877, 2001.
C.V. Krishna, A. Jas, N.A. Touba, “Test Vector Encoding Using Partial LFSR Reseeding”,
Proc. IEEE Int. Test Conf. (ITC), pp. 885-893, 2001.
J. Rajski, J. Tyszer, N. Zacharia, “Test Data Compression for Multiple Scan Designs with
Boundary Scan”, IEEE Trans. On Computers, vol. 47, nº. , pp. 1188-1200, Nov. 1998.
S. Swaminathan and K. Chakrabarty, "A deterministic scan-BIST architecture with application
to field testing of high-availability systems", Proc. IEEE Custom Integrated Circuits Conference,
pp. 259-262, May 2001.
Y. Zhang and K. Chakrabarty, "Energy-aware adaptive checkpointing in embedded real-time
systems", Proc. IEEE/ACM Design, Automation and Test in Europe (DATE) Conference, pp.
918-923, 2003.
L. Li and K. Chakrabarty, "Deterministic BIST based on a reconfigurable interconnection
network", Proc. IEEE International Test Conference, pp. 460-469, 2003.
Y. Zhang, R. P. Dick and K. Chakrabarty, "Energy-aware deterministic fault tolerance in
distributed real-time embedded systems", Proc. IEEE/ACM Design Automation Conference, pp.
550-555, 2004.
Rajski, J.; Kassab, M.; Mukherjee, N.; Tamarapalli, N.; Tyszer, J.; Jun Qian, “Embedded
deterministic test for low-cost manufacturing”, IEEE Design & Test of Computers, vol. 20, nº.
5, pp. 58-66, Sept- Oct. 2003.
Mak, T.M.; Krstic, A.; Cheng, K.-T.; Wang, Li.-C, “New challenges in delay testing of
nanometer, multigigahertz designs”, IEEE Design & Test of Computers, vol. 21, nº. 3, pp. 241248, May-June 2004.
P. Girard, “Survey of Low-Power Testing of VLSI Circuits”, IEEE Design & Test of
Computers, vol. 19, n° 3, pp. 82-92, May-June 2002.
L.C. Wang, R. Mercer, T.W. Williams, "On the Decline of Testing Efficiency as Fault Coverage
Approaches 100%", Proc. IEEE VLSI Test Symposium (VTS), pp. 74-83, 1995.
C. Hawkins, J. Segura, “The Anatomy of Nanometer Ting Failures”, Proc. IEEE European Test
Symposium (ETS), pp. 210-215, 2005.
L. Sourgen, SmartCard Div, STMicroelectronics, “Security Constraints in Integrated Circuits”,
Proc. IEEE Int. On-Line Testing Symposium (IOLTS), pp. 117, 2005.
146
[88]
[89]
[90]
[91]
[92]
[93]
[94]
[95]
[96]
[97]
Rajski, J.; Kassab, M.; Mukherjee, N.; Tamarapalli, N.; Tyszer, J.; Jun Qian, “Embedded
Deterministic Test for Low-cost Manufacturing”, IEEE Design and Test of Computers, vol. 20,
nº. 5, pp. 58- 66, 2003.
A. Parreira, J. P. Teixeira, M. B. Santos, “Built-In Self-Test Quality Assessment Using
Hardware Fault Emulation in FPGAs”, Computing and Informatics Journal (CAI), vol. 23, pp.
537-556 [published by the Institute of Informatics Slovak Academy of Sciences, Slovak
University of Technology, Comenius (http://www.cai.sk )], 2005.
M. Saraiva, M.B. Santos, A.P. Casimiro, I.M. Teixeira and J.P. Teixeira, "On the Design of a
Highly Testable Cell Library", Microprocessing and Microprogramming, vol. 35, pp. 383-390,
1992.
Adit D. Singh, M. Seuring, M. Gössel, E. S. Sogomonyan, “Multimode Scan: Test per Clock
BIST for IP Cores”, ACM Trans. on Design Automation of Electronic Systems
(TODAES), Vol. 8, nº. 4, pp. 491-505, October 2003
O.P. Dias, J. Semião, I.M. Teixeira and J.P. Teixeira, "Test Resource Partitioning: A Design
and Test Issue", Proc. of the Design Automation and Test in Europe (DATE) Conference
(Embedded Tutorial - TRP: Integrating Embedded Test and ATE), pp. 34-35, March, 2001.
Cadence Design Systems™, http://www.cadence.com/
Synopsys™, http://www.synopsys.com/
O.P. Dias, I.C. Teixeira, and J.P. Teixeira, “Metrics and Criteria for Quality Assessment of
Testable Hw/Sw System Architectures”, in Journal of Electronic Testing, Theory and
Application (JETTA), vol. 14, nº. 1/2, pp. 149-158, Kluwer Academic Publishers, February
/April 1999.
Y. Zorian, Erik Jan Marinissen, “System Chip Test: How Will It Impact Your Design?”, Proc.
IEEE Design Automation Conf. (DAC), pp. 136-141, 2000.
CMUDSP benchmark (I – 99 - 5, ITC 99 5]),
http://www.ece.cmu.edu/~lowpower/benchmarks.html
[98]
The Torch processor benchmark, http://www-flash.stanford.edu:80/torch/
147

Documentos relacionados