Communication-aware allocation and scheduling framework for stream-oriented multi-processor systems-on-chip