Don't use gated clocks. Use the same global clock signal, and pass the enable signal into the modules and condition their operation with that enable. If you do this then all your circuits operate off the same clock signal, and the enable and data inputs just need to meet setup/hold with respect to the clock. You can then also employ the multicycle timing constraint to ease the implementation as well, possibly allowing for a higher clock rate. Gated clocks is generally a very bad idea as controlling skew between them because of the inline logic is hard.