Menu
Coddy logo textTech

Dumpfile i Dumpvars

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 76 z 90.

Przebiegi są wizualną reprezentacją zmian sygnałów w czasie. Przebieg pokazuje, jak sygnały (takie jak clk, a, b, out) zmieniają się podczas symulacji. Oś pozioma przedstawia czas, a oś pionowa przedstawia wartości sygnałów (0, 1, X, Z).
 

$dumpfile i $dumpvars to zadania systemowe używane do tworzenia pliku przebiegu (pliku VCD), który możesz wyświetlić w przeglądarce przebiegów, takiej jak GTKWave. VCD to skrót od Value Change Dump. Jest to plik, w którym zapisywane są wszystkie zmiany sygnałów podczas symulacji. Możesz otworzyć ten plik w przeglądarce przebiegów, aby zobaczyć sygnały w formie wizualnej.

$dumpfile

$dumpfile określa nazwę tworzonego pliku przebiegu.

Składnia:

$dumpfile("filename.vcd");

Przykład:

$dumpfile("my_waveform.vcd");

Tworzy to plik o nazwie my_waveform.vcd.

$dumpvars

$dumpvars określa, które sygnały mają być zapisywane w pliku przebiegu.

Składnia:

$dumpvars(level, module_name);
ParametrZnaczenie
levelIle poziomów hierarchii zrzucić (0 = wszystkie poziomy)
module_nameZ którego modułu zrzucać sygnały

Uwaga: Hierarchia oznacza moduły wewnątrz innych modułów. Użycie 0 zapisuje wszystkie sygnały z modułu najwyższego poziomu i każdego modułu znajdującego się wewnątrz niego, a użycie 1 zapisuje tylko sygnały z modułu najwyższego poziomu.

Typowe zastosowanie

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → tworzy plik o nazwie dump.vcd
  • $dumpvars(0, testbench) → zapisuje wszystkie sygnały w module testbench i wszystkich podmodułach

Przykład z modułem testującym

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

Przykłady poziomów dumpvars

PoziomCo jest zrzucane
0Wszystkie sygnały w module i wszystkich podmodułach
1Tylko sygnały w określonym module (bez podmodułów)
challenge icon

Wyzwanie

Dodaj brakujące instrukcje $dumpfile i $dumpvars, aby utworzyć plik przebiegu sygnałów.

Co zrobić:

  1. Dodaj $dumpfile, aby utworzyć plik o nazwie waveform.vcd
  2. Dodaj $dumpvars, aby zrzucić wszystkie sygnały w module testbench

Spróbuj swoich sił

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: Dodaj $dumpfile, aby utworzyć "waveform.vcd"
    
    
    // TODO: Dodaj $dumpvars, aby zapisać wszystkie sygnały w testbench
    // Wskazówka: $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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online