I am struck in a situation where my sequence is struck in a get statement. (request_q.get(req);, but the strange thing is that “req” item is already put into the “request_q” (request_q.put(req);) from another component and also the connection part is also correct, as this code is working fine in other testcase except that it just got struck in a testcase.
My question is “Is there a way to check whether my sequence which call the get statement is active or dead” ? any suggestion to debug such scenario where there is a successfull “put” but doesn’t get the item from a “get”.
Thanks,
Debashis
In reply to debashis_paul:
Are you sure you are putting in a req in request_q? You can check this by printing req before you are doing the put. Both, put and get are blocking.
In reply to chr_sue:
In reply to debashis_paul:
Are you sure you are putting in a req in request_q? You can check this by printing req before you are doing the put. Both, put and get are blocking.
Yes, i am sure that i am putting. I do print the “req” before putting. Also put method comes out after putting, and hence i believe it is successful from the put side.
In reply to debashis_paul:
OK, fine. And what kind of component is request_q?
In reply to chr_sue:
it is uvm_transaction type object
In reply to debashis_paul:
This confuses me. I was expecting this is a tlm_fifo object where you are putting a req in and performing a get to get a Transaction type_object out.
In reply to chr_sue:
Got a little clue of whats happening. But I couldn’t find the reason of its happening and how to solve this issue.
Found out that, the sequence which is calling the get method is becoming dead (due to unknown reasons), so it is unable to get the request item.
Any idea, for the reasons when does a sequence goes dead?
In reply to debashis_paul:
What do you mean with dead? Is it not constructed?
In reply to chr_sue:
It is constructed well. I am referring to it as “dead” because, I put several debug statement inside the sequence to display in a forever loop inside the body of sequence. It stops displaying after certain time.
In reply to debashis_paul:
It is hard giving advice without seeing the Code. But if the get is successful for some iterations and it stops afterwards, no item is available. You could count the number of items you put and get.