# Монитор

`$monitor` выводит в консоль текст каждый раз, когда изменяется один из аргументов. Новая строка автоматически добавляется к тексту.

Важным отличием от `$display` является то, что тот выводит данные только 1 раз, а `$monitor` – в конце каждого цикла симуляции.

`$monitoron` и `$monitoroff` управляют флагом, который включает и отключает мониторинг соответственно.

<table data-header-hidden data-full-width="true"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><em>Пример <code>monitor</code></em></td><td><em>Пример <code>monitor on/off</code></em></td></tr><tr><td><pre class="language-verilog" data-overflow="wrap" data-line-numbers><code class="lang-verilog">`timescale 10 ns / 1 ns
module monitor_tb;
  logic set;
  parameter p = 1.55;
  initial begin
    $monitor("[%3t]:[%4g]: set=%b", $time, $realtime, set);
  end

initial begin
repeat (3) begin
\#p set = 0;
\#p set = 1;
end
end
endmodule </code></pre></td><td><pre class="language-verilog" data-overflow="wrap" data-line-numbers><code class="lang-verilog">\`timescale 10 ns / 1 ns
module monitor\_on\_off\_tb;
logic set;
parameter p = 1.55;
initial begin
$monitor("\[%3t]:\[%4g]: set=%b", $time, $realtime, set);
\#3 $monitoroff();
\#3 $monitoron();
end

initial begin
repeat (3) begin
\#p set = 0;
\#p set = 1;
end
end
endmodule </code></pre></td></tr><tr><td><em>Результат исполнения</em></td><td><em>Результат исполнения</em></td></tr><tr><td><pre class="language-log" data-overflow="wrap" data-line-numbers><code class="lang-log">\[  0]:\[   0]: set=x
\[ 20]:\[ 1.6]: set=0
\[ 30]:\[ 3.2]: set=1
\[ 50]:\[ 4.8]: set=0
\[ 60]:\[ 6.4]: set=1
\[ 80]:\[   8]: set=0
\[100]:\[ 9.6]: set=1 </code></pre></td><td><pre class="language-log" data-overflow="wrap" data-line-numbers><code class="lang-log">\[  0]:\[   0]: set=x
\[ 20]:\[ 1.6]: set=0
\[ 60]:\[   6]: set=0
\[ 60]:\[ 6.4]: set=1
\[ 80]:\[   8]: set=0
\[100]:\[ 9.6]: set=1 </code></pre></td></tr></tbody></table>
