Menu
Coddy logo textTech

Dumpfile и Dumpvars

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

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

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

$dumpfile

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

Синтаксис:

$dumpfile("filename.vcd");

Пример:

$dumpfile("my_waveform.vcd");

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

$dumpvars

$dumpvars определяет, какие сигналы записывать в файл временных диаграмм.

Синтаксис:

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

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

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

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → создает файл с именем dump.vcd
  • $dumpvars(0, 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

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

Задание

Добавьте недостающие операторы $dumpfile и $dumpvars для создания файла временных диаграмм.

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

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

Шпаргалка

Используйте $dumpfile и $dumpvars внутри блока initial для генерации файла временных диаграмм VCD (Value Change Dump) для просмотра в таких инструментах, как GTKWave:

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

Уровни $dumpvars(level, module_name):

  • 0 — все сигналы в модуле и во всех подмодулях
  • 1 — только сигналы в указанном модуле (без подмодулей)

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

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Проверьте себя

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

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