Menu
Coddy logo textTech

Tareas de comprobación reutilizables

Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 27 de 38.

Una task de Verilog agrupa trabajo procedimental y puede devolver resultados mediante argumentos de salida o de entrada/salida. Las task del banco de pruebas reducen las comprobaciones duplicadas. A diferencia de una function combinacional, una task puede incluir controles de temporización cuando corresponda, pero estas task de comprobación realizan únicamente comparaciones de tiempo cero. Usa task automáticas si varias llamadas concurrentes necesitan almacenamiento local independiente; las llamadas proporcionadas aquí son secuenciales.

Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.

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

La persona que realiza la llamada recibe el resultado de la comprobación mediante un argumento de salida explícito.

Define las direcciones de los argumentos de task y restablece las variables de resultado por llamada antes de recopilar los fallos.

challenge icon

Desafío

Intermedio

Implementa check_value para que ok sea uno cuando actual y expected coincidan según la igualdad de cuatro estados, y cero en caso contrario. Este módulo contiene una task exclusiva de simulación a la que llama el banco de pruebas bloqueado. Columnas de salida: ok.

Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas después de que se estabilicen. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. Mantén la impresión y el control del escenario en el banco de pruebas bloqueado; implementa únicamente el cuerpo de la task. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminados con un salto de línea.

Pruébalo tú mismo

module dut;
    task check_value;
        input [7:0] actual,expected;
        output ok;
        begin
            // Completa la tarea del checker.
            ok=0;
        end
    endtask
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Diseño y verificación RTL

Practica por tu cuenta: Compilador de Verilog online