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 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 criar um arquivo de formas de onda (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 dos sinais durante a simulação. Você pode abrir esse arquivo em um visualizador de formas de onda para ver os sinais visualmente.
$dumpfile
$dumpfile especifica o nome do arquivo de formas 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 registrar no arquivo de formas de onda.
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íveis de Dumpvars
| Nível | 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 formas 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 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 projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
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ões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores14Fundamentos de Testbench
O Que É um TestbenchCriando EstímulosExibição e MonitoramentoDumpfile e DumpvarsUsando Tarefas do SistemaRecapitulação — Testbench Completo3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online