I have this below thread forked in a top level thread. For some reason I see only index 0 print is seen but not other instances from for loop. I was expected multiple prints of “inside for late” where it later forks multiple threads. Any help appreciated as to why only idx=0 gets executed.
begin : late
for (int idx=0; idx<`RESCTRL_VAL_NUM_QCH_LATE; idx++) begin
automatic int i = idx;
`uvm_info("debug", $psprintf("inside for late[%0d]",i), UVM_LOW)
fork
begin
forever begin
`uvm_info("debug", "inside late", UVM_LOW)
wait(l_fsm_queue[i].size() > 0);
late_str = $sformatf("l_fsm_q_%0d",i);
`uvm_info("RC_SB", $psprintf("RC_SB: late_str : %s", late_str), UVM_LOW)
rc_raise_objection(late_str, l_fsm_queue[i].size());
rc_objection_timeout_check(late_str, l_fsm_queue[i].size(), timeout_err);
rc_drop_objection(late_str, l_fsm_queue[i].size());
if (timeout_err == 1) wait (l_fsm_queue[i].size() == 0);
end
end
join
end
end : late