Menu
Coddy logo textTech

Dumpfile And 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 afficher 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 waveform à 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ètreSignification
levelNombre de niveaux hiérarchiques à dumper (0 = tous les niveaux)
module_nameModule 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 module testbench et de tous les sous-modules

Exemple avec testbench

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
endmodule

Exemples de niveaux de dumpvars

NiveauÉléments sauvegardés
0Tous les signaux du module et de tous les sous-modules
1Uniquement les signaux du module spécifié (pas ceux des sous-modules)
challenge icon

Défi

Ajoutez les instructions $dumpfile et $dumpvars manquantes pour créer un fichier de forme d’onde.

À faire :

  1. Ajoutez $dumpfile pour créer un fichier nommé waveform.vcd
  2. Ajoutez $dumpvars pour vider tous les signaux du module testbench

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
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne