Menu
Coddy logo textTech

Modelos de referencia y puntuaciones

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

Un banco de pruebas con autoverificación calcula el comportamiento esperado de forma independiente de la salida del diseño. Un modelo de referencia puede usar aritmética sencilla incluso cuando la implementación utiliza una estructura diferente. Un marcador de resultados cuenta las observaciones y las discrepancias. Inicializa sus contadores una vez por escenario y compara solo después de que la salida del diseño se haya estabilizado.

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

expected = {1'b0,a} + {1'b0,b};
checked = checked + 1;
if(actual !== expected) errors = errors + 1;

El valor esperado proviene del comportamiento de entrada especificado, no de copiar actual.

Calcula los valores esperados de forma independiente, toma una muestra en un momento definido y registra cada resultado comprobado.

challenge icon

Desafío

Intermedio

Implementa una comprobación de referencia para un sumador sin signo de cuatro bits. Calcula la suma matemática completa de cinco bits a+b y, después, devuelve ok=1 solo si actual coincide exactamente con ese resultado en una comparación de cuatro estados. 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 sus nombres de módulo y puertos. El testbench.v bloqueado proporciona los cambios de entrada e imprime las salidas una vez que se estabilizan. 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 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_sum;
        input [3:0] a,b;
        input [4:0] actual;
        output ok;
        reg [4:0] expected;
        begin
            // Completa la tarea del verificador.
            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