Map multipliers to DSP blocks using Quartus 18.0
Hi,
I want to map multipliers to the Arria 10 DSP blocks using Quartus 18.0 Pro.
I'm using the following code from the template:
module teste
#(parameter WIDTH=18)
(
input clk,
input signed [WIDTH-1:0] dataa,
input signed [WIDTH-1:0] datab,
//input rst_n,
//input enb,
output reg signed [2*WIDTH:0] dataout
);
// Declare input and output registers
reg signed [WIDTH-1:0] dataa_reg;
reg signed [WIDTH-1:0] datab_reg;
wire signed [2*WIDTH:0] mult_out;
// Store the result of the multiply
assign mult_out = dataa*datab;
// Update data
always @ (posedge clk)
begin
dataout <= mult_out;
end
The problem is: Quartus 18.0 doesn't map the multiplier to dsp block and give the following message: Warning(16229): One or more output registers failed to be packed into a DSP bank due to multiple fan-outs from the DSP block. Because that doesn't register the output.
When I use the same code or others code in Quartus 17.1.0, it maps the multiplier to a DSP block with a registered output.
Why Quartus 17.1 maps the multiplier to a DSP block and Quartus 18 don't?