• Nenhum resultado encontrado

A injecção de faltas baseada em métodos de simulação tem como principal característica a modelação do sistema objecto de avaliação, através de uma representação não física do mesmo. Esta característica está associada a uma das principais vantagens deste método tornando-o aplicável nos primeiros estágios do ciclo de vida de um sistema. Desta forma é possível verificar e validar as soluções empregues no mesmo e simultaneamente analisar parâmetros de confiança no funcionamento avaliando o seu comportamento em cenário de faltas.

Actualmente os sistemas tendem a apresentar um nível de complexidade muito elevado. A modelação exaustiva que contemple os mais diversos detalhes do sistema, pode resultar numa dimensão extremamente elevada do modelo que torne impraticável a sua implementação. Numa perspectiva de racionalização e de controlo da dimensão do problema, muitos modelos baseiam-se em diferentes graus de abstracção do sistema. Existem tipicamente três níveis de abstracção que representam outros tantos graus de detalhe do modelo. A representação com maior detalhe situa-se ao nível eléctrico, seguindo um nível intermédio, com detalhe ao nível lógico, e um nível superior de abstracção assente sobre aspectos funcionais do sistema [Portugal02] [Folkesson99].

3.4.1 >ível Eléctrico

O nível eléctrico é o nível mais baixo de abstracção do sistema. A este nível as simulações são efectuadas tendo o transístor como elemento base de descrição do sistema, e como regras de análise as leis da física que descrevem o funcionamento dos componentes eléctrico/ electrónicos. As características deste modelo tornam-no indicado para a análise da resposta dos sistemas a faltas transitórias, com origem em variações de diferença de potencial e de correntes que se verificam nos componentes afectados.

O detalhe do modelo, permite que este possa ser aplicado a sistemas com diferente suporte tecnológico, como sejam os sistemas baseados em electrónica analógica, ou mesmo sistemas que integrem os dois tipos de tecnologia – analógica e digital. Esta é uma característica diferenciadora relativamente a técnicas baseadas em modelos lógicos e funcionais, as quais não podem, ou é difícil a sua aplicação a este tipo de sistemas.

A injecção de faltas baseada neste tipo de modelo é suportada por ferramentas de análise de sistemas eléctricos/electrónicos de que o SPICE é um exemplo. Dada a capacidade destas ferramentas para trabalharem com modelos que representam de forma muito fidedigna a constituição dos sistemas, são consequentemente capazes de fornecer resultados com um nível de rigor elevado Esta técnica foi aplicada para aferir o grau de precisão de modelos baseados na representação do sistema ao nível lógico.

Os resultados destas análises demonstram grandes discrepâncias entre os resultados obtidos através dos dois modelos, indiciando a necessidade de uma cuidada validação dos modelos de faltas baseados em graus de abstracção superiores [Ries94]. Em contraste com o grau de precisão dos seus resultados, esta técnica apresenta alguns inconvenientes de que se destacam: os tempos de simulação consideravelmente elevados, e a elevada necessidade de recursos, como sejam capacidade de processamento e espaço para armazenamento de informação.

Na tentativa de diminuir o tempo de simulação esta técnica foi submetida a melhoramentos, nomeadamente através do recurso a métodos que permitem usar de forma combinada os dois tipos de modelo – eléctrico e lógico. Desta forma, durante a simulação, a representação do circuito é comutada entre os dois tipos de modelos, permitindo obter ganhos de desempenho ao nível da velocidade de análise [Yang92].

O nível de utilização dos recursos está ligado ao grau de complexidade dos sistemas. Assim, o aumento da complexidade dos sistemas conduz facilmente à exaustação dos recursos de simulação, quer ao nível do espaço de armazenamento, quer relativamente à necessidade de capacidade de processamento. Com o intuito de minorar este problema foi proposta uma abordagem na qual se faz uso do conhecimento prévio do comportamento dos componentes do sistema em cenários de faltas. Esta informação é guardada em blocos designados de dicionários de faltas. Depois da informação ser pré- processada, os dicionários de faltas quando invocados permitem reduzir o grau de necessidade dos referidos recursos [Choi93].

3.4.2 >ível Lógico

Ao nível lógico, as simulações são efectuadas tendo como elemento básico a porta lógica e, como regras de análise, as funções da lógica que descrevem o funcionamento destes dispositivos. Desta forma, é possível obter modelos mais compactos comparativamente aos modelos do nível eléctrico. Esta vantagem torna-se mais evidente quando se modelam sistemas complexos de escala muito elevada de integração (VLSI – Very Large Scale Integration), de que são exemplo os actuais microprocessadores e microcontroladores.

O desenvolvimento de ferramentas suportadas por linguagens de descrição de hardware, capazes de suportar tarefas como projecto, simulação e validação, amplamente aceites pelos fabricantes de semicondutores, tornaram-se também elas próprias num suporte tecnológico importante para a área da injecção de faltas. Embora a validação efectuada pelos fabricantes de semicondutores não corresponda ao conceito de validação por injecção de faltas, sendo antes aplicada na perspectiva de teste para verificação da qualidade do processo de produção, as linguagens de descrição de hardware, apresentam características bastante favoráveis à sua utilização para tal tarefa. Assim, características como capacidade de descrever um sistema, quer ao nível da sua estrutura, quer do seu

funcionamento [Juan93], aliada à capacidade de representações hierárquicas de sistemas digitais, permite a modelação de sistemas de maior escala como por exemplo o computador. Estas características tornaram o VHDL, na mais difundida linguagem de descrição de hardware, em aplicação de injecção de faltas [Parrotta00] [Garcia02] [Zarandi03] [Baraza05].

A injecção de faltas em VHDL recorre tipicamente a duas técnicas. Uma das técnicas requer a modificação do modelo de descrição do hardware. A outra é implementada com base em comando fornecidos pela própria linguagem. Em ambos os casos os modelos de faltas usualmente aplicados são: forçar a 0 (stuck

at 0), forçar a 1 (stuck at 1) e inversão de bit (bit-flip).

3.4.2.1 Técnicas Baseadas em Modificações do Modelo

Nesta técnica as modificações são efectuadas com o objectivo de introduzir componentes que depois irão ser os responsáveis pela injecção de faltas. As modificações são efectuadas pela introdução de elementos especializados, ou pelo recurso à mutação de componentes.

Os elementos especializados são denominados por sabotadores [Jenn94]. Os

sabotadores são blocos de código VHDL comandados, que quando inactivos não

interferem no normal funcionamento do sistema, e quando activos, injectam faltas que se repercutem no sistema através da alteração do valor ou das características temporais do sinal que é afectado.

A inserção do sabotador no sistema pode ser efectuada recorrendo a uma das configurações: série ou paralela. Na configuração série o sabotador é inserido nas ligações entre as saídas de sinal (drivers) e os seus receptores (inputs). Na implementação paralela o sabotador é ele próprio um driver que por sua vez é ligado em paralelo a um conjunto de outros drivers que fazem parte do circuito objecto de avaliação. Através das funcionalidades da linguagem é depois possível seleccionar o sinal desejado da configuração resultante de forma a ter controlo sobre o processo de injecção de faltas [Jenn94].

A injecção de faltas, recorrendo a mutações no código, é efectuada através da utilização de elementos designados por mutantes. Um mutante é um elemento no qual foram feitas alterações na sua descrição gerando assim uma mutação na sua função. Quando inactivo, este bloco de VHDL desempenha a sua função normal, mas quando comandado, o seu comportamento é alterado emulando assim um comportamento em presença de faltas. A mutação pode ser efectuada de diversas formas [Jenn94]. Nestas incluem-se alterações estruturais da descrição do componente, como por exemplo a substituição de uma porta NAND por uma NOR e a alteração das declarações ao nível funcional, nomeadamente através da geração de operadores errados, ou pela modificação dos identificadores de variáveis.

3.4.2.2 Técnicas Suportadas em Comandos da Linguagem

As técnicas baseadas em comandos da própria linguagem têm como principal vantagem, o facto de não obrigar à introdução de alterações no modelo do sistema, tendo contudo como limitação o grau de funcionalidade disponibilizada pelos comandos da linguagem.

A aplicação desta técnica pode ser efectuada de acordo com duas abordagens: • Manipulação de sinais: nesta abordagem o comportamento do

sistema é simulado, mudando de contexto em pontos temporais preestabelecidos onde são injectadas as faltas. Assim, nesses pontos os sinais são desligados dos drivers e o seu valor é alterado de acordo com o modelo de faltas;

• Manipulação de variáveis: esta abordagem é em tudo idêntica à manipulação de sinais no que diz respeito ao processo de alteração dos valores. Contudo esta é efectuada em variáveis do modelo e não nos sinais.

3.4.3 >ível Funcional

No nível funcional os modelos representam o sistema de acordo com o funcionamento de um conjunto de objectos que o constituem. A principal vantagem desta abordagem está relacionada com a possibilidade de analisar a confiança no funcionamento de sistemas de grande complexidade, de que são exemplo os sistemas distribuídos. Contudo, para um bom desempenho desta técnica é necessário obter modelos de faltas que sejam representativos do funcionamento de uma grande diversidade e heterogeneidade de componentes. Assim, torna-se necessária uma correcta modelação das faltas a níveis inferiores de abstracção, como seja o nível lógico, de componentes como microprocessadores, memórias interfaces de comunicações, e demais componentes do sistema.

Uma ferramenta de injecção de faltas que recorre a este conceito é a DEPEND [Goswami97]. Esta ferramenta foi concebida para fornecer um ambiente de desenvolvimento integrado, permitindo o projecto de arquitecturas de sistemas tolerantes a falhas e o suporte para execução de testes de injecção de faltas, para avaliar as capacidades das arquitecturas projectadas.