Abstract
This paper presents an introduction to hardware/software codesign for system-on-chip. It exposes general principles and concepts that enable to describe, evaluate/analyze and implement these systems. For that purpose, it relies on key design steps, found in usual codesign approaches, including specification and modeling of system characteristics (requirements, fonctionalities, etc.), partitioning into hardware and software components which is central here, synthesis and verification for infering an implementation of both components while guaranteeing that system requirements are met. The crucial methodological question for the designer is also addressed. Finally, an open discussion about possible impact of emerging technologies (non volatile memories, etc.) and new computing paradigms (neuro-inspired, quantum computing, etc.) on system codesign is proposed.