• verilog中$monitor 的用法


    1、函数作用

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

    2、基本用法

    1. module monitor;
    2.       reg a_monitor;
    3.       reg b_monitor;
    4.       initial begin
    5.           a_monitor=1;
    6.           b_monitor=0;
    7.           $monitor($realtime,,"a=%b,b=%b",a_monitor,b_monitor);
    8.           #1
    9.           a_monitor=0;
    10.           #1
    11.           b_monitor=1;
    12.           #1
    13.           a_monitor=1;   b_monitor=0;
    14.            #10;
    15.             #100  a_monitor=1;  b_monitor=1;
    16.             #100  a_monitor=0;  b_monitor=0;
    17.             #100  a_monitor=0;  b_monitor=0;
    18.             #100  a_monitor=0;  b_monitor=0;
    19.             #100  a_monitor=0;  b_monitor=0;
    20.          // $stop;
    21.       end
    22. endmodule

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

    1. module monitor;
    2.       reg a_monitor;
    3.       reg b_monitor;
    4.       initial begin
    5.           a_monitor=1;
    6.           b_monitor=0;
    7.           $monitor($time,,"a= %b",a_monitor);
    8.           $monitor($time,,"b= %b",b_monitor);
    9.           #1
    10.           a_monitor=0;
    11.           #1
    12.           b_monitor=1;
    13.           #1
    14.           a_monitor=1;   b_monitor=0;
    15.           #10;
    16.     #100  a_monitor=1;  b_monitor=1;
    17.     #100  a_monitor=0;  b_monitor=0;
    18.     #100  a_monitor=0;  b_monitor=0;
    19.     #100  a_monitor=0;  b_monitor=0;
    20.     #100  a_monitor=0;  b_monitor=0;
    21.          // $stop;
    22.       end
    23. endmodule

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

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

    3、总结

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

  • 相关阅读:
    antd/fusion表格增加圈选复制功能
    Python网络爬虫5-实战网页爬取
    Mac在Python3.8环境下安装Scrapy及踩坑分享
    答对这3个面试问题,薪资直涨20K
    python程序编写
    一分钟搞定基于Saltstack+Docker集群批量安装部署Nginx
    java基础 equals与hashCode
    (html+CSS)垂直居中
    沙箱机制的理解
    [OC学习笔记]Block三种类型
  • 原文地址:https://blog.csdn.net/qq_33300585/article/details/126784973