A scheduling algorithm for synthesis of bus-partitioned architectures