verilog之monitor

Posted on 2020-07-25 22:17  绿叶落秋风  阅读(4243)  评论(0编辑  收藏  举报

verilog之monitor

1、函数作用

monitor用于追踪变量的变化情况,这在实际使用中还是非常实用的。电路中的某个信号的变化可以通过monitor检测,不需要使用波形图去仔细查找。也便于准确描述某个信号的变化。

2、基本用法

module monitor;
      reg a_monitor;
      reg b_monitor;

      initial begin
          a_monitor=1;
          b_monitor=0;
          $monitor($time,,"a= %b",a_monitor);
          $monitor($time,,"b= %b",b_monitor);
          //$monitor($realtime,,"a=%b,b=%b",a_monitor,b_monitor);
          #1
          a_monitor=0;
          #1
          b_monitor=1;
          #1
          a_monitor=1;
          b_monitor=0;
          #10
          $stop;
      end
endmodule

monitor具有单一进程性,即monitor只会执行一次,由monitoroff结束。同时使用两个monitor会自动关闭前面的一个。上面的结果如下:

run -all
#                    0 b= 0
#                    2 b= 1
#                    3 b= 0
# ** Note: $stop    : D:/Library/verilog_soft/P1_function/H2_monitor/monitor.v(19)
#    Time: 13 ns  Iteration: 0  Instance: /monitor

注意stop函数先于monitor,如果stop同时有变量变化,是不会出现在结果中的。

需要检测多个变量时使用多参数形式。使用time和realtime(带小数)可以将时间显示出来,用于凸显时序。

3、总结

monitor是一个自动检测函数,可以弥补display必须在需要显示的地方插入才能跟踪的缺点。使用monitor可以对某些关键变量的变化起到准确描述作用。