An efficient technique for in-order packet delivery with adaptive routing algorithms in networks on chip