The fix to meet timing for both of these interfaces is to lock the below resources.
Receive path - Lock I/Os and Clock Buffers to the same clock region.
The Receive clock should go to two clock Buffers.
One dedicated clock buffer will provide clock to Flops inside the I/Os and the other clock buffer to the rest of the receive logic.
Note: In v8.3 TEMAC in Vivado 2014.4, the relative file needs to be modified to add an extra buffer.
However, this is no longer required with v9.0 TEMAC in Vivado 2015.1.
Transmit path - Lock I/Os, Clock Buffers and MMCM in the same clock region.
If the tool does the correct placement without locking the resources as outlined above then the design meets timing.