module top_module (
input [3:0] x,
input [3:0] y,
output [4:0] sum);
wire [2:0] cin_reg;
fa fa1(
.a(x[0]),
.b(y[0]),
.cin(1'b0),
.cout(cin_reg[0]),
.sum(sum[0])
);
fa fa2(
.a(x[1]),
.b(y[1]),
.cin(cin_reg[0]),
.cout(cin_reg[1]),
.sum(sum[1])
);
fa fa3(
.a(x[2]),
.b(y[2]),
.cin(cin_reg[1]),
.cout(cin_reg[2]),
.sum(sum[2])
);
fa fa4(
.a(x[3]),
.b(y[3]),
.cin(cin_reg[2]),
.cout(sum[4]),
.sum(sum[3])
);
endmodule
module fa(
input a,
input b,
input cin,
output cout,
output sum
);
assign {cout, sum} = a + b + cin;
endmodule