Issue No. 02 - April-June (1999 vol. 16)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/54.765201
<p>Reverse engineering is the inverse of the design process. The design process begins with an abstract description of a target device and, via a succession of refinements, produces a design that can be implemented directly. Reverse engineering, on the other hand, begins with the disassembly of a manufactured device and culminates with an abstract description of the device's functionality. In the case of integrated circuits, the disassembly process consists of obtaining an image of the internal structure of a circuit and extracting a transistor-level netlist from the image. This description is then transformed to successively higher levels of abstraction until a suitably high-level description of the circuit's behavior is obtained.</p> <p>Much has been written about methods for obtaining images ? for example, sample preparation via chemical etching and image acquisition via scanning-electron-microscopy ? and about extracting information from images ? for example, techniques for automated component identification via pattern recognition. There appears, however, to be little written about deriving an understanding of a circuit's behavior from a detailed circuit description. This tutorial describes an approach to one aspect of this problem ? deriving a module-level description from a gate-level netlist. The approach includes a number of transformations, based on well understood properties of circuits, and a set of rules (algorithms and heuristics) for applying the transformations in a computationally feasible way.</p>
G. H. Chisholm, R. L. Veroff, S. T. Eckmann and C. M. Lain, "Understanding Integrated Circuits," in IEEE Design & Test of Computers, vol. 16, no. , pp. 26-37, 1999.