A multi-path routing strategy with guaranteed in-order packet delivery and fault-tolerance for networks on chip