In reply to alexkidd84:
It would really help to explain what your code does after 10 clock cycles since we cannot run it ourselves.
I think this code is a lot more complicated than it needs to be. First, I would have used a simple queue instead of a tlm_fifo.
Next, the way you have structured your fork/join_any(which should be a simple fork/join) creates a few race conditions. There is a race between the traffic_buffer_fifo.try_put and traffic_buffer_fifo.try_get, and there is a race between the
trans_collected = new(); and
traffic_buffer_fifo.try_put(trans_collected); I would not do the
fork[/fork] at all, or you need to add non-blocking assignments to remove the races.
Also, there is never a need to construct trans_collected_delay; you do both a create() and a new() unnecessarily.
Finally, you have
if (reset_n==0) fifo_level = 0; which is unnecessary as well.