Tlm fifo as shifter register

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.