Menu
Coddy logo textTech

Display e Monitor

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 75 de 90.

$display e $monitor são tarefas de sistema usadas para imprimir informações da sua simulação. Elas ajudam você a ver o que está acontecendo dentro do seu projeto.

$display

O $display imprime uma mensagem uma única vez no momento em que é executado.

Sintaxe:

$display("message", variables);

Exemplo:

initial begin
  $display("Simulation started");
  #10;
  $display("Time 10");
  #10;
  $display("Time 20");
end

Saída:

Simulation started
Time 10
Time 20

$monitor

O $monitor imprime uma mensagem automaticamente sempre que qualquer uma de suas variáveis mudar.

Sintaxe:

$monitor("message", variables);

Exemplo:

initial begin
  a = 0; b = 0;
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
  #10 a = 0;
end

Saída:

Time 0: a=0, b=0
Time 10: a=1, b=0
Time 20: a=1, b=1
Time 30: a=0, b=1

$display vs $monitor

 $display$monitor
Quando imprimeUma vez quando executadoSempre que uma variável muda
Quantas vezesTantas vezes quanto for chamadoContinuamente (até ser alterado)
Usado paraCabeçalhos, mensagens de testeRastreamento de sinais em mudança

Especificadores de Formato Comuns

EspecificadorSignificadoExemplo
%bBinário$display("%b", a);
%dDecimal$display("%d", count);
%hHexadecimal$display("%h", data);
%tTempo$display("%t", $time);
%0tTempo (sem espaços)$display("%0t", $time);
%sString$display("%s", "Hello");

Regras Importantes

RegraExplicação
$display imprime uma vezBom para cabeçalhos e resultados finais
$monitor imprime na mudançaBom para observar sinais
Apenas um $monitor ativoO último substitui o anterior
Use $finish para pararCaso contrário, a simulação pode rodar para sempre
challenge icon

Desafio

Adicione as instruções $display e $monitor que faltam neste testbench.

O que fazer:

  1. Adicione $display para imprimir um cabeçalho: "Testing OR Gate"
  2. Adicione $monitor para imprimir o tempo, x, y e z sempre que qualquer sinal mudar. Formato: "Time %0t: x=%b, y=%b, z=%b"
  3. Adicione $display ao final para imprimir "Test complete"

Folha de consulta

$display imprime uma vez quando executado; $monitor imprime automaticamente sempre que qualquer uma de suas variáveis muda.

$display("message", variables);
$monitor("message", variables);

Exemplo:

initial begin
  $display("Simulation started");
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
end

Especificadores de formato comuns:

  • %b — Binário
  • %d — Decimal
  • %h — Hexadecimal
  • %t / %0t — Tempo (com/sem preenchimento)
  • %s — String

Regras principais:

  • Apenas um $monitor fica ativo por vez — o último sobrescreve os anteriores.
  • Use $finish para parar a simulação.

Experimente você mesmo

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
    // TODO: Adicionar cabeçalho $display "Testing OR Gate"
    
    
    // TODO: Adicionar $monitor para monitorar tempo, x, y, z
    // Formato: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Aplicar estímulos
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // TODO: Adicionar $display "Test complete"
    
    
    $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