blob: 701ddead355159671bf0e427ec056aa94e7e7c93 [file] [log] [blame]
module Fadder_(
carry,
sum,
in3,
in2,
in1
);
input in1, in2, in3;
output sum, carry;
assign sum=in1^in2^in3;
assign carry=(in1&in2) | (in2&in3) | (in1&in3);
endmodule
module Fadder_2(
in1,
in2,
in3,
sum,
carry
);
input in1, in2, in3;
output sum, carry;
assign sum=in1^in2^in3;
assign carry=(in1&in2) | (in2&in3) | (in1&in3);
endmodule
module Hadder_(
carry,
sum,
in2,
in1
);
input in1, in2;
output sum, carry;
assign sum=in1^in2;
assign carry=in1&in2;
endmodule
module mult_(
a,
b,
s,
c);
input [31:0] a;
input [31:0] b;
output [63:0] s;
output [62:0] c;
wire [31:0] a_;
wire sign_ ;
reg [33:0] P_0 ;
reg [33:0] P_1 ;
reg [33:0] P_2 ;
reg [33:0] P_3 ;
reg [33:0] P_4 ;
reg [33:0] P_5 ;
reg [33:0] P_6 ;
reg [33:0] P_7 ;
reg [33:0] P_8 ;
reg [33:0] P_9 ;
reg [33:0] P_10 ;
reg [33:0] P_11 ;
reg [33:0] P_12 ;
reg [33:0] P_13 ;
reg [33:0] P_14 ;
reg [33:0] P_15 ;
reg [31:0] inc ;
assign sign_ = 1'b1 ;
assign a_ = (~ a) ;
always @( a or b or a_ )
begin
case( b[1:0] )
2'b00:
begin
inc[0]=1'b0 ;
inc[1]=1'b0 ;
P_0={1'b1,{33'b000000000000000000000000000000000}} ;
end
2'b01:
begin
inc[0]=1'b0 ;
inc[1]=1'b0 ;
P_0={(~a[31]),a[31],a} ;
end
2'b10:
begin
inc[0]=1'b0 ;
inc[1]=1'b1 ;
P_0={(~a_[31]),a_,1'b0} ;
end
2'b11:
begin
inc[0]=1'b1 ;
inc[1]=1'b0 ;
P_0={(~a_[31]),a_[31],a_} ;
end
endcase
case({b[3:1]})
3'b000:
begin
inc[2]=1'b0 ;
inc[3]=1'b0 ;
P_1={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[2]=1'b0 ;
inc[3]=1'b0 ;
P_1={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[2]=1'b0 ;
inc[3]=1'b0 ;
P_1={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[2]=1'b0 ;
inc[3]=1'b0 ;
P_1={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[2]=1'b0 ;
inc[3]=1'b1 ;
P_1={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[2]=1'b1 ;
inc[3]=1'b0 ;
P_1={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[2]=1'b1 ;
inc[3]=1'b0 ;
P_1={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[2]=1'b0 ;
inc[3]=1'b0 ;
P_1={(~a[31]),a,1'b0} ;
end
endcase
case({b[5:3]})
3'b000:
begin
inc[4]=1'b0 ;
inc[5]=1'b0 ;
P_2={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[4]=1'b0 ;
inc[5]=1'b0 ;
P_2={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[4]=1'b0 ;
inc[5]=1'b0 ;
P_2={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[4]=1'b0 ;
inc[5]=1'b0 ;
P_2={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[4]=1'b0 ;
inc[5]=1'b1 ;
P_2={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[4]=1'b1 ;
inc[5]=1'b0 ;
P_2={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[4]=1'b1 ;
inc[5]=1'b0 ;
P_2={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[4]=1'b0 ;
inc[5]=1'b0 ;
P_2={(~a[31]),a,1'b0} ;
end
endcase
case({b[7:5]})
3'b000:
begin
inc[6]=1'b0 ;
inc[7]=1'b0 ;
P_3={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[6]=1'b0 ;
inc[7]=1'b0 ;
P_3={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[6]=1'b0 ;
inc[7]=1'b0 ;
P_3={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[6]=1'b0 ;
inc[7]=1'b0 ;
P_3={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[6]=1'b0 ;
inc[7]=1'b1 ;
P_3={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[6]=1'b1 ;
inc[7]=1'b0 ;
P_3={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[6]=1'b1 ;
inc[7]=1'b0 ;
P_3={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[6]=1'b0 ;
inc[7]=1'b0 ;
P_3={(~a[31]),a,1'b0} ;
end
endcase
case({b[9:7]})
3'b000:
begin
inc[8]=1'b0 ;
inc[9]=1'b0 ;
P_4={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[8]=1'b0 ;
inc[9]=1'b0 ;
P_4={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[8]=1'b0 ;
inc[9]=1'b0 ;
P_4={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[8]=1'b0 ;
inc[9]=1'b0 ;
P_4={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[8]=1'b0 ;
inc[9]=1'b1 ;
P_4={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[8]=1'b1 ;
inc[9]=1'b0 ;
P_4={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[8]=1'b1 ;
inc[9]=1'b0 ;
P_4={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[8]=1'b0 ;
inc[9]=1'b0 ;
P_4={(~a[31]),a,1'b0} ;
end
endcase
case({b[11:9]})
3'b000:
begin
inc[10]=1'b0 ;
inc[11]=1'b0 ;
P_5={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[10]=1'b0 ;
inc[11]=1'b0 ;
P_5={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[10]=1'b0 ;
inc[11]=1'b0 ;
P_5={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[10]=1'b0 ;
inc[11]=1'b0 ;
P_5={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[10]=1'b0 ;
inc[11]=1'b1 ;
P_5={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[10]=1'b1 ;
inc[11]=1'b0 ;
P_5={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[10]=1'b1 ;
inc[11]=1'b0 ;
P_5={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[10]=1'b0 ;
inc[11]=1'b0 ;
P_5={(~a[31]),a,1'b0} ;
end
endcase
case({b[13:11]})
3'b000:
begin
inc[12]=1'b0 ;
inc[13]=1'b0 ;
P_6={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[12]=1'b0 ;
inc[13]=1'b0 ;
P_6={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[12]=1'b0 ;
inc[13]=1'b0 ;
P_6={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[12]=1'b0 ;
inc[13]=1'b0 ;
P_6={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[12]=1'b0 ;
inc[13]=1'b1 ;
P_6={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[12]=1'b1 ;
inc[13]=1'b0 ;
P_6={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[12]=1'b1 ;
inc[13]=1'b0 ;
P_6={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[12]=1'b0 ;
inc[13]=1'b0 ;
P_6={(~a[31]),a,1'b0} ;
end
endcase
case({b[15:13]})
3'b000:
begin
inc[14]=1'b0 ;
inc[15]=1'b0 ;
P_7={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[14]=1'b0 ;
inc[15]=1'b0 ;
P_7={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[14]=1'b0 ;
inc[15]=1'b0 ;
P_7={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[14]=1'b0 ;
inc[15]=1'b0 ;
P_7={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[14]=1'b0 ;
inc[15]=1'b1 ;
P_7={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[14]=1'b1 ;
inc[15]=1'b0 ;
P_7={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[14]=1'b1 ;
inc[15]=1'b0 ;
P_7={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[14]=1'b0 ;
inc[15]=1'b0 ;
P_7={(~a[31]),a,1'b0} ;
end
endcase
case({b[17:15]})
3'b000:
begin
inc[16]=1'b0 ;
inc[17]=1'b0 ;
P_8={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[16]=1'b0 ;
inc[17]=1'b0 ;
P_8={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[16]=1'b0 ;
inc[17]=1'b0 ;
P_8={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[16]=1'b0 ;
inc[17]=1'b0 ;
P_8={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[16]=1'b0 ;
inc[17]=1'b1 ;
P_8={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[16]=1'b1 ;
inc[17]=1'b0 ;
P_8={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[16]=1'b1 ;
inc[17]=1'b0 ;
P_8={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[16]=1'b0 ;
inc[17]=1'b0 ;
P_8={(~a[31]),a,1'b0} ;
end
endcase
case({b[19:17]})
3'b000:
begin
inc[18]=1'b0 ;
inc[19]=1'b0 ;
P_9={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[18]=1'b0 ;
inc[19]=1'b0 ;
P_9={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[18]=1'b0 ;
inc[19]=1'b0 ;
P_9={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[18]=1'b0 ;
inc[19]=1'b0 ;
P_9={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[18]=1'b0 ;
inc[19]=1'b1 ;
P_9={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[18]=1'b1 ;
inc[19]=1'b0 ;
P_9={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[18]=1'b1 ;
inc[19]=1'b0 ;
P_9={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[18]=1'b0 ;
inc[19]=1'b0 ;
P_9={(~a[31]),a,1'b0} ;
end
endcase
case({b[21:19]})
3'b000:
begin
inc[20]=1'b0 ;
inc[21]=1'b0 ;
P_10={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[20]=1'b0 ;
inc[21]=1'b0 ;
P_10={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[20]=1'b0 ;
inc[21]=1'b0 ;
P_10={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[20]=1'b0 ;
inc[21]=1'b0 ;
P_10={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[20]=1'b0 ;
inc[21]=1'b1 ;
P_10={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[20]=1'b1 ;
inc[21]=1'b0 ;
P_10={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[20]=1'b1 ;
inc[21]=1'b0 ;
P_10={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[20]=1'b0 ;
inc[21]=1'b0 ;
P_10={(~a[31]),a,1'b0} ;
end
endcase
case({b[23:21]})
3'b000:
begin
inc[22]=1'b0 ;
inc[23]=1'b0 ;
P_11={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[22]=1'b0 ;
inc[23]=1'b0 ;
P_11={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[22]=1'b0 ;
inc[23]=1'b0 ;
P_11={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[22]=1'b0 ;
inc[23]=1'b0 ;
P_11={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[22]=1'b0 ;
inc[23]=1'b1 ;
P_11={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[22]=1'b1 ;
inc[23]=1'b0 ;
P_11={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[22]=1'b1 ;
inc[23]=1'b0 ;
P_11={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[22]=1'b0 ;
inc[23]=1'b0 ;
P_11={(~a[31]),a,1'b0} ;
end
endcase
case({b[25:23]})
3'b000:
begin
inc[24]=1'b0 ;
inc[25]=1'b0 ;
P_12={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[24]=1'b0 ;
inc[25]=1'b0 ;
P_12={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[24]=1'b0 ;
inc[25]=1'b0 ;
P_12={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[24]=1'b0 ;
inc[25]=1'b0 ;
P_12={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[24]=1'b0 ;
inc[25]=1'b1 ;
P_12={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[24]=1'b1 ;
inc[25]=1'b0 ;
P_12={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[24]=1'b1 ;
inc[25]=1'b0 ;
P_12={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[24]=1'b0 ;
inc[25]=1'b0 ;
P_12={(~a[31]),a,1'b0} ;
end
endcase
case({b[27:25]})
3'b000:
begin
inc[26]=1'b0 ;
inc[27]=1'b0 ;
P_13={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[26]=1'b0 ;
inc[27]=1'b0 ;
P_13={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[26]=1'b0 ;
inc[27]=1'b0 ;
P_13={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[26]=1'b0 ;
inc[27]=1'b0 ;
P_13={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[26]=1'b0 ;
inc[27]=1'b1 ;
P_13={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[26]=1'b1 ;
inc[27]=1'b0 ;
P_13={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[26]=1'b1 ;
inc[27]=1'b0 ;
P_13={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[26]=1'b0 ;
inc[27]=1'b0 ;
P_13={(~a[31]),a,1'b0} ;
end
endcase
case({b[29:27]})
3'b000:
begin
inc[28]=1'b0 ;
inc[29]=1'b0 ;
P_14={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[28]=1'b0 ;
inc[29]=1'b0 ;
P_14={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[28]=1'b0 ;
inc[29]=1'b0 ;
P_14={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[28]=1'b0 ;
inc[29]=1'b0 ;
P_14={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[28]=1'b0 ;
inc[29]=1'b1 ;
P_14={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[28]=1'b1 ;
inc[29]=1'b0 ;
P_14={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[28]=1'b1 ;
inc[29]=1'b0 ;
P_14={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[28]=1'b0 ;
inc[29]=1'b0 ;
P_14={(~a[31]),a,1'b0} ;
end
endcase
case({b[31:29]})
3'b000:
begin
inc[30]=1'b0 ;
inc[31]=1'b0 ;
P_15={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b111:
begin
inc[30]=1'b0 ;
inc[31]=1'b0 ;
P_15={1'b1,{33'b000000000000000000000000000000000}} ;
end
3'b001:
begin
inc[30]=1'b0 ;
inc[31]=1'b0 ;
P_15={(~a[31]),a[31],a} ;
end
3'b010:
begin
inc[30]=1'b0 ;
inc[31]=1'b0 ;
P_15={(~a[31]),a[31],a} ;
end
3'b100:
begin
inc[30]=1'b0 ;
inc[31]=1'b1 ;
P_15={(~a_[31]),a_,1'b0} ;
end
3'b101:
begin
inc[30]=1'b1 ;
inc[31]=1'b0 ;
P_15={(~a_[31]),a_[31],a_} ;
end
3'b110:
begin
inc[30]=1'b1 ;
inc[31]=1'b0 ;
P_15={(~a_[31]),a_[31],a_} ;
end
3'b011:
begin
inc[30]=1'b0 ;
inc[31]=1'b0 ;
P_15={(~a[31]),a,1'b0} ;
end
endcase
end
// ***** Bit 0 ***** //
Hadder_ A_0_0( .carry(c[0]), .sum(s[0]), .in2(inc[0]), .in1(P_0[0]) );
// ***** Bit 1 ***** //
Hadder_ A_1_1( .carry(c[1]), .sum(s[1]), .in2(inc[1]), .in1(P_0[1]) );
// ***** Bit 2 ***** //
Fadder_ A_2_2( .carry(c[2]), .sum(s[2]), .in3(inc[2]), .in2(P_1[0]), .in1(P_0[2]) );
// ***** Bit 3 ***** //
Fadder_ A_3_3( .carry(c[3]), .sum(s[3]), .in3(inc[3]), .in2(P_1[1]), .in1(P_0[3]) );
// ***** Bit 4 ***** //
Hadder_ A_4_4( .carry(c_4_4), .sum(s_4_4), .in2(inc[4]), .in1(P_2[0]) );
Fadder_ A_4_5( .carry(c[4]), .sum(s[4]), .in3(P_1[2]), .in2(P_0[4]), .in1(s_4_4) );
// ***** Bit 5 ***** //
Fadder_ A_5_6( .carry(c_5_6), .sum(s_5_6), .in3(inc[5]), .in2(P_2[1]), .in1(P_1[3]) );
Fadder_ A_5_7( .carry(c[5]), .sum(s[5]), .in3(P_0[5]), .in2(c_4_4), .in1(s_5_6) );
// ***** Bit 6 ***** //
Hadder_ A_6_8( .carry(c_6_8), .sum(s_6_8), .in2(inc[6]), .in1(P_3[0]) );
Fadder_ A_6_9( .carry(c_6_9), .sum(s_6_9), .in3(P_2[2]), .in2(P_1[4]), .in1(P_0[6]) );
Fadder_ A_6_10( .carry(c[6]), .sum(s[6]), .in3(c_5_6), .in2(s_6_9), .in1(s_6_8) );
// ***** Bit 7 ***** //
Fadder_ A_7_11( .carry(c_7_11), .sum(s_7_11), .in3(inc[7]), .in2(P_3[1]), .in1(P_2[3]) );
Fadder_ A_7_12( .carry(c_7_12), .sum(s_7_12), .in3(P_1[5]), .in2(P_0[7]), .in1(c_6_9) );
Fadder_ A_7_13( .carry(c[7]), .sum(s[7]), .in3(c_6_8), .in2(s_7_11), .in1(s_7_12) );
// ***** Bit 8 ***** //
Hadder_ A_8_14( .carry(c_8_14), .sum(s_8_14), .in2(inc[8]), .in1(P_4[0]) );
Fadder_ A_8_15( .carry(c_8_15), .sum(s_8_15), .in3(P_3[2]), .in2(P_2[4]), .in1(P_1[6]) );
Fadder_ A_8_16( .carry(c_8_16), .sum(s_8_16), .in3(P_0[8]), .in2(c_7_11), .in1(s_8_15) );
Fadder_ A_8_17( .carry(c[8]), .sum(s[8]), .in3(s_8_14), .in2(c_7_12), .in1(s_8_16) );
// ***** Bit 9 ***** //
Fadder_ A_9_18( .carry(c_9_18), .sum(s_9_18), .in3(inc[9]), .in2(P_4[1]), .in1(P_3[3]) );
Fadder_ A_9_19( .carry(c_9_19), .sum(s_9_19), .in3(P_2[5]), .in2(P_1[7]), .in1(P_0[9]) );
Fadder_ A_9_20( .carry(c_9_20), .sum(s_9_20), .in3(c_8_15), .in2(c_8_14), .in1(s_9_19) );
Fadder_ A_9_21( .carry(c[9]), .sum(s[9]), .in3(s_9_18), .in2(c_8_16), .in1(s_9_20) );
// ***** Bit 10 ***** //
Hadder_ A_10_22( .carry(c_10_22), .sum(s_10_22), .in2(inc[10]), .in1(P_5[0]) );
Fadder_ A_10_23( .carry(c_10_23), .sum(s_10_23), .in3(P_4[2]), .in2(P_3[4]), .in1(P_2[6]) );
Fadder_ A_10_24( .carry(c_10_24), .sum(s_10_24), .in3(P_1[8]), .in2(P_0[10]), .in1(c_9_19) );
Fadder_ A_10_25( .carry(c_10_25), .sum(s_10_25), .in3(c_9_18), .in2(s_10_23), .in1(s_10_22) );
Fadder_ A_10_26( .carry(c[10]), .sum(s[10]), .in3(c_9_20), .in2(s_10_24), .in1(s_10_25) );
// ***** Bit 11 ***** //
Fadder_ A_11_27( .carry(c_11_27), .sum(s_11_27), .in3(inc[11]), .in2(P_5[1]), .in1(P_4[3]) );
Fadder_ A_11_28( .carry(c_11_28), .sum(s_11_28), .in3(P_3[5]), .in2(P_2[7]), .in1(P_1[9]) );
Fadder_ A_11_29( .carry(c_11_29), .sum(s_11_29), .in3(P_0[11]), .in2(c_10_23), .in1(c_10_22) );
Fadder_ A_11_30( .carry(c_11_30), .sum(s_11_30), .in3(s_11_28), .in2(s_11_27), .in1(c_10_24) );
Fadder_ A_11_31( .carry(c[11]), .sum(s[11]), .in3(s_11_29), .in2(c_10_25), .in1(s_11_30) );
// ***** Bit 12 ***** //
Hadder_ A_12_32( .carry(c_12_32), .sum(s_12_32), .in2(inc[12]), .in1(P_6[0]) );
Fadder_ A_12_33( .carry(c_12_33), .sum(s_12_33), .in3(P_5[2]), .in2(P_4[4]), .in1(P_3[6]) );
Fadder_ A_12_34( .carry(c_12_34), .sum(s_12_34), .in3(P_2[8]), .in2(P_1[10]), .in1(P_0[12]) );
Fadder_ A_12_35( .carry(c_12_35), .sum(s_12_35), .in3(c_11_28), .in2(c_11_27), .in1(s_12_34) );
Fadder_ A_12_36( .carry(c_12_36), .sum(s_12_36), .in3(s_12_33), .in2(s_12_32), .in1(c_11_29) );
Fadder_ A_12_37( .carry(c[12]), .sum(s[12]), .in3(s_12_35), .in2(c_11_30), .in1(s_12_36) );
// ***** Bit 13 ***** //
Fadder_ A_13_38( .carry(c_13_38), .sum(s_13_38), .in3(inc[13]), .in2(P_6[1]), .in1(P_5[3]) );
Fadder_ A_13_39( .carry(c_13_39), .sum(s_13_39), .in3(P_4[5]), .in2(P_3[7]), .in1(P_2[9]) );
Fadder_ A_13_40( .carry(c_13_40), .sum(s_13_40), .in3(P_1[11]), .in2(P_0[13]), .in1(c_12_34) );
Fadder_ A_13_41( .carry(c_13_41), .sum(s_13_41), .in3(c_12_33), .in2(c_12_32), .in1(s_13_39) );
Fadder_ A_13_42( .carry(c_13_42), .sum(s_13_42), .in3(s_13_38), .in2(c_12_35), .in1(s_13_40) );
Fadder_ A_13_43( .carry(c[13]), .sum(s[13]), .in3(s_13_41), .in2(c_12_36), .in1(s_13_42) );
// ***** Bit 14 ***** //
Hadder_ A_14_44( .carry(c_14_44), .sum(s_14_44), .in2(inc[14]), .in1(P_7[0]) );
Fadder_ A_14_45( .carry(c_14_45), .sum(s_14_45), .in3(P_6[2]), .in2(P_5[4]), .in1(P_4[6]) );
Fadder_ A_14_46( .carry(c_14_46), .sum(s_14_46), .in3(P_3[8]), .in2(P_2[10]), .in1(P_1[12]) );
Fadder_ A_14_47( .carry(c_14_47), .sum(s_14_47), .in3(P_0[14]), .in2(c_13_39), .in1(c_13_38) );
Fadder_ A_14_48( .carry(c_14_48), .sum(s_14_48), .in3(s_14_46), .in2(s_14_45), .in1(s_14_44) );
Fadder_ A_14_49( .carry(c_14_49), .sum(s_14_49), .in3(c_13_40), .in2(c_13_41), .in1(s_14_47) );
Fadder_ A_14_50( .carry(c[14]), .sum(s[14]), .in3(s_14_48), .in2(c_13_42), .in1(s_14_49) );
// ***** Bit 15 ***** //
Fadder_ A_15_51( .carry(c_15_51), .sum(s_15_51), .in3(inc[15]), .in2(P_7[1]), .in1(P_6[3]) );
Fadder_ A_15_52( .carry(c_15_52), .sum(s_15_52), .in3(P_5[5]), .in2(P_4[7]), .in1(P_3[9]) );
Fadder_ A_15_53( .carry(c_15_53), .sum(s_15_53), .in3(P_2[11]), .in2(P_1[13]), .in1(P_0[15]) );
Fadder_ A_15_54( .carry(c_15_54), .sum(s_15_54), .in3(c_14_46), .in2(c_14_45), .in1(c_14_44) );
Fadder_ A_15_55( .carry(c_15_55), .sum(s_15_55), .in3(s_15_53), .in2(s_15_52), .in1(s_15_51) );
Fadder_ A_15_56( .carry(c_15_56), .sum(s_15_56), .in3(c_14_47), .in2(s_15_54), .in1(c_14_48) );
Fadder_ A_15_57( .carry(c[15]), .sum(s[15]), .in3(s_15_55), .in2(c_14_49), .in1(s_15_56) );
// ***** Bit 16 ***** //
Hadder_ A_16_58( .carry(c_16_58), .sum(s_16_58), .in2(inc[16]), .in1(P_8[0]) );
Fadder_ A_16_59( .carry(c_16_59), .sum(s_16_59), .in3(P_7[2]), .in2(P_6[4]), .in1(P_5[6]) );
Fadder_ A_16_60( .carry(c_16_60), .sum(s_16_60), .in3(P_4[8]), .in2(P_3[10]), .in1(P_2[12]) );
Fadder_ A_16_61( .carry(c_16_61), .sum(s_16_61), .in3(P_1[14]), .in2(P_0[16]), .in1(c_15_53) );
Fadder_ A_16_62( .carry(c_16_62), .sum(s_16_62), .in3(c_15_52), .in2(c_15_51), .in1(s_16_60) );
Fadder_ A_16_63( .carry(c_16_63), .sum(s_16_63), .in3(s_16_59), .in2(s_16_58), .in1(c_15_54) );
Fadder_ A_16_64( .carry(c_16_64), .sum(s_16_64), .in3(s_16_61), .in2(c_15_55), .in1(s_16_62) );
Fadder_ A_16_65( .carry(c[16]), .sum(s[16]), .in3(s_16_63), .in2(c_15_56), .in1(s_16_64) );
// ***** Bit 17 ***** //
Fadder_ A_17_66( .carry(c_17_66), .sum(s_17_66), .in3(inc[17]), .in2(P_8[1]), .in1(P_7[3]) );
Fadder_ A_17_67( .carry(c_17_67), .sum(s_17_67), .in3(P_6[5]), .in2(P_5[7]), .in1(P_4[9]) );
Fadder_ A_17_68( .carry(c_17_68), .sum(s_17_68), .in3(P_3[11]), .in2(P_2[13]), .in1(P_1[15]) );
Fadder_ A_17_69( .carry(c_17_69), .sum(s_17_69), .in3(P_0[17]), .in2(c_16_60), .in1(c_16_59) );
Fadder_ A_17_70( .carry(c_17_70), .sum(s_17_70), .in3(c_16_58), .in2(s_17_68), .in1(s_17_67) );
Fadder_ A_17_71( .carry(c_17_71), .sum(s_17_71), .in3(s_17_66), .in2(c_16_61), .in1(c_16_62) );
Fadder_ A_17_72( .carry(c_17_72), .sum(s_17_72), .in3(s_17_69), .in2(s_17_70), .in1(c_16_63) );
Fadder_ A_17_73( .carry(c[17]), .sum(s[17]), .in3(s_17_71), .in2(c_16_64), .in1(s_17_72) );
// ***** Bit 18 ***** //
Hadder_ A_18_74( .carry(c_18_74), .sum(s_18_74), .in2(inc[18]), .in1(P_9[0]) );
Fadder_ A_18_75( .carry(c_18_75), .sum(s_18_75), .in3(P_8[2]), .in2(P_7[4]), .in1(P_6[6]) );
Fadder_ A_18_76( .carry(c_18_76), .sum(s_18_76), .in3(P_5[8]), .in2(P_4[10]), .in1(P_3[12]) );
Fadder_ A_18_77( .carry(c_18_77), .sum(s_18_77), .in3(P_2[14]), .in2(P_1[16]), .in1(P_0[18]) );
Fadder_ A_18_78( .carry(c_18_78), .sum(s_18_78), .in3(c_17_68), .in2(c_17_67), .in1(c_17_66) );
Fadder_ A_18_79( .carry(c_18_79), .sum(s_18_79), .in3(s_18_77), .in2(s_18_76), .in1(s_18_75) );
Fadder_ A_18_80( .carry(c_18_80), .sum(s_18_80), .in3(s_18_74), .in2(c_17_69), .in1(s_18_78) );
Fadder_ A_18_81( .carry(c_18_81), .sum(s_18_81), .in3(c_17_70), .in2(s_18_79), .in1(c_17_71) );
Fadder_ A_18_82( .carry(c[18]), .sum(s[18]), .in3(s_18_80), .in2(c_17_72), .in1(s_18_81) );
// ***** Bit 19 ***** //
Fadder_ A_19_83( .carry(c_19_83), .sum(s_19_83), .in3(inc[19]), .in2(P_9[1]), .in1(P_8[3]) );
Fadder_ A_19_84( .carry(c_19_84), .sum(s_19_84), .in3(P_7[5]), .in2(P_6[7]), .in1(P_5[9]) );
Fadder_ A_19_85( .carry(c_19_85), .sum(s_19_85), .in3(P_4[11]), .in2(P_3[13]), .in1(P_2[15]) );
Fadder_ A_19_86( .carry(c_19_86), .sum(s_19_86), .in3(P_1[17]), .in2(P_0[19]), .in1(c_18_77) );
Fadder_ A_19_87( .carry(c_19_87), .sum(s_19_87), .in3(c_18_76), .in2(c_18_75), .in1(c_18_74) );
Fadder_ A_19_88( .carry(c_19_88), .sum(s_19_88), .in3(s_19_85), .in2(s_19_84), .in1(s_19_83) );
Fadder_ A_19_89( .carry(c_19_89), .sum(s_19_89), .in3(c_18_78), .in2(s_19_86), .in1(s_19_87) );
Fadder_ A_19_90( .carry(c_19_90), .sum(s_19_90), .in3(c_18_79), .in2(s_19_88), .in1(c_18_80) );
Fadder_ A_19_91( .carry(c[19]), .sum(s[19]), .in3(s_19_89), .in2(c_18_81), .in1(s_19_90) );
// ***** Bit 20 ***** //
Hadder_ A_20_92( .carry(c_20_92), .sum(s_20_92), .in2(inc[20]), .in1(P_10[0]) );
Fadder_ A_20_93( .carry(c_20_93), .sum(s_20_93), .in3(P_9[2]), .in2(P_8[4]), .in1(P_7[6]) );
Fadder_ A_20_94( .carry(c_20_94), .sum(s_20_94), .in3(P_6[8]), .in2(P_5[10]), .in1(P_4[12]) );
Fadder_ A_20_95( .carry(c_20_95), .sum(s_20_95), .in3(P_3[14]), .in2(P_2[16]), .in1(P_1[18]) );
Fadder_ A_20_96( .carry(c_20_96), .sum(s_20_96), .in3(P_0[20]), .in2(c_19_85), .in1(c_19_84) );
Fadder_ A_20_97( .carry(c_20_97), .sum(s_20_97), .in3(c_19_83), .in2(s_20_95), .in1(s_20_94) );
Fadder_ A_20_98( .carry(c_20_98), .sum(s_20_98), .in3(s_20_93), .in2(s_20_92), .in1(c_19_86) );
Fadder_ A_20_99( .carry(c_20_99), .sum(s_20_99), .in3(c_19_87), .in2(s_20_96), .in1(c_19_88) );
Fadder_ A_20_100( .carry(c_20_100), .sum(s_20_100), .in3(s_20_97), .in2(s_20_98), .in1(c_19_89) );
Fadder_ A_20_101( .carry(c[20]), .sum(s[20]), .in3(s_20_99), .in2(c_19_90), .in1(s_20_100) );
// ***** Bit 21 ***** //
Fadder_ A_21_102( .carry(c_21_102), .sum(s_21_102), .in3(inc[21]), .in2(P_10[1]), .in1(P_9[3]) );
Fadder_ A_21_103( .carry(c_21_103), .sum(s_21_103), .in3(P_8[5]), .in2(P_7[7]), .in1(P_6[9]) );
Fadder_ A_21_104( .carry(c_21_104), .sum(s_21_104), .in3(P_5[11]), .in2(P_4[13]), .in1(P_3[15]) );
Fadder_ A_21_105( .carry(c_21_105), .sum(s_21_105), .in3(P_2[17]), .in2(P_1[19]), .in1(P_0[21]) );
Fadder_ A_21_106( .carry(c_21_106), .sum(s_21_106), .in3(c_20_95), .in2(c_20_94), .in1(c_20_93) );
Fadder_ A_21_107( .carry(c_21_107), .sum(s_21_107), .in3(c_20_92), .in2(s_21_105), .in1(s_21_104) );
Fadder_ A_21_108( .carry(c_21_108), .sum(s_21_108), .in3(s_21_103), .in2(s_21_102), .in1(c_20_96) );
Fadder_ A_21_109( .carry(c_21_109), .sum(s_21_109), .in3(s_21_106), .in2(c_20_97), .in1(s_21_107) );
Fadder_ A_21_110( .carry(c_21_110), .sum(s_21_110), .in3(c_20_98), .in2(s_21_108), .in1(c_20_99) );
Fadder_ A_21_111( .carry(c[21]), .sum(s[21]), .in3(s_21_109), .in2(c_20_100), .in1(s_21_110) );
// ***** Bit 22 ***** //
Hadder_ A_22_112( .carry(c_22_112), .sum(s_22_112), .in2(inc[22]), .in1(P_11[0]) );
Fadder_ A_22_113( .carry(c_22_113), .sum(s_22_113), .in3(P_10[2]), .in2(P_9[4]), .in1(P_8[6]) );
Fadder_ A_22_114( .carry(c_22_114), .sum(s_22_114), .in3(P_7[8]), .in2(P_6[10]), .in1(P_5[12]) );
Fadder_ A_22_115( .carry(c_22_115), .sum(s_22_115), .in3(P_4[14]), .in2(P_3[16]), .in1(P_2[18]) );
Fadder_ A_22_116( .carry(c_22_116), .sum(s_22_116), .in3(P_1[20]), .in2(P_0[22]), .in1(c_21_105) );
Fadder_ A_22_117( .carry(c_22_117), .sum(s_22_117), .in3(c_21_104), .in2(c_21_103), .in1(c_21_102) );
Fadder_ A_22_118( .carry(c_22_118), .sum(s_22_118), .in3(s_22_115), .in2(s_22_114), .in1(s_22_113) );
Fadder_ A_22_119( .carry(c_22_119), .sum(s_22_119), .in3(s_22_112), .in2(c_21_106), .in1(s_22_116) );
Fadder_ A_22_120( .carry(c_22_120), .sum(s_22_120), .in3(s_22_117), .in2(c_21_107), .in1(s_22_118) );
Fadder_ A_22_121( .carry(c_22_121), .sum(s_22_121), .in3(c_21_108), .in2(c_21_109), .in1(s_22_119) );
Fadder_ A_22_122( .carry(c[22]), .sum(s[22]), .in3(s_22_120), .in2(c_21_110), .in1(s_22_121) );
// ***** Bit 23 ***** //
Fadder_ A_23_123( .carry(c_23_123), .sum(s_23_123), .in3(inc[23]), .in2(P_11[1]), .in1(P_10[3]) );
Fadder_ A_23_124( .carry(c_23_124), .sum(s_23_124), .in3(P_9[5]), .in2(P_8[7]), .in1(P_7[9]) );
Fadder_ A_23_125( .carry(c_23_125), .sum(s_23_125), .in3(P_6[11]), .in2(P_5[13]), .in1(P_4[15]) );
Fadder_ A_23_126( .carry(c_23_126), .sum(s_23_126), .in3(P_3[17]), .in2(P_2[19]), .in1(P_1[21]) );
Fadder_ A_23_127( .carry(c_23_127), .sum(s_23_127), .in3(P_0[23]), .in2(c_22_115), .in1(c_22_114) );
Fadder_ A_23_128( .carry(c_23_128), .sum(s_23_128), .in3(c_22_113), .in2(c_22_112), .in1(s_23_126) );
Fadder_ A_23_129( .carry(c_23_129), .sum(s_23_129), .in3(s_23_125), .in2(s_23_124), .in1(s_23_123) );
Fadder_ A_23_130( .carry(c_23_130), .sum(s_23_130), .in3(c_22_116), .in2(c_22_117), .in1(s_23_127) );
Fadder_ A_23_131( .carry(c_23_131), .sum(s_23_131), .in3(c_22_118), .in2(s_23_128), .in1(s_23_129) );
Fadder_ A_23_132( .carry(c_23_132), .sum(s_23_132), .in3(c_22_119), .in2(c_22_120), .in1(s_23_130) );
Fadder_ A_23_133( .carry(c[23]), .sum(s[23]), .in3(s_23_131), .in2(c_22_121), .in1(s_23_132) );
// ***** Bit 24 ***** //
Hadder_ A_24_134( .carry(c_24_134), .sum(s_24_134), .in2(inc[24]), .in1(P_12[0]) );
Fadder_ A_24_135( .carry(c_24_135), .sum(s_24_135), .in3(P_11[2]), .in2(P_10[4]), .in1(P_9[6]) );
Fadder_ A_24_136( .carry(c_24_136), .sum(s_24_136), .in3(P_8[8]), .in2(P_7[10]), .in1(P_6[12]) );
Fadder_ A_24_137( .carry(c_24_137), .sum(s_24_137), .in3(P_5[14]), .in2(P_4[16]), .in1(P_3[18]) );
Fadder_ A_24_138( .carry(c_24_138), .sum(s_24_138), .in3(P_2[20]), .in2(P_1[22]), .in1(P_0[24]) );
Fadder_ A_24_139( .carry(c_24_139), .sum(s_24_139), .in3(c_23_126), .in2(c_23_125), .in1(c_23_124) );
Fadder_ A_24_140( .carry(c_24_140), .sum(s_24_140), .in3(c_23_123), .in2(s_24_138), .in1(s_24_137) );
Fadder_ A_24_141( .carry(c_24_141), .sum(s_24_141), .in3(s_24_136), .in2(s_24_135), .in1(s_24_134) );
Fadder_ A_24_142( .carry(c_24_142), .sum(s_24_142), .in3(c_23_127), .in2(c_23_128), .in1(s_24_139) );
Fadder_ A_24_143( .carry(c_24_143), .sum(s_24_143), .in3(c_23_129), .in2(s_24_140), .in1(s_24_141) );
Fadder_ A_24_144( .carry(c_24_144), .sum(s_24_144), .in3(c_23_130), .in2(s_24_142), .in1(c_23_131) );
Fadder_ A_24_145( .carry(c[24]), .sum(s[24]), .in3(s_24_143), .in2(c_23_132), .in1(s_24_144) );
// ***** Bit 25 ***** //
Fadder_ A_25_146( .carry(c_25_146), .sum(s_25_146), .in3(inc[25]), .in2(P_12[1]), .in1(P_11[3]) );
Fadder_ A_25_147( .carry(c_25_147), .sum(s_25_147), .in3(P_10[5]), .in2(P_9[7]), .in1(P_8[9]) );
Fadder_ A_25_148( .carry(c_25_148), .sum(s_25_148), .in3(P_7[11]), .in2(P_6[13]), .in1(P_5[15]) );
Fadder_ A_25_149( .carry(c_25_149), .sum(s_25_149), .in3(P_4[17]), .in2(P_3[19]), .in1(P_2[21]) );
Fadder_ A_25_150( .carry(c_25_150), .sum(s_25_150), .in3(P_1[23]), .in2(P_0[25]), .in1(c_24_138) );
Fadder_ A_25_151( .carry(c_25_151), .sum(s_25_151), .in3(c_24_137), .in2(c_24_136), .in1(c_24_135) );
Fadder_ A_25_152( .carry(c_25_152), .sum(s_25_152), .in3(c_24_134), .in2(s_25_149), .in1(s_25_148) );
Fadder_ A_25_153( .carry(c_25_153), .sum(s_25_153), .in3(s_25_147), .in2(s_25_146), .in1(c_24_139) );
Fadder_ A_25_154( .carry(c_25_154), .sum(s_25_154), .in3(s_25_150), .in2(s_25_151), .in1(c_24_141) );
Fadder_ A_25_155( .carry(c_25_155), .sum(s_25_155), .in3(c_24_140), .in2(s_25_152), .in1(c_24_142) );
Fadder_ A_25_156( .carry(c_25_156), .sum(s_25_156), .in3(s_25_153), .in2(s_25_154), .in1(c_24_143) );
Fadder_ A_25_157( .carry(c[25]), .sum(s[25]), .in3(s_25_155), .in2(c_24_144), .in1(s_25_156) );
// ***** Bit 26 ***** //
Hadder_ A_26_158( .carry(c_26_158), .sum(s_26_158), .in2(inc[26]), .in1(P_13[0]) );
Fadder_ A_26_159( .carry(c_26_159), .sum(s_26_159), .in3(P_12[2]), .in2(P_11[4]), .in1(P_10[6]) );
Fadder_ A_26_160( .carry(c_26_160), .sum(s_26_160), .in3(P_9[8]), .in2(P_8[10]), .in1(P_7[12]) );
Fadder_ A_26_161( .carry(c_26_161), .sum(s_26_161), .in3(P_6[14]), .in2(P_5[16]), .in1(P_4[18]) );
Fadder_ A_26_162( .carry(c_26_162), .sum(s_26_162), .in3(P_3[20]), .in2(P_2[22]), .in1(P_1[24]) );
Fadder_ A_26_163( .carry(c_26_163), .sum(s_26_163), .in3(P_0[26]), .in2(c_25_149), .in1(c_25_148) );
Fadder_ A_26_164( .carry(c_26_164), .sum(s_26_164), .in3(c_25_147), .in2(c_25_146), .in1(s_26_162) );
Fadder_ A_26_165( .carry(c_26_165), .sum(s_26_165), .in3(s_26_161), .in2(s_26_160), .in1(s_26_159) );
Fadder_ A_26_166( .carry(c_26_166), .sum(s_26_166), .in3(s_26_158), .in2(c_25_150), .in1(c_25_151) );
Fadder_ A_26_167( .carry(c_26_167), .sum(s_26_167), .in3(s_26_163), .in2(c_25_152), .in1(s_26_164) );
Fadder_ A_26_168( .carry(c_26_168), .sum(s_26_168), .in3(s_26_165), .in2(c_25_153), .in1(s_26_166) );
Fadder_ A_26_169( .carry(c_26_169), .sum(s_26_169), .in3(c_25_154), .in2(s_26_167), .in1(c_25_155) );
Fadder_ A_26_170( .carry(c[26]), .sum(s[26]), .in3(s_26_168), .in2(c_25_156), .in1(s_26_169) );
// ***** Bit 27 ***** //
Fadder_ A_27_171( .carry(c_27_171), .sum(s_27_171), .in3(inc[27]), .in2(P_13[1]), .in1(P_12[3]) );
Fadder_ A_27_172( .carry(c_27_172), .sum(s_27_172), .in3(P_11[5]), .in2(P_10[7]), .in1(P_9[9]) );
Fadder_ A_27_173( .carry(c_27_173), .sum(s_27_173), .in3(P_8[11]), .in2(P_7[13]), .in1(P_6[15]) );
Fadder_ A_27_174( .carry(c_27_174), .sum(s_27_174), .in3(P_5[17]), .in2(P_4[19]), .in1(P_3[21]) );
Fadder_ A_27_175( .carry(c_27_175), .sum(s_27_175), .in3(P_2[23]), .in2(P_1[25]), .in1(P_0[27]) );
Fadder_ A_27_176( .carry(c_27_176), .sum(s_27_176), .in3(c_26_162), .in2(c_26_161), .in1(c_26_160) );
Fadder_ A_27_177( .carry(c_27_177), .sum(s_27_177), .in3(c_26_159), .in2(c_26_158), .in1(s_27_175) );
Fadder_ A_27_178( .carry(c_27_178), .sum(s_27_178), .in3(s_27_174), .in2(s_27_173), .in1(s_27_172) );
Fadder_ A_27_179( .carry(c_27_179), .sum(s_27_179), .in3(s_27_171), .in2(c_26_163), .in1(c_26_164) );
Fadder_ A_27_180( .carry(c_27_180), .sum(s_27_180), .in3(s_27_176), .in2(c_26_165), .in1(s_27_177) );
Fadder_ A_27_181( .carry(c_27_181), .sum(s_27_181), .in3(s_27_178), .in2(c_26_166), .in1(s_27_179) );
Fadder_ A_27_182( .carry(c_27_182), .sum(s_27_182), .in3(c_26_167), .in2(s_27_180), .in1(c_26_168) );
Fadder_ A_27_183( .carry(c[27]), .sum(s[27]), .in3(s_27_181), .in2(c_26_169), .in1(s_27_182) );
// ***** Bit 28 ***** //
Hadder_ A_28_184( .carry(c_28_184), .sum(s_28_184), .in2(inc[28]), .in1(P_14[0]) );
Fadder_ A_28_185( .carry(c_28_185), .sum(s_28_185), .in3(P_13[2]), .in2(P_12[4]), .in1(P_11[6]) );
Fadder_ A_28_186( .carry(c_28_186), .sum(s_28_186), .in3(P_10[8]), .in2(P_9[10]), .in1(P_8[12]) );
Fadder_ A_28_187( .carry(c_28_187), .sum(s_28_187), .in3(P_7[14]), .in2(P_6[16]), .in1(P_5[18]) );
Fadder_ A_28_188( .carry(c_28_188), .sum(s_28_188), .in3(P_4[20]), .in2(P_3[22]), .in1(P_2[24]) );
Fadder_ A_28_189( .carry(c_28_189), .sum(s_28_189), .in3(P_1[26]), .in2(P_0[28]), .in1(c_27_175) );
Fadder_ A_28_190( .carry(c_28_190), .sum(s_28_190), .in3(c_27_174), .in2(c_27_173), .in1(c_27_172) );
Fadder_ A_28_191( .carry(c_28_191), .sum(s_28_191), .in3(c_27_171), .in2(s_28_188), .in1(s_28_187) );
Fadder_ A_28_192( .carry(c_28_192), .sum(s_28_192), .in3(s_28_186), .in2(s_28_185), .in1(s_28_184) );
Fadder_ A_28_193( .carry(c_28_193), .sum(s_28_193), .in3(c_27_176), .in2(c_27_177), .in1(s_28_189) );
Fadder_ A_28_194( .carry(c_28_194), .sum(s_28_194), .in3(s_28_190), .in2(c_27_178), .in1(s_28_191) );
Fadder_ A_28_195( .carry(c_28_195), .sum(s_28_195), .in3(s_28_192), .in2(c_27_179), .in1(c_27_180) );
Fadder_ A_28_196( .carry(c_28_196), .sum(s_28_196), .in3(s_28_193), .in2(s_28_194), .in1(c_27_181) );
Fadder_ A_28_197( .carry(c[28]), .sum(s[28]), .in3(s_28_195), .in2(c_27_182), .in1(s_28_196) );
// ***** Bit 29 ***** //
Fadder_ A_29_198( .carry(c_29_198), .sum(s_29_198), .in3(inc[29]), .in2(P_14[1]), .in1(P_13[3]) );
Fadder_ A_29_199( .carry(c_29_199), .sum(s_29_199), .in3(P_12[5]), .in2(P_11[7]), .in1(P_10[9]) );
Fadder_ A_29_200( .carry(c_29_200), .sum(s_29_200), .in3(P_9[11]), .in2(P_8[13]), .in1(P_7[15]) );
Fadder_ A_29_201( .carry(c_29_201), .sum(s_29_201), .in3(P_6[17]), .in2(P_5[19]), .in1(P_4[21]) );
Fadder_ A_29_202( .carry(c_29_202), .sum(s_29_202), .in3(P_3[23]), .in2(P_2[25]), .in1(P_1[27]) );
Fadder_ A_29_203( .carry(c_29_203), .sum(s_29_203), .in3(P_0[29]), .in2(c_28_188), .in1(c_28_187) );
Fadder_ A_29_204( .carry(c_29_204), .sum(s_29_204), .in3(c_28_186), .in2(c_28_185), .in1(c_28_184) );
Fadder_ A_29_205( .carry(c_29_205), .sum(s_29_205), .in3(s_29_202), .in2(s_29_201), .in1(s_29_200) );
Fadder_ A_29_206( .carry(c_29_206), .sum(s_29_206), .in3(s_29_199), .in2(s_29_198), .in1(c_28_189) );
Fadder_ A_29_207( .carry(c_29_207), .sum(s_29_207), .in3(c_28_190), .in2(s_29_203), .in1(s_29_204) );
Fadder_ A_29_208( .carry(c_29_208), .sum(s_29_208), .in3(c_28_192), .in2(c_28_191), .in1(s_29_205) );
Fadder_ A_29_209( .carry(c_29_209), .sum(s_29_209), .in3(s_29_206), .in2(c_28_193), .in1(c_28_194) );
Fadder_ A_29_210( .carry(c_29_210), .sum(s_29_210), .in3(s_29_207), .in2(s_29_208), .in1(c_28_195) );
Fadder_ A_29_211( .carry(c[29]), .sum(s[29]), .in3(s_29_209), .in2(c_28_196), .in1(s_29_210) );
// ***** Bit 30 ***** //
Hadder_ A_30_212( .carry(c_30_212), .sum(s_30_212), .in2(inc[30]), .in1(P_15[0]) );
Fadder_ A_30_213( .carry(c_30_213), .sum(s_30_213), .in3(P_14[2]), .in2(P_13[4]), .in1(P_12[6]) );
Fadder_ A_30_214( .carry(c_30_214), .sum(s_30_214), .in3(P_11[8]), .in2(P_10[10]), .in1(P_9[12]) );
Fadder_ A_30_215( .carry(c_30_215), .sum(s_30_215), .in3(P_8[14]), .in2(P_7[16]), .in1(P_6[18]) );
Fadder_ A_30_216( .carry(c_30_216), .sum(s_30_216), .in3(P_5[20]), .in2(P_4[22]), .in1(P_3[24]) );
Fadder_ A_30_217( .carry(c_30_217), .sum(s_30_217), .in3(P_2[26]), .in2(P_1[28]), .in1(P_0[30]) );
Fadder_ A_30_218( .carry(c_30_218), .sum(s_30_218), .in3(c_29_202), .in2(c_29_201), .in1(c_29_200) );
Fadder_ A_30_219( .carry(c_30_219), .sum(s_30_219), .in3(c_29_199), .in2(c_29_198), .in1(s_30_217) );
Fadder_ A_30_220( .carry(c_30_220), .sum(s_30_220), .in3(s_30_216), .in2(s_30_215), .in1(s_30_214) );
Fadder_ A_30_221( .carry(c_30_221), .sum(s_30_221), .in3(s_30_213), .in2(s_30_212), .in1(c_29_204) );
Fadder_ A_30_222( .carry(c_30_222), .sum(s_30_222), .in3(c_29_203), .in2(s_30_218), .in1(c_29_205) );
Fadder_ A_30_223( .carry(c_30_223), .sum(s_30_223), .in3(s_30_219), .in2(s_30_220), .in1(c_29_206) );
Fadder_ A_30_224( .carry(c_30_224), .sum(s_30_224), .in3(s_30_221), .in2(c_29_207), .in1(c_29_208) );
Fadder_ A_30_225( .carry(c_30_225), .sum(s_30_225), .in3(s_30_222), .in2(s_30_223), .in1(c_29_209) );
Fadder_ A_30_226( .carry(c[30]), .sum(s[30]), .in3(s_30_224), .in2(c_29_210), .in1(s_30_225) );
// ***** Bit 31 ***** //
Fadder_ A_31_227( .carry(c_31_227), .sum(s_31_227), .in3(inc[31]), .in2(P_15[1]), .in1(P_14[3]) );
Fadder_ A_31_228( .carry(c_31_228), .sum(s_31_228), .in3(P_13[5]), .in2(P_12[7]), .in1(P_11[9]) );
Fadder_ A_31_229( .carry(c_31_229), .sum(s_31_229), .in3(P_10[11]), .in2(P_9[13]), .in1(P_8[15]) );
Fadder_ A_31_230( .carry(c_31_230), .sum(s_31_230), .in3(P_7[17]), .in2(P_6[19]), .in1(P_5[21]) );
Fadder_ A_31_231( .carry(c_31_231), .sum(s_31_231), .in3(P_4[23]), .in2(P_3[25]), .in1(P_2[27]) );
Fadder_ A_31_232( .carry(c_31_232), .sum(s_31_232), .in3(P_1[29]), .in2(P_0[31]), .in1(c_30_217) );
Fadder_ A_31_233( .carry(c_31_233), .sum(s_31_233), .in3(c_30_216), .in2(c_30_215), .in1(c_30_214) );
Fadder_ A_31_234( .carry(c_31_234), .sum(s_31_234), .in3(c_30_213), .in2(c_30_212), .in1(s_31_231) );
Fadder_ A_31_235( .carry(c_31_235), .sum(s_31_235), .in3(s_31_230), .in2(s_31_229), .in1(s_31_228) );
Fadder_ A_31_236( .carry(c_31_236), .sum(s_31_236), .in3(s_31_227), .in2(c_30_218), .in1(c_30_219) );
Fadder_ A_31_237( .carry(c_31_237), .sum(s_31_237), .in3(s_31_232), .in2(s_31_233), .in1(c_30_220) );
Fadder_ A_31_238( .carry(c_31_238), .sum(s_31_238), .in3(s_31_234), .in2(s_31_235), .in1(c_30_221) );
Fadder_ A_31_239( .carry(c_31_239), .sum(s_31_239), .in3(c_30_222), .in2(s_31_236), .in1(s_31_237) );
Fadder_ A_31_240( .carry(c_31_240), .sum(s_31_240), .in3(c_30_223), .in2(s_31_238), .in1(c_30_224) );
Fadder_ A_31_241( .carry(c[31]), .sum(s[31]), .in3(s_31_239), .in2(c_30_225), .in1(s_31_240) );
// ***** Bit 32 ***** //
Hadder_ A_32_242( .carry(c_32_242), .sum(s_32_242), .in2(P_15[2]), .in1(P_14[4]) );
Fadder_ A_32_243( .carry(c_32_243), .sum(s_32_243), .in3(P_13[6]), .in2(P_12[8]), .in1(P_11[10]) );
Fadder_ A_32_244( .carry(c_32_244), .sum(s_32_244), .in3(P_10[12]), .in2(P_9[14]), .in1(P_8[16]) );
Fadder_ A_32_245( .carry(c_32_245), .sum(s_32_245), .in3(P_7[18]), .in2(P_6[20]), .in1(P_5[22]) );
Fadder_ A_32_246( .carry(c_32_246), .sum(s_32_246), .in3(P_4[24]), .in2(P_3[26]), .in1(P_2[28]) );
Fadder_ A_32_247( .carry(c_32_247), .sum(s_32_247), .in3(P_1[30]), .in2(P_0[32]), .in1(c_31_231) );
Fadder_ A_32_248( .carry(c_32_248), .sum(s_32_248), .in3(c_31_230), .in2(c_31_229), .in1(c_31_228) );
Fadder_ A_32_249( .carry(c_32_249), .sum(s_32_249), .in3(c_31_227), .in2(s_32_246), .in1(s_32_245) );
Fadder_ A_32_250( .carry(c_32_250), .sum(s_32_250), .in3(s_32_244), .in2(s_32_243), .in1(s_32_242) );
Fadder_ A_32_251( .carry(c_32_251), .sum(s_32_251), .in3(c_31_232), .in2(c_31_233), .in1(c_31_234) );
Fadder_ A_32_252( .carry(c_32_252), .sum(s_32_252), .in3(s_32_247), .in2(s_32_248), .in1(c_31_235) );
Fadder_ A_32_253( .carry(c_32_253), .sum(s_32_253), .in3(s_32_249), .in2(s_32_250), .in1(c_31_236) );
Fadder_ A_32_254( .carry(c_32_254), .sum(s_32_254), .in3(c_31_237), .in2(s_32_251), .in1(s_32_252) );
Fadder_ A_32_255( .carry(c_32_255), .sum(s_32_255), .in3(c_31_238), .in2(s_32_253), .in1(c_31_239) );
Fadder_ A_32_256( .carry(c[32]), .sum(s[32]), .in3(s_32_254), .in2(c_31_240), .in1(s_32_255) );
// ***** Bit 33 ***** //
Fadder_ A_33_257( .carry(c_33_257), .sum(s_33_257), .in3(sign_), .in2(P_15[3]), .in1(P_14[5]) );
Fadder_ A_33_258( .carry(c_33_258), .sum(s_33_258), .in3(P_13[7]), .in2(P_12[9]), .in1(P_11[11]) );
Fadder_ A_33_259( .carry(c_33_259), .sum(s_33_259), .in3(P_10[13]), .in2(P_9[15]), .in1(P_8[17]) );
Fadder_ A_33_260( .carry(c_33_260), .sum(s_33_260), .in3(P_7[19]), .in2(P_6[21]), .in1(P_5[23]) );
Fadder_ A_33_261( .carry(c_33_261), .sum(s_33_261), .in3(P_4[25]), .in2(P_3[27]), .in1(P_2[29]) );
Fadder_ A_33_262( .carry(c_33_262), .sum(s_33_262), .in3(P_1[31]), .in2(P_0[33]), .in1(c_32_246) );
Fadder_ A_33_263( .carry(c_33_263), .sum(s_33_263), .in3(c_32_245), .in2(c_32_244), .in1(c_32_243) );
Fadder_ A_33_264( .carry(c_33_264), .sum(s_33_264), .in3(c_32_242), .in2(s_33_257), .in1(s_33_261) );
Fadder_ A_33_265( .carry(c_33_265), .sum(s_33_265), .in3(s_33_260), .in2(s_33_259), .in1(s_33_258) );
Fadder_ A_33_266( .carry(c_33_266), .sum(s_33_266), .in3(c_32_247), .in2(c_32_248), .in1(s_33_262) );
Fadder_ A_33_267( .carry(c_33_267), .sum(s_33_267), .in3(s_33_263), .in2(c_32_250), .in1(c_32_249) );
Fadder_ A_33_268( .carry(c_33_268), .sum(s_33_268), .in3(s_33_264), .in2(s_33_265), .in1(c_32_251) );
Fadder_ A_33_269( .carry(c_33_269), .sum(s_33_269), .in3(c_32_252), .in2(s_33_266), .in1(s_33_267) );
Fadder_ A_33_270( .carry(c_33_270), .sum(s_33_270), .in3(c_32_253), .in2(s_33_268), .in1(c_32_254) );
Fadder_ A_33_271( .carry(c[33]), .sum(s[33]), .in3(s_33_269), .in2(c_32_255), .in1(s_33_270) );
// ***** Bit 34 ***** //
Hadder_ A_34_272( .carry(c_34_272), .sum(s_34_272), .in2(sign_), .in1(P_15[4]) );
Fadder_ A_34_273( .carry(c_34_273), .sum(s_34_273), .in3(P_14[6]), .in2(P_13[8]), .in1(P_12[10]) );
Fadder_ A_34_274( .carry(c_34_274), .sum(s_34_274), .in3(P_11[12]), .in2(P_10[14]), .in1(P_9[16]) );
Fadder_ A_34_275( .carry(c_34_275), .sum(s_34_275), .in3(P_8[18]), .in2(P_7[20]), .in1(P_6[22]) );
Fadder_ A_34_276( .carry(c_34_276), .sum(s_34_276), .in3(P_5[24]), .in2(P_4[26]), .in1(P_3[28]) );
Fadder_ A_34_277( .carry(c_34_277), .sum(s_34_277), .in3(P_2[30]), .in2(P_1[32]), .in1(c_33_261) );
Fadder_ A_34_278( .carry(c_34_278), .sum(s_34_278), .in3(c_33_260), .in2(c_33_259), .in1(c_33_258) );
Fadder_ A_34_279( .carry(c_34_279), .sum(s_34_279), .in3(c_33_257), .in2(s_34_272), .in1(s_34_276) );
Fadder_ A_34_280( .carry(c_34_280), .sum(s_34_280), .in3(s_34_275), .in2(s_34_274), .in1(s_34_273) );
Fadder_ A_34_281( .carry(c_34_281), .sum(s_34_281), .in3(c_33_262), .in2(c_33_263), .in1(s_34_277) );
Fadder_ A_34_282( .carry(c_34_282), .sum(s_34_282), .in3(c_33_264), .in2(s_34_278), .in1(c_33_265) );
Fadder_ A_34_283( .carry(c_34_283), .sum(s_34_283), .in3(s_34_279), .in2(s_34_280), .in1(c_33_266) );
Fadder_ A_34_284( .carry(c_34_284), .sum(s_34_284), .in3(c_33_267), .in2(s_34_281), .in1(s_34_282) );
Fadder_ A_34_285( .carry(c_34_285), .sum(s_34_285), .in3(c_33_268), .in2(s_34_283), .in1(c_33_269) );
Fadder_ A_34_286( .carry(c[34]), .sum(s[34]), .in3(s_34_284), .in2(c_33_270), .in1(s_34_285) );
// ***** Bit 35 ***** //
Fadder_ A_35_287( .carry(c_35_287), .sum(s_35_287), .in3(P_15[5]), .in2(P_14[7]), .in1(P_13[9]) );
Fadder_ A_35_288( .carry(c_35_288), .sum(s_35_288), .in3(P_12[11]), .in2(P_11[13]), .in1(P_10[15]) );
Fadder_ A_35_289( .carry(c_35_289), .sum(s_35_289), .in3(P_9[17]), .in2(P_8[19]), .in1(P_7[21]) );
Fadder_ A_35_290( .carry(c_35_290), .sum(s_35_290), .in3(P_6[23]), .in2(P_5[25]), .in1(P_4[27]) );
Fadder_ A_35_291( .carry(c_35_291), .sum(s_35_291), .in3(P_3[29]), .in2(P_2[31]), .in1(P_1[33]) );
Fadder_ A_35_292( .carry(c_35_292), .sum(s_35_292), .in3(c_34_276), .in2(c_34_275), .in1(c_34_274) );
Fadder_ A_35_293( .carry(c_35_293), .sum(s_35_293), .in3(c_34_273), .in2(c_34_272), .in1(s_35_291) );
Fadder_ A_35_294( .carry(c_35_294), .sum(s_35_294), .in3(s_35_290), .in2(s_35_289), .in1(s_35_288) );
Fadder_ A_35_295( .carry(c_35_295), .sum(s_35_295), .in3(s_35_287), .in2(c_34_277), .in1(c_34_278) );
Fadder_ A_35_296( .carry(c_35_296), .sum(s_35_296), .in3(c_34_279), .in2(s_35_292), .in1(c_34_280) );
Fadder_ A_35_297( .carry(c_35_297), .sum(s_35_297), .in3(s_35_293), .in2(s_35_294), .in1(c_34_281) );
Fadder_ A_35_298( .carry(c_35_298), .sum(s_35_298), .in3(s_35_295), .in2(c_34_282), .in1(s_35_296) );
Fadder_ A_35_299( .carry(c_35_299), .sum(s_35_299), .in3(c_34_283), .in2(s_35_297), .in1(c_34_284) );
Fadder_ A_35_300( .carry(c[35]), .sum(s[35]), .in3(s_35_298), .in2(c_34_285), .in1(s_35_299) );
// ***** Bit 36 ***** //
Hadder_ A_36_301( .carry(c_36_301), .sum(s_36_301), .in2(sign_), .in1(P_15[6]) );
Fadder_ A_36_302( .carry(c_36_302), .sum(s_36_302), .in3(P_14[8]), .in2(P_13[10]), .in1(P_12[12]) );
Fadder_ A_36_303( .carry(c_36_303), .sum(s_36_303), .in3(P_11[14]), .in2(P_10[16]), .in1(P_9[18]) );
Fadder_ A_36_304( .carry(c_36_304), .sum(s_36_304), .in3(P_8[20]), .in2(P_7[22]), .in1(P_6[24]) );
Fadder_ A_36_305( .carry(c_36_305), .sum(s_36_305), .in3(P_5[26]), .in2(P_4[28]), .in1(P_3[30]) );
Fadder_ A_36_306( .carry(c_36_306), .sum(s_36_306), .in3(P_2[32]), .in2(c_35_291), .in1(c_35_290) );
Fadder_ A_36_307( .carry(c_36_307), .sum(s_36_307), .in3(c_35_289), .in2(c_35_288), .in1(c_35_287) );
Fadder_ A_36_308( .carry(c_36_308), .sum(s_36_308), .in3(s_36_301), .in2(s_36_305), .in1(s_36_304) );
Fadder_ A_36_309( .carry(c_36_309), .sum(s_36_309), .in3(s_36_303), .in2(s_36_302), .in1(c_35_292) );
Fadder_ A_36_310( .carry(c_36_310), .sum(s_36_310), .in3(c_35_293), .in2(s_36_306), .in1(s_36_307) );
Fadder_ A_36_311( .carry(c_36_311), .sum(s_36_311), .in3(c_35_294), .in2(s_36_308), .in1(c_35_295) );
Fadder_ A_36_312( .carry(c_36_312), .sum(s_36_312), .in3(s_36_309), .in2(c_35_296), .in1(s_36_310) );
Fadder_ A_36_313( .carry(c_36_313), .sum(s_36_313), .in3(c_35_297), .in2(s_36_311), .in1(c_35_298) );
Fadder_ A_36_314( .carry(c[36]), .sum(s[36]), .in3(s_36_312), .in2(c_35_299), .in1(s_36_313) );
// ***** Bit 37 ***** //
Fadder_ A_37_315( .carry(c_37_315), .sum(s_37_315), .in3(P_15[7]), .in2(P_14[9]), .in1(P_13[11]) );
Fadder_ A_37_316( .carry(c_37_316), .sum(s_37_316), .in3(P_12[13]), .in2(P_11[15]), .in1(P_10[17]) );
Fadder_ A_37_317( .carry(c_37_317), .sum(s_37_317), .in3(P_9[19]), .in2(P_8[21]), .in1(P_7[23]) );
Fadder_ A_37_318( .carry(c_37_318), .sum(s_37_318), .in3(P_6[25]), .in2(P_5[27]), .in1(P_4[29]) );
Fadder_ A_37_319( .carry(c_37_319), .sum(s_37_319), .in3(P_3[31]), .in2(P_2[33]), .in1(c_36_305) );
Fadder_ A_37_320( .carry(c_37_320), .sum(s_37_320), .in3(c_36_304), .in2(c_36_303), .in1(c_36_302) );
Fadder_ A_37_321( .carry(c_37_321), .sum(s_37_321), .in3(c_36_301), .in2(s_37_318), .in1(s_37_317) );
Fadder_ A_37_322( .carry(c_37_322), .sum(s_37_322), .in3(s_37_316), .in2(s_37_315), .in1(c_36_307) );
Fadder_ A_37_323( .carry(c_37_323), .sum(s_37_323), .in3(c_36_306), .in2(s_37_319), .in1(s_37_320) );
Fadder_ A_37_324( .carry(c_37_324), .sum(s_37_324), .in3(c_36_308), .in2(s_37_321), .in1(c_36_309) );
Fadder_ A_37_325( .carry(c_37_325), .sum(s_37_325), .in3(s_37_322), .in2(c_36_310), .in1(s_37_323) );
Fadder_ A_37_326( .carry(c_37_326), .sum(s_37_326), .in3(c_36_311), .in2(s_37_324), .in1(c_36_312) );
Fadder_ A_37_327( .carry(c[37]), .sum(s[37]), .in3(s_37_325), .in2(c_36_313), .in1(s_37_326) );
// ***** Bit 38 ***** //
Hadder_ A_38_328( .carry(c_38_328), .sum(s_38_328), .in2(sign_), .in1(P_15[8]) );
Fadder_ A_38_329( .carry(c_38_329), .sum(s_38_329), .in3(P_14[10]), .in2(P_13[12]), .in1(P_12[14]) );
Fadder_ A_38_330( .carry(c_38_330), .sum(s_38_330), .in3(P_11[16]), .in2(P_10[18]), .in1(P_9[20]) );
Fadder_ A_38_331( .carry(c_38_331), .sum(s_38_331), .in3(P_8[22]), .in2(P_7[24]), .in1(P_6[26]) );
Fadder_ A_38_332( .carry(c_38_332), .sum(s_38_332), .in3(P_5[28]), .in2(P_4[30]), .in1(P_3[32]) );
Fadder_ A_38_333( .carry(c_38_333), .sum(s_38_333), .in3(c_37_318), .in2(c_37_317), .in1(c_37_316) );
Fadder_ A_38_334( .carry(c_38_334), .sum(s_38_334), .in3(c_37_315), .in2(s_38_328), .in1(s_38_332) );
Fadder_ A_38_335( .carry(c_38_335), .sum(s_38_335), .in3(s_38_331), .in2(s_38_330), .in1(s_38_329) );
Fadder_ A_38_336( .carry(c_38_336), .sum(s_38_336), .in3(c_37_319), .in2(c_37_320), .in1(s_38_333) );
Fadder_ A_38_337( .carry(c_38_337), .sum(s_38_337), .in3(c_37_321), .in2(s_38_334), .in1(s_38_335) );
Fadder_ A_38_338( .carry(c_38_338), .sum(s_38_338), .in3(c_37_322), .in2(c_37_323), .in1(s_38_336) );
Fadder_ A_38_339( .carry(c_38_339), .sum(s_38_339), .in3(s_38_337), .in2(c_37_324), .in1(c_37_325) );
Fadder_ A_38_340( .carry(c[38]), .sum(s[38]), .in3(s_38_338), .in2(c_37_326), .in1(s_38_339) );
// ***** Bit 39 ***** //
Fadder_ A_39_341( .carry(c_39_341), .sum(s_39_341), .in3(P_15[9]), .in2(P_14[11]), .in1(P_13[13]) );
Fadder_ A_39_342( .carry(c_39_342), .sum(s_39_342), .in3(P_12[15]), .in2(P_11[17]), .in1(P_10[19]) );
Fadder_ A_39_343( .carry(c_39_343), .sum(s_39_343), .in3(P_9[21]), .in2(P_8[23]), .in1(P_7[25]) );
Fadder_ A_39_344( .carry(c_39_344), .sum(s_39_344), .in3(P_6[27]), .in2(P_5[29]), .in1(P_4[31]) );
Fadder_ A_39_345( .carry(c_39_345), .sum(s_39_345), .in3(P_3[33]), .in2(c_38_332), .in1(c_38_331) );
Fadder_ A_39_346( .carry(c_39_346), .sum(s_39_346), .in3(c_38_330), .in2(c_38_329), .in1(c_38_328) );
Fadder_ A_39_347( .carry(c_39_347), .sum(s_39_347), .in3(s_39_344), .in2(s_39_343), .in1(s_39_342) );
Fadder_ A_39_348( .carry(c_39_348), .sum(s_39_348), .in3(s_39_341), .in2(c_38_333), .in1(s_39_345) );
Fadder_ A_39_349( .carry(c_39_349), .sum(s_39_349), .in3(c_38_334), .in2(s_39_346), .in1(c_38_335) );
Fadder_ A_39_350( .carry(c_39_350), .sum(s_39_350), .in3(s_39_347), .in2(c_38_336), .in1(s_39_348) );
Fadder_ A_39_351( .carry(c_39_351), .sum(s_39_351), .in3(s_39_349), .in2(c_38_337), .in1(c_38_338) );
Fadder_ A_39_352( .carry(c[39]), .sum(s[39]), .in3(s_39_350), .in2(c_38_339), .in1(s_39_351) );
// ***** Bit 40 ***** //
Hadder_ A_40_353( .carry(c_40_353), .sum(s_40_353), .in2(sign_), .in1(P_15[10]) );
Fadder_ A_40_354( .carry(c_40_354), .sum(s_40_354), .in3(P_14[12]), .in2(P_13[14]), .in1(P_12[16]) );
Fadder_ A_40_355( .carry(c_40_355), .sum(s_40_355), .in3(P_11[18]), .in2(P_10[20]), .in1(P_9[22]) );
Fadder_ A_40_356( .carry(c_40_356), .sum(s_40_356), .in3(P_8[24]), .in2(P_7[26]), .in1(P_6[28]) );
Fadder_ A_40_357( .carry(c_40_357), .sum(s_40_357), .in3(P_5[30]), .in2(P_4[32]), .in1(c_39_344) );
Fadder_ A_40_358( .carry(c_40_358), .sum(s_40_358), .in3(c_39_343), .in2(c_39_342), .in1(c_39_341) );
Fadder_ A_40_359( .carry(c_40_359), .sum(s_40_359), .in3(s_40_353), .in2(s_40_356), .in1(s_40_355) );
Fadder_ A_40_360( .carry(c_40_360), .sum(s_40_360), .in3(s_40_354), .in2(c_39_346), .in1(c_39_345) );
Fadder_ A_40_361( .carry(c_40_361), .sum(s_40_361), .in3(s_40_357), .in2(s_40_358), .in1(c_39_347) );
Fadder_ A_40_362( .carry(c_40_362), .sum(s_40_362), .in3(s_40_359), .in2(c_39_348), .in1(s_40_360) );
Fadder_ A_40_363( .carry(c_40_363), .sum(s_40_363), .in3(c_39_349), .in2(s_40_361), .in1(c_39_350) );
Fadder_ A_40_364( .carry(c[40]), .sum(s[40]), .in3(s_40_362), .in2(c_39_351), .in1(s_40_363) );
// ***** Bit 41 ***** //
Fadder_ A_41_365( .carry(c_41_365), .sum(s_41_365), .in3(P_15[11]), .in2(P_14[13]), .in1(P_13[15]) );
Fadder_ A_41_366( .carry(c_41_366), .sum(s_41_366), .in3(P_12[17]), .in2(P_11[19]), .in1(P_10[21]) );
Fadder_ A_41_367( .carry(c_41_367), .sum(s_41_367), .in3(P_9[23]), .in2(P_8[25]), .in1(P_7[27]) );
Fadder_ A_41_368( .carry(c_41_368), .sum(s_41_368), .in3(P_6[29]), .in2(P_5[31]), .in1(P_4[33]) );
Fadder_ A_41_369( .carry(c_41_369), .sum(s_41_369), .in3(c_40_356), .in2(c_40_355), .in1(c_40_354) );
Fadder_ A_41_370( .carry(c_41_370), .sum(s_41_370), .in3(c_40_353), .in2(s_41_368), .in1(s_41_367) );
Fadder_ A_41_371( .carry(c_41_371), .sum(s_41_371), .in3(s_41_366), .in2(s_41_365), .in1(c_40_357) );
Fadder_ A_41_372( .carry(c_41_372), .sum(s_41_372), .in3(c_40_358), .in2(s_41_369), .in1(c_40_359) );
Fadder_ A_41_373( .carry(c_41_373), .sum(s_41_373), .in3(s_41_370), .in2(c_40_360), .in1(s_41_371) );
Fadder_ A_41_374( .carry(c_41_374), .sum(s_41_374), .in3(c_40_361), .in2(s_41_372), .in1(c_40_362) );
Fadder_ A_41_375( .carry(c[41]), .sum(s[41]), .in3(s_41_373), .in2(c_40_363), .in1(s_41_374) );
// ***** Bit 42 ***** //
Hadder_ A_42_376( .carry(c_42_376), .sum(s_42_376), .in2(sign_), .in1(P_15[12]) );
Fadder_ A_42_377( .carry(c_42_377), .sum(s_42_377), .in3(P_14[14]), .in2(P_13[16]), .in1(P_12[18]) );
Fadder_ A_42_378( .carry(c_42_378), .sum(s_42_378), .in3(P_11[20]), .in2(P_10[22]), .in1(P_9[24]) );
Fadder_ A_42_379( .carry(c_42_379), .sum(s_42_379), .in3(P_8[26]), .in2(P_7[28]), .in1(P_6[30]) );
Fadder_ A_42_380( .carry(c_42_380), .sum(s_42_380), .in3(P_5[32]), .in2(c_41_368), .in1(c_41_367) );
Fadder_ A_42_381( .carry(c_42_381), .sum(s_42_381), .in3(c_41_366), .in2(c_41_365), .in1(s_42_376) );
Fadder_ A_42_382( .carry(c_42_382), .sum(s_42_382), .in3(s_42_379), .in2(s_42_378), .in1(s_42_377) );
Fadder_ A_42_383( .carry(c_42_383), .sum(s_42_383), .in3(c_41_369), .in2(s_42_380), .in1(c_41_370) );
Fadder_ A_42_384( .carry(c_42_384), .sum(s_42_384), .in3(s_42_381), .in2(s_42_382), .in1(c_41_371) );
Fadder_ A_42_385( .carry(c_42_385), .sum(s_42_385), .in3(c_41_372), .in2(s_42_383), .in1(s_42_384) );
Fadder_ A_42_386( .carry(c[42]), .sum(s[42]), .in3(c_41_373), .in2(c_41_374), .in1(s_42_385) );
// ***** Bit 43 ***** //
Fadder_ A_43_387( .carry(c_43_387), .sum(s_43_387), .in3(P_15[13]), .in2(P_14[15]), .in1(P_13[17]) );
Fadder_ A_43_388( .carry(c_43_388), .sum(s_43_388), .in3(P_12[19]), .in2(P_11[21]), .in1(P_10[23]) );
Fadder_ A_43_389( .carry(c_43_389), .sum(s_43_389), .in3(P_9[25]), .in2(P_8[27]), .in1(P_7[29]) );
Fadder_ A_43_390( .carry(c_43_390), .sum(s_43_390), .in3(P_6[31]), .in2(P_5[33]), .in1(c_42_379) );
Fadder_ A_43_391( .carry(c_43_391), .sum(s_43_391), .in3(c_42_378), .in2(c_42_377), .in1(c_42_376) );
Fadder_ A_43_392( .carry(c_43_392), .sum(s_43_392), .in3(s_43_389), .in2(s_43_388), .in1(s_43_387) );
Fadder_ A_43_393( .carry(c_43_393), .sum(s_43_393), .in3(c_42_380), .in2(c_42_381), .in1(s_43_390) );
Fadder_ A_43_394( .carry(c_43_394), .sum(s_43_394), .in3(s_43_391), .in2(c_42_382), .in1(s_43_392) );
Fadder_ A_43_395( .carry(c_43_395), .sum(s_43_395), .in3(c_42_383), .in2(s_43_393), .in1(c_42_384) );
Fadder_ A_43_396( .carry(c[43]), .sum(s[43]), .in3(s_43_394), .in2(s_43_395), .in1(c_42_385) );
// ***** Bit 44 ***** //
Hadder_ A_44_397( .carry(c_44_397), .sum(s_44_397), .in2(sign_), .in1(P_15[14]) );
Fadder_ A_44_398( .carry(c_44_398), .sum(s_44_398), .in3(P_14[16]), .in2(P_13[18]), .in1(P_12[20]) );
Fadder_ A_44_399( .carry(c_44_399), .sum(s_44_399), .in3(P_11[22]), .in2(P_10[24]), .in1(P_9[26]) );
Fadder_ A_44_400( .carry(c_44_400), .sum(s_44_400), .in3(P_8[28]), .in2(P_7[30]), .in1(P_6[32]) );
Fadder_ A_44_401( .carry(c_44_401), .sum(s_44_401), .in3(c_43_389), .in2(c_43_388), .in1(c_43_387) );
Fadder_ A_44_402( .carry(c_44_402), .sum(s_44_402), .in3(s_44_397), .in2(s_44_400), .in1(s_44_399) );
Fadder_ A_44_403( .carry(c_44_403), .sum(s_44_403), .in3(s_44_398), .in2(c_43_390), .in1(c_43_391) );
Fadder_ A_44_404( .carry(c_44_404), .sum(s_44_404), .in3(s_44_401), .in2(c_43_392), .in1(s_44_402) );
Fadder_ A_44_405( .carry(c_44_405), .sum(s_44_405), .in3(c_43_393), .in2(s_44_403), .in1(c_43_394) );
Fadder_ A_44_406( .carry(c[44]), .sum(s[44]), .in3(s_44_404), .in2(c_43_395), .in1(s_44_405) );
// ***** Bit 45 ***** //
Fadder_ A_45_407( .carry(c_45_407), .sum(s_45_407), .in3(P_15[15]), .in2(P_14[17]), .in1(P_13[19]) );
Fadder_ A_45_408( .carry(c_45_408), .sum(s_45_408), .in3(P_12[21]), .in2(P_11[23]), .in1(P_10[25]) );
Fadder_ A_45_409( .carry(c_45_409), .sum(s_45_409), .in3(P_9[27]), .in2(P_8[29]), .in1(P_7[31]) );
Fadder_ A_45_410( .carry(c_45_410), .sum(s_45_410), .in3(P_6[33]), .in2(c_44_400), .in1(c_44_399) );
Fadder_ A_45_411( .carry(c_45_411), .sum(s_45_411), .in3(c_44_398), .in2(c_44_397), .in1(s_45_409) );
Fadder_ A_45_412( .carry(c_45_412), .sum(s_45_412), .in3(s_45_408), .in2(s_45_407), .in1(c_44_401) );
Fadder_ A_45_413( .carry(c_45_413), .sum(s_45_413), .in3(s_45_410), .in2(c_44_402), .in1(s_45_411) );
Fadder_ A_45_414( .carry(c_45_414), .sum(s_45_414), .in3(c_44_403), .in2(s_45_412), .in1(c_44_404) );
Fadder_ A_45_415( .carry(c[45]), .sum(s[45]), .in3(s_45_413), .in2(c_44_405), .in1(s_45_414) );
// ***** Bit 46 ***** //
Hadder_ A_46_416( .carry(c_46_416), .sum(s_46_416), .in2(sign_), .in1(P_15[16]) );
Fadder_ A_46_417( .carry(c_46_417), .sum(s_46_417), .in3(P_14[18]), .in2(P_13[20]), .in1(P_12[22]) );
Fadder_ A_46_418( .carry(c_46_418), .sum(s_46_418), .in3(P_11[24]), .in2(P_10[26]), .in1(P_9[28]) );
Fadder_ A_46_419( .carry(c_46_419), .sum(s_46_419), .in3(P_8[30]), .in2(P_7[32]), .in1(c_45_409) );
Fadder_ A_46_420( .carry(c_46_420), .sum(s_46_420), .in3(c_45_408), .in2(c_45_407), .in1(s_46_416) );
Fadder_ A_46_421( .carry(c_46_421), .sum(s_46_421), .in3(s_46_418), .in2(s_46_417), .in1(c_45_410) );
Fadder_ A_46_422( .carry(c_46_422), .sum(s_46_422), .in3(c_45_411), .in2(s_46_419), .in1(s_46_420) );
Fadder_ A_46_423( .carry(c_46_423), .sum(s_46_423), .in3(c_45_412), .in2(s_46_421), .in1(c_45_413) );
Fadder_ A_46_424( .carry(c[46]), .sum(s[46]), .in3(s_46_422), .in2(c_45_414), .in1(s_46_423) );
// ***** Bit 47 ***** //
Fadder_ A_47_425( .carry(c_47_425), .sum(s_47_425), .in3(P_15[17]), .in2(P_14[19]), .in1(P_13[21]) );
Fadder_ A_47_426( .carry(c_47_426), .sum(s_47_426), .in3(P_12[23]), .in2(P_11[25]), .in1(P_10[27]) );
Fadder_ A_47_427( .carry(c_47_427), .sum(s_47_427), .in3(P_9[29]), .in2(P_8[31]), .in1(P_7[33]) );
Fadder_ A_47_428( .carry(c_47_428), .sum(s_47_428), .in3(c_46_418), .in2(c_46_417), .in1(c_46_416) );
Fadder_ A_47_429( .carry(c_47_429), .sum(s_47_429), .in3(s_47_427), .in2(s_47_426), .in1(s_47_425) );
Fadder_ A_47_430( .carry(c_47_430), .sum(s_47_430), .in3(c_46_419), .in2(c_46_420), .in1(s_47_428) );
Fadder_ A_47_431( .carry(c_47_431), .sum(s_47_431), .in3(s_47_429), .in2(c_46_421), .in1(c_46_422) );
Fadder_ A_47_432( .carry(c[47]), .sum(s[47]), .in3(s_47_430), .in2(c_46_423), .in1(s_47_431) );
// ***** Bit 48 ***** //
Hadder_ A_48_433( .carry(c_48_433), .sum(s_48_433), .in2(sign_), .in1(P_15[18]) );
Fadder_ A_48_434( .carry(c_48_434), .sum(s_48_434), .in3(P_14[20]), .in2(P_13[22]), .in1(P_12[24]) );
Fadder_ A_48_435( .carry(c_48_435), .sum(s_48_435), .in3(P_11[26]), .in2(P_10[28]), .in1(P_9[30]) );
Fadder_ A_48_436( .carry(c_48_436), .sum(s_48_436), .in3(P_8[32]), .in2(c_47_427), .in1(c_47_426) );
Fadder_ A_48_437( .carry(c_48_437), .sum(s_48_437), .in3(c_47_425), .in2(s_48_433), .in1(s_48_435) );
Fadder_ A_48_438( .carry(c_48_438), .sum(s_48_438), .in3(s_48_434), .in2(c_47_428), .in1(s_48_436) );
Fadder_ A_48_439( .carry(c_48_439), .sum(s_48_439), .in3(c_47_429), .in2(s_48_437), .in1(c_47_430) );
Fadder_ A_48_440( .carry(c[48]), .sum(s[48]), .in3(s_48_438), .in2(c_47_431), .in1(s_48_439) );
// ***** Bit 49 ***** //
Fadder_ A_49_441( .carry(c_49_441), .sum(s_49_441), .in3(P_15[19]), .in2(P_14[21]), .in1(P_13[23]) );
Fadder_ A_49_442( .carry(c_49_442), .sum(s_49_442), .in3(P_12[25]), .in2(P_11[27]), .in1(P_10[29]) );
Fadder_ A_49_443( .carry(c_49_443), .sum(s_49_443), .in3(P_9[31]), .in2(P_8[33]), .in1(c_48_435) );
Fadder_ A_49_444( .carry(c_49_444), .sum(s_49_444), .in3(c_48_434), .in2(c_48_433), .in1(s_49_442) );
Fadder_ A_49_445( .carry(c_49_445), .sum(s_49_445), .in3(s_49_441), .in2(c_48_436), .in1(s_49_443) );
Fadder_ A_49_446( .carry(c_49_446), .sum(s_49_446), .in3(c_48_437), .in2(s_49_444), .in1(c_48_438) );
Fadder_ A_49_447( .carry(c[49]), .sum(s[49]), .in3(s_49_445), .in2(c_48_439), .in1(s_49_446) );
// ***** Bit 50 ***** //
Hadder_ A_50_448( .carry(c_50_448), .sum(s_50_448), .in2(sign_), .in1(P_15[20]) );
Fadder_ A_50_449( .carry(c_50_449), .sum(s_50_449), .in3(P_14[22]), .in2(P_13[24]), .in1(P_12[26]) );
Fadder_ A_50_450( .carry(c_50_450), .sum(s_50_450), .in3(P_11[28]), .in2(P_10[30]), .in1(P_9[32]) );
Fadder_ A_50_451( .carry(c_50_451), .sum(s_50_451), .in3(c_49_442), .in2(c_49_441), .in1(s_50_448) );
Fadder_ A_50_452( .carry(c_50_452), .sum(s_50_452), .in3(s_50_450), .in2(s_50_449), .in1(c_49_443) );
Fadder_ A_50_453( .carry(c_50_453), .sum(s_50_453), .in3(c_49_444), .in2(s_50_451), .in1(s_50_452) );
Fadder_ A_50_454( .carry(c[50]), .sum(s[50]), .in3(c_49_445), .in2(c_49_446), .in1(s_50_453) );
// ***** Bit 51 ***** //
Fadder_ A_51_455( .carry(c_51_455), .sum(s_51_455), .in3(P_15[21]), .in2(P_14[23]), .in1(P_13[25]) );
Fadder_ A_51_456( .carry(c_51_456), .sum(s_51_456), .in3(P_12[27]), .in2(P_11[29]), .in1(P_10[31]) );
Fadder_ A_51_457( .carry(c_51_457), .sum(s_51_457), .in3(P_9[33]), .in2(c_50_450), .in1(c_50_449) );
Fadder_ A_51_458( .carry(c_51_458), .sum(s_51_458), .in3(c_50_448), .in2(s_51_456), .in1(s_51_455) );
Fadder_ A_51_459( .carry(c_51_459), .sum(s_51_459), .in3(c_50_451), .in2(s_51_457), .in1(s_51_458) );
Fadder_ A_51_460( .carry(c[51]), .sum(s[51]), .in3(c_50_452), .in2(s_51_459), .in1(c_50_453) );
// ***** Bit 52 ***** //
Hadder_ A_52_461( .carry(c_52_461), .sum(s_52_461), .in2(sign_), .in1(P_15[22]) );
Fadder_ A_52_462( .carry(c_52_462), .sum(s_52_462), .in3(P_14[24]), .in2(P_13[26]), .in1(P_12[28]) );
Fadder_ A_52_463( .carry(c_52_463), .sum(s_52_463), .in3(P_11[30]), .in2(P_10[32]), .in1(c_51_456) );
Fadder_ A_52_464( .carry(c_52_464), .sum(s_52_464), .in3(c_51_455), .in2(s_52_461), .in1(s_52_462) );
Fadder_ A_52_465( .carry(c_52_465), .sum(s_52_465), .in3(c_51_457), .in2(s_52_463), .in1(c_51_458) );
Fadder_ A_52_466( .carry(c[52]), .sum(s[52]), .in3(s_52_464), .in2(c_51_459), .in1(s_52_465) );
// ***** Bit 53 ***** //
Fadder_ A_53_467( .carry(c_53_467), .sum(s_53_467), .in3(P_15[23]), .in2(P_14[25]), .in1(P_13[27]) );
Fadder_ A_53_468( .carry(c_53_468), .sum(s_53_468), .in3(P_12[29]), .in2(P_11[31]), .in1(P_10[33]) );
Fadder_ A_53_469( .carry(c_53_469), .sum(s_53_469), .in3(c_52_462), .in2(c_52_461), .in1(s_53_468) );
Fadder_ A_53_470( .carry(c_53_470), .sum(s_53_470), .in3(s_53_467), .in2(c_52_463), .in1(c_52_464) );
Fadder_ A_53_471( .carry(c[53]), .sum(s[53]), .in3(s_53_469), .in2(c_52_465), .in1(s_53_470) );
// ***** Bit 54 ***** //
Hadder_ A_54_472( .carry(c_54_472), .sum(s_54_472), .in2(sign_), .in1(P_15[24]) );
Fadder_ A_54_473( .carry(c_54_473), .sum(s_54_473), .in3(P_14[26]), .in2(P_13[28]), .in1(P_12[30]) );
Fadder_ A_54_474( .carry(c_54_474), .sum(s_54_474), .in3(P_11[32]), .in2(c_53_468), .in1(c_53_467) );
Fadder_ A_54_475( .carry(c_54_475), .sum(s_54_475), .in3(s_54_472), .in2(s_54_473), .in1(c_53_469) );
Fadder_ A_54_476( .carry(c[54]), .sum(s[54]), .in3(s_54_474), .in2(c_53_470), .in1(s_54_475) );
// ***** Bit 55 ***** //
Fadder_ A_55_477( .carry(c_55_477), .sum(s_55_477), .in3(P_15[25]), .in2(P_14[27]), .in1(P_13[29]) );
Fadder_ A_55_478( .carry(c_55_478), .sum(s_55_478), .in3(P_12[31]), .in2(P_11[33]), .in1(c_54_473) );
Fadder_ A_55_479( .carry(c_55_479), .sum(s_55_479), .in3(c_54_472), .in2(s_55_477), .in1(c_54_474) );
Fadder_ A_55_480( .carry(c[55]), .sum(s[55]), .in3(s_55_478), .in2(c_54_475), .in1(s_55_479) );
// ***** Bit 56 ***** //
Hadder_ A_56_481( .carry(c_56_481), .sum(s_56_481), .in2(sign_), .in1(P_15[26]) );
Fadder_ A_56_482( .carry(c_56_482), .sum(s_56_482), .in3(P_14[28]), .in2(P_13[30]), .in1(P_12[32]) );
Fadder_ A_56_483( .carry(c_56_483), .sum(s_56_483), .in3(c_55_477), .in2(s_56_481), .in1(s_56_482) );
Fadder_ A_56_484( .carry(c[56]), .sum(s[56]), .in3(c_55_478), .in2(s_56_483), .in1(c_55_479) );
// ***** Bit 57 ***** //
Fadder_ A_57_485( .carry(c_57_485), .sum(s_57_485), .in3(P_15[27]), .in2(P_14[29]), .in1(P_13[31]) );
Fadder_ A_57_486( .carry(c_57_486), .sum(s_57_486), .in3(P_12[33]), .in2(c_56_482), .in1(c_56_481) );
Fadder_ A_57_487( .carry(c[57]), .sum(s[57]), .in3(s_57_485), .in2(s_57_486), .in1(c_56_483) );
// ***** Bit 58 ***** //
Hadder_ A_58_488( .carry(c_58_488), .sum(s_58_488), .in2(sign_), .in1(P_15[28]) );
Fadder_ A_58_489( .carry(c_58_489), .sum(s_58_489), .in3(P_14[30]), .in2(P_13[32]), .in1(c_57_485) );
Fadder_ A_58_490( .carry(c[58]), .sum(s[58]), .in3(s_58_488), .in2(c_57_486), .in1(s_58_489) );
// ***** Bit 59 ***** //
Fadder_ A_59_491( .carry(c_59_491), .sum(s_59_491), .in3(P_15[29]), .in2(P_14[31]), .in1(P_13[33]) );
Fadder_ A_59_492( .carry(c[59]), .sum(s[59]), .in3(c_58_488), .in2(s_59_491), .in1(c_58_489) );
// ***** Bit 60 ***** //
Hadder_ A_60_493( .carry(c_60_493), .sum(s_60_493), .in2(sign_), .in1(P_15[30]) );
Fadder_ A_60_494( .carry(c[60]), .sum(s[60]), .in3(P_14[32]), .in2(c_59_491), .in1(s_60_493) );
// ***** Bit 61 ***** //
Fadder_ A_61_495( .carry(c[61]), .sum(s[61]), .in3(P_15[31]), .in2(P_14[33]), .in1(c_60_493) );
// ***** Bit 62 ***** //
Hadder_ A_62_496( .carry(c[62]), .sum(s[62]), .in2(sign_), .in1(P_15[32]) );
// ***** Bit 63 ***** //
assign s[63] = P_15[33] ;
endmodule
module add_csa70(
if_add,
in_sum,
in_carry,
product,
out_sum,
out_carry);
input if_add;
input [69:0] in_sum;
input [68:0] in_carry;
input [69:0] product;
output [69:0] out_sum, out_carry;
wire inc;
wire [69:0] comp_sum;
wire [68:0] comp_carry;
assign inc = (if_add==1'b1)? 1'b0 : 1'b1;
assign comp_sum = (if_add==1'b1)? in_sum : (~in_sum);
assign comp_carry = (if_add==1'b1)? in_carry : (~in_carry);
Fadder_2 u0( .in1(comp_sum[0]), .in2(product[0]), .in3(inc), .sum(out_sum[0]), .carry(out_carry[0]) );
Fadder_2 u1( .in1(comp_sum[1]), .in2(comp_carry[0]), .in3(product[1]), .sum(out_sum[1]), .carry(out_carry[1]) );
Fadder_2 u2( .in1(comp_sum[2]), .in2(comp_carry[1]), .in3(product[2]), .sum(out_sum[2]), .carry(out_carry[2]) );
Fadder_2 u3( .in1(comp_sum[3]), .in2(comp_carry[2]), .in3(product[3]), .sum(out_sum[3]), .carry(out_carry[3]) );
Fadder_2 u4( .in1(comp_sum[4]), .in2(comp_carry[3]), .in3(product[4]), .sum(out_sum[4]), .carry(out_carry[4]) );
Fadder_2 u5( .in1(comp_sum[5]), .in2(comp_carry[4]), .in3(product[5]), .sum(out_sum[5]), .carry(out_carry[5]) );
Fadder_2 u6( .in1(comp_sum[6]), .in2(comp_carry[5]), .in3(product[6]), .sum(out_sum[6]), .carry(out_carry[6]) );
Fadder_2 u7( .in1(comp_sum[7]), .in2(comp_carry[6]), .in3(product[7]), .sum(out_sum[7]), .carry(out_carry[7]) );
Fadder_2 u8( .in1(comp_sum[8]), .in2(comp_carry[7]), .in3(product[8]), .sum(out_sum[8]), .carry(out_carry[8]) );
Fadder_2 u9( .in1(comp_sum[9]), .in2(comp_carry[8]), .in3(product[9]), .sum(out_sum[9]), .carry(out_carry[9]) );
Fadder_2 u10( .in1(comp_sum[10]), .in2(comp_carry[9]), .in3(product[10]), .sum(out_sum[10]), .carry(out_carry[10]) );
Fadder_2 u11( .in1(comp_sum[11]), .in2(comp_carry[10]), .in3(product[11]), .sum(out_sum[11]), .carry(out_carry[11]) );
Fadder_2 u12( .in1(comp_sum[12]), .in2(comp_carry[11]), .in3(product[12]), .sum(out_sum[12]), .carry(out_carry[12]) );
Fadder_2 u13( .in1(comp_sum[13]), .in2(comp_carry[12]), .in3(product[13]), .sum(out_sum[13]), .carry(out_carry[13]) );
Fadder_2 u14( .in1(comp_sum[14]), .in2(comp_carry[13]), .in3(product[14]), .sum(out_sum[14]), .carry(out_carry[14]) );
Fadder_2 u15( .in1(comp_sum[15]), .in2(comp_carry[14]), .in3(product[15]), .sum(out_sum[15]), .carry(out_carry[15]) );
Fadder_2 u16( .in1(comp_sum[16]), .in2(comp_carry[15]), .in3(product[16]), .sum(out_sum[16]), .carry(out_carry[16]) );
Fadder_2 u17( .in1(comp_sum[17]), .in2(comp_carry[16]), .in3(product[17]), .sum(out_sum[17]), .carry(out_carry[17]) );
Fadder_2 u18( .in1(comp_sum[18]), .in2(comp_carry[17]), .in3(product[18]), .sum(out_sum[18]), .carry(out_carry[18]) );
Fadder_2 u19( .in1(comp_sum[19]), .in2(comp_carry[18]), .in3(product[19]), .sum(out_sum[19]), .carry(out_carry[19]) );
Fadder_2 u20( .in1(comp_sum[20]), .in2(comp_carry[19]), .in3(product[20]), .sum(out_sum[20]), .carry(out_carry[20]) );
Fadder_2 u21( .in1(comp_sum[21]), .in2(comp_carry[20]), .in3(product[21]), .sum(out_sum[21]), .carry(out_carry[21]) );
Fadder_2 u22( .in1(comp_sum[22]), .in2(comp_carry[21]), .in3(product[22]), .sum(out_sum[22]), .carry(out_carry[22]) );
Fadder_2 u23( .in1(comp_sum[23]), .in2(comp_carry[22]), .in3(product[23]), .sum(out_sum[23]), .carry(out_carry[23]) );
Fadder_2 u24( .in1(comp_sum[24]), .in2(comp_carry[23]), .in3(product[24]), .sum(out_sum[24]), .carry(out_carry[24]) );
Fadder_2 u25( .in1(comp_sum[25]), .in2(comp_carry[24]), .in3(product[25]), .sum(out_sum[25]), .carry(out_carry[25]) );
Fadder_2 u26( .in1(comp_sum[26]), .in2(comp_carry[25]), .in3(product[26]), .sum(out_sum[26]), .carry(out_carry[26]) );
Fadder_2 u27( .in1(comp_sum[27]), .in2(comp_carry[26]), .in3(product[27]), .sum(out_sum[27]), .carry(out_carry[27]) );
Fadder_2 u28( .in1(comp_sum[28]), .in2(comp_carry[27]), .in3(product[28]), .sum(out_sum[28]), .carry(out_carry[28]) );
Fadder_2 u29( .in1(comp_sum[29]), .in2(comp_carry[28]), .in3(product[29]), .sum(out_sum[29]), .carry(out_carry[29]) );
Fadder_2 u30( .in1(comp_sum[30]), .in2(comp_carry[29]), .in3(product[30]), .sum(out_sum[30]), .carry(out_carry[30]) );
Fadder_2 u31( .in1(comp_sum[31]), .in2(comp_carry[30]), .in3(product[31]), .sum(out_sum[31]), .carry(out_carry[31]) );
Fadder_2 u32( .in1(comp_sum[32]), .in2(comp_carry[31]), .in3(product[32]), .sum(out_sum[32]), .carry(out_carry[32]) );
Fadder_2 u33( .in1(comp_sum[33]), .in2(comp_carry[32]), .in3(product[33]), .sum(out_sum[33]), .carry(out_carry[33]) );
Fadder_2 u34( .in1(comp_sum[34]), .in2(comp_carry[33]), .in3(product[34]), .sum(out_sum[34]), .carry(out_carry[34]) );
Fadder_2 u35( .in1(comp_sum[35]), .in2(comp_carry[34]), .in3(product[35]), .sum(out_sum[35]), .carry(out_carry[35]) );
Fadder_2 u36( .in1(comp_sum[36]), .in2(comp_carry[35]), .in3(product[36]), .sum(out_sum[36]), .carry(out_carry[36]) );
Fadder_2 u37( .in1(comp_sum[37]), .in2(comp_carry[36]), .in3(product[37]), .sum(out_sum[37]), .carry(out_carry[37]) );
Fadder_2 u38( .in1(comp_sum[38]), .in2(comp_carry[37]), .in3(product[38]), .sum(out_sum[38]), .carry(out_carry[38]) );
Fadder_2 u39( .in1(comp_sum[39]), .in2(comp_carry[38]), .in3(product[39]), .sum(out_sum[39]), .carry(out_carry[39]) );
Fadder_2 u40( .in1(comp_sum[40]), .in2(comp_carry[39]), .in3(product[40]), .sum(out_sum[40]), .carry(out_carry[40]) );
Fadder_2 u41( .in1(comp_sum[41]), .in2(comp_carry[40]), .in3(product[41]), .sum(out_sum[41]), .carry(out_carry[41]) );
Fadder_2 u42( .in1(comp_sum[42]), .in2(comp_carry[41]), .in3(product[42]), .sum(out_sum[42]), .carry(out_carry[42]) );
Fadder_2 u43( .in1(comp_sum[43]), .in2(comp_carry[42]), .in3(product[43]), .sum(out_sum[43]), .carry(out_carry[43]) );
Fadder_2 u44( .in1(comp_sum[44]), .in2(comp_carry[43]), .in3(product[44]), .sum(out_sum[44]), .carry(out_carry[44]) );
Fadder_2 u45( .in1(comp_sum[45]), .in2(comp_carry[44]), .in3(product[45]), .sum(out_sum[45]), .carry(out_carry[45]) );
Fadder_2 u46( .in1(comp_sum[46]), .in2(comp_carry[45]), .in3(product[46]), .sum(out_sum[46]), .carry(out_carry[46]) );
Fadder_2 u47( .in1(comp_sum[47]), .in2(comp_carry[46]), .in3(product[47]), .sum(out_sum[47]), .carry(out_carry[47]) );
Fadder_2 u48( .in1(comp_sum[48]), .in2(comp_carry[47]), .in3(product[48]), .sum(out_sum[48]), .carry(out_carry[48]) );
Fadder_2 u49( .in1(comp_sum[49]), .in2(comp_carry[48]), .in3(product[49]), .sum(out_sum[49]), .carry(out_carry[49]) );
Fadder_2 u50( .in1(comp_sum[50]), .in2(comp_carry[49]), .in3(product[50]), .sum(out_sum[50]), .carry(out_carry[50]) );
Fadder_2 u51( .in1(comp_sum[51]), .in2(comp_carry[50]), .in3(product[51]), .sum(out_sum[51]), .carry(out_carry[51]) );
Fadder_2 u52( .in1(comp_sum[52]), .in2(comp_carry[51]), .in3(product[52]), .sum(out_sum[52]), .carry(out_carry[52]) );
Fadder_2 u53( .in1(comp_sum[53]), .in2(comp_carry[52]), .in3(product[53]), .sum(out_sum[53]), .carry(out_carry[53]) );
Fadder_2 u54( .in1(comp_sum[54]), .in2(comp_carry[53]), .in3(product[54]), .sum(out_sum[54]), .carry(out_carry[54]) );
Fadder_2 u55( .in1(comp_sum[55]), .in2(comp_carry[54]), .in3(product[55]), .sum(out_sum[55]), .carry(out_carry[55]) );
Fadder_2 u56( .in1(comp_sum[56]), .in2(comp_carry[55]), .in3(product[56]), .sum(out_sum[56]), .carry(out_carry[56]) );
Fadder_2 u57( .in1(comp_sum[57]), .in2(comp_carry[56]), .in3(product[57]), .sum(out_sum[57]), .carry(out_carry[57]) );
Fadder_2 u58( .in1(comp_sum[58]), .in2(comp_carry[57]), .in3(product[58]), .sum(out_sum[58]), .carry(out_carry[58]) );
Fadder_2 u59( .in1(comp_sum[59]), .in2(comp_carry[58]), .in3(product[59]), .sum(out_sum[59]), .carry(out_carry[59]) );
Fadder_2 u60( .in1(comp_sum[60]), .in2(comp_carry[59]), .in3(product[60]), .sum(out_sum[60]), .carry(out_carry[60]) );
Fadder_2 u61( .in1(comp_sum[61]), .in2(comp_carry[60]), .in3(product[61]), .sum(out_sum[61]), .carry(out_carry[61]) );
Fadder_2 u62( .in1(comp_sum[62]), .in2(comp_carry[61]), .in3(product[62]), .sum(out_sum[62]), .carry(out_carry[62]) );
Fadder_2 u63( .in1(comp_sum[63]), .in2(comp_carry[62]), .in3(product[63]), .sum(out_sum[63]), .carry(out_carry[63]) );
Fadder_2 u64( .in1(comp_sum[64]), .in2(comp_carry[63]), .in3(product[64]), .sum(out_sum[64]), .carry(out_carry[64]) );
Fadder_2 u65( .in1(comp_sum[65]), .in2(comp_carry[64]), .in3(product[65]), .sum(out_sum[65]), .carry(out_carry[65]) );
Fadder_2 u66( .in1(comp_sum[66]), .in2(comp_carry[65]), .in3(product[66]), .sum(out_sum[66]), .carry(out_carry[66]) );
Fadder_2 u67( .in1(comp_sum[67]), .in2(comp_carry[66]), .in3(product[67]), .sum(out_sum[67]), .carry(out_carry[67]) );
Fadder_2 u68( .in1(comp_sum[68]), .in2(comp_carry[67]), .in3(product[68]), .sum(out_sum[68]), .carry(out_carry[68]) );
Fadder_2 u69( .in1(comp_sum[69]), .in2(comp_carry[68]), .in3(product[69]), .sum(out_sum[69]), .carry(out_carry[69]) );
endmodule
module DW01_add2 (A,B,CI,SUM,CO);
parameter width=8'b00100100;
output [width-1 : 0] SUM;
output CO;
input [width-1 : 0] A;
input [width-1 : 0] B;
input CI;
wire [width-1 : 0] SUM;
reg [width-2 : 0] sum_temp;
reg CO;
assign SUM = {CO, sum_temp};
always @(A or B or CI)
begin
{CO, sum_temp} = A+B+CI;
end
endmodule
module DW01_add1 (A,B,CI,SUM,CO);
parameter width=8'b00100011;
output [width-1 : 0] SUM;
output CO;
input [width-1 : 0] A;
input [width-1 : 0] B;
input CI;
wire [width-1 : 0] SUM;
reg [width-2 : 0] sum_temp;
reg CO;
reg c_out;
assign SUM = {CO, sum_temp};
always @(A or B or CI)
begin
{CO, sum_temp} = A+B+CI;
// sum_out = A + B;
// plus(sum_out,c_out,A,B,CI);
// SUM = sum_out;
// CO = c_out;
end
/*
task plus;
output [width-1 : 0] sumout;
output CO;
input [width-1 : 0] A,B;
input CI;
reg [width-1 : 0] sumout,SUM;
reg CO;
reg carry;
reg [width-1 : 0] A,B;
integer i;
begin
carry = CI;
for (i = 0; i <= width-1; i = i + 1) begin
sumout[i] = A[i] ^ B[i] ^ carry;
carry = (A[i] & B[i]) | (A[i] & carry) | (carry & B[i]);
end
SUM = sumout;
CO = carry;
end
endtask
*/
endmodule
module Adder71(
a,
b,
cin,
sum,
cout);
input [70:0]a, b;
input cin;
output [70:0]sum;
output cout;
wire [34:0] temp1, result1;
wire [35:0] temp2_1, temp2_2, result2;
wire co1, co2_1, co2_2;
assign result1= temp1;
assign result2= (co1==1'b0) ? temp2_1 : temp2_2;
assign sum={result2,result1};
assign cout=(co1==1'b0) ? co2_1 : co2_2;
DW01_add1 u1_1(.A(a[34:0]), .B(b[34:0]), .CI(cin), .SUM(temp1), .CO(co1));
DW01_add2 u2_1(.A(a[70:35]), .B(b[70:35]), .CI(1'b0), .SUM(temp2_1), .CO(co2_1));
DW01_add2 u2_2(.A(a[70:35]), .B(b[70:35]), .CI(1'b1), .SUM(temp2_2), .CO(co2_2));
endmodule
module cla_csa70(
if_add,
sum,
carry,
result,
overflow);
input [69:0] sum;
input [69:0] carry;
input if_add;
output [69:0] result;
output overflow;
wire temp_overflow;
reg [69:0] result;
reg overflow;
wire [70:0] temp;
wire inc1, inc2;
assign inc1=(if_add==1'b1)? 1'b0 : 1'b1;
assign inc2=(if_add==1'b1)? 1'b0 : 1'b1;
Adder71 U(.a({sum[69],sum}), .b({carry,inc1}), .cin(inc2), .sum(temp), .cout(temp_overflow));
//Adder71 U(.a({sum[69],sum}), .b({carry,inc1}), .cin(inc2), .sum(temp), .);
always @( temp )
begin
result = temp[69:0];
overflow = temp_overflow;
/*
if (temp[70]^temp[69]==1'b1)
overflow = 1'b1;
else
overflow = 1'b0;
*/
end
endmodule
module mac1(
clk,
reset,
stall,
if_add,
mode,
mulcand,
mulier,
value,
cnt_overflow,
answer,
overflow);
input clk;
input reset;
input stall;
input if_add;
input mode;
input [69:0] value;
input [31:0] mulcand;
input [31:0] mulier;
input cnt_overflow;
output [69:0] answer;
output overflow;
reg [31:0] in1;
reg [31:0] in2;
wire [63:0] wire_s;
wire [62:0] wire_c;
reg [63:0] temp_s;
reg [62:0] temp_c;
wire [69:0] operand_answer;
wire [69:0] operand_s;
wire [68:0] operand_c;
wire [69:0] final_sum;
wire [69:0] final_carry;
wire [69:0] wire_answer;
reg [69:0] answer;
wire [69:0] final_answer;
wire wire_overflow;
reg overflow;
assign operand_answer = mode==1'b0 ? answer : 0;
assign final_answer=((wire_overflow&cnt_overflow)==1'b1) ? {70'b1111111111111111111111111111111111111111111111111111111111111111111111} : wire_answer;
assign operand_s ={ temp_s[63],temp_s[63],temp_s[63],temp_s[63],temp_s[63],temp_s[63],temp_s };
assign operand_c ={ temp_c[62],temp_c[62],temp_c[62],temp_c[62],temp_c[62],temp_c[62],temp_c };
mult_ u1(.a(in1), .b(in2), .s(wire_s), .c(wire_c));
add_csa70 u2( .if_add(if_add), .in_sum(operand_s), .in_carry(operand_c), .product(operand_answer), .out_sum(final_sum), .out_carry(final_carry) );
cla_csa70 u3( .if_add(if_add), .sum(final_sum), .carry(final_carry), .result(wire_answer), .overflow(wire_overflow) );
always @(posedge clk)
begin
if( reset==1'b1 )
begin
in1<=0;
in2<=0;
temp_s<=0;
temp_c<=0;
answer<=value;
overflow<=0;
end
else
begin
if (stall==1'b0)
begin
in1<=mulcand;
in2<=mulier;
temp_s<=wire_s;
temp_c<=wire_c;
overflow<=wire_overflow;
answer<=final_answer;
end
end
end
endmodule