Tarefas de Verificação Reutilizáveis
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 27 de 38.
Uma task de Verilog agrupa trabalho procedural e pode retornar resultados por meio de argumentos de saída ou de entrada e saída. As tasks do testbench reduzem verificações duplicadas. Diferentemente de uma function combinacional, uma task pode incluir controles de temporização quando apropriado, mas essas tasks de verificação realizam apenas comparações de tempo zero. Use tasks automáticas se chamadas concorrentes separadas precisarem de armazenamento local independente; as chamadas fornecidas aqui são sequenciais.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
task check_value;
input [7:0] actual,expected;
output ok;
begin ok = (actual === expected); end
endtaskO chamador recebe o resultado da verificação por meio de um argumento de saída explícito.
Defina as direções dos argumentos de task e redefina as variáveis de resultado por chamada antes de coletar as falhas.
Desafio
MédioImplemente check_value para que ok seja um quando actual e expected coincidirem sob igualdade de quatro estados e zero caso contrário. Este módulo contém uma task somente para simulação, chamada pelo testbench bloqueado. Colunas de saída: ok.
Complete design.v e preserve os nomes dos módulos e as portas. O testbench.v bloqueado fornece as alterações de entrada 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 entrada padrão. Mantenha a impressão e o controle do cenário no testbench bloqueado; implemente somente o corpo da task. 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;
task check_value;
input [7:0] actual,expected;
output ok;
begin
// Complete a tarefa do checker.
ok=0;
end
endtask
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