Data reuse driven energy-aware MPSoC co-synthesis of memory and communication architecture for streaming applications