Resumen: Testbench completo
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 78 de 90.
Desafío
Este desafío pone a prueba todo lo que has aprendido sobre bancos de pruebas (testbenches): estímulos, display, monitor, dumpfile, dumpvars y tareas del sistema. Se te proporciona un módulo de compuerta XOR para probar.
Qué hacer:
Crea un banco de pruebas completo que:
- Declare señales (
regpara las entradas,wirepara la salida) - Instancie la compuerta XOR con el nombre
dut - Cree un archivo de forma de onda llamado
"xor_waveform.vcd" - Vuelque (dump) todas las señales en el banco de pruebas
- Imprima un encabezado: "Testing XOR Gate"
- Use
$monitorpara rastrear el tiempo, x, y, y z - Pruebe las cuatro combinaciones de entrada (00, 01, 10, 11) con un retraso de
#10entre cada una - Imprima "Test complete" al final
- Finalice la simulación con
$finish
Pruébalo tú mismo
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// TODO: Declarar reg para x e y
// TODO: Declarar wire para z
// TODO: Instanciar xor_gate con el nombre dut
// Conectar .x(x), .y(y), .z(z)
initial begin
// TODO: Agregar $dumpfile "xor_waveform.vcd"
// TODO: Agregar $dumpvars (0, testbench)
// TODO: Agregar $display "Testing XOR Gate"
// TODO: Agregar $monitor para time, x, y, z
// Formato: "Time %0t: x=%b, y=%b, z=%b"
// TODO: Agregar estímulos para las cuatro combinaciones
// 00, 01, 10, 11 con retraso #10
// TODO: Agregar $display "Test complete"
// TODO: Agregar $finish
end
endmoduleTodas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores14Fundamentos de Testbench
¿Qué es un Testbench?Creación de estímulosDisplay y MonitorDumpfile y DumpvarsUso de tareas del sistemaResumen: Testbench completo3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo