Signed number multiplication on FPGA
The Vivado synthesiser is smart. You have to declare the operands as signed. If the operands are unsigned, explicitly type cast all of them to signed and then simply multiply using *. It should infer a signed DSP multiplier on synthesis.
If it's not inferring automatically (can be due to multiple reasons), then you may have to use USE_DSP attribute to force the synthesiser to map the multiplication logic to DSP slice.
Page 61, Vivado Synthesis Guide