verilog中$monitor 的用法

您所在的位置:网站首页 monitor系统 verilog中$monitor 的用法

verilog中$monitor 的用法

2024-03-25 02:24| 来源: 网络整理| 查看: 265

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可以对某些关键变量的变化起到准确描述作用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3