Index: sandbox/MultiChannelUSB/cic_filter.v
===================================================================
--- sandbox/MultiChannelUSB/cic_filter.v	(revision 118)
+++ sandbox/MultiChannelUSB/cic_filter.v	(revision 119)
@@ -31,4 +31,6 @@
 	wire	[size*widthr-1:0]	acc_data_wire [2:0], del_data_wire [1:0];
 
+	wire	[size*widthr-1:0]	add_data_wire, sub_data_wire;
+
 
 	integer i;
@@ -41,30 +43,43 @@
 
 			// -2*del_data_1 + del_data_2 + inp_data + result
-			parallel_add #(
-				.msw_subtract("YES"),
-				.representation("SIGNED"),
-				.result_alignment("LSB"),
-				.shift(0),
-				.size(4),
-				.width(widthr),
-				.widthr(widthr)) acc_unit_1 (
-				.data({
-					{del_data_wire[0][j*widthr+widthr-1],del_data_wire[0][j*widthr+widthr-3:j*widthr], 1'b0},
-					{del_data_wire[1][j*widthr+widthr-1:j*widthr]},
-					{acc_data_reg[0][j*widthr+widthr-1:j*widthr]},
-					{acc_data_reg[1][j*widthr+widthr-1:j*widthr]}}),
+
+			lpm_add_sub	#(
+				.lpm_direction("ADD"),
+				.lpm_hint("ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO"),
+				.lpm_representation("SIGNED"),
+				.lpm_type("LPM_ADD_SUB"),
+				.lpm_width(widthr)) add_unit_1 (
+				.dataa(acc_data_reg[0][j*widthr+widthr-1:j*widthr]),
+				.datab(del_data_wire[1][j*widthr+widthr-1:j*widthr]),
+				.result(add_data_wire[j*widthr+widthr-1:j*widthr]));
+
+			lpm_add_sub	#(
+				.lpm_direction("SUB"),
+				.lpm_hint("ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO"),
+				.lpm_representation("SIGNED"),
+				.lpm_type("LPM_ADD_SUB"),
+				.lpm_width(widthr)) sub_unit_1 (
+				.dataa(acc_data_reg[1][j*widthr+widthr-1:j*widthr]),
+				.datab({del_data_wire[0][j*widthr+widthr-1],del_data_wire[0][j*widthr+widthr-3:j*widthr], 1'b0}),
+				.result(sub_data_wire[j*widthr+widthr-1:j*widthr]));
+
+			lpm_add_sub	#(
+				.lpm_direction("ADD"),
+				.lpm_hint("ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO"),
+				.lpm_representation("SIGNED"),
+				.lpm_type("LPM_ADD_SUB"),
+				.lpm_width(widthr)) acc_unit_1 (
+				.dataa(add_data_wire[j*widthr+widthr-1:j*widthr]),
+				.datab(sub_data_wire[j*widthr+widthr-1:j*widthr]),
 				.result(acc_data_wire[1][j*widthr+widthr-1:j*widthr]));
 
-			parallel_add #(
-				.msw_subtract("NO"),
-				.representation("SIGNED"),
-				.result_alignment("LSB"),
-				.shift(0),
-				.size(2),
-				.width(widthr),
-				.widthr(widthr)) acc_unit_2 (
-				.data({
-					{acc_data_reg[1][j*widthr+widthr-1:j*widthr]},
-					{acc_data_reg[2][j*widthr+widthr-1:j*widthr]}}),
+			lpm_add_sub	#(
+				.lpm_direction("ADD"),
+				.lpm_hint("ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO"),
+				.lpm_representation("SIGNED"),
+				.lpm_type("LPM_ADD_SUB"),
+				.lpm_width(widthr)) acc_unit_2 (
+				.dataa(acc_data_reg[1][j*widthr+widthr-1:j*widthr]),
+				.datab(acc_data_reg[2][j*widthr+widthr-1:j*widthr]),
 				.result(acc_data_wire[2][j*widthr+widthr-1:j*widthr]));
 
