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: estímulo, exibição, monitoramento, dumpfile, dumpvars e tarefas do sistema. Você recebeu um módulo de porta XOR para testar.
O que fazer:
Crie um testbench completo que:
- Declare sinais (
regpara entradas,wirepara saída) - Instancie a porta XOR com o nome
dut - Crie um arquivo de forma de onda chamado
xor_waveform.vcd - Despeje todos os sinais do testbench
- Imprima um cabeçalho: "Testing XOR Gate"
- Use
$monitorpara acompanhar time, x, y e z - Teste todas as quatro combinações de entrada (00, 01, 10, 11), com um atraso de
#10entre cada uma - Imprima "Test complete" ao final
- Encerre 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ímulo para todas as quatro combinações
// 00, 01, 10, 11 com atraso #10
// TODO: Adicionar $display "Test complete"
// TODO: Adicione $finish
end
endmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
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ões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores14Fundamentos de Testbench
O Que É um TestbenchCriando EstímulosExibição e MonitoramentoDumpfile e DumpvarsUsando Tarefas do SistemaRecapitulação — Testbench Completo3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online