Geert
New Contributor
5 years agoInference of DSP block with accumulator does not work
I'm trying to infer a DSP block with accumulator for Arria 10, using Quartus Prime 17.0.
The high-level functionality I need is:
if rising_edge(clk) then if sload = '1' then out <= a * b; else out <= out + a * b end if; end if;
I started from the template provided in Quartus: VHDL/Full Designs/Arithmetic/Signed Multiply-Accumulate, but this does not work: it uses a DSP block for the multiplier, but it does not use the accumulator function.
Instead, for small word sizes, it creates a loop back path via the second multiplier inputs to bring the output back to the adder.
When I increase the accumulator width to 48, the accumulator is implemented entirely in LUTs
Any ideas how to force use of the DSP block accumulator (preferably using inference) ?
Thanks, Geert