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 | Только сигналы в указанном модуле (без подмодулей) |
Задание
Добавьте недостающие операторы $dumpfile и $dumpvars для создания файла временных диаграмм.
Что нужно сделать:
- Добавьте
$dumpfileдля создания файла с именем"waveform.vcd" - Добавьте
$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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам14Основы Testbench
Что такое TestbenchСоздание стимуловDisplay и MonitorDumpfile и DumpvarsИспользование системных задачИтоги: полный Testbench3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial