现在我正在尝试在多个systemvalue任务中获取随机值。 所以我刚刚实现如下
module testa;
task sendtransfer1
foreach (burst3.Data[ii1])
burst1.data[ii1] = $urandom_range (967295,0);
end task
task sendtransfer2
foreach (burst3.Data[ii2])
burst2.data[ii2] = $urandom_range (967295,0);
end task
task sendtransfer3
foreach (burst3.Data[ii3])
burst3.data[ii3] = $urandom_range (967295,0);
end task
initial begin
for(int i = 0; i<1000; i++) begin
sendtransfer1
end
end
initial begin
for(int ii = 0; ii<1000; ii++) begin
sendtransfer2
end
end
initial begin
for(int iii = 0; iii<1000; iii++) begin
sendtransfer3
end
end
endmodule
得到结果后,我发现三个burst1,data [ii1],burst2.data [ii1]和burst3.data [ii1]输出值相同。
我想实现randome值对每个任务的每个任务都有自己的随机值。
我应该怎么做才能在每项任务中获得每个随机值?
module testa;
int ii1;
int ii2;
int ii3;
task sendtransfer1
burst1 = new;
burst1.pInst = activeMaster1;
foreach (burst3.Data[ii1])
burst1.data[ii1] = $urandom_range (967295,0);
end task
task sendtransfer2
burst2 = new;
burst2.pInst = activeMaster2;
foreach (burst3.Data[ii2])
burst2.data[ii2] = $urandom_range (967295,0);
end task
task sendtransfer3
burst3 = new;
burst3.pInst = activeMaster3;
foreach (burst3.Data[ii3])
burst3.data[ii3] = $urandom_range (967295,0);
end task
initial begin
for( ii1 = 0; ii1<1000; ii1++) begin
sendtransfer1
end
end
initial begin
for( ii2 = 0; ii2<1000; ii2++) begin
sendtransfer2
end
end
initial begin
for( ii3 = 0; ii3<1000; ii3++) begin
sendtransfer3
end
end
endmodule
我改变了你的建议。但三个任务的随机输出值保持不变。
和“你最好的选择是将值作为参数传递给每个任务。”也是相同的价值观。
答案 0 :(得分:0)
将代码放入MCVE会有所帮助。问题很可能是你的三个for循环中声明了局部变量(i,ii,iii),但在你的任务中引用了ii1,ii2,ii3。您最好的选择是将值作为参数传递给每个任务。