
Platform-based Design: In this design methodology, a hardware platform is abstracted from its system software using the Application Programming Interface (API), making the hardware and software development orthogonal to allow more effective exploration of alternative solutions [1]}. Platform-based design methodology facilitates the reuse of the system software for many different hardware platforms.

Hardware-Software Co-design: In this design methodology, a hardware platform and its system software are concurrently designed to exploit their synergism in order to achieve system-level design objectives [2]}. The system software in this case is tailored for the hardware platform.

Design-Technology Co-optimization: In this design methodology, system-level design metrics are applied to explore the choices in hardware design and process technology to enable scaling at advanced technology nodes [3]}.

