35
Verificação Baseada em Simulação MO801/MC912

Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Embed Size (px)

Citation preview

Page 1: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Verificação Baseada em Simulação

MO801/MC912

Page 2: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Ambiente Completo

• Testbench– Todo código utilizado para criar, observar e

verificar características do circuito

• É uma entidade de alto nível– Sem entradas nem saídas

• Controla o DUV– DUV = Design Under Verification

• Pode ser escrito em diversas linguagens

Page 3: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Testbench

• Tem como meta estimular o circuito com entradas importantes– O que são entradas importantes?

• Deve conhecer as respostas para essas entradas

• Passar pelo teste significa gerar as saídas corretas para as entradas fornecidas

• Quantas entradas são necessárias?

Page 4: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Ambiente Completo

DUV

StimulusInitiator A

StimulusInitiator B

Scoreboard

Stimulusresponder

Checker

Monitor

Page 5: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Gerador de estímulos

• É o gerador de entradas para o DUV– Outros nomes: stimulus generators, drivers, agitators

irritators, generators

• Funciona como os vizinhos do DUV no circuito final– Mas modela apenas as interfaces dos vizinhos, não

seus comportamentos– Não se preocupa com detalhes internos dos vizinhos– Foca nas especificações do DUV e não nas

especificações do vizinho

Page 6: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Exemplo

• O vizinho (que gera as entradas) tem um buffer de 8 posições

• O DUV possui sinais de controle de fluxo para indicar quando pode ou não receber dados

• O gerador de estímulos deve se focar no buffer, nos sinais de controle ou nos dois?

Page 7: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Resposta

• O gerador de estímulos deve focar apenas nas limitações do DUV

• O tamanho do buffer provavelmente foi uma restrição do vizinho e não do DUV

• Esse buffer pode ser modificado sem alterar o DUV– Será que uma alteração no tamanho do buffer

tafetaria o DUV?

• Nesse caso, é interessante testar além dos limites que serão utilizados na prática

Page 8: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Protocolos de comunicação

• O gerador de estímulos conhecer todo o protocolo de entrada

• Cada variação do protocolo deve ser exercitada

Page 9: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Estímulos especiais

• Alguns componentes podem ser usados apenas em determinadas configurações– Essas configurações devem ser testadas com

mais ênfase– Mas as outras também devem ser testadas

• Também devem ser gerados sinais que não indicam atividade útil– O DUV deve ser capaz de ignorá-los

Page 10: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Geradores de Estímulos

• Initiators– Geram as transações de entrada para o DUV

• Responders– Reagem às saídas do DUV, fornecendo

estímulos de volta

Page 11: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Initiator

• É o responsável por gerar as entradas do DUV

• Costuma ser quebrado em partes– Uma que é capaz de se comunicar através do

protocolo, temporização e sinalização especificados para o DUV

– Outra que gera os estímulos propriamente ditos

Page 12: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Exemplo

• Se o DUV possui um buffer de 8 lugares internamente

• O gerador de estímulos pode gerar 9 comandos/dados em seqüência?– Como saber desse buffer?– O que acontece quando o buffer fica cheio?– Quem é o responsável, no projeto inteiro, por

tratar dessa situaç ão?

Page 13: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Protocolo

• Isolar o gerador de sinais compatíveis com um protocolo permite reutilizá-lo no futuro

• Protocolos complicados, com atividades simultâneas (como pipeline do OCP/IP) são difíceis de serem tratados juntamente com o gerador de estímulos

Page 14: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Responder

• Também é reponsável por gerar estímulos para o DUV

• Enquanto o Initiator deve ser visto como um Mestre para o DUV, o Responder é um Escravo do DUV

• Se o DUV é uma cache, um Initiator é o processador e um Responder é a memória principal

• Deve serguir as mesmas regras de criação do Initiator

Page 15: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Monitor

• É um componente auto-contido que observa– As saídas do DUV verificando a corretude do

protocolo– Entradas do DUV para verificar cobertura– Sinais internos do DUV para eventos de

interesse

Page 16: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Monitor

• Não deve gerar nenhum sinal– Não deve influenciar o DUV, quem faz isso é

o Responder– Sem gerar saídas, é mais fácil reutilizá-lo em

níveis superiores de verificação

• Deve aproveitar as entradas para gerar informações sobre cobertura

• Guarda as informações para uso futuro– Por exemplo, num arquivo

Page 17: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Checker

• É um Monitor especial que verifica as respostas do DUV

• Módulo mais difícil

• Para implementá-lo, deve-se responder a pergunta:– Como saber se o DUV está errado?

• Pode utilizar informações dos Initiators e do Scoreboard para realizar sua tarefa

Page 18: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Checker x Monitor

• Checker– Todas as solicitações

foram respondidas?– Todas as respostas

estão corretas?– Alguma resposta

supérflua foi gerada?

• Monitor– Paridade e bits de

verificação estão ok?– Os dados transmitidos

correspondem aos indicados no cabeçalho do pacote?

– Outras respostas que não precisam de informações dos geradores de estímulos

Page 19: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Scoreboard

• Espaço de armazenamento temporário• Duas alternativas de uso pelo Checker

– O Scoreboard guarda as entradas para o Checker calcular as saídas com base nelas

– O Scoreboard pré-calcula as saídas e fornece ao Checker

• Se existe uma fila (FIFO) dentro do DUV, provavelmente o Scoreboard terá uma fila também

Page 20: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Scoreboard

• O Scoreboard não deve se comunicar diretamente com os Initiators

• Ele só deve ter acesso aos barramentos de dados– Evita problemas de interpretação– Permite reuso

Page 21: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

DUV

• Design Under Verification

• Design Unter Test (DUT)

• Unit Under Test (UUT)

Page 22: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Ambiente Completo

DUV

StimulusInitiator A

StimulusInitiator B

Scoreboard

Stimulusresponder

Checker

Monitor

Page 23: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Níveis de Observação

• Três níveis são possíveis– Black box– White box– Gray box

Page 24: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Black Box

• É o mais comum• As saídas são previstas com base nas entradas• Vantagens:

– Mudanças internas no DUV não afetam o código de verificação

– Prever as saídas com base apenas nas entradas indica que o testbench não foi afetado pelo DUV

• Desvantagens– Não consegue resolver ambiguidades– Não consegue acesso a sinais internos

Page 25: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

White Box

• Permite acesso a todo o conteúdo do DUV• Permite detectar erros diretamente no

código fonte– Não apenas como uma instância que causa

problemas como no Black Box

• Inclui o uso de assertions• Mesmo tendo acesso a ele, não se deve

utilizar o código fonte como origem de especificação

Page 26: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Gray Box

• Meio termo entre White Box e Black Box

• Alguns sinais ou partes do circuito são monitorados

• Permite influenciar o circuito diretamente– Alterar o valor de um contador interno que

demora muito tempo para causar overflow

Page 27: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Assertions

• Permite especificar características garantidas do circuito– Estados ilegais– Sinais ortogonais (codificação one-hot)– Condições de controle ilegais

• Em geral, essas condições não estão bem descritas na especificação do circuito

• Especificam a motivação do projetista

Page 28: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Exemplo

assert (not(s1 and s2))

report “both selects on”

severity error;

Page 29: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Importância de Assertions

• Características internas, que não fazem parte da especificação, podem ser verificadas

• Permite utilizar verificação formal• Um erro capturado por um assertion é mais fácil

de corrigir• Assertions não geram grandes cargas de

simulação• O uso sistemático de assertion pode capturar de

24% a 35% dos bugs de projetos grandes

Page 30: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Classificação das Assertions

• Event detection– Versão mais simples. Detectam a ocorrência de um

evento

• Temporal event detection– Detectam um evento baseado numa outra condição

(clock ativo, por exemplo)

• Pre-defined event detection building blocks– Blocos projetados para fazerem verificação de certas

propriedades de um circuito

• Existem linguagens/ferramentas só para tratar de assertions

Page 31: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Testbenches Determinísticos

• Utilizados nas fases iniciais de teste

• Em geral, projetados manualmente

• Possuem as respostas codificadas manualmente também

• Difícil manutenção ou aprimoramento– Todos os testes são feitos manualmente

Page 32: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Testbenches com Verificadores

• Possuem algum tipo de implementação do DUV– Diferente da própria implementação do DUV– São capazes de verificar a resposta do DUV

• Três alternativas de implementação– Golden Vectors– Reference Model– Transaction Based

Page 33: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Golden Vectors

• Inclui respostas a algumas das operações diretamente no Scoreboard

• Codificado manualmente, implementado no Scoreboard– As respostas devem ser verificadas de outra

forma antes da implementação

• Facilita os testes de regressão

• Problemas com temporização

Page 34: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Reference Model

• Modelo que calcula as respostas corretas para serem comparadas com o DUV

• Precisa saber a temporização do circuito

• Permite uma maior cobertura do projeto, sem ter que calcular as respostas manualmente

Page 35: Verificação Baseada em Simulação MO801/MC912. Ambiente Completo Testbench –Todo código utilizado para criar, observar e verificar características do circuito

Transaction Based

• Não se preocupa com a temporização e sim com as respostas– A temporização dos protocolos já está sendo

verificada pelo Monitor

• Muitos circuitos possuem o conceito de transação, basta utiliza-los para evitar problemas de temporização