Menu
Coddy logo textTech

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.

challenge icon

Desafio

Médio

Implemente 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
endmodule
quiz iconTeste seus conhecimentos

Esta 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

Pratique por conta própria: Compilador de Verilog online