V/SV 时延控制

本文通过AMD例子解释SystemVerilog中时延控制的区别。在fork-join结构中,各部分并行执行,时延为相对起始点的绝对值。修改代码会影响执行顺序和时延效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例1. (AMD) 打印结果是什么?

module tb();
int int_a,int_b;
initial begin
	fork
		begin
		#2; 
		int_a=1;
		int_b=2;
		end 
		#3; 
		int_a=4;
 	join
#1;
int_b=3;
$display("%d", int_a+int_b);
#100 $stop;
end
endmodule

4
在这里插入图片描述
如果改成

initial begin
	fork
		...
		begin
		#3; 
		int_a=4;
		end
 	join

	fork
		...
		#3 int_a=4;
 	join

结果均是7
在这里插入图片描述
解析:

  1. begin-end内各部分串行且延时累加,先执行完fork-join,再依次执行#1,int_b=3, display
  2. fork-join内各部分并行且延时是相对共同起始点的绝对值,所以修改前同时执行begin-end, #3, int_a=4,所以这里int_a在0ns就被赋值为4了;修改后同时执行两个begin-end,int_a在3ns被赋值为4

Verilog 时序控制
https://www.runoob.com/w3cnote/verilog-timing-control.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值