An automated non-intrusive fault injection technique integrated into the universal verification methodology

Repositório institucional da UFSC

A- A A+

An automated non-intrusive fault injection technique integrated into the universal verification methodology

Mostrar registro completo

Título: An automated non-intrusive fault injection technique integrated into the universal verification methodology
Autor: Lohmann, Douglas
Resumo: As tecnologias de fabricação de chips contemporâneas tornam possível a fabricação de sistemas embarcados extremamente complexos compostos de hardware e software que são muito difíceis de serem verificados e testados. Como a evolução tecnológica tende a seguir, tal dificuldade deverá crescer nos próximos anos. Apesar dos notáveis avanços dos algoritmos e técnicas de Electronic Design Automation (EDA) nos últimos anos, as ferramentas de projeto e verificação não evoluíram no mesmo ritmo que a capacidade de fabricação de chips, o que deu origem aos chamados gap de projeto e gap de verificação. Neste contexto, novas técnicas que tornem possível a verificação de sistemas embarcados complexos são necessárias, de forma a reduzir o gap de verificação, aumentando assim a produtividade e reduzindo os custos. Buscando contribuir para mitigar tal situação, a indústria vem liderando uma iniciativa para padronizar os processos de verificação a qual resultou na Metodologia de Verificação Universal (UVM). A UVM define regras e diretrizes para melhorar o desenvolvimento de testbenches e a execução da simulação através do reúso de código e outras características relevantes. Ela também viabiliza a reutilização de componentes. Na última década, a linguagem SystemC tornou-se amplamente utilizada tanto para o projeto quanto para verificação de sistemas no alto nível de abstração, uma vez que tal nível permite lidar com a complexidade dos sistemas embarcados contemporâneos. Entretanto, as ferramentas de síntese de alto nível não estão suficientemente maduras para produzir descrições no nível de transferência entre registradores (RTL) com boa qualidade e por isso, a indústria ainda lança mão de conversões semiautomáticas para gerar descrições RTL em VHDL ou verilog, ao invés de usar somente SystemC ao longo de todo o fluxo. Tal procedimento causa um problema ao fluxo de verificação, uma vez que os modelos de injeção de falhas desenvolvidos para o alto nível raramente são reutilizados no RTL. Além disso, apesar do grande número de técnicas de injeção de falhas que existem, a maioria delas são difíceis de serem integradas aos testbenches e ao projeto. Dadas as limitações e dificuldades mencionadas anteriormente, este trabalho propõe uma nova técnica não-intrusiva de injeção de falhas batizada de UVM-FI, integrada à UVM. UVM-FI consiste em uma biblioteca de código livre, escrita em C++/SystemC que contém tipos básicos de falhas, gatilhos e localizações de falhas. A integração da UVM-FI com a UVM baseia-se no mecanismo de compartilhamento de dados da UVM e viabiliza o reúso. Como segunda contribuição importante, este trabalho também propõe uma Linguagem de Domínio Específico (em inglês, Domain-Specific Language - DSL) que permite a criação automática de modelos de falhas em SystemC. A adoção de SystemC permite a descrição de todos os componentes de verificação em uma mesma linguagem, incluso o próprio projeto. A capacidade do injetor de falhas proposto e sua facilidade de integração no ambiente UVM foram avaliadas e comparadas para diversos cenários distintos. Desta forma, este trabalho contribui para o avanço da área de verificação por meio da criação de ambientes de verificação reutilizáveis, capazes de levar a cabo a injeção de falhas.Abstract: Current chip fabrication technologies render possible the implementation of extremely complex embedded systems composed of hardware and software that are very difficult to verify and test. As long as technology evolution tends to continue, such difficulty will continue to grow in the next years. Despite the remarkable advances in Electronic Design Automation (EDA) algorithms and techniques in the past years, design and verification tools have not evolved in the same pace as chip fabrication capability, giving rise to the so-called design and verification gaps. In this context, new techniques to make possible the verification of complex embedded systems are demanded, so as to reduce the verification gap and thus increase productivity and reduce costs. Looking to mitigate this situation, industry has been leading an initiative to standardize the verification procedure that resulted in the Universal Verification Methodology (UVM) which sets rules and guidelines for enhancing testbench development and simulation execution through code reusability and other relevant features, and allows for component reuse as well. In the last decade, SystemC language has become widely used for design and verification at the high levels of abstraction, since such level allows to handle the complexity of current embedded systems. However, high-level synthesis tools are not mature enough to produce good quality Register-Transfer Level (RTL) descriptions and thus industry still relies on semi-automated conversion to generate RTL descriptions in VHDL or Verilog instead of using SystemC all along the design flow. Such procedure poses a problem in the verification flow, since fault injection models developed for the high level are seldom reused in the RTL. Moreover, despite the great number of existing fault injection techniques, most of them are challenging to integrate with the testbench and with the design. Given the previously mentioned limitations and difficulties, this work proposes a novel non-intrusive fault injection technique named UVM-FI that is fully integrated into UVM. UVM-FI consists of an open-source library, written in C++/SystemC, containing basic fault types, triggers and fault locations. The integration of UVM-FI into UVM relies on the UVM data share mechanism and enables reusability. As a second important contribution, this work also proposes a metaprogrammed Domain-Specific Language (DSL) to allow for automatic creation of fault models in SystemC. The adoption of SystemC allows for describing all verification components in the same language including the design itself. The capacity of the proposed fault injector and its ease of integration into the UVM environments were evaluated and compared in several distinct scenarios. Therefore, this work contributes to the advance in the verification area by creating reusable verification environments capable of performing fault injection.
Descrição: Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2019.
URI: https://repositorio.ufsc.br/handle/123456789/214746
Data: 2019


Arquivos deste item

Arquivos Tamanho Formato Visualização
PGCC1162-D.pdf 2.454Mb PDF Visualizar/Abrir

Este item aparece na(s) seguinte(s) coleção(s)

Mostrar registro completo

Buscar DSpace


Navegar

Minha conta

Estatística

Compartilhar