Menu
Coddy logo textTech

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âmetroSignificado
levelQuantos níveis da hierarquia devem ser despejados (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 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 chamado dump.vcd
  • $dumpvars(0, testbench) → despeja todos os sinais no módulo testbench e 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
endmodule

Exemplos de nível de dumpvars

LevelO que é despejado
0Todos os sinais no módulo e em todos os submódulos
1Apenas os sinais no módulo especificado (não nos submódulos)
challenge icon

Desafio

Adicione as instruções $dumpfile e $dumpvars ausentes para criar um arquivo de waveform.

O que fazer:

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

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
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

Pratique por conta própria: Compilador de Verilog online