How does an FPGA synthesis tool decide how to implement arithmetic operations on the target hardware?
For example, if I implement some integer multiplication and division operations directly in HDL statements, the hardware implementation options could be:
- A LUT for all possible input combinations.
- Some multiplication or division algorithms such as Booth / Baugh-Wooley etc. using full adders.
- An ALU.
Does the synthesis tool just do the first option and generate a LUT for all input combinations unless a specific architecture is defined?
Is there any way of knowing what implementation the synthesis tool has used?