Adaptive Routing in NoC-Based Heterogeneous MPSoCs