Writing The Testbench
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 45 sur 90.
Défi
Nous devons maintenant tester si le half adder fonctionne correctement. Ajoutez le code de test à l’intérieur du bloc initial.
Important : Avant d’ajouter le test, vous devez modifier les ports du module afin que le test puisse fonctionner correctement.
À faire :
Étape 1 : Modifier les déclarations des ports
- Remplacez
input a, bparreg a, b(utilisez le point-virgule) - Remplacez
output sum, carryparwire sum, carry(utilisez le point-virgule) - Supprimez entièrement les ports du module (le module ne doit pas avoir de
( ))
Étape 2 : Ajouter le code de test
- Ajoutez un bloc
initial begin - À l’intérieur du bloc, ajoutez :
$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);
- Ajoutez
$finish;pour terminer le test - Ajoutez
endpour fermer le bloc initial
Essayez vous-même
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmoduleToutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne