System-on-Chip Design: Integrating Complex Systems into a Single Silicon Solution