`timescale 1ns/1ns

module lca_4(
	input		[3:0]       A_in  ,
	input	    [3:0]		B_in  ,
    input                   C_1   ,
 
 	output	 wire			CO    ,
	output   wire [3:0]	    S
);
wire [4:0] c;
assign c[0] = C_1;

genvar i;
generate for(i=0;i<4;i=i+1)
begin: add
assign S[i] = A_in[i] ^ B_in[i] ^c[i];
assign c[i+1] = (A_in[i] && B_in[i]) || ((A_in[i] ^ B_in[i]) && c[i]);   
end
endgenerate

assign CO = c[4];


endmodule