说说$strobe,$monitor 和 $display 的差别

verilog使用$display,$strobe系统任务来打印log。

  • 用$display()系统任务来显示当前变量的值。
  • 用$strobe()系统任务来显示用非阻塞赋值的变量值。
  • 用$monitor()监控和输出参数列表中的表达式或变量值。
$display,$strobe()

$monitor()

当启动一个带有一个或多个参数的$monitor任务时,仿真器则建立一个处理机制,使得每当参数列表中变量或表达式的值发生变化时,整个参数列表中变量或表达式的值都将输出显示。

例如:

$monitor($time,,"rxd=%b txd=%b",rxd,txd)。括号内的变量均为参数列表。

在多模块调试的情况下,许多模块中都调用了$monitor,因为任何时刻只能有一个$monitor起作用,因此需配合$monitoron与$monitoroff使用,把需要监视的模块用$monitoron打开,在监视完毕后及时用$monitoroff关闭,以便把$monitor 让给其他模块使用。$monitor与$display的不同处还在于$monitor往往在initial块中调用,只要不调用$monitoroff,$monitor便不间断地对所设定的信号进行监视。

猜你喜欢

转载自blog.csdn.net/chang12358/article/details/80937400
今日推荐