Comprobaciones de cuatro estados
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 26 de 38.
Un testbench debe tratar los desconocidos deliberadamente. La igualdad ordinaria puede devolver X, lo que puede ocultar un fallo en una condición if. La igualdad y la desigualdad case, === y !==, comparan los cuatro valores literalmente y devuelven un booleano conocido. El XOR de reducción seguido de una comparación case con X puede detectar bits desconocidos. Utiliza estos como comprobaciones de simulación, no como un modelo de hardware que detecta valores X físicos.
Extracto relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
if(actual !== expected) errors = errors + 1;Una diferencia que involucra X o Z se cuenta en lugar de desaparecer en una condición desconocida.
Usa comparaciones explícitas de cuatro estados en los verificadores de simulación y define cómo deben tratarse los valores desconocidos.
Desafío
IntermedioEste es un comprobador exclusivo para simulación, no lógica de ruta de datos sintetizable. Establece mismatch cuando actual y expected difieren en una comparación de cuatro estados. Si ambos tienen el mismo X o Z en las mismas posiciones, se consideran iguales. El resultado debe ser always un 0 o 1 conocido. Columnas de salida: mismatch. Todos los valores de estímulo son valores binarios conocidos.
Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios en las entradas e imprime las salidas después de que se estabilizan. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresiones, retardos ni terminación de la simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminada con un salto de línea.
Pruébalo tú mismo
module dut (input [3:0] actual, input [3:0] expected, output mismatch);
// Reemplaza este marcador de posición con tu diseño.
assign mismatch = 0;
endmoduleEsta 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
1RTL combinacional confiable
Los valores predeterminados evitan los latchesCodificadores de prioridadValidación one-hotDecodificación segura de caseRepaso: enrutador de solicitudes4RTL secuencial controlado
Prioridad de reinicio y habilitaciónContadores con saturaciónPipeline de datos y validaciónDetección de flancos muestreadosRepaso: contador de eventos7Proyecto - Monitor de muestras
Acumular muestrasAceptar muestras habilitadas2Anchos y aritmética con signo
Conservar los bits de acarreoComparaciones con signoDesplazamientos aritméticos a la derechaDesbordamiento y saturaciónRepaso: diferencia con signo3RTL reutilizable
Funciones combinacionalesParámetros seguros en anchuraBucles generateGenerate condicionalRepaso - Máscara de bits reutilizable6Testbenches con autocomprobación
Comprobaciones de cuatro estadosTareas de comprobación reutilizablesModelos de referencia y puntuacionesCobertura de límites y controlRepaso: auditoría del sumadorPractica por tu cuenta: Compilador de Verilog online