Xilinx ZYNQ/ARTIX7 Invert Clock without inducing skew
With Xilinx devices, using an ODDR is actually the recommended way to output a clock signal on a pin, especially if you have tight timing constraints. Do this for both clk and clk180, and both will have the same, repeatable timing. It is not a workaround at all.

See comment on the Xilinx forum here by a Xilinx Engineer:


  ODDR keeps the duty cycle and provides the best possible path.  No routing of clock on any interconnect, clock remains on the global clock resources where they belong.


It's also mentioned in the Xilinx 7-Series Select IO user guide, page 128, section "OLOGIC Resources" > "Clock Forwarding":


  Output DDR can forward a copy of the clock to the output. This is useful for propagating
  a clock and DDR data with identical delays, and for multiple clock generation


You could play around with balancing LUT delays with other LUTs, ODELAY, and constraints, but this will not approach the simplicity or timing predictability of the ODDR method.