system verilog对语句有两种分组方式–使用begin-end和fork-join;begin-end块内的语句是顺序执行;fork-join内的语句是并发执行的;
1.用例构成
从排布顺序上看,delay_data在前,print_data在后;而且delay_data是会消耗时间的.
2.fork-join
从执行结果中可以看出,fork-join内的语句都是并发执行的,尽管delay_data写在前面,但是其消耗时间所以其执行打印信息时,比print_data要慢;而且是fork-join内的语句执行完之后,才会去执行下一个循环的语句.
3.begin-end
在fork-join内添加begin-end后,其内的语句变为顺序执行,从结果中也可以看出,delay_data先执行,消耗2ns后,在执行print_data.
4.fork-join_none
a.没有begin-end
在执行时,使用fork-join_none,3轮循环同时进行,而且j值为0,1,2.
b.begin-end
在执行时,使用fork-join_none,3轮循环同时进行,添加begin-end导致j值都是3.
5.fork-join_none&begin-end
从执行结果中可以看出,因为fork-join_none的并发执行,3轮循环的执行时间是一样的,加上begin-end的原因导致所有的j值都为3,begin-end块内的数据都是顺讯执行的.
fork-join 和begin-end
最新推荐文章于 2023-02-27 17:33:58 发布