Verificação Baseada em
Simulação
MO801/MC912
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
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?
Ambiente Completo
Stimulus
responder
Checker
Stimulus
Initiator A
DUV
Monitor
Stimulus
Initiator B
Scoreboard
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
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?
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
Protocolos de comunicação
• O gerador de estímulos conhecer todo o
protocolo de entrada
• Cada variação do protocolo deve ser
exercitada
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
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
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
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?
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
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
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
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
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
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
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
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
DUV
• Design Under Verification
• Design Unter Test (DUT)
• Unit Under Test (UUT)
Ambiente Completo
Stimulus
responder
Checker
Stimulus
Initiator A
DUV
Monitor
Stimulus
Initiator B
Scoreboard
Níveis de Observação
• Três níveis são possíveis
– Black box
– White box
– Gray box
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
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
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
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
Exemplo
assert (not(s1 and s2))
report “both selects on”
severity error;
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
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
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
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
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
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
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
Download

VerificacaoSimulacao - Facom-UFMS