Dumpfile et Dumpvars
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 76 sur 90.
Les formes d’onde sont la représentation visuelle des changements des signaux au cours du temps. Une forme d’onde affiche comment les signaux (comme clk, a, b, out) changent pendant la simulation. L’axe horizontal représente le temps, et l’axe vertical représente les valeurs des signaux (0, 1, X, Z).
$dumpfile et $dumpvars sont des tâches système utilisées pour créer un fichier de formes d’onde (fichier VCD) que vous pouvez consulter dans un visualiseur de formes d’onde comme GTKWave. VCD signifie Value Change Dump. Il s’agit d’un fichier qui enregistre toutes les modifications des signaux pendant la simulation. Vous pouvez ouvrir ce fichier dans un visualiseur de formes d’onde pour voir les signaux visuellement.
$dumpfile
$dumpfile spécifie le nom du fichier de formes d’onde à créer.
Syntaxe :
$dumpfile("filename.vcd");Exemple :
$dumpfile("my_waveform.vcd");Cela crée un fichier nommé my_waveform.vcd.
$dumpvars
$dumpvars spécifie quels signaux enregistrer dans le fichier de forme d’onde.
Syntaxe :
$dumpvars(level, module_name);| Paramètre | Signification |
|---|---|
level | Nombre de niveaux hiérarchiques à dumper (0 = tous les niveaux) |
module_name | Module depuis lequel dumper les signaux |
Remarque : La hiérarchie désigne les modules à l’intérieur d’autres modules. Utiliser 0 sauvegarde tous les signaux du module supérieur et de chaque module qu’il contient, tandis que 1 sauvegarde uniquement les signaux du module supérieur.
Utilisation courante
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ crée un fichier nommédump.vcd$dumpvars(0, testbench)→ enregistre tous les signaux du moduletestbenchet de tous les sous-modules
Exemple avec banc de test
module or_gate (
input x,
input y,
output z
);
assign z = x | y;
endmodule
module testbench;
reg x, y;
wire z;
or_gate dut (
.x(x),
.y(y),
.z(z)
);
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
$display("Creating waveform file...");
x = 0; y = 0; #10;
x = 0; y = 1; #10;
x = 1; y = 0; #10;
x = 1; y = 1; #10;
$finish;
end
endmoduleExemples de niveaux de dumpvars
| Niveau | Éléments enregistrés |
|---|---|
0 | Tous les signaux du module et de tous les sous-modules |
1 | Uniquement les signaux du module spécifié (pas ceux des sous-modules) |
Défi
Ajoutez les instructions $dumpfile et $dumpvars manquantes pour créer un fichier de forme d’onde.
À faire :
- Ajoutez
$dumpfilepour créer un fichier nomméwaveform.vcd - Ajoutez
$dumpvarspour vider tous les signaux du moduletestbench
Essayez vous-même
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
reg a, b;
wire c;
and_gate dut (
.a(a),
.b(b),
.c(c)
);
initial begin
// TODO: Ajoutez $dumpfile pour créer "waveform.vcd"
// TODO: Ajoutez $dumpvars pour dumper tous les signaux dans testbench
// Astuce : $dumpvars(0, testbench);
if ($test$plusargs("vcd")) begin
$display("VCD file created successfully");
end
$display("Simulation running...");
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
$display("Simulation complete. Open waveform.vcd");
$finish;
end
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une 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 RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles14Bases du banc de test
Qu'est-ce qu'un banc de testCréer des stimuliAffichage et surveillanceDumpfile et DumpvarsUtiliser les tâches systèmeRécapitulatif - Banc de test complet3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne