• Sonuç bulunamadı

EBYS’de Bağlantılı Sistemlerden Kaynaklanan Aksaklıklar ve Çözüm Önerileri

Selman SOLHAN

4. EBYS’de Bağlantılı Sistemlerden Kaynaklanan Aksaklıklar ve Çözüm Önerileri

Este método faz duas melhorias ao algoritmo de emulação de falhas serial: emulação simultânea de falhas independentes e a injeção dinâmica de falhas [Cheng1999]. A primeira melhora consiste em determinar grupos de falhas independentes, as quais podem ser emuladas simultaneamente. Isto se faz buscando as falhas cujo efeito nas saídas primárias é disjuntivo. Quer dizer que se for possível determinar com precisão as saídas primárias que são afetadas por duas falhas, elas são independente se a intercepção entre os conjuntos de saídas primárias afetadas é o conjunto vazio. Cheng et al [Cheng1999] melhorou o algoritmo apresentado em [Iyengar1988] para encontrar conjuntos de falhas independentes em circuitos combinacionais.

Com a técnica de emulação simultânea de falhas independentes é possível reduzir o número de recompilações e reconfigurações, caso as falhas estejam no mesmo FPGA, e o número de vezes em que são avaliados os vetores de teste. No entanto, o número de falhas independentes para circuitos seqüenciais é normalmente baixo.

Devido a isto, foi desenvolvida a técnica de injeção dinâmica de falhas. Esta técnica permite a injeção de um grande número de falhas dependentes em uma mesma configuração de FPGA, através da inclusão de uma lógica adicional.

Na Figura 4-3 (a) é apresentado o mapeamento da lista de conexão original nos blocos lógicos reconfiguráveis dos FPGAs. Na Figura 4-3 (b) se ilustra um exemplo do circuito agregado para injetar falhas com uma única configuração. Neste exemplo deseja-se emular duas falhas dependentes, cujo controle está dado pelo circuito de ativação. O controlador de ativação de falhas é um circuito que possui uma única saída em alto, enquanto as outras estão com nível lógico zero; isto quer dizer que por cada rodada de avaliação dos padrões de teste, uma única falha deve ser ativada.

Figura 4-3: Técnica de injeção dinâmica de falhas. (a) circuito original, (b) falhas dinâmicas, sinal 'a' SA1 e sinal 'g' SA0 injetadas por G1 e G2.

O controlador de ativação pode ser um registro de descolamento circular com entrada de relógio, de forma que cada pulso de relógio faz com que se ative uma nova falha e se desative a anterior. Do exemplo também pode se ver que para a ativação de uma falha “stuck-at” 1 se utiliza uma porta 'OU' e para a ativação de uma falha “stuck-at” 0 se utiliza uma porta 'E' com a entrada de controle negada. A porta 'OU' 'G1', quando ativa, faz com que a entrada 'a' fique travada em alto, independentemente do verdadeiro valor do sinal 'a'. Do mesmo modo, a porta 'E' 'G2', quando ativa, faz com que o sinal 'g' fique travado em baixo, independentemente do resultado da operação lógica 'd' E 'e'. Esta estratégia faz com que se reduza o tempo de recompilação e reconfiguração, de forma que podem ser avaliadas distintas falhas usando uma mesma configuração e emulando cada uma delas de forma seqüencial, como é estabelecido no algoritmo de simulação serial original. O custo desta estratégia é a lógica adicional que se necessita introduzir para a emulação de cada uma das falhas a ser avaliada e para o controlador de ativação. No caso extremo, onde o emulador possui recursos ilimitados de capacidade para a emulação lógica, é possível introduzir todas as falhas em uma única configuração. Dependendo da complexidade, é provável que sejam necessárias várias configurações, mas em cada uma delas um número considerável de falhas podem ser analisadas ao mesmo tempo.

Adicionalmente, no trabalho de Cheng at el [Cheng1999], foi proposta uma técnica para reduzir o tempo de recompilação, que envolve as tarefas de reparticionamento, substituição e reroteamento. O objetivo final é permitir a injeção de um conjunto de falhas dinâmicas, unicamente mudando o conteúdo dos blocos lógicos reconfiguráveis que foram afetados, como é feito no método de emulação serial de falhas estático. Esta técnica parte da política de reservar uma entrada de cada bloco lógico reconfigurável, a qual será usada como sinal de ativação ou desativação da falha. Em princípio, independentemente do valor do sinal reservado, as saídas dos blocos lógicos reconfiguráveis correspondem às respostas corretas do circuito sem falhas, a seguir, na medida em que os conjuntos de falhas forem sendo introduzidos no FPGA, o sinal reservado permitirá a ativação de cada falha para ser analisada. Depois de mapear o circuito nos blocos lógicos reconfiguráveis, considerando a restrição do sinal de ativação de falhas reservado, é introduzido o registro de deslocamento circular. Cada saída deste registro deve ser conectada a um conjunto

de entradas reservadas dos blocos lógicos reconfiguráveis, levando em consideração que para cada saída mapeada unicamente deve existir um bloco lógico capaz de ativar uma falha. Estas novas conexões devem ser mapeadas no FPGA, para posteriormente descarregar o “bitstream” gerado. Depois destas modificações, a injeção de falhas pode ser feita mudando unicamente o conteúdo dos blocos lógicos afetados. Desta forma se evita a recompilação completa, já que as conexões entre blocos lógicos são mantidas durante todo o processo de emulação.

Para projetos de circuito grandes que precisem mais de um FPGA para implementar a emulação se deve considerar que se necessita particionar o circuito de forma que o controlador de ativação acione a emulação de unicamente uma falha por vez. Em [Bernardi2007] se estende o método de Cheng-Huang&Dai para ser utilizado na emulação de falhas “path-delay”. Para isso, são incluidas certas estruturas “saboteurs” que permitem injeção e emulação do comportamento dos tipos de falhas “path-delay”. O método foi idealizado para circuitos microcontrolados onde o padrão de teste consiste em um programa funcional que executa uma série de instruções. Um controlador é encarregado de ativar cada uma das falhas a serem analisadas e comparar a resposta obtida com a esperada; também, encarrega-se da comunicação com o computador anfitrião, para receber o comando de início de emulação e transmitir os dados que resultaram da comparação. A comunicação com o computador é mínima o que faz com que o método seja rápido e eficiente.