This document discusses system on chip (SoC) design. It defines an SoC as an integrated circuit that incorporates all components of an electronic system, including processors, memory and peripheral interfaces. The document outlines the evolution of SoC technology, challenges in designing complex SoCs, and strategies for conquering complexity through IP reuse and partitioning designs into hardware and software. It provides examples of SoC applications and architectures and describes the traditional waterfall design flow for ASICs versus the newer IP-based design methodology.