Menu
CoddyTech

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 de signaux au fil du temps. Une forme d’onde montre 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 tu peux consulter dans un visualiseur de formes d’onde comme GTKWave. VCD signifie vidage des changements de valeur. C’est un fichier qui enregistre tous les changements de signaux pendant la simulation. Tu peux 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 appelé my_waveform.vcd.

$dumpvars

$dumpvars spécifie quels signaux enregistrer dans le fichier de chronogramme.

Syntaxe :

$dumpvars(level, module_name);
ParamètreSignification
levelNombre de niveaux hiérarchiques à enregistrer (0 = tous les niveaux)
module_nameModule dont les signaux doivent être enregistrés

Remarque : la hiérarchie désigne les modules contenus dans d’autres modules. Utiliser 0 enregistre tous les signaux du module de premier niveau et de chaque module qu’il contient, tandis que 1 enregistre uniquement les signaux du module de premier niveau.

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 ses sous-modules

Exemple avec un 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
endmodule

Exemples de niveaux de dumpvars

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

Défi

Ajoute les instructions $dumpfile et $dumpvars manquantes pour créer un fichier de chronogrammes.

À faire :

  1. Ajoute $dumpfile pour créer un fichier nommé waveform.vcd
  2. Ajoute $dumpvars pour enregistrer 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 enregistrer 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