Modelos de Referência e Pontuações
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 28 de 38.
Um testbench de autoverificação calcula o comportamento esperado independentemente da saída do design. Um modelo de referência pode usar aritmética direta mesmo quando a implementação usa uma estrutura diferente. Um scoreboard contabiliza observações e divergências. Inicialize seus contadores uma vez por cenário e faça a comparação somente depois que a saída do design tiver se estabilizado.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
expected = {1'b0,a} + {1'b0,b};
checked = checked + 1;
if(actual !== expected) errors = errors + 1;O valor esperado vem do comportamento de entrada especificado, não da cópia de actual.
Calcule os valores esperados de forma independente, faça a amostragem em um momento definido e acompanhe cada resultado verificado.
Desafio
MédioImplemente uma verificação de referência para um somador sem sinal de quatro bits. Calcule o resultado matemático completo de cinco bits de a+b e, em seguida, retorne ok=1 somente se actual corresponder exatamente a esse resultado em uma comparação de quatro estados. Este módulo contém uma task exclusiva de simulação, chamada pelo testbench bloqueado. Colunas de saída: ok.
Conclua design.v e preserve os nomes e as portas dos módulos. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; nenhuma entrada padrão é necessária. Mantenha a impressão e o controle do cenário no testbench bloqueado; implemente apenas o corpo da task. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminada por uma nova linha.
Experimente você mesmo
module dut;
task check_sum;
input [3:0] a,b;
input [4:0] actual;
output ok;
reg [4:0] expected;
begin
// Complete a tarefa do checker.
ok=0;
end
endtask
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Design e Verificação RTL
1RTL Combinacional Confiável
Valores padrão evitam latchesCodificadores de prioridadeValidação One-HotDecodificação segura de caseRecapitulação - Roteador de requisições4RTL Sequencial Controlado
Prioridade de Reset e EnableContadores SaturantesPipeline de Dados e ValidDetecção de Bordas AmostradasRecapitulação - Contador de Eventos7Projeto - Monitor de Amostras
Acumular AmostrasAceitar Amostras Habilitadas2Larguras e Aritmética com Sinal
Preservando Bits de CarryComparações com SinalDeslocamentos Aritméticos à DireitaOverflow e SaturaçãoRecapitulação — Diferença com Sinal3RTL Reutilizável
Funções CombinacionaisParâmetros Seguros quanto à LarguraLaços de GeraçãoGeração CondicionalRecapitulação - Máscara de Bits Reutilizável6Testbenches com Autoverificação
Verificações de Quatro EstadosTarefas de Verificação ReutilizáveisModelos de Referência e PontuaçõesCobertura de Limites e ControleRecapitulação - Auditoria do SomadorPratique por conta própria: Compilador de Verilog online