• verilog $*命令


    1、$display,$write,$fdisplay,$fopen,$fclose用于信息的显示和输出。其中,

      %b或%B    二进制
      %o或%O    八进制
      %d或%D    十进制
      %h或%H    十六进制
      %e或%E    实数
      %c或%C    字符
      %s或%S    字符串
      %v或%V    信号强度
      %t或%T    时间
      %m或%M    层次实例
       
       换行
       	   制表符
       \   反斜杠
       "   引号”
       \%%   百分号%
    
    
     调用方式:eg:$display("%b+%b=%b",a,b,sum);
                  $write("%b+%b=%b",a,b,sum);
    

    注:如果没有在指定变量的显示格式,不会输出数值。如果没有指定变量显示的位置,变量值会在字符串部分之后直接显示出来,变量之间是没有间隔的,只是一次简单的显示。

    $display与$write的区别是:$display会在每次显示信息后自动换行,$write不会换行。
    $fopen,有以下两种用法。
    a. $fopen("<文件名>");
    b.[文件句柄]=$fopen("<文件名>")

     integer outfile;     
     outfile=$fopen("./eeprom.dat")  //打开一个名为eeprom.dat的文件,文件句柄为outfile
    

    $fdisplay,将数据写入指定文件

    $fdisplay(outfile,"@%0h  %0h",addr,data_to_eeprom);
    

    $fclose,关闭文件

    $fclose(outfile);  
    

    2、$strobe探测任务

    探测任务的语法和显示任务完全相同,也是把信息显示出来。也有$strobe,$strobeb,$strobeo,$strobeh四种。
    两者的区别在于:$strobe命令会在当前时间部结束时完成;而$display是只要仿真器看到就会立即执行。

    3、$monitor监测任务

    监测任务用于持续监测指定变量,只要这些变量发生了变化,就会立即显示对应的输出语句。

    eg:
     initial
     begin
     $monitor("x=%b,y=%b,cin=%b",x,y,cin);
    end
    

    同理,有$monitor,$monitorb$monitoro$monitorh。
    可用$monitoroff,monitoeron关闭监事和打开监视。

    4、$stop,$finish仿真控制任务

    区别:$stop暂停当前方针,$finish中值当前方针。

    5、$timeformat

    语法
    $timeformat[( Units, Precision, Suffix, MinFieldWidth )];

    规则

    • Unit 是 0 到-15 之间的整数值,表示打印的时间的单位:0 表示秒,-3 表示毫秒,-6 表示微秒。-9 表示毫微秒; -12 表示微微秒; -15 表示毫微微秒;中间值也可以使用:例如-10表示100ps单位。
    • Precision 是在小数点后面要打印的小数位数。
    • Suffix 是在时间值后面打印的一个字符串。
    • MinFieldWidth 是打印的最小数量字符,包括前面的空格。如果要求更多字符,那么打印的字符更多。
    • 如果没有指定变量,默认地使用下面的值:Units:仿真精度;Precision:0;Suffix:空字符串;MinFieldWidth:20 个字符。

    提示
    用`timescale $timeformat 和$realtime (带%t)指定和显示仿真时间,用$display $monitor 或其他显示任务。
    例如:

    $timeformat(-10, 2, " x100ps", 20);    // 20.12 x100ps
    
    6、$time

    在Verilog HDL中有两类型的时间系统函数,$time和$realtime。用这两个系统用函数可以的大当前的仿真时间。
    $time可以返回一个64位的整数来表示当前仿真时刻值,该时刻是以模块的仿真时间尺度位基准的。
    $realtime返回的时间数字是一个实型数。该数也是以时间尺度为基准

  • 相关阅读:
    apache2.4+php7.3.2+mysql5.7
    redis 中的key值过期后,触发通知事件
    zookeeper之分布式锁以及分布式计数器(通过curator框架实现)
    SpringCloud学习笔记(4)——Zuul
    SpringCloud学习笔记(3)——Hystrix
    SpringCloud学习笔记(2)——Ribbon
    c++各种排序的简单实现
    c++动态规划dp算法题
    华为机试练习
    ubuntu遇到的 the system is runing low-graphics mode 问题
  • 原文地址:https://www.cnblogs.com/xuqing125/p/8884421.html
Copyright © 2020-2023  润新知