module sub (a,b,c, sum, carry);
input a,b,c;
output sum, carry;
assign sum = a^b^c;
assign carry= (a&b) | (b&c) | (a&c);
endmodule
module sub4_2c (a,b,diff,bout);
input [3:0] a,b;
output[3:0] diff;
output bout;
wire [3:0] b_;
wire [3:0] co;
assign b_[0] = ~b[0];
assign b_[1] = ~b[1];
assign b_[2] = ~b[2];
assign b_[3] = ~b[3];
sub m1 (.a(a[0]), .b(b_[0]), .c(1'b1), .sum(diff[0]), .carry(co[0]));
sub m2 (.a(a[1]), .b(b_[1]), .c(co[0]), .sum(diff[1]), .carry(co[1]));
sub m3 (.a(a[2]), .b(b_[2]), .c(co[1]), .sum(diff[2]), .carry(co[2]));
sub m4 (.a(a[3]), .b(b_[3]), .c(co[2]), .sum(diff[3]), .carry(co[3]));
assign bout = ~co[3];
endmodule