我是靠谱客的博主 健康果汁,最近开发中收集的这篇文章主要介绍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
层次实例
n
换行
t
制表符
\
反斜杠
"
引号”
%%
百分号%
调用方式: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返回的时间数字是一个实型数。该数也是以时间尺度为基准

转载于:https://www.cnblogs.com/xuqing125/p/8884421.html

最后

以上就是健康果汁为你收集整理的verilog $*命令的全部内容,希望文章能够帮你解决verilog $*命令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部