Valores padrão evitam latches
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 1 de 38.
Uma saída combinacional deve ser atribuída para cada caminho de entrada. Se um bloco always deixar de atribuir uma saída, essa saída manterá seu valor antigo, o que pode inferir um latch. Uma atribuição default seguida de substituições torna a cobertura visível.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
always @* begin
y = 0;
if (en) y = data;
endO default abrange o caminho desabilitado, portanto a saída depende apenas das entradas atuais.
Atribua cada saída combinacional em todos os caminhos; use valores padrão antes das substituições condicionais.
Desafio
MédioImplemente uma saída de 8 bits controlada: quando en for um, y será igual a a; caso contrário, y será zero. Atribua um valor a y em todos os caminhos combinacionais. Colunas de saída: y. Todos os valores de estímulo são valores binários conhecidos.
Complete design.v e preserve os nomes e as portas do módulo. 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 uma 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 en, input [7:0] a, output reg [7:0] y);
// Substitua este placeholder pelo seu design.
initial y = 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 SinalPratique por conta própria: Compilador de Verilog online