Inferring DSP pre-adders and post-adders in VHDL
Hello, I have isolated my problem in a very simple piece of code:
entity pruebas is
port( a, b : in unsigned(26 downto 0);
b : in unsigned(7 downto 0);
res : out unsigned(53 downto 0));
end pruebas;
architecture RTL of pruebas is
begin
res <= a * (b + c);
end RTL;
I expected that Quartus Prime 16.1 would add “c” using the pre-adder before the multiplier in the DSP, but it’s using LUTs instead.
A very similar example (res <= (a*b) + c) also uses LUTs instead of a accumulator/adder at the end of the DPS. In this case, I made c larger, in the range of 30 bits.
Is there any trick or condition to fulfill in order that Quartus implements those sums using the available resources inside the DSP block? All user guides I've checked so far explain the capabilities of the devices, but I cannot find any actual implementation example.
I'm targeting an Arria 10 device, btw.
Thanks in advance,
Roberto