Keywords: embedded, Virtex-4, Virtex-II
In my design, when the operands are used twice (once for unsigned and once for signed), XST creates one unsigned multiplier:
C <= A*B;
S <= tmp + signed(A)*signed(B);
XST only infers one multiplier for C and an adder for S. The logic inferred for S is incorrect.