Сохранение состояния симуляции

$dumpfile используется для сохранения изменений в значениях переменных и проводов в файл, имя которого указано в качестве аргумента. $dumpvars отвечает за то, какие именно значения будут записаны в файл. $dumpon и $dumpoff включает и выключает флаг сохранения, аналогично флагу мониторинга в командах $monitoron и $monitoroff.

Без указания аргументов в $dumpvars будут записываться все значения в моделируемой системе. Если первым аргументом указан 0, за которым следует перечисление названий модулей, то будут записываться все значения этого модуля и всех модулей нижестоящих уровней, инстанцированных в текущем модуле. Если какой-либо модуль не создан этим модулем, то его переменные не будут учитываться. Помимо модуля верхнего уровня можно указать модули, которые не инстанцированы в этом модуле.

Чтобы записывать только сигналы в определённом модуле, указывается первым аргументом 1 и вторым – название модуля.

Если указать первым аргументом 2, а затем имя модуля, то будут записываться все переменные указанного модуля и модулей, инстанцированных в том на один уровень ниже.

Синтаксис

$dumpfile (filename);
$dumpvars;
$dumpvars (level, scope);

Пример

module dumpfile_tb;
  reg a, b, c, d;

  initial begin
    repeat (5) begin
      #1; c = b & a;
      d = a | b;
    end        
  end

  initial begin
    #2 a = 0; b = 1;
    #2 a = 1'bz; b = 1'bz;
  end

  initial begin
    $dumpfile("dump.vcd");
    $dumpvars(0, dumpfile_tb);
    #10 $finish;
  end
endmodule

Временная диаграмма

На рисунках ниже стрелками обозначено, что модуль инстанцирован в другом. Выделение жёлтым показывает, значения из каких модулей будут записываться в файл.

$dumpvars; $dumpvars(0, module2);

$dumpvars(0, top_level_module, module0);

$dumpvars(0, top_level_module);

$dumpvars(0, module2);

$dumpvars(1, module2);

$dumpvars(2, top_level_module);

Last updated