Verificações de Quatro Estados
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 26 de 38.
Um testbench deve tratar os valores desconhecidos de forma deliberada. A igualdade comum pode retornar X, o que pode ocultar uma falha em uma condição if. A igualdade e a desigualdade de caso, === e !==, comparam literalmente os quatro valores e retornam um Booleano conhecido. O XOR de redução seguido de uma comparação case com X pode detectar bits desconhecidos. Use esses recursos como verificações de simulação, não como um modelo de hardware que detecta valores físicos X.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
if(actual !== expected) errors = errors + 1;Uma diferença envolvendo X ou Z é contabilizada em vez de desaparecer em uma condição desconhecida.
Use comparações explícitas de quatro estados nos verificadores de simulação e defina como os valores desconhecidos devem ser tratados.
Desafio
MédioEste é um verificador apenas para simulação, não uma lógica de caminho de dados sintetizável. Defina mismatch quando actual e expected diferirem em uma comparação de quatro estados. Se ambos tiverem o mesmo X ou Z nas mesmas posições, eles serão considerados iguais. O resultado deve always ser um 0 ou 1 conhecido. Colunas de saída: mismatch. Todos os valores de estímulo são valores binários conhecidos.
Conclua design.v e preserve os nomes de seus módulos e portas. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; não é necessária nenhuma entrada padrão. Não adicione impressão, atrasos ou encerramento da simulação ao design. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.
Experimente você mesmo
module dut (input [3:0] actual, input [3:0] expected, output mismatch);
// Substitua este placeholder pelo seu design.
assign mismatch = 0;
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Design e Verificação RTL
1RTL Combinacional Confiável
Valores padrão evitam latchesCodificadores de prioridadeValidação One-HotDecodificação segura de caseRecapitulação - Roteador de requisições4RTL Sequencial Controlado
Prioridade de Reset e EnableContadores SaturantesPipeline de Dados e ValidDetecção de Bordas AmostradasRecapitulação - Contador de Eventos7Projeto - Monitor de Amostras
Acumular AmostrasAceitar Amostras Habilitadas2Larguras e Aritmética com Sinal
Preservando Bits de CarryComparações com SinalDeslocamentos Aritméticos à DireitaOverflow e SaturaçãoRecapitulação — Diferença com Sinal3RTL Reutilizável
Funções CombinacionaisParâmetros Seguros quanto à LarguraLaços de GeraçãoGeração CondicionalRecapitulação - Máscara de Bits Reutilizável6Testbenches com Autoverificação
Verificações de Quatro EstadosTarefas de Verificação ReutilizáveisModelos de Referência e PontuaçõesCobertura de Limites e ControleRecapitulação - Auditoria do SomadorPratique por conta própria: Compilador de Verilog online