What could be the reason for infinite loop in our code when dealing with sequence and driver

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…?

If the driver is not sending item_done(), then there is an issue in your send_to_dut() task.

1 Like