Menu
Coddy logo textTech

Tarefas de Verificação Reutilizáveis

Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 27 de 38.

Uma task de Verilog agrupa trabalho procedural e pode retornar resultados por meio de argumentos de saída ou de entrada e saída. As tasks do testbench reduzem verificações duplicadas. Diferentemente de uma function combinacional, uma task pode incluir controles de temporização quando apropriado, mas essas tasks de verificação realizam apenas comparações de tempo zero. Use tasks automáticas se chamadas concorrentes separadas precisarem de armazenamento local independente; as chamadas fornecidas aqui são sequenciais.

Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.

task check_value;
    input [7:0] actual,expected;
    output ok;
    begin ok = (actual === expected); end
endtask

O chamador recebe o resultado da verificação por meio de um argumento de saída explícito.

Defina as direções dos argumentos de task e redefina as variáveis de resultado por chamada antes de coletar as falhas.

challenge icon

Desafio

Médio

Implemente check_value para que ok seja um quando actual e expected coincidirem sob igualdade de quatro estados e zero caso contrário. Este módulo contém uma task somente para simulação, chamada pelo testbench bloqueado. Colunas de saída: ok.

Complete design.v e preserve os nomes dos módulos e as portas. O testbench.v bloqueado fornece as alterações de entrada e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; não é necessária entrada padrão. Mantenha a impressão e o controle do cenário no testbench bloqueado; implemente somente o corpo da task. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.

Experimente você mesmo

module dut;
    task check_value;
        input [7:0] actual,expected;
        output ok;
        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