Recapitulação - Testbench Completo
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 78 de 90.
Desafio
Este desafio testa tudo o que você aprendeu sobre testbenches: stimulus, display, monitor, dumpfile, dumpvars e system tasks. Você recebeu um módulo de porta XOR para testar.
O que fazer:
Crie um testbench completo que:
- Declara sinais (
regpara entradas,wirepara saída) - Instancia a porta XOR com o nome
dut - Cria um arquivo de forma de onda chamado
xor_waveform.vcd - Gera o dump de todos os sinais no testbench
- Imprime um cabeçalho: "Testing XOR Gate"
- Usa
$monitorpara rastrear time, x, y, e z - Testa todas as quatro combinações de entrada (00, 01, 10, 11) com um atraso de
#10entre cada uma - Imprime "Test complete" ao final
- Encerra a simulação com
$finish
Experimente você mesmo
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// TODO: Declarar reg para x e y
// TODO: Declarar wire para z
// TODO: Instanciar xor_gate com o nome dut
// Conectar .x(x), .y(y), .z(z)
initial begin
// TODO: Adicionar $dumpfile "xor_waveform.vcd"
// TODO: Adicionar $dumpvars (0, testbench)
// TODO: Adicionar $display "Testing XOR Gate"
// TODO: Adicionar $monitor para time, x, y, z
// Formato: "Time %0t: x=%b, y=%b, z=%b"
// TODO: Adicionar estímulos para todas as quatro combinações
// 00, 01, 10, 11 com atraso #10
// TODO: Adicionar $display "Test complete"
// TODO: Adicionar $finish
end
endmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores14Fundamentos de Testbench
O que é um TestbenchCriando EstímulosDisplay e MonitorDumpfile e DumpvarsUsando Tarefas de SistemaRecapitulação - Testbench Completo3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo