systemverilog中关于多线程的若干思考
最近在做自研总线相关的验证,遇到的情景是2048个master和2048个slave同时并行发送和接收数据,这部分必然会用到systemverilog中fork相关的语法,而在这个过程中,遇到了从未见过的复杂组合,包括wait fork及disable fork作用域的问题。很多的理解需要做简单的仿真来进行实验,进而总结结论,加深印象,现总结如下。
initial块的结构是 initial begin……end,多个initial块之间是并行执行的
在initial块内部,可以写begin……end的顺序结构,也可以写fork的并行结构。
如果是多个begin……end,是从上到下顺序执行的。
可以上来就写initial fork join吗?
从最基本的情况来回顾,sv中多线程最常用的就是fork……join,fork……join_any,fork……join_none
fork……join