本篇内容主要讲解“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_any和join_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有什么不同”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。