I have a large multi-input multi-output design where each primary output is written in terms of primary inputs. Because the design is so large, DC is unable to synthesize the circuit. A straightforward solution is to synthesize each output individually and later, synthesize the bigger design by instantiating these smaller modules. However, I think there is a lot of room for optimization because all output functions share the exact same inputs.
Does ungrouping different designs optimize mostly around the boundaries or will optimize the whole design regardless of whether each smaller module has been synthesized before or not? If it optimizes the design as a whole, is there an advantage to synthesizing smaller modules first?
In other words, I like to use a divide and conquer method that synthesizes smaller modules first, but takes advantage of the fact that small modules share the same inputs and optimize around boundaries. Is there a set of DC commands that can achieve this?