Method and apparatus for reducing a number of storage elements in a
synthesized synchronous circuit. In one embodiment, the circuit is
represented as a directed, partitioned graph. The graph is divided into a
plurality of time-ordered time slots that are bounded by storage elements.
The strongly-connected components (SCCs) in the graph are first
identified. For each middle SCC where there is slack between the middle
SCC and a first SCC and slack between the middle SCC and a second SCC, a
time-slot-relative direction is selected for moving the middle SCC. The
direction is selected as a function of a number of storage elements
required for moving the middle SCC toward the first SCC versus moving the
middle SCC toward the second SCC. The middle SCC is then moved in the
selected time-slot-relative direction.
Método y aparato para reducir un número de elementos del almacenaje en un circuito síncrono sintetizado. En una encarnación, el circuito se representa como gráfico dirigido, repartido. El gráfico se divide en una pluralidad de ranuras de tiempo tiempo-pedidas que sean limitadas por los elementos del almacenaje. Los componentes fuerte-conectados (SCCs) en el gráfico primero se identifican. Para cada SCC medio donde hay flojo entre el SCC medio y un primer SCC y holgura entre el SCC medio y un segundo SCC, una dirección tiempo-ranura-relativa se selecciona para mover el SCC medio. La dirección se selecciona en función de un número de elementos del almacenaje requeridos para mover el SCC medio hacia el primer SCC contra la mudanza del SCC medio hacia el segundo SCC. El SCC medio entonces se mueve en la dirección tiempo-ranura-relativa seleccionada.