// Half Adder primitive
module half_adder (
input a, b,
output sum, carry
);
xor w1(sum,a,b);
and w2(carry,a,b); // Write code here
endmodule
// Full Adder using 2 Half Adders
module full_adder_struct (
input a, b, cin,
output sum, cout
);
// Write code here
wire sum1,carry1,carry2;
half_adder w1(.sum(sum1),.carry(carry1),.a(a),.b(b));
half_adder w2(.sum(sum),.carry(carry2),.a(sum1),.b(cin));
or w3(cout,carry2,carry1);
endmodule