System on Chip Design: Scheduling Techniques