今日在写验证平台时,突然想到一个问题:如何根据宏来创建动态个数的线程?
例子:网上有一种做法,不知到正确与否
`define NUM 10
fork
begin : isolating_thread
for(int index=0;index<NUM;index++)begin : for_loop
fork
int idx=index;
begin
`ovm_do_on(sequence_inst,p_sequencer.my_sqr[idx]);
end
join_none;
end : for_loop
wait fork;
end : isolating_thread
join
若不对,请大神详述这两个fork的作用,谢谢了。
在这里我又产生一种想法:
`define NUM 10
fork
begin : isolating_thread
genvar index;
generate
for(int index=0;index<NUM;index++)begin : for_loop
int idx=index;
begin:bit
`ovm_do_on(sequence_inst,p_sequencer.my_sqr[idx]);
end
end : for_loop
endgenerate
end : isolating_thread
join
这种方法不知道会成功否?我也不知道怎么验证,实属惭愧,望大神给予意见,谢谢