We have approached the general problem by treating it as an instance of the subgraph isomorphism problem. By solving the problem using a true subgraph isomorphism algorithm that assumes nothing about the underlying circuits, we achieve a true technology-independent solution. While the subgraph isomorphism problem is known to be NP-complete in general, the algorithm presented in this paper can efficiently solve this problem for most circuits encountered in practice by making use of the structure found in circuits.
This algorithm has been implemented in a program called SubGemini and has been applied to a wide variety of interesting subcircuit problems. We present results that give the running time for a range of different circuit types and sizes. We show that for most circuits the running time is linear in the size of the circuit graphs and the number of component instances to be found. As an example, all the RAM cells in a 16K bit static RAM can be identified in less than a minute on a Sparcstation 2.
larry@cs.washington.edu