Dumpfile And 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Аппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge14Testbench Basics
What Is A TestbenchCreating StimulusDisplay And MonitorDumpfile And DumpvarsUsing System TasksRecap - Full Testbench3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog