显示系统任务包含18个系统任务,如下1表所示:
表1:verilog自带的18个系统任务
我们可以把这18个系统任务分为三类:
-显示和写入任务(display and write tasks)
显示和写入任务包括8个系统任务,其标准语法描述如下图1所示:
图1:$display和$write系统任务语法描述
$display*和$write*任务功能完全相同,只不过前者会自动在输出结束时添加换行符,而后者则不会。实际应用在时,我们如果想在仿真时显示一些信息的话,就调用这两种任务即可,具体语法这里不再介绍,到时候用的时候查阅手册即可。
-选通监控任务(strobed monitoring tasks)
系统任务 $strobe* 提供了在选定时间显示仿真数据的功能。该时间为当前仿真时间的结束时间,即该仿真时间内的所有仿真事件都已发生。该任务的参数指定方式与 $display系统任务完全相同,其4个具体任务的语法描述如下表2所示:
表2:$strobe系统任务标准语法
例如:
在本例中,$strobe 会在每个时钟下降沿将时间和数据信息写入标准输出和日志文件。该操作应在仿真时间向前推进之前和该时间的所有其他事件发生之后进行,这样写入的数据才能确保是该仿真时间的正确数据。
-连续监控任务(continuous monitoring tasks)。
连续监控任务的6个具体任务的描述如下表3所示:
表3:$monitor 系统任务的语法
$monitor可监控和显示作为任务task参数指定的变量或表达式的值。该任务task的参数指定方式与 $display 系统任务完全相同。
当调用带有一个或多个参数的$monitor任务时,仿真器会建立一种机制,在参数列表中的变量或表达式每次改变值时($time、$stime 或 $realtime 系统函数除外),整个参数列表都会在时间步结束时显示出来,就像 $display 任务所报告的那样。如果两个或多个参数同时改变值,则只显示一个新值。
同一时间只能有一个 $monitor 显示列表处于活动状态;不过,在仿真过程中可以多次发布带有新显示列表的新 $monitor 任务。
$monitoron和$monitoroff 任务控制一个监控标志,用于启用或禁用监控。使用 $monitoroff 可关闭标记并禁用监控。可使用 $monitoron 系统任务打开该标志,从而启用监控,并恢复显示最近调用的 $monitor。调用 $monitoron 后,无论数值是否发生变化,都应立即显示,这用于在监控会话开始时确定初始值。 默认情况下,监控标志会在仿真开始时打开。
点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!