4 AUTO-TESTE BASEADO EM SOFTWARE
4.3 Metodologia para o Projeto de SBST Estrutural
4.3.2 Fase B – Classificação dos Componentes e Prioridade de Teste
Com base nas informações obtidas na fase A, os componentes do processador são classificados nas quatro categorias a seguir (PASCHALIS; GIZOPOULOS, 2005), definidas a partir do ponto de vista do programador de linguagem Assembly:
• Componentes Visíveis (VC – Visible Components): são os componentes do processador cujas entradas e saídas são visíveis ao programador de linguagem Assembly. Para esses componentes há, no mínimo, uma instrução ou seqüência de instruções que controla suas entradas ou registradores correspondentes e, no mínimo, uma instrução ou seqüência de instruções que assegura a propagação de suas saídas ou dos registradores correspondentes para saídas primárias do processador. Os VCs são divididos, ainda, em três sub-classes de acordo com o tipo de suas entradas e saídas (dados ou endereços), conforme segue.
Componentes Visíveis de Dados (D-VC – Data Visible Components}: as entradas desses componentes recebem dados que podem estar armazenados: 1) nos campos de uma instrução, com modo de endereçamento imediato; 2) no banco de registradores, com modo de endereçamento de registradores; 3) na memória de dados; ou 4) em registradores de dados controláveis (isto é, registradores de dados diretamente conectados ao banco de registradores ou à memória de dados). As saídas desses componentes produzem dados que podem ser armazenados: 1) no banco de registradores; 2) na memória de dados; ou 3) em registradores de dados observáveis (isto é, registradores de dados diretamente conectados ao banco de registradores ou à memória de dados). Tais componentes são componentes de processamento de dados (ULAs, deslocadores, multiplicadores, divisores, etc.) e componentes de armazenamento
de dados (banco de registradores e registradores especiais ou temporários de
dados). A esta classe também pertencem os multiplexadores das entradas ou saídas desses componentes.
Componentes Visíveis de Endereço (A-VC – Address Visible Components): as entradas e saídas desses componentes são endereços de memória. Os valores desses endereços dependem das posições de memória onde instruções e dados estão armazenados e onde dados serão armazenados. Assim, tais componentes tornam-se visíveis pelo conveniente armazenamento de instruções e dados na memória do sistema. Os A-VCs geralmente aparecem dentro da unidade de
busca de instruções (por exemplo, o PC – Program Counter) e do controlador da memória de dados (por exemplo, o MAR – Memory Address Register). A
esta classe também pertencem os registradores especiais ou temporários de endereço, bem como os multiplexadores das entradas ou saídas desses componentes.
Componentes Visíveis Mistos (endereços-dados) (M-VC – Mixed Visible
Components): esses componentes têm entradas e/ou saídas de ambos os tipos
acima. A esta subclasse pertence, por exemplo, o somador usado para incrementar o conteúdo do PC.
• Componentes Parcialmente Visíveis (PVC – Partially Visible Components): esses são os componentes do processador que geram sinais de controle. Uma vez que os sinais de controle que saem desses componentes afetam a operação dos VCs, esses componentes podem ser considerados parcialmente visíveis ao programador de linguagem Assembly. Tais componentes são a unidade de controle do processador e pequenos controladores distribuídos, geralmente implementados como máquinas de
estados finitos.
• Componentes Ocultos (HC – Hidden Components): são os componentes usualmente adicionados à arquitetura do processador para aumentar seu desempenho, mas que não são visíveis ao programador de linguagem Assembly. Esses componentes consistem de sub-componentes, os quais são classificados nas três subclasses a seguir:
Sub-componentes Ocultos Visíveis de Dados (D-VHSC – Data Visible Hidden
Subcomponents): esses sub-componentes recebem e produzem dados, da mesma
forma que os D-VCs. Eles são os campos de dados e os campos imediatos dos registradores de pipeline, e seus respectivos multiplexadores.
Sub-componentes Ocultos Visíveis de Endereços (A-VHSC – Address Visible
Hidden Subcomponents): esses sub-componentes recebem endereços de
memória, como os A-VCs. Eles são os campos de endereço dos registradores de pipeline e seus respectivos multiplexadores.
Sub-componentes Ocultos Parcialmente Visíveis (PVHSC – Partially Visible
Hidden Subcomponents): estes sub-componentes geram sinais de controle que
afetam a operação dos sub-componentes visíveis dentro de um componente oculto. Eles são as unidades de controle do pipeline (por exemplo, unidade de
forwarding, unidade de detecção de dependências, etc.) e o mecanismo de
predição de desvio.
• Componentes Não-testáveis (NTC – Nontestable Components): são os componentes do processador que não podem ser testados unicamente pela execução de programas de auto-teste desenvolvidos pelo programador de linguagem Assembly. Tais componentes incluem, por exemplo, registradores, multiplexadores e a lógica de controle para tratamento de interrupções e exceções.
A partir da classificação dos componentes apresentada acima, foi definida a prioridade de teste de cada classe e sub-classe em função da sua testabilidade e da área ocupada por seus componentes no processador (PASCHALIS; GIZOPOULOS, 2005). Tal prioridade é ilustrada na Figura 4.4 e enumerada a seguir, em ordem decrescente. 1. D-VCs: esses componentes possuem a mais alta testabilidade e constituem grande
parte da área do processador. Por isso têm a mais alta prioridade e são ideais para testes periódicos, fornecendo, em muitos casos, uma alta cobertura de falhas para todo o processador.
2. D-VHSCs: esses sub-componentes têm alta prioridade de teste porque possuem alta testabilidade, sendo adequados para teste periódico. Eles são suficientemente testados pela grande quantidade de dados que recebem durante o teste dos D-VCs.
59
Figura 4.4: Prioridade de teste dos componentes do processador (PASCHALIS; GIZOPOULOS, 2005, p.93)
3. PVCs: esses componentes possuem testabilidade média-alta. Eles ocupam uma pequena parte da área do processador e geralmente são adequados para teste on-line periódico. Para testar tais componentes adotam-se, em geral, testes funcionais simples de alto nível, como a aplicação de todos os opcodes de instruções ainda não aplicados, no caso da unidade de controle, bem como a aplicação de instruções que alcancem a maior cobertura de código RTL possível, no caso de outras máquinas de estados finitos específicas.
4. PVHSCs: esses sub-componentes possuem testabilidade média-alta e são, em geral, adequados para teste on-line periódico, podendo ser testados da mesma forma que os PVCs.
5. M-VCs e A-VCs: esses componentes têm testabilidade média-baixa, devido às limitações inerentes do espaço de endereçamento, e não são adequados para teste periódico uma vez que seu teste requer várias referências distribuídas à memória, aumentando consideravelmente o tempo de execução da rotina de teste. Além disso, eles ocupam uma área muito pequena do processador e são parcialmente testados pelos endereçamentos ao programa e aos dados de teste durante o teste dos D-VCs. 6. A-VHSCs: esses sub-componentes têm as mesmas características dos A-VCs e M-
VCs, sendo parcialmente testados como efeito colateral do teste dos D-VCs. 7. NTCs: esses componentes não podem ser considerados para aplicação de SBST.
Componentes da mesma classe, ou subclasse, são priorizados por seu tamanho (quanto maior sua área, mais alta é a sua prioridade). Como regra geral, deve-se prosseguir para o próximo componente da mesma classe (ou subclasse) ou para a próxima classe (ou subclasse) apenas no caso em que a cobertura de falhas ainda não é aceitável.
Os D-VCs e D-VHSCs são os componentes mais importantes a serem testados, e cujo teste é ideal para a aplicação de SBST periódico. Eles dominam a área em vários processadores, simples ou complexos, comumente usados em sistemas embarcados de baixo custo. Portanto, na prática, o teste dos componentes ou sub-componentes visíveis de dados geralmente levam a uma cobertura de falhas aceitável uma vez que os demais componentes do processador são parcialmente testados como um efeito colateral (PASCHALIS; GIZOPOULOS, 2005). Essa cobertura de falhas pode ser ligeiramente
aumentada, se necessário, com o teste dos PVCs e PVHSCs, que ocupam uma pequena área do processador, adotando-se testes funcionais.
A Figura 4.5 representa o fluxograma da segunda fase do projeto de auto-teste baseado em software estrutural. A próxima fase do projeto concentra-se no desenvolvimento das rotinas de auto-teste para a classe de componentes mais crítica em termos de teste, os componentes visíveis de dados (D-VCs).
Figura 4.5: Fase B da metodologia SBST estrutural (KRANITIS et al., 2003a, p.434)