Adder subtractor
module top_module(
input [31:0] a,
input [31:0] b,
input sub,
output [31:0] sum
);
wire [31:0] sub_1;
wire cout_1;
wire [15:0]sum_1;
wire [15:0]sum_2;
assign sub_1 = b^{32{sub}};
add16 add16_inst1(
.a(a[15:0]),
.b(sub_1[15:0]),
.cin(sub),
.cout(cout_1),
.sum(sum_1)
);
add16 add16_inst2(
.a(a[31:16]),
.b(sub_1[31:16]),
.cin(cout_1),
.cout(),
.sum(sum_2)
);
assign sum = {sum_2,sum_1};
endmodule