Menu
Coddy logo textTech

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 affiche comment les signaux (comme clk, a, b, out) évoluent 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 forme d'onde (fichier VCD) que vous pouvez visualiser dans un visionneur de formes d'onde comme GTKWave. VCD signifie Value Change Dump. Il s'agit d'un fichier qui enregistre tous les changements de signaux pendant la simulation. Vous pouvez ouvrir ce fichier dans un visionneur de formes d'onde pour observer les signaux de manière visuelle.

$dumpfile

$dumpfile spécifie le nom du fichier de forme d'onde (waveform) à créer.

Saxe :

$dumpfile("filename.vcd");

Exemple :

$dumpfile("my_waveform.vcd");

Cela crée un fichier appelé my_waveform.vcd.

$dumpvars

$dumpvars spécifie les signaux à enregistrer dans le fichier de forme d'onde.

Syntaxe :

$dumpvars(level, module_name);
ParameterMeaning
levelCombien de niveaux de hiérarchie inclure dans le dump (0 = tous les niveaux)
module_nameDe quel module inclure les signaux dans le dump

Remarque : La hiérarchie désigne des modules situés à l'intérieur d'autres modules. L'utilisation de 0 génère le dump de tous les signaux du module supérieur ainsi que de chaque module qu'il contient, tandis que 1 génère uniquement le dump des signaux du module supérieur.

Utilisation courante

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → crée le fichier nommé dump.vcd
  • $dumpvars(0, testbench) → extrait 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

NiveauCe qui est capturé
0Tous les signaux du module et de tous les sous-modules
1Uniquement les signaux du module spécifié (pas les sous-modules)
challenge icon

Défi

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

Ce qu'il faut faire :

  1. Ajoutez $dumpfile pour créer un fichier nommé waveform.vcd
  2. Ajoutez $dumpvars pour enregistrer tous les signaux dans le 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