Dumpfile And Dumpvars
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 76 de 90.
Formas de onda são a representação visual das mudanças dos sinais ao longo do tempo. Uma forma de onda mostra como os sinais (como clk, a, b, out) mudam durante a simulação. O eixo horizontal mostra o tempo, e o eixo vertical mostra os valores dos sinais (0, 1, X, Z).
$dumpfile e $dumpvars são tarefas do sistema usadas para create um waveform file (arquivo VCD) que você pode visualizar em um visualizador de waveform, como o GTKWave. VCD significa Value Change Dump. É um arquivo que registra todas as alterações dos sinais durante a simulação. Você pode abrir esse arquivo em um visualizador de waveform para ver os sinais visualmente.
$dumpfile
$dumpfile especifica o nome do arquivo de waveform a ser criado.
Sintaxe:
$dumpfile("filename.vcd");Exemplo:
$dumpfile("my_waveform.vcd");Isso cria um file chamado my_waveform.vcd.
$dumpvars
$dumpvars especifica quais sinais devem ser registrados no arquivo de waveform.
Sintaxe:
$dumpvars(level, module_name);| Parâmetro | Significado |
|---|---|
level | Quantos níveis da hierarquia devem ser despejados (0 = todos os níveis) |
module_name | De qual módulo despejar os sinais |
Observação: hierarquia significa módulos dentro de outros módulos. Usar 0 despeja todos os sinais do módulo superior e de todos os módulos dentro dele, enquanto 1 despeja apenas os sinais do módulo superior.
Uso comum
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ cria o arquivo chamadodump.vcd$dumpvars(0, testbench)→ despeja todos os sinais no módulotestbenche em todos os submódulos
Exemplo com 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
endmoduleExemplos de nível de dumpvars
| Level | O que é despejado |
|---|---|
0 | Todos os sinais no módulo e em todos os submódulos |
1 | Apenas os sinais no módulo especificado (não nos submódulos) |
Desafio
Adicione as instruções $dumpfile e $dumpvars ausentes para criar um arquivo de waveform.
O que fazer:
- Adicione
$dumpfilepara criar um arquivo chamadowaveform.vcd - Adicione
$dumpvarspara fazer o dump de todos os sinais no módulotestbench
Experimente você mesmo
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: Adicione $dumpfile para criar "waveform.vcd"
// TODO: Adicione $dumpvars para despejar todos os sinais no testbench
// Dica: $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
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operators 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 LogicPratique por conta própria: Compilador de Verilog online