Forum Discussion
LPM_MULT not working for Cyclone 10 GX device
- 1 year ago
I could strip down the design, but I have some new information. I was able to work around the issue by changing the implementation style to "Use logic elements", in lieu of "Use the default implementation" or "Use the dedicated multiplier circuitry". I believe the default implementation is to use the dedicated multiplier circuitry. I think there really is a bug in the Altera LPM_MULT IP when using multiplier blocks.
Changed to "Use loigc elements"Signal Tap showing ckt works as expected
Hi,
I mean just give a wrapper to LPM_MULT and assign value to dataa and datab. Version 24.3 and Arria 10 device (currently don't have cyclone 10 gx available). I don't think device will matter.
Thanks,
Regards,
Sheng
I'm not sure what the point is. The wrapper was created by the wizard. Is the following incorrect? (Note, this is for the workaround version using logic cells. The lpm_hint in the broken version was just "MAXIMIZE_SPEED=5").
// mul_11bit_14bit.v
// Generated using ACDS version 24.2 40
`timescale 1 ps / 1 ps
module mul_11bit_14bit (
input wire [10:0] dataa, // dataa.dataa, Input data A of this multiplier
output wire [24:0] result, // result.result, Result of the multiplier
input wire [13:0] datab, // datab.datab, Input data B of this multiplier
input wire clock // clock.clk, Clock input for pipelined usage.
);mul_11bit_14bit_lpm_mult_1921_acrkt5q lpm_mult_0 (
.dataa (dataa), // input, width = 11, dataa.dataa
.result (result), // output, width = 25, result.result
.datab (datab), // input, width = 14, datab.datab
.clock (clock) // input, width = 1, clock.clk
);endmodule
module mul_11bit_14bit_lpm_mult_1921_acrkt5q (
clock,
dataa,
datab,
result);input clock;
input [10:0] dataa;
input [13:0] datab;
output [24:0] result;wire [24:0] sub_wire0;
wire [24:0] result = sub_wire0[24:0];lpm_mult lpm_mult_component (
.clock (clock),
.dataa (dataa),
.datab (datab),
.result (sub_wire0),
.aclr (),
.clken (1'b1),
.sclr (1'b0),
.sum (1'b0));
defparam
lpm_mult_component.lpm_hint = "DEDICATED_MULTIPLIER_CIRCUITRY=NO,MAXIMIZE_SPEED=5",
lpm_mult_component.lpm_pipeline = 1,
lpm_mult_component.lpm_representation = "UNSIGNED",
lpm_mult_component.lpm_type = "LPM_MULT",
lpm_mult_component.lpm_widtha = 11,
lpm_mult_component.lpm_widthb = 14,
lpm_mult_component.lpm_widthp = 25;
endmodule