Menu
Coddy logo textTech

Dumpfile и Dumpvars

Часть раздела Основы путешествия по Verilog на Coddy — урок 76 из 90.

Временные диаграммы (сигналы) — это визуальное представление изменений сигналов во времени. Диаграмма показывает, как сигналы (такие как clk, a, b, out) меняются в процессе симуляции. Горизонтальная ось показывает время, а вертикальная — значения сигналов (0, 1, X, Z).
 

$dumpfile и $dumpvars — это системные задачи, используемые для создания waveform-файла (VCD-файла), который вы можете просмотреть в программе просмотра временных диаграмм, такой как GTKWave. VCD расшифровывается как Value Change Dump. Это файл, который записывает все изменения сигналов во время симуляции. Вы можете открыть этот файл в программе просмотра временных диаграмм, чтобы увидеть сигналы визуально.

$dumpfile

$dumpfile указывает имя файла waveform, который необходимо создать.

Синтаксис:

$dumpfile("filename.vcd");

Пример:

$dumpfile("my_waveform.vcd");

Это создаёт файл с именем my_waveform.vcd.

$dumpvars

$dumpvars указывает, какие signals записывать в waveform file.

Синтаксис:

$dumpvars(level, module_name);
ПараметрЗначение
levelСколько уровней иерархии выгружать (0 = все уровни)
module_nameИз какого модуля выгружать сигналы

Примечание: Иерархия означает modules внутри других modules. Использование 0 dumps all signals из верхнего module и каждого module внутри него, в то время как 1 dumps только signals из верхнего module.

Типичное использование

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → создает файл с именем dump.vcd
  • $dumpvars(0, testbench) → записывает все сигналы в модуле testbench и всех подмодулях

Пример с 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

Примеры уровней Dumpvars

LevelЧто сохраняется в дамп
0Все сигналы в модуле и всех подмодулях
1Только сигналы в указанном модуле (без подмодулей)
challenge icon

Задание

Добавьте пропущенные инструкции $dumpfile и $dumpvars, чтобы создать файл waveform.

Что нужно сделать:

  1. Добавьте $dumpfile для создания файла с именем waveform.vcd
  2. Добавьте $dumpvars для выгрузки всех сигналов в модуле testbench

Попробуйте сами

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: Добавьте $dumpfile для создания "waveform.vcd"
    
    
    // TODO: Добавьте $dumpvars для дампа всех сигналов в testbench
    // Подсказка: $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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы