verilog在display仿真时间时,“%x”、“%d”和“%t”的区别

提示:本文仅供个人学习,未经授权严禁转载。


1. “%x”、“%d”和“%t”显示的仿真时间差别

在verilog中,当我们用display打印仿真时间时,可以使用%d或者%t等等(如下所示)。在这里记录一下它们之间的一些差别。

`timescale 1ns/1ps   // 仿真时间单位 / 仿真时间精度
initial begin
	#3.5;   // delay 3.5ns
	$display("time1 @%d;", $time);
	$display("time2 @%t;", $time);
end

modelsim仿真结果如下所示:
在这里插入图片描述
“%d”: 显示的数值单位为timescale指定的仿真时间单位,会进行四舍五入(其他的如%x等与%d类似,只是%x以十六进制显示,而%d以十进制显示);
“%t”: 默认情况下,显示的数值单位为timescale指定的仿真时间精度,同样会进行四舍五入(以1ns为单位进行四舍五入,但是以1ps为单位进行显示);

上述为“%d”和“%t”在默认情况下的区别;此外,“%t”支持通过系统函数$timeformat指定显示的时间格式;

2. 举个例子:

`timescale 1ns/1ps
initial begin
	$timeformat(-9, 3, " ns", 10); //$timeformat(unit, prec, "unit", minwidth);
	#3.5;   // delay 3.5ns
	$display("time1 @%d;", $time);
	$display("time2 @%t;", $time);
end

modelsim仿真结果如下所示:
在这里插入图片描述
timeformat系统函数的参数解释如下:
unit:指定“%t”显示数值的时间单位;如“-9”表示10^-9秒,即1ns;
prec:指定“%t”显示数值的小数位数;
“unit”:在%t显示的数字的后面附加显示的字符串;
minwidth:指定%t显示内容所占用的最少字符位数;即上面仿真结果中,“@”符号和“;”符号之间的字符个数;(若“%t”实际内容长度大于minwidth指定的长度,display时会自动往后扩展显示)

3. 再继续举几个例子

3.1 例子1

`timescale 1ns/1ps
initial begin
	$timeformat(-6, 3, " us", 8);
	#5550;   // delay 5.5 us
	$display("time1 @%d;", $time);
	$display("time2 @%t;", $time);
end

modelsim仿真结果:

在这里插入图片描述

3.2 例子2

`timescale 1ns/1ps
initial begin
	$timeformat(-6, 3, " us", 6);
	#5550;   // delay 5.5 us
	$display("time1 @%x;", $time);
	$display("time2 @%0x;", $time);
	$display("time3 @%d;", $time);
	$display("time4 @%0d;", $time);
	$display("time5 @%t;", $time);
end

modelsim仿真结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心就好噻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值