Dumpfile и Dumpvars
Часть раздела Основы путешествия по Verilog на Coddy. Урок 76 из 90.
Waveform — это визуальное представление изменений сигналов во времени. Waveform показывает, как сигналы (например, clk, a, b, out) изменяются во время симуляции. Горизонтальная ось показывает время, а вертикальная ось показывает значения сигналов (0, 1, X, Z).
$dumpfile и $dumpvars — системные задачи, используемые для создания файла waveform (VCD-файла), который можно просматривать в таком просмотрщике waveform, как GTKWave. VCD расшифровывается как Value Change Dump. Это файл, в котором записываются все изменения сигналов во время симуляции. Вы можете открыть этот файл в просмотрщике waveform, чтобы визуально увидеть сигналы.
$dumpfile
$dumpfile задаёт имя файла waveform для создания.
Синтаксис:
$dumpfile("filename.vcd");Пример:
$dumpfile("my_waveform.vcd");Это создаёт файл с именем my_waveform.vcd.
$dumpvars
$dumpvars указывает, какие сигналы записывать в файл waveform.
Синтаксис:
$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
| level | Что записывается |
|---|---|
0 | Все сигналы в модуле и всех sub-модулях |
1 | Только сигналы в указанном модуле (не в sub-модулях) |
Задание
Добавьте отсутствующие операторы $dumpfile и $dumpvars, чтобы создать файл waveform.
Что нужно сделать:
- Добавьте
$dumpfile, чтобы создать файл с именемwaveform.vcd - Добавьте
$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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов14Основы тестбенча
Что такое тестбенчСоздание стимуловОтображение и мониторингDumpfile и DumpvarsИспользование системных задачПовторение — полный тестбенч3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog