A graph-based iterative method is provided for selecting component
modifications in an integrated circuit design that reduce the power
consumption to a minimum while still meeting timing constraints.
Channel-connected components are represented as nodes in a timing graph
and edges in the timing graph represent directed paths. From the timing
graph, a move graph is constructed containing a plurality of move nodes.
Each move node represents a change to one of the components in one of the
timing graph nodes. A given timing graph node can result in a plurality
of move nodes. Move nodes can be merged into group nodes, and both the
move nodes and group nodes are assigned a weight based on the change in
power and timing effects of the associated components changes. These
weights are used to select move nodes or group nodes. In general, a set
of move or group nodes is selected representing the maximum cumulative
weight and the components changes associated with the nodes in the set
are performed on the integrated circuit design. Moves that cause timing
violations are reversed. The node weights are updated following
components changes and the selection of node sets is repeated iteratively
until the power consumption converges to a minimum.