Abstract
This tutorial describes the automatic synthesis of digital implementations from higher-level specifications. The synthesis process is described in terms of four mechanisms: resource allocation, design transformation, composition, and scheduling. These mechanisms are illustrated with examples taken from three synthesis categories: algorithm synthesis, register-transfer synthesis, and logic synthesis. The latter two categories encompass both data-path and control design. An early history of synthesis research is given, highlighting work done at IBM and Carnegie-Mellon University. The tutorial summarizes the difficulties of automating synthesis, including the combinatorial explosion of design possibilities, the interaction between different synthesis tasks, and the difficulty of estimating design attributes such as cost and speed. Finally, the tutorial summarizes the success of automated synthesis.

This publication has 17 references indexed in Scilit: