verilog中$monitor 的用法

1、函数作用

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

2、基本用法

module monitor;
      reg a_monitor;
      reg b_monitor;

      initial begin
          a_monitor=1;
          b_monitor=0;
          $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;
            #100  a_monitor=1;  b_monitor=1;
            #100  a_monitor=0;  b_monitor=0;
            #100  a_monitor=0;  b_monitor=0;
            #100  a_monitor=0;  b_monitor=0;
            #100  a_monitor=0;  b_monitor=0;
         // $stop;
      end
endmodule

当在$monitor调用时对多个变量进行监控,当$monitor监控的变量中任何一个发生变化时,将会打印出当前仿真时刻的值;如果$monitor监控的所有变量在某一时刻均不改变,将不会打印任何信息。

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);
          #1
          a_monitor=0;
          #1
          b_monitor=1;
          #1
          a_monitor=1;   b_monitor=0;
          #10;
    #100  a_monitor=1;  b_monitor=1;
    #100  a_monitor=0;  b_monitor=0;
    #100  a_monitor=0;  b_monitor=0;
    #100  a_monitor=0;  b_monitor=0;
    #100  a_monitor=0;  b_monitor=0;
         // $stop;
      end
endmodule

        $monitor具有单一进程性,即monitor只会执行一次,由$monitoroff结束。同时使用两个monitor会自动关闭前面的一个。当在同一个模块中调用了两次$monitor时,最后一次的调用将会覆盖之前的所有调用。注意$stop函数先于$monitor,如果stop同时有变量变化,是不会出现在结果中的。

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

3、总结

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

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值