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 | Только сигналы в указанном модуле (не в подмодулях) |
Задание
Добавь недостающие операторы $dumpfile и $dumpvars, чтобы создать файл с временной диаграммой.
Что нужно сделать:
- Добавь
$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