In numerous EDA flows, time-consuming computations are repeatedly applied to sequential circuits. This motivates developing methods to determine what circuits have been processed already by a tool. This paper proposes an algorithm for semi-canonical labeling of nodes in a sequential AIG, allowing problems or sub-problems solved by an EDA tool to be cached with their computed results. This can speed up the tool when applied to designs with isomorphic components or design suites exhibiting substantial structural similarity.
In sequential and-inverter-graphs (AIGs) there frequently exist many instances of the same logic sub-circuit but with different inputs. Many synthesis and verification packages spend significant time analyzing logic, and the presence of identical sub-circuits results in duplication of effort. Alternatively, if a synthesis or verification package is invoked on a design and then again on a minimally changed version of the same design, many of the logic sub-circuits remain unchanged between runs. Time spent re-analyzing these sub-circuits results in a duplication of effort. The method proposed in this paper for semi-canonical labeling of sequential AIGs, detects the majority of isomorphic sub-circuits. Intermediate results computed on these sub-circuits can be cached and applied across every instance of the sub-circuit, leading to dramatic improvements in runtimes of synthesis or verification.
A sequential AIG represents a sequential circuit as a directed labeled graph consisting of two-input AND nodes, primary inputs, primary outputs, and flip-flop nodes. The edges are labeled with 1 denoting inversion or 0 otherwise. Labeling of nodes and AND gate fanins can be arbitrary. The idea of the method is to use this freedom, to re-label the nodes based on their transitive fanin and fanout graph structures, and thereby create a semi-canonical form for the given sequential AIG. Thus a new labeling is derived and each node's fanins are listed in numerical order of their labels. We want the semi-canonical structure to be as precise as reasonably possible. For example, given two isomorphic AIGs, we want their newly labeled representations to be identical. If this always happens, the labeling is canonical. While it is not efficient to make relabeling exactly precise in this sense, we want it to be highly precise in that it rarely fails to identify two isomorphic AIGs. We call this labeling semi-canonical.
Three applications of this idea are as follows.
The method finds a re-labeling of the node IDs using the AIG structure. This is done by computing signatures for each node, based the node's transitive fanin cone in the sequential AIG. Unique labels are assigned to a node that has a unique signature. For nodes with non-unique signatures, "tie-breaking" is done by assigning one such node an unused label and then node signatures are updated based on this. The key for this semi-canonicalization is a) to define the signature of a node in such a way that it is very precise, and b) to compute and update signatures efficiently.
To summarize, the contributions of this paper are: