千家信息网

Verilog和SystemVerilog中的fork-join有什么不同

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,本篇内容主要讲解"Verilog和SystemVerilog中的fork-join有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Verilog和
千家信息网最后更新 2024年11月28日Verilog和SystemVerilog中的fork-join有什么不同

本篇内容主要讲解"Verilog和SystemVerilog中的fork-join有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Verilog和SystemVerilog中的fork-join有什么不同"吧!

Verilog中fork-join结构的主要缺点是并行结构之外的代码的执行被暂停,直到所有fork-join中的进程完成。

例如,在下面代码中,最后一个$display语句只在10个时间单位后执行,

虽然过程1在5个时间单位完成

modulefork_join_tests;        integer out_val ;        initial begin        fork                begin  //First process        #5$display("exit first process at t = %0d",$time) ;endbegin //Second process        #10$display("exit second process at t = %0d",$time) ;end join$display("exit fork join at t = %0d",$time);endendmodule //fork_join_tests

上面的代码显示输出:

exit first process at t = 5exit second process at t = 10exit fork join at t = 10

SystemVerilog为并行进程添加了两个新关键字:join_anyjoin_none

当上面的代码中的join被join_any替换时,则显示输出:

exit first process at t = 5exit second process at t = 10exit fork join at t = 5

fork-join_any在第一个进程完成后退出,也就是说,在5个时间单位退出。

当join_none替换join时,则显示以下输出:

exit first process at t = 5exit second process at t = 10exit fork join at t = 0

fork-join_none不同等待其中任何一个进程完成,也就是说,在时间单位0时退出。

到此,相信大家对"Verilog和SystemVerilog中的fork-join有什么不同"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0