验证基础技巧记录(四)
1.fork的一些特性:
(1)fork-join_none的特性会使得fork认为这个进程已经执行过,所以嵌套并不能约束等其的完成;
module fork_test1; int agent [5]; initial begin $display("test start"); fork foreach(agent[i]) fork automatic int j = i; automatic int k = $urandom_range(5,10); begin #(k); $display("@%0t thread[%0d] finish",$time,j); end join_none join $display("test end"); end endmodule
test start test end @5 thread[2] finish @7 thread[4] finish @8 thread[3] finish @9 thread[0] finish @10 thread[1] finish
2.fork的调度问题,并发线程需要使用automatic来储值,假若存在并发循环,则用于计数的变量需要并发通过循环定义并重新赋值,在循环中使用重新赋值后的变量完成事务;

浙公网安备 33010602011771号