Dumpfile e Dumpvars
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 76 de 90.
Waveforms são a representação visual das mudanças de sinais ao longo do tempo. Uma waveform 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 dos sinais (0, 1, X, Z).
$dumpfile e $dumpvars são tarefas de sistema usadas para criar um waveform file (arquivo VCD) que você pode visualizar em um visualizador de formas de onda como o GTKWave. VCD significa Value Change Dump. É um arquivo que registra todas as alterações de sinais durante a simulação. Você pode abrir este arquivo em um visualizador de formas de onda para ver os sinais visualmente.
$dumpfile
$dumpfile especifica o nome do arquivo de forma de onda (waveform) a ser criado.
Sintaxe:
$dumpfile("filename.vcd");Exemplo:
$dumpfile("my_waveform.vcd");Isso cria um arquivo chamado my_waveform.vcd.
$dumpvars
$dumpvars especifica quais signals gravar no waveform file.
Sintaxe:
$dumpvars(level, module_name);| Parameter | Meaning |
|---|---|
level | Quantos níveis de hierarquia registrar (0 = todos os níveis) |
module_name | De qual módulo registrar os sinais |
Nota: Hierarquia significa módulos dentro de outros módulos. Usar 0 gera o dump de todos os sinais do módulo superior e de cada módulo dentro dele, enquanto 1 gera o dump apenas dos 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)→ faz o dump de 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 de Dumpvars
| Nível | O Que É Copiado (Dump) |
|---|---|
0 | Todos os sinais no módulo e em todos os sub-módulos |
1 | Apenas sinais no módulo especificado (não sub-módulos) |
Desafio
Adicione as instruções $dumpfile e $dumpvars que estão faltando para criar um arquivo de forma de onda.
O que fazer:
- Adicione
$dumpfilepara criar um arquivo chamadowaveform.vcd - Adicione
$dumpvarspara registrar 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 em 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