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 do 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 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 exibe 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 quantas você o chamarContinuamente (até ser alterado)
Usado paraCabeçalhos, mensagens de testeAcompanhar sinais em mudança

Especificadores de Format Comuns

EspecificadorSignificadoExample
%bBinary$display("%b", a);
%dDecimal$display("%d", count);
%hHexadecimal$display("%h", data);
%tTime$display("%t", $time);
%0tTime (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 ao mudarBom para observar sinais
Apenas um $monitor ativoO último sobrescreve o anterior
Use $finish para pararCaso contrário, a simulação pode executar para sempre
challenge icon

Desafio

Adicione as instruções $display e $monitor que estão faltando 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"

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