Menu
CoddyTech

Dumpfile и Dumpvars

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

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

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

$dumpfile

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

Синтаксис:

$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

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

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

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog