function void get_client_request();
for(int i=0;i<NUM_INTF;i++)begin
automatic int client = i;
fork
begin
clnt_fifo[client].get(current_req);
end
join_none
end
endfunction
I’m using the function get_client_request() to collect requests into my client fifos. Every client has its own analysis fifo(that’s why I’m using clnt_fifo[client].get()). I know that the current request will only go into one client at a time so the get() will be successful for only one of the clients for every request. What will happen to the other (NUM_INTF-1) threads of the other clients? Will their get() be blocked indefinitely and hence, those threads will never finish? If this function gets called 10 times for 10 incoming requests, at the end of the 10 iterations will there be 10*(NUM_INTF-1) unfinished threads? If yes, will these threads be killed at the end if the simulation?
Note: clnt_fifo is an array of uvm_tlm_analysis_fifo