• Nenhum resultado encontrado

Este capítulo foi dedicado à apresentação de resultados experimentais obtidos pela aplicação da técnica que visa sistematizar a atividade de integração de blocos de projetos de circuitos digitais. Várias dificuldades foram encontradas no decorrer desta parte do trabalho. Estas dificuldades variaram desde a seleção de projetos para estudos a participação de voluntários em experimentos.

Na parte de experimentos envolvendo engenheiros de verificação, a grande dificuldade foi conseguir voluntários. No caso da equipe da UFCG, os participantes do Brazil-IP são também alunos de graduação. O envolvimento com a graduação e Brazil-IP faz com que o

Algoritmo 13 : Geração de estímulos para o bloco Arith.

rand int low;

constraint low_range { (low >= 0) && (low < 255); }

rand int high;

constraint high_range { solve low before high; (high > low) && (low < 509); }

rand int total;

constraint total_range { solve high before total;

(total >= high) && (total < 509); }

tempo livre que engenheiro seja bastante reduzido. Embora os experimentos tenham sido planejados para tomar o menor tempo possível e também tenha sido oferecida bonificação para os participantes, o número de voluntários foi consideravelmente pequeno.

Na parte de experimentos envolvendo ferramentas, esforços consideráveis foram dedi- cados para a utilização de análise de mutantes nos experimentos envolvendo o projeto do MPEG 4. A análise de mutantes foi priorizada em função do seu valor semântico, pois um mutante vivo que não é equivalente ao programa original, significa um erro que o engenheiro de projeto pode cometer e que a verificação funcional não está apta a detectar. É importante considerar que é possível aplicar análise de mutantes no MPEG 4 desenvolvido no LAD. Porém, as atividades necessárias para viabilizar esta aplicação são consideravelmente com- plexas e fogem do escopo deste trabalho. Por tais motivos, a análise de cobertura estrutural foi usada no lugar da análise de mutantes.

Conclusões

Apresentou-se neste trabalho uma abordagem para proceder a verificação funcional na inte- gração de blocos de projetos de circuitos digitais. A verificação funcional na fase de inte- gração é importante porque grande parte dos comportamentos não esperados dos sistemas ocorre em função de interações complexas entre os diversos blocos que os compõem. A dificuldade em realizar a verificação na fase de integração deve-se ao fato de que à medida que os blocos são integrados, o número de combinações de possíveis interações entre eles cresce exponencialmente. Além disso, o desempenho na execução das simulações decai consideravelmente com o aumento da complexidade dos blocos de projeto.

O trabalho proposto foi desenvolvido tendo VeriSC como metodologia de verificação subjacente. Embora não seja uma metodologia empregada pela indústria, VeriSC possui as características básicas que as metodologias adotas pela indústria possuem. O objetivo do trabalho foi desenvolver uma abordagem de integração de blocos de projeto capaz de permitir o reuso dos componentes do ambiente de verificação e também a detecção erros que podem surgir em função da interação entre os blocos integrados.

5.1

Avaliação dos resultados obtidos

Os resultados obtidos na parte experimental do trabalho sugerem que a técnica proposta pode ser útil no caso de projetos com uma hierarquia de blocos complexa, em que um único bloco pode ser comunicar com mais de um bloco vizinho. O fato de um bloco possuir mais de um bloco vizinho torna a verificação funcional uma atividade complexa, pois o engenheiro pode

não saber como configurar a cobertura funcional para que os cenários de simulação mais importantes sejam exercitados. Aplicações da técnica proposta em sistemas mais simples, como alguns desenvolvidos no Brazil-IP usando-se a metodologia BVM, também revelaram melhoramento na especificação de cobertura dos blocos, porém não foi possível quantifi- car esta melhoria por meio de outras métricas, tais como cobertura de código e análise de mutantes.

É esperado que o melhoramento obtido durante a integração seja menor para sistemas com diagramas de blocos mais simples, em que cada bloco majoritariamente possui uma única interface de entrada e uma única interface de saída. Isto porque o projeto tem uma complexidade que não compromete a habilidade do engenheiro de especificar critérios de cobertura e geradores de estímulos. Quando for o caso do sistema possuir um diagrama de blocos complexo, em que os blocos possuem mais de uma interface de entrada ou mais de uma de saída, e diversos dados são transmitidos por estas interfaces, é esperado que o melhoramento obtido na integração seja maior. Isto porque a especificação de critérios de cobertura de um bloco pode ser complementada a partir da especificação dos blocos da sua vizinhança.

O falta de conformidade entre o modelo de referência e DUV no projeto do MPEG 4 é um exemplo de que o trabalho proposto pode contribuir com a qualidade dos projetos de circuitos digitais. No entanto, é importante destacar que não é possível afirmar categoricamente que o projeto do MPEG 4 possui um erro. Em outras ocasiões do desenvolvimento deste sistema, falso-negativos foram produzidos pela verificação funcional. Embora não exista documento relatando tais falso-negativos, os engenheiros de tal sistema detectaram que o sistema XVID, usado como modelo de referência, não estava de acordo com a especificação do sistema. Mesmo que o suposto erro encontrado no MPEG 4 seja um caso de falso-negativo, o uso de outras métricas para avaliar a qualidade da verificação funcional permitiu constatar que a análise dos componentes de verificação funcional que são descartados na integração pode exercitar cenários que não foram exercitados na verificação isolada dos blocos.

Experimentos em que engenheiros de verificação conduziram a verificação de blocos integrados também foram realizados. Os resultados obtidos em tais experimentos consti- tuem indícios de que a verificação funcional na integração exige de fato uma abordagem sistemática, pois, no caso de ser realizada de forma ad hoc, esta etapa pode consumir desne-

cessariamente os recursos do projeto.

Em relação ao reuso dos componentes do ambiente de verificação, foi detectado que o ambiente de verificação de VeriSC poderia ser refatorado para que certos componentes sejam usados na integração tal como são usados na verificação isolada dos blocos e vice-versa, sem a necessidade de edição dos arquivos de tais componentes.