# Logic Synthesis

Logic synthesis is a branch of computer programming in which initial concepts of what functions computers might be expected to perform are restructured and translated into the vocabulary and language of computers. Computers must be told specifically what their programmers want them to do; abstract ideas or concepts that encompass a range of computer functions cannot, in practical terms, be conveyed as is in the very limited language of computers themselves. In the field of software engineering, logic synthesis refers to the process by which software engineers convert the abstract concept of the function a computer circuit will be expected to execute into specific instructions that computer circuits will accept.

In the ever-increasingly competitive field of software engineering, many programmers focus on minimizing the design cycle, which is the time between idea (the conception of what a computer program will execute) and actualization (a workable program that can be introduced into the highly competitive software market). By systematically working the painstaking step-by-step process of algorithmic thinking that is essential to logic synthesis, software engineers convert otherwise abstract instructions into desired circuit behavior.

OVERVIEW

The basis of logic synthesis is rooted in computerprogramming precepts that date back to the mid-nineteenth century—specifically to the algebraic functions first described by British mathematician George Boole (1815–64), who conceived of the complex architecture of abstract mathematical thought in either-or terms. Computer circuits, the workhorses that actualize ideas into real-time computer functions, operate according to specific binary instructions—mapped sequences of logical steps, also called logic gates, in which each step is posed as a YES/ NO or an EITHER/OR statement. This enables the circuit to complete the intended instruction, optimizing function by encoding the intended process map into minimization steps that will speak the specific language of the computer.

For example, say an appliance manufacturer wants to develop an integrated circuit capable of continuously monitoring the temperature of a microwave cooking chamber. The software engineer assigned to the project must translate that abstract concept into a language a computer circuit will understand, carefully applying sequential Boolean logic to move the idea from desired behavior to a specific conceptual structure and then to a workable physical layout or application. Using logic synthesis, a software engineer converts that high-level abstract concept into an optimized gate representation, which is a design implementation that breaks down the concept into binary steps that a circuit will accept and execute effectively and efficiently. Translating processes into specific hardware and software description is at the heart of logic synthesis. While this is often done by software engineers, it can also be delegated to sophisticated computer programs that in turn can create new and efficient program software.

Visual diagram of various logic gates. The parts of the diagram correspond to the four permutations possible given two Boolean variables.

George Boole.

—Joseph Dewey, PhD

Ciletti, Michael D. Advanced Digital Design with the Verilog HDL. 2nd ed. Upper Saddle River: Prentice, 2010. Print.

De Micheli, Giovanni. Synthesis and Optimization of Digital Circuits. New York: McGraw, 1994. Print.

Devadas, Srinivas, Abhijit Ghosh, and Kurt Keutzer. Logic Synthesis. New York: McGraw, 1994. Print.

Hachtel, Gary D., and Fabio Somenzi. Logic Synthesis and Verification Algorithms. New York: Springer, 2006. Print.

Hassoun, Soha, and Tsutomu Sasao, eds. Logic Synthesis and Verification. Norwell: Kluwer, 2002. Print.

Rushton, Andrew. VHDL for Logic Synthesis. 3rd ed. Hoboken: Wiley, 2011. Print.

Sasao, Tsutomu. Switching Theory for Logic Synthesis. New York: Springer, 1999. Print.