Names of signals are propagated through a
circuit design inside tuples, with each tuple including at least a
signal name and a sequential depth. A tuple being propagated is added to a
list of zero or more tuples currently identified with a circuit element, unless a tuple of the same
signal name is already present in the
list. If already present in the
list, then propagation of that tuple is stopped. Propagation of tuples may also be stopped depending on user-defined limits, e.g. on sequential depth. Tuple propagation may be used, depending on the embodiment, to identify features of interest in the
circuit design, e.g. (a) a point of convergence of differently clocked signals, (b) location of gray coders, and (c) location of synchronizers, by appropriate identification of circuit elements from which tuple propagation is to start, and by appropriate checks on lists of tuples that result from tuple propagation.