input signed[31:0] Reg1;
input signed[31:0] Reg2;
output[31:0] Result;
reg signed[31:0] Result;
reg[63:0] mul;
mul = Reg1 * Reg2;
Result = mul[31:0];
How about:
Result = (Reg1 * Reg2) & 32'hffffffff;
But are you sure you want the LSbits? If you instead want the MSbits,
perhaps:
Result = (Reg1 * Reg2) >>> 31;
But you should double-check for proper alignment of the signed
multiply result compared to your expectation.
If I just do:
Result = (Reg1 * Reg2)
would that give me the 32 bits of the resulting multiplication?
That would just give you the least-significant 32 bits of your
multiplication. If that's what you want, you're golden.