In reply to Harshad:
I have not implemented an AXI testbench, so I'm not sure 5 truly separate channels is the best way to model this. For example, for a single write command, the write request and write response are related.
The TLM connection between a sequencer and driver is a 1:1 connection. You can start multiple sequences on a single sequencer. On the other end, the driver's run_phase() can call seq_item_port.get(req) to get a request, decode the type, and call separate methods for each. These methods can use fork-join_none to spawn a thread to process the request and return the response. When a driver calls get(req), the sequence's finish_item(req) returns without waiting for the driver to call item_done(). This frees up the sequencer to process the next sequence / item.