update adder techmap to implement last 2 bits into regular logic

Signed-off-by: Tarachand Pagarani <tpagarani@quicklogic.com>
diff --git a/ql-qlf-plugin/qlf_k6n10f/arith_map.v b/ql-qlf-plugin/qlf_k6n10f/arith_map.v
index 25c6901..c5dd221 100644
--- a/ql-qlf-plugin/qlf_k6n10f/arith_map.v
+++ b/ql-qlf-plugin/qlf_k6n10f/arith_map.v
@@ -9,9 +9,9 @@
 module _80_quicklogic_alu (A, B, CI, BI, X, Y, CO);
 	parameter A_SIGNED = 0;
 	parameter B_SIGNED = 0;
-	parameter A_WIDTH = 1;
-	parameter B_WIDTH = 1;
-	parameter Y_WIDTH = 1;
+	parameter A_WIDTH = 2;
+	parameter B_WIDTH = 2;
+	parameter Y_WIDTH = 2;
 	parameter _TECHMAP_CONSTVAL_CI_ = 0;
 	parameter _TECHMAP_CONSTMSK_CI_ = 0;
 
@@ -40,14 +40,15 @@
 	wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf;
 
 	genvar i;
+	wire co;
 
 	(* force_downto *)
 	//wire [Y_WIDTH-1:0] C = {CO, CI};
 	wire [Y_WIDTH:0] C;
 	(* force_downto *)
 	wire [Y_WIDTH-1:0] S  = {AA ^ BB};
-	
 	assign CO[Y_WIDTH-1:0] = C[Y_WIDTH:1];
+        //assign CO[Y_WIDTH-1] = co;
 
 	generate
 	     adder_carry intermediate_adder (
@@ -59,7 +60,7 @@
 	     );
 	endgenerate
 	genvar i;
-	generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice
+	generate for (i = 0; i < Y_WIDTH-2; i = i + 1) begin:slice
 		adder_carry  my_adder (
 			.cin(C[i]),
 			.g(AA[i]),
@@ -68,6 +69,21 @@
 		        .sumout(Y[i])
 		);
 	end endgenerate
+	generate
+	     adder_carry final_adder (
+	       .cin     (C[Y_WIDTH-2]),
+	       .cout    (),
+	       .p       (1'b0),
+	       .g       (1'b0),
+	       .sumout    (co)
+	     );
+	endgenerate
+
+	assign Y[Y_WIDTH-2] = S[Y_WIDTH-2] ^ co;
+        assign C[Y_WIDTH-1] = S[Y_WIDTH-2] ? co : AA[Y_WIDTH-2];
+	assign Y[Y_WIDTH-1] = S[Y_WIDTH-1] ^ C[Y_WIDTH-1];
+        assign C[Y_WIDTH] = S[Y_WIDTH-1] ? C[Y_WIDTH-1] : AA[Y_WIDTH-1];
+
 	assign X = S;
 endmodule
 
diff --git a/ql-qlf-plugin/tests/full_adder/full_adder.tcl b/ql-qlf-plugin/tests/full_adder/full_adder.tcl
index 41443f4..deef6b5 100644
--- a/ql-qlf-plugin/tests/full_adder/full_adder.tcl
+++ b/ql-qlf-plugin/tests/full_adder/full_adder.tcl
@@ -68,7 +68,7 @@
 design -load postopt
 yosys cd full_adder
 stat
-select -assert-count 6 t:adder_carry
+select -assert-count 5 t:adder_carry
 
 design -reset
 
@@ -80,7 +80,7 @@
 design -load postopt
 yosys cd subtractor
 stat
-select -assert-count 6 t:adder_carry
+select -assert-count 5 t:adder_carry
 
 design -reset
 
@@ -92,7 +92,7 @@
 design -load postopt
 yosys cd comparator
 stat
-select -assert-count 5 t:adder_carry
+select -assert-count 4 t:adder_carry
 
 design -reset