sv中并行语句
sv中有fork-join、fork-join_none、fork-join_any三种并行语句,拿一个栗子说明三者的区别。
有三个子线程同时运行 ,只要有任何一个线程结束,就退出并行块,以下是三种实现方法。
task test();
fork:tag
begin
sub1();
disable tag;
end
begin
sub2();
disable tag;
end
begin
sub3();
disable tag;
end
join
$display("done");
endtask:test
task test();
fork:tag
sub1();
sub2();
sub3();
join_any
// disable tag; //这里的disable没作用
$dispaly("done");
endtask:test
task test();
event e;
fork :tag
begin
sub1();
->e;
end
begin
sub2();
->e;
end
begin
sub3();
->e;
end
join_none
@ e;
disable tag;
$dispaly("done");
endtask:test
参考
1.link