similar to my big Sqrt problem (Thread), I encountered the need for wide multiplications in one of my designs.
In this post I want to show you a solution for that problem I worked out.
My solution is to split the multiplication into two multiplications and add them after the multiplications:
For signed values, I take the absolute value and do a manual complement afterwards:
In this example only the lower link is signed. If both links are signed, do the absolute value and the negative check for the upper link, too. Feed "neg A xor neg B" into the lower port of "Complement".
I added a test design for you. There are other options possible: you may use the same approach like in the Sqrt example to work with pseudo floating point data.