Récapitulatif - Testbench complet
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 78 sur 90.
Défi
Ce défi teste tout ce que vous avez appris sur les bancs d'essai (testbenches) : stimulus, display, monitor, dumpfile, dumpvars et les tâches système. On vous donne un module de porte XOR à tester.
Ce qu'il faut faire :
Créez un banc d'essai complet qui :
- Déclare les signaux (
regpour les entrées,wirepour la sortie) - Instancie la porte XOR avec le nom
dut - Crée un fichier de forme d'onde nommé
xor_waveform.vcd - Enregistre (dump) tous les signaux dans le banc d'essai
- Affiche un en-tête : "Testing XOR Gate"
- Utilise
$monitorpour suivre le temps, x, y et z - Teste les quatre combinaisons d'entrée (00, 01, 10, 11) avec un délai de
#10entre chacune - Affiche "Test complete" à la fin
- Termine la simulation avec
$finish
Essayez vous-même
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// À FAIRE : Déclarer reg pour x et y
// À FAIRE : Déclarer wire pour z
// À FAIRE : Instancier xor_gate avec le nom dut
// Connecter .x(x), .y(y), .z(z)
initial begin
// À FAIRE : Ajouter $dumpfile "xor_waveform.vcd"
// À FAIRE : Ajouter $dumpvars (0, testbench)
// À FAIRE : Ajouter $display "Testing XOR Gate"
// À FAIRE : Ajouter $monitor pour time, x, y, z
// Format : "Time %0t: x=%b, y=%b, z=%b"
// À FAIRE : Ajouter des stimuli pour les quatre combinaisons
// 00, 01, 10, 11 avec un délai #10
// À FAIRE : Ajouter $display "Test complete"
// À FAIRE : Ajouter $finish
end
endmoduleToutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles14Les bases du Testbench
Qu'est-ce qu'un TestbenchCréation de stimuliDisplay et MonitorDumpfile et DumpvarsUtilisation des tâches systèmeRécapitulatif - Testbench complet3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états