Menu
Coddy logo textTech

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âmetroSignificado
levelQuantos níveis de hierarquia despejar (0 = todos os níveis)
module_nameDe 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 chamado dump.vcd
  • $dumpvars(0, testbench) → grava todos os sinais no módulo testbench e 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
endmodule

Exemplos de Nível Dumpvars

NívelO que é incluído no dump
0Todos os sinais no módulo e em todos os submódulos
1Apenas sinais no módulo especificado (não submódulos)
challenge icon

Desafio

Adicione as instruções $dumpfile e $dumpvars que faltam para criar um arquivo de forma de onda.

O que fazer:

  1. Adicione $dumpfile para criar um arquivo chamado "waveform.vcd"
  2. Adicione $dumpvars para realizar o dump de todos os sinais no módulo testbench

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
end

Níveis de $dumpvars(level, module_name):

  • 0 — todos os sinais no módulo e em todos os sub-módulos
  • 1 — 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
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos