Escribir el Testbench
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 45 de 90.
Desafío
Ahora necesitamos probar si el semisumador está funcionando correctamente. Agrega el código de prueba dentro del bloque initial.
Importante: Antes de agregar la prueba, debes cambiar los puertos del módulo para que la prueba pueda funcionar correctamente.
Qué hacer:
Paso 1: Cambiar las declaraciones de los puertos
- Cambia
input a, bporreg a, b(usa el punto y coma) - Cambia
output sum, carryporwire sum, carry(usa el punto y coma) - Elimina los puertos del módulo por completo (el módulo no debe tener
( ))
Paso 2: Agregar el código de prueba
- Agrega un bloque
initial begin - Dentro del bloque, agrega:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- Agrega
$finish;para terminar la prueba - Agrega
endpara cerrar el bloque initial
Pruébalo tú mismo
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
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 operadores3Sistema 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