Uma metodologia para identificação de módulos de circuitos integrados propensos a erros

=== Verifying large industrial designs is getting harder each day. The current verification methodologies can not guarantee bug free designs. Considering that is not possible to check all states of complex designs, the verification team should define coverage levels for each integrated circuit modu...

Full description

Bibliographic Details
Main Author: Jose Augusto Miranda Nacif
Other Authors: Antonio Otavio Fernandes
Format: Others
Language:English
Published: Universidade Federal de Minas Gerais 2011
Online Access:http://hdl.handle.net/1843/SLSS-8GYG2K
id ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-SLSS-8GYG2K
record_format oai_dc
collection NDLTD
language English
format Others
sources NDLTD
description === Verifying large industrial designs is getting harder each day. The current verification methodologies can not guarantee bug free designs. Considering that is not possible to check all states of complex designs, the verification team should define coverage levels for each integrated circuit module. If the coverage of errorprone modules is prioritized, it is possible to identify more bugs in less time. The novelty of this work is to propose a methodology that is able to build a model which points the hardware modules that are most likely to have undetected design bugs. The model is built using revision history information and complexity metrics extracted from concurrent versioning systems and bug tracking systems. The proposed methodology allows the identification, for a specific project, of which metrics are correlated with bugs. Thus, we are able to allocate verificatio resources more efficiently and define high risk modules to be submitted to a more rigorous verification process. The proposed methodology is validated in an experimental environment composed by metrics, data, and tools. The studied metrics are extracted by comercial and open source tools. The data used in this work are repositories of processors described in hardware description languages. In order to automate the complexity and design history metrics extraction, two tools were developed. The first, BugReporter, is a tool used to help users to report project bugs, using keywords defined by BugLanguage. The second, EyesOn, automates the extraction, storage and visualization of complexity and history metrics. We present results from the use of the proposed methodology in two processors: MIPS and OpenSPARC. For each of these processors, linear, Poisson, negative binomial, and logistic models are built. In the MIPS processor, linear model presents the best results. In the OpenSPARC project, the best performance is reached by negative binomial model. In both cases, the best models use five metrics. We also discuss results from the use of history metrics in the MIPS processor. We propose an algorithm that uses the number of modifications to dynamically build a list of error-prone modules. During the modules development the list stores, in 80% of the time, the modules that had reported errors. Thus, the results achieved by the proposed methodology could be extended with new studies using other data sets and metrics. === O processo de verificação de circuitos integrados industriais se torna mais desafiador a cada dia. As metodologias de verificação atuais não são capazes de garantir que todos os erros de um circuito integrado sejam identificados e corrigidos antes da fabricação. Como não é possível checar todos os estados de circuitos integrados complexos, a equipe de verificação deve definir níveis de cobertura para cada módulo do circuito integrado. Se a cobertura de módulos mais propensos a erros é priorizada, consegue-se identificar um maior número de erros mais rapidamente. A principal contribuição deste trabalho é propor uma metodologia para construir modelos que indiquem quais módulos de um circuito integrado são propensos a conter erros não identificados. O modelo é construído utilizando métricas de complexidade e de histórico de desenvolvimento, extraídas de sistemas de controle de versão e de sistemas de rastreamento de erros. A metodologia proposta permite definir, para um projeto específico, quais métricas têm correlação com o número de erros. Assim, a alocação de recursos de verificação é realizada mais eficientemente e pode-se definir módulos que devem ser submetidos a um processo de verificação mais rigoroso. A metodologia proposta foi validada a partir de um ambiente experimental composto por métricas, dados e ferramentas. As métricas estudadas são extraídas por ferramentas comerciais e de código aberto. Os dados utilizados são repositórios de projetos de processadores descritos em linguagem de descrição de hardware. Foram desenvolvidas duas ferramentas para automatizar a extração de métricas de complexidade e de histórico de desenvolvimento. A primeira, o BugReporter, é uma ferramenta que auxilia os usuários a relatar erros identificados no projeto, utilizando palavras reservadas definidas pela Bug Language. A segunda, EyesOn, automatiza o processo de extração, armazenamento e visualização das métricas de complexidade e de histórico de desenvolvimento. São apresentados resultados de utilização da metodologia proposta em dois processadores: MIPS e OpenSPARC. Para cada um dos processadores são construídos modelos lineares, de Poisson, binomiais negativos e de regressão logística. Para o processador MIPS, o modelo que apresenta o melhor desempenho é o linear. Já no OpenSPARC, o melhor desempenho é alcançado pelo modelo binomial negativo. Em ambos os casos os modelos que apresentam o melhor desempenho utilizam cinco métricas. Finalmente, os resultados de utilização de métricas de desenvolvimento no processador MIPS são discutidos. É proposto um algoritmo que utiliza o número de alterações para construir, dinamicamente, uma lista de módulos propensos a erros. Ao longo do desenvolvimento dos módulos, a lista contém, em 80% das vezes, os módulos relatados com erros. Assim, os resultados alcançados pela metodologia proposta abrem caminho para que novos estudos sejam realizados com outros conjuntos de dados e métricas.
author2 Antonio Otavio Fernandes
author_facet Antonio Otavio Fernandes
Jose Augusto Miranda Nacif
author Jose Augusto Miranda Nacif
spellingShingle Jose Augusto Miranda Nacif
Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
author_sort Jose Augusto Miranda Nacif
title Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
title_short Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
title_full Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
title_fullStr Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
title_full_unstemmed Uma metodologia para identificação de módulos de circuitos integrados propensos a erros
title_sort uma metodologia para identificação de módulos de circuitos integrados propensos a erros
publisher Universidade Federal de Minas Gerais
publishDate 2011
url http://hdl.handle.net/1843/SLSS-8GYG2K
work_keys_str_mv AT joseaugustomirandanacif umametodologiaparaidentificacaodemodulosdecircuitosintegradospropensosaerros
_version_ 1718844027840757760
spelling ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-SLSS-8GYG2K2019-01-21T17:54:25Z Uma metodologia para identificação de módulos de circuitos integrados propensos a erros Jose Augusto Miranda Nacif Antonio Otavio Fernandes Ricardo dos Santos Ferreira Wang Jiang Chau Claudionor Jose Nunes Coelho Junior Diogenes Cecilio da Silva Junior Verifying large industrial designs is getting harder each day. The current verification methodologies can not guarantee bug free designs. Considering that is not possible to check all states of complex designs, the verification team should define coverage levels for each integrated circuit module. If the coverage of errorprone modules is prioritized, it is possible to identify more bugs in less time. The novelty of this work is to propose a methodology that is able to build a model which points the hardware modules that are most likely to have undetected design bugs. The model is built using revision history information and complexity metrics extracted from concurrent versioning systems and bug tracking systems. The proposed methodology allows the identification, for a specific project, of which metrics are correlated with bugs. Thus, we are able to allocate verificatio resources more efficiently and define high risk modules to be submitted to a more rigorous verification process. The proposed methodology is validated in an experimental environment composed by metrics, data, and tools. The studied metrics are extracted by comercial and open source tools. The data used in this work are repositories of processors described in hardware description languages. In order to automate the complexity and design history metrics extraction, two tools were developed. The first, BugReporter, is a tool used to help users to report project bugs, using keywords defined by BugLanguage. The second, EyesOn, automates the extraction, storage and visualization of complexity and history metrics. We present results from the use of the proposed methodology in two processors: MIPS and OpenSPARC. For each of these processors, linear, Poisson, negative binomial, and logistic models are built. In the MIPS processor, linear model presents the best results. In the OpenSPARC project, the best performance is reached by negative binomial model. In both cases, the best models use five metrics. We also discuss results from the use of history metrics in the MIPS processor. We propose an algorithm that uses the number of modifications to dynamically build a list of error-prone modules. During the modules development the list stores, in 80% of the time, the modules that had reported errors. Thus, the results achieved by the proposed methodology could be extended with new studies using other data sets and metrics. O processo de verificação de circuitos integrados industriais se torna mais desafiador a cada dia. As metodologias de verificação atuais não são capazes de garantir que todos os erros de um circuito integrado sejam identificados e corrigidos antes da fabricação. Como não é possível checar todos os estados de circuitos integrados complexos, a equipe de verificação deve definir níveis de cobertura para cada módulo do circuito integrado. Se a cobertura de módulos mais propensos a erros é priorizada, consegue-se identificar um maior número de erros mais rapidamente. A principal contribuição deste trabalho é propor uma metodologia para construir modelos que indiquem quais módulos de um circuito integrado são propensos a conter erros não identificados. O modelo é construído utilizando métricas de complexidade e de histórico de desenvolvimento, extraídas de sistemas de controle de versão e de sistemas de rastreamento de erros. A metodologia proposta permite definir, para um projeto específico, quais métricas têm correlação com o número de erros. Assim, a alocação de recursos de verificação é realizada mais eficientemente e pode-se definir módulos que devem ser submetidos a um processo de verificação mais rigoroso. A metodologia proposta foi validada a partir de um ambiente experimental composto por métricas, dados e ferramentas. As métricas estudadas são extraídas por ferramentas comerciais e de código aberto. Os dados utilizados são repositórios de projetos de processadores descritos em linguagem de descrição de hardware. Foram desenvolvidas duas ferramentas para automatizar a extração de métricas de complexidade e de histórico de desenvolvimento. A primeira, o BugReporter, é uma ferramenta que auxilia os usuários a relatar erros identificados no projeto, utilizando palavras reservadas definidas pela Bug Language. A segunda, EyesOn, automatiza o processo de extração, armazenamento e visualização das métricas de complexidade e de histórico de desenvolvimento. São apresentados resultados de utilização da metodologia proposta em dois processadores: MIPS e OpenSPARC. Para cada um dos processadores são construídos modelos lineares, de Poisson, binomiais negativos e de regressão logística. Para o processador MIPS, o modelo que apresenta o melhor desempenho é o linear. Já no OpenSPARC, o melhor desempenho é alcançado pelo modelo binomial negativo. Em ambos os casos os modelos que apresentam o melhor desempenho utilizam cinco métricas. Finalmente, os resultados de utilização de métricas de desenvolvimento no processador MIPS são discutidos. É proposto um algoritmo que utiliza o número de alterações para construir, dinamicamente, uma lista de módulos propensos a erros. Ao longo do desenvolvimento dos módulos, a lista contém, em 80% das vezes, os módulos relatados com erros. Assim, os resultados alcançados pela metodologia proposta abrem caminho para que novos estudos sejam realizados com outros conjuntos de dados e métricas. 2011-03-01 info:eu-repo/semantics/publishedVersion info:eu-repo/semantics/doctoralThesis http://hdl.handle.net/1843/SLSS-8GYG2K eng info:eu-repo/semantics/openAccess text/html Universidade Federal de Minas Gerais 32001010004P6 - CIÊNCIA DA COMPUTAÇÃO UFMG BR reponame:Biblioteca Digital de Teses e Dissertações da UFMG instname:Universidade Federal de Minas Gerais instacron:UFMG