Verificação funcional



Documentos relacionados
PROJETO DE CIRCUITOS INTEGRADOS VLSI

Verificação funcional

Desenvolvimento de Modelo ESL para Controlador de Acesso Direto à Memória (DMA)

Introdução ao Desenvolvimento de Circuitos Digitais Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

GARANTIA DA QUALIDADE DE SOFTWARE

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Projeto de Sistemas I

Modelo Cascata ou Clássico

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

Teste de Software. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites

Engenharia de Software

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Verificação e Validação

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Teste de Software. Profa. Cátia dos Reis Machado

Verificação funcional

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Engenharia de Software II

Engenharia de Software III

Processo de Desenvolvimento de Software. Engenharia de Software.

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Introdução a Informática. Prof.: Roberto Franciscatto

Arquitetura de Rede de Computadores

O Processo de Desenvolvimento de Software

Como melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008

Hardware. Computador. Hardware parte do computador em que você normalmente mete o pé quando seu computador não executa uma tarefa solicitada por você.

Quadro de consulta (solicitação do mestre)

Projeto de controle e Automação de Antena

Relatorio do trabalho pratico 2

Professor: Curso: Disciplina:

Tabela de roteamento

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

1.1. Organização de um Sistema Computacional

Abordagem de Processo: conceitos e diretrizes para sua implementação

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

ALP Algoritmos e Programação. . Linguagens para Computadores

Processos de Design de IHC (Parte II)

Figura 1 - O computador

PARANÁ GOVERNO DO ESTADO

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software


Aplicação Prática de Lua para Web

Registro e Acompanhamento de Chamados

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Lição 1 Introdução à programação de computadores

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Aspectos técnicos do desenvolvimento baseado em componentes

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Qualidade de Software. Profa. Cátia dos Reis Machado

Equipamentos de Redes. Professor Leonardo Larback

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Operacionais 1/66

SISTEMA. Tecnologia. Software. Hardware. Prazos. Pessoas. Qualidade. Custo GERENCIAMENTO DE RISCO: COMO GARANTIR O SUCESSO DOS PROJETOS DE TI?

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo

Introdução à Programação de Computadores

Princípios do teste de software

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Funções de Posicionamento para Controle de Eixos

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Introdução à Arquitetura de Computadores IFES Campus Serra

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Redes de Computadores

4 Estrutura do Sistema Operacional Kernel

Ricardo Roberto de Lima UNIPÊ APS-I. Históricos e Modelagem Orientada a Objetos

Gerenciamento de Níveis de Serviço

1. NÍVEL CONVENCIONAL DE MÁQUINA

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Senha: Senha. Gerenciar filas ficou mais fácil

Operador de Computador. Informática Básica

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

ELABORAÇÃO E ANÁLISE DE PROJETOS MÓDULO 10

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

1. Qual das seguintes alternativas não é um tipo de revisão? 2. Qual das alternativas é um atributo da qualidade?

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

SEGURANÇA E CONTROLE EM SISTEMAS DE INFORMAÇÃO

Tipos de teste de software

Avaliação de Processos Produtivos - APP

Wilson Moraes Góes. Novatec

SISTEMAS DISTRIBUÍDOS

MC-102 Aula 01. Instituto de Computação Unicamp

BVM: Reformulação da metodologia de verificação funcional VeriSC

3 Revisão de Software

Organização e Arquitetura de Computadores I. de Computadores

SEGURANÇA A E CONTROLE EM SISTEMAS DE INFORMAÇÃO

Air-Fi - sistema sem fio Sinta-se confortável com a confiança e o desempenho líderes do setor.

Transcrição:

Verificação funcional Curso do projeto Brazil-IP Elmar Melcher UFCG elmar@dsc.ufcg.edu.br http://lad.dsc.ufcg.edu.br

Introdução Motivação Fluxo de projeto Verificação Roteiro Tipos de verificação Verificação funcional Abordagens de verificação Plano de verificação

Metodologia VeriSC Roteiro Testbench Elementos básicos Regras de projeto Implementação Tipos de estímulos Cobertura Biblioteca BVE_COVER

Exemplos Codificador DPCM Decodificador MPEG4 Lacre Eletrônico Roteiro

Introdução Ninguém usa um IP core no qual não confia. IP IP core: core: Lógica ou ou os os dados dados necessários para para construir um um dado dado projeto de de hardware. Idealmente ele ele é reusável e pode pode ser ser adaptado a vários vários tipos tipos de de dispositivos de de hardware. Pode-se entender o IP-core como como a implementação de de um um dado dado projeto de de hardware em em uma uma linguagem especifica para para esse esse objetivo.

Motivação

Caso famoso: NASA Exemplo de problema causado por má verificação na NASA: Mars Climate Orbiter de 1999 Erro de verificação de sistema fez com que o Orbiter voasse muito próximo à atmosfera marciana e queimasse. Problema era uma mistura de unidades métricas e unidades inglesas que causou um erro no cálculo da trajetória.

Caso famoso: INTEL Problema descoberto no Pentium em 1994 por um professor de matemática durante uma pesquisa matemática. A FPU produzia resultados de divisão errôneos no oitavo digito significativo para certos argumentos. Embora no máximo 1 usuário em 1 milhão jamais foi afetado, a confiança na INTEL caiu. Abriu o caminho para crescimento maior da AMD. Prejuízo de 500 MUS$ (?)

Verificação de IP cores Como alcançar confiança em um projeto? Processo de verificação bem executado e documentado. IP cores precisam ser verificados mais amplamente, Todas propriedades e utilizações possíveis devem ser verificadas, Não somente um ambiente específico.

Fases de um projeto de hardware Especificação do hardware Especificação da verificação funcional Implementação do Código RTL Implementação do testbench Prototipação Simulação Pós-síntese Síntese Verificação funcional S o C

Custo versus Tempo Entregar produtos e ganhar dinheiro. Custo e tempo de corrigir um defeito cresce quando descoberto mais tarde no ciclo de vida do produto. Custo na especificação na simulação na prototipagem na fabricação em volume no uso pelo cliente Temp o

Verificação

Verificação: Tipos de verificação Dinâmica ou Funcional. Estática ou Formal. Híbrida.

Verificação funcional Verificação funcional é um processo usado para demonstrar que o objetivo do projeto é preservado em sua implementação [bergeron2003]

Verificação funcional x Teste Verificação Funcional: confrontar um modelo a ser verificado a outro modelo padrão, comparando a funcionalidade por simulação. Teste: verificar se um CI está sem erro de fabricação. Teste: verificar se um CI está sem erro de fabricação.

Verificação funcional Mais da metade do esforço de projeto está na verificação. Um testbench muitas vezes contém mais linhas que a própria descrição do projeto. A equipe de engenheiros de verificação é maior do que a equipe de projetistas. Verificação é difícil.

Verificação funcional Engenheiros da Motorola no SBCCI 2002: Estamos procurando trabalhos sobre verificação Hoje temos metodologia estabelecida: UVM Procura por bons engenheiros de verificação em todas as empresas.

Custo da verificação Um mal necessário sempre leva tempo demais e custa caro demais mas indispensável. porque afeta diretamente os três requisitos: cronograma custo qualidade

Isso funciona mesmo? A verificação funcional deve responder a esta pergunta. isso é uma descrição RTL de um projeto. funciona se refere a simulação. O funcionário de uma empresa deve poder dormir tranqüilo se a verificação responde sim.

Como saber fazer? Muitos livros falam sobre implementação. Menos falam sobre verificação. Janick Bergeron, Writing Testbenches: Functional Verification of HDL Models, 2nd edition, KluwerAcademic Publishers, 2003 Piziali, Functional verification Coverage Measurement and Analysis, Kluwer 2004 Sharon Rosenberg, Kathleen Meade, A Practical Guide to Adopting the Universal Verification Methodology (UVM), 2nd edition, 2013

Verificação estática Analisadores de código HDL, Lint ou linting tools Tipos de problemas detectáveis case incompleto atribuições em if...else inconsistente falta de sinais na lista de sensibilidade reset síncrono / assíncrono falta de sinais a serem resetados clocks ativos todos na borda de subida ou descida resets ativos todos em nível alto ou nível baixo

Fluxo de projeto Especificação Verificação Descrição comportamental Descrição RTL Descrição estrutural Layout Função & Desepenho Função & Desepenho Função & Desempenho Função & Desempenho Desempenho: timing, consumo, áre

Projeto x Verificação Intenção do projeto A G E H F B Especificação D C Implementação

Projeto x Verificação Intenção do projeto A G E H F Especificação D C Implementação

Projeto x Verificação Intenção do projeto Especificação A G H F D Implementação

Projeto x Verificação Intenção do projeto Especificação A H F D Implementação

Projeto x Verificação Intenção do projeto Especificação A H F D Implementação

Projeto x Verificação Intenção do projeto Especificação A H F D Implementação

Projeto x Verificação Intenção do projeto Especificação e Implementação A H F D

Nível hierárquico adequado Verificação funcional pode ser realizada a vários níveis: componente/unidade/sub-unidade,... ASIC/FPGA/IP Sistema/SoC placa

Nível hierárquico adequado Como decidir qual nível? Nível mais baixo fornece mais observabilidade mas exige mais esforço, A nível mais alto os elementos menores são verificados implicitamente com menos esforço desde que os cenários e vetores de entrada sejam completos. Decisão depende do projeto. Faz parte do plano de verificação para cada elemento existe uma seção nele.

Verificação em vários níveis Na verificação no nível de sistema é suficiente verificar a interação dos componentes se uma verificação correta a nível de componentes foi feita. Verificação entre dois níveis adjacentes, do topo até a base.

Verificação funcional Para realizar a verificação funcional necessita-se de: Um projeto a ser verificado denominado DUT (Design Under Test). Um Modelo de Referência que implementa as funcionalidades do DUT de forma ideal. Um ambiente de verificação (testbench). Responsável por gerar estímulos para o DUT e comparar as respostas do DUT com as respostas do Modelo de Referência.

Verificação funcional Tudo a mesma coisa: UUV (Unit Under Test). unidade a ser testada. MUT (Model Under Test). DUT (Device Under Test, Design Under Test). EUV (Entity Under Verification). DUV (Design Under Verification).

Verificação funcional Modelo de Referência pode ser escrito em qualquer linguagem que possa se comunicar com SystemVerilog, por exemplo em SystemC. Pode ser usado um modelo ESL (Electronic System Level) que tem sido usado para exploração arquitetural.

Verificação funcional Testbench Montagem de teste para simulação. Código escrito em SystemVerilog. Segue a metodologia UVM. Cria estímulos e verifica a resposta. Não tem entrada nem saída. Um modelo do universo em volta do projeto. Imprime mensagens quando o DUT apresenta comportamento inesperado.

Verificação funcional Reference Model Testbench DUV DUV

Verificação funcional Inserir estímulo Reference Model DUV Comparar resposta

top comparator test env UVM agent monitor System Verilog SystemC get/put port analysis port responder transaction flow FIFO interface driver reference model agent monitor DUT sequencer driver

Verificação funcional deve: Ser dirigida pela cobertura (coverage-driven) Quando parar de simular? Cobertura - processo que mostra que as funcionalidades especificadas estão sendo exercitadas. Auxilia na análise de redirecionamento de estímulo. Mostra o progresso da verificação. Determina quando terminar a verificação.

Verificação funcional deve: Apresentar estímulos com aleatoriedade direcionada (random-constrained) Estímulos são gerados baseados em uma distribuição de probabilidade direcionada para o DUT. Visa alcançar os critérios de cobertura. Encontra erros não previstos. Podem ser usados também estímulos: Direcionados Corner-case Reais

Verificação funcional deve: Ser auto verificável (Self-checking) O ambiente de verificação deve comparar as respostas do DUV com as respostas do Modelo de Referência sem intervenção humana.

Verificação funcional deve: Ter o testbench implementado no nível de transação (Transaction-level) Transação: uma estrutura de instruções e/ou dados que tem início e fim no tempo. Exemplos:» Pacote Ethernet» Quadro de um vídeo

Resumo I m p l e m e n t a ç ã o d o t e s t b e n c h c o m c o b e r t u r a S i m u l a ç ã o I m p l e m e n t a ç ã o d o D U V A n á l i s e d a c o b e r t u r a D a d o s d e c o b e r t u r a

Verificação Automação Eliminar intervenção humana no processo. Realidade mostra que não é possível: processos mal definidos, precisando de invenção e criatividade humana. Redundância Usar dois engenheiros (ou grupos) para um verificar o outro. Projetista Engenheiro de verificação

Quem pode errar? Um projetista pode implementar uma funcionalidade de forma errada? Sim, o erro será descoberto por um teste. Um engenheiro de verificação pode testar uma funcionalidade de forma errada? Sim, um erro falso aparecerá no teste. O projetista e o engenheiro de verificação podem cometer o mesmo erro? Não, o erro será aceito no teste.

Quem pode errar? Um projetista pode esquecer de implementar alguma funcionalidade? Sim, a falha será descoberta por um teste. Um engenheiro de verificação pode esquecer de testar alguma funcionalidade? Não, um possível erro do projetista passará despercebido.

Verificação funcional Pode provar a presença de erros, mas não pode provar a ausência de erros. É preciso saber quando pode-se terminar o processo de verificação. medição de cobertura

Abordagens de Verificação Black Box - mais simples para verificação Grey Box - facilita depuração White Box - ruim

Black Box DUV Entradas, saídas, função Função bem documentada (ou não...) Para verificar, é preciso entender a função e prever as saídas sabendo as entradas.

White Box DUV Todas as variáveis internas visíveis. Podem ser acessadas para verificação. Para teste de unidades pequenas nas folhas da hierarquia

Grey Box DUV Uma seleção restrita de variáveis internas pode ser usado para verificação. Exemplo: registradores de um processador

Plano de Verificação Especificação do processo de verificação; Define o quê será verificado e como. Define quando a verificação está terminada uso de métricas para saber quando a verificação estiver completa: Cobertura Funcional idealmente a definição de sucesso de primeira.

Plano de Verificação Feito a partir da especificação do DUT. Define os cenários de teste (testbenches a serem escritos): define a complexidade deles, as dependências entre eles. A partir daí é feito um cronograma: recursos (humanos, máquinas, etc.) necessários, recursos disponíveis

Plano de Verificação Pertence à equipe: todo mundo envolvido é responsável, tudo mundo deve contribuir. Plano de Verificação não é algo novo, já era usado por: NASA FAA Software

Conteúdo do Plano de Verificação Resumo do sistema Níveis de abstração Tecnologias de Verificação Modelos de referência a serem usados Fluxograma da verificação Definição dos estímulos Testes de regressão

Conteúdo do Plano de Verificação Gerência de falhas Plano de recursos Cronograma

Os três mandamentos da verificação funcional Você deve solicitar mais seu projeto do que jamais ele será solicitado no futuro. Você deve monitorar tudo. Você não deve passar a um nível mais alto de hierarquia antes de atingir cobertura completa.