fork join块中wait语句的实现



显示I value =5,2,7需要做什么修改?我没有得到输出。任何建议都会有帮助的。

module tb#(int T=8);
bit [8:0] abc;
initial
begin
for(int i=0; i<T; i++)
begin
fork
begin
wait(abc[i] == 1'b1);
$display(i,$time);
end
join_none
end
end

initial
begin
abc[5] = 1'b1;
#10 abc[2] = 1'b1;
abc[7] = 1'b1;
end
endmodule

https://www.edaplayground.com/x/JUZR

变量i只有一个实例,在进程开始的时间点,它的值是8。您需要声明一个变量k,该变量对于循环的每次迭代具有不同的值。

module tb#(int T=8);
bit [8:0] abc;
initial
begin
for(int i=0; i<T; i++)
begin
automatic int k = i;
fork
begin
wait(abc[k] == 1'b1);
$display(i,k,,,$time);
end
join_none
end
end

initial
begin
abc[5] = 1'b1;
#10 abc[2] = 1'b1;
abc[7] = 1'b1;
end
endmodule

见https://verificationacademy.com/forums/systemverilog/fork-joinnone-inside-loop

最新更新