Let’s consider an example where in which I have one sequence and one driver. The drive code is
forever begin
seq_item_port.get_next_item(req);
send_to_dut(req);
seq_item_port.item_done();
end
In test lets assume I am starting the sequence on the sequencer.
Now In the task body of the sequence
task body()
repeat(10) begin
req // object creation
start_item(req);
assert(req.randomize());
finish_item(req);
endtask
Now the problem is that for the first trans I am getting the output but for the next tranx which is the 2nd tranx, I am going to infinite loop. The driver code is not sending the item done. hence waiting infinitely.
what could be the reasons behind the condition…?