I am sending around 20000 sequence_items through a sequencer. Default priority is FIFO. As we know the request_ids go from 0 through 19999. All these sequence_items are spawned in a fork. As and when a particular sequence_item starts, it gets into arb_sequence_q and then it waits for its arbitration by calling wait_for_arbitration_completed task implemented in ovm_sequencer_base. Hence if there are 20000 sequence_items, there will be 20000 tasks spawned for each request_id, each waiting for its turn to get arbitrated. Every time a request_id is arbitrated, arb_completed associative array gets populated and this task returns for that particular request_id and that is sent to a driver.
For my case, the request_id are picked sequentially from 0 and on the way, for the request_id around 15039, even though the request_id is picked and I see arb_completed = 1, the task for the request_id does not wake up and the sequence_item does not get completed. Rest of the sequences are stuck behind it as they are not arbitrated. Can you please tell me the reason why this request_id is not taken? Is there any way the task might be killed? I see that till request_id 15000 is picked, the task for request_id 15039 is active. After a while, all of a sudden the task does not print anything for the request_id 15039. Thanks in advance