Just throwing the entire design at the synthesizer these days seems to be pretty close to a collection of hand laid out hard macros. The synthesizer being a lot more aggressive about optimizing out signals that leave the macro (and downstream uses of those signals, so those global optimizations that are hard for a human to see) seems to make up for it's deficiencies with perfect local layout.