Escrevendo o Testbench
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 45 de 90.
Desafio
Agora precisamos testar se o somador completo (half adder) está funcionando corretamente. Adicione o código de teste dentro do bloco initial.
Importante: Antes de adicionar o teste, você deve alterar as portas do módulo para que o teste funcione corretamente.
O que fazer:
Passo 1: Alterar as declarações de porta
- Altere
input a, bparareg a, b(use o ponto e vírgula) - Altere
output sum, carryparawire sum, carry(use o ponto e vírgula) - Remova as portas do módulo inteiramente (o módulo não deve ter
( ))
Passo 2: Adicionar o código de teste
- Adicione um bloco
initial begin - Dentro do bloco, adicione:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- Adicione
$finish;para encerrar o teste - Adicione
endpara fechar o bloco initial
Experimente você mesmo
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
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 Operadores3Sistemas 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