A method, algorithm, software, architecture and system for placing circuit
components and routing wires. The method and algorithm generally include
(a) placing components in an array of allowed locations, wherein each of
the components receives a clock signal and each of the allowed locations
is about the same distance from a first nearest neighbor along at least a
first axis as are other allowed locations along said first axis, and (b)
one of the following: (i) independently routing a plurality of
combinational paths from at least two components to at least two other
components, (ii) routing the clock signal to the components, or both (i)
and (ii). The present method, algorithm, software, architecture and
system advantageously reduce power and/or current consumption in
integrated circuits, improve uniformity of timing for signal paths
between clocked circuit components, and/or ensure that timing
requirements for signal paths between clocked circuit components are met
automatically.