1. The method of optimizing the height of a set of blocks in a circuit design, comprising the steps of: (a) identifying a plurality of constrained heights of blocks by examining the sizes of the blocks; (b) determining the number and total area of blocks that would be of unit height for the plurality of constrained heights; (c) selecting at least one of the plurality of constrained heights; (d) defining the sizes of blocks to closely fit within integer multiples of the at least one selected height; (e) generating an abstract placement with an automated computer; and (f) legalizing the abstract placement while ensuring compliance with a set of legalization rules and optimizing legalization cost, wherein said legalization cost is dependent on at least one of a displacement of a macro block, an amount of shadowed area covered by the block, the roughness relative to prior legalized blocks, and the degree of alignment achieved with previously legalized blocks.