Dumpfile e 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 de sinal ao longo do tempo. Uma forma de onda exibe 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 do sinal (0, 1, X, Z).
$dumpfile e $dumpvars são tarefas de sistema usadas para criar um arquivo de forma de onda (arquivo VCD) que você pode visualizar em um visualizador de forma de onda como o GTKWave. VCD significa Value Change Dump. É um arquivo que registra todas as mudanças de sinal durante a simulação. Você pode abrir este arquivo em um visualizador de forma de onda para ver os sinais visualmente.
$dumpfile
$dumpfile especifica o nome do arquivo de forma de onda a ser criado.
Sintaxe:
$dumpfile("filename.vcd");Exemplo:
$dumpfile("my_waveform.vcd");Isso cria um arquivo chamado my_waveform.vcd.
$dumpvars
$dumpvars especifica quais sinais gravar no arquivo de forma de onda.
Sintaxe:
$dumpvars(level, module_name);| Parâmetro | Significado |
|---|---|
level | Quantos níveis de hierarquia despejar (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 de topo e de cada módulo dentro dele, enquanto 1 despeja apenas os sinais do módulo de topo.
Uso Comum
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ cria o arquivo chamadodump.vcd$dumpvars(0, testbench)→ grava todos os sinais no módulotestbenche 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 Dumpvars
| Nível | O que é incluído no dump |
|---|---|
0 | Todos os sinais no módulo e em todos os submódulos |
1 | Apenas sinais no módulo especificado (não submódulos) |
Desafio
Adicione as instruções $dumpfile e $dumpvars que faltam para criar um arquivo de forma de onda.
O que fazer:
- Adicione
$dumpfilepara criar um arquivo chamado"waveform.vcd" - Adicione
$dumpvarspara realizar o dump de todos os sinais no módulotestbench
Folha de consulta
Use $dumpfile e $dumpvars dentro de um bloco initial para gerar um arquivo de forma de onda VCD (Value Change Dump) para visualização em ferramentas como o GTKWave:
initial begin
$dumpfile("dump.vcd"); // cria o arquivo VCD
$dumpvars(0, testbench); // gera o dump de todos os sinais no testbench e sub-módulos
endNíveis de $dumpvars(level, module_name):
0— todos os sinais no módulo e em todos os sub-módulos1— apenas sinais no módulo especificado (sem sub-módulos)
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: Adicionar $dumpfile para criar "waveform.vcd"
// TODO: Adicionar $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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores14Fundamentos de Testbench
O que é um TestbenchCriando EstímulosDisplay e MonitorDumpfile e DumpvarsUsando Tarefas de SistemaRecapitulação - Testbench Completo3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo