SystemVerilog学习之路(6)— 最小时间和时间片

SystemVerilog学习之路(6)— 最小时间和时间片

一、前言

delta-cycle(无限最小时间):默认情况下,时钟对于组合电路的驱动会添加一个无限最小时间(delta-cycle)的延迟,而该延迟无法用绝对时间单位衡量,它比最小时间单位精度还小。
time-slot(时间片): 在仿真器中敲入命令run 0,即是让仿真器运行一个时间片的时间,在一个时间片中可以发生很多事情,一个时间片里面包含无数个delta-cycle

二、代码实现

编写代码如下所示

`timescale 1ns/1ns
module race1;

	bit clk1, clk2;
	bit rstn;
	logic[7:0] d1;

	initial begin
	  forever #5 clk1 <= !clk1;
	end

	always @(clk1) clk2 <= clk1;

	initial begin
		#10 rstn <= 0;
		#20 rstn <= 1;
	end

	always @(posedge clk1, negedge rstn) begin
		if(!rstn) d1 <= 0;
		else d1 <= d1 + 1;
	end

	always @(posedge clk1) $display("%0t ns d1@clk1 value is 0x%0x", $time, d1);
	always @(posedge clk2) $display("%0t ns d1@clk2 value is 0x%0x", $time, d1);
	
endmodule

编译仿真运行100ns如下所示,在45ns时,在clk1和clk2上升沿打印出来的数据不相同
在这里插入图片描述
查看波形可以看到,d1显示的值为02
在这里插入图片描述

三、delta-cycle

我们将时间轴放在45ns处,点击【Expanded Time Deltas Mode】工具图标
在这里插入图片描述
然后点击【Expand Time At Active Cursor】工具图标
在这里插入图片描述
接着就可以看到delta-cycle的作用显示出来了,clk2和d1都是在45ns+1处发生变化的,即45ns后再加一个delta-cycle处才发生变化的
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值