// Half Adder primitive
module half_adder (
input a, b,
output sum, carry
);
// Write code here
xor x1(sum,a,b);
and a1(carry,a,b);
endmodule
// Full Adder using 2 Half Adders
module full_adder_struct (
input a, b, cin,
output sum, cout
);
// Write code here
wire s_a,c_a,c_b;
half_adder ha0(a,b,s_a,c_a);
half_adder ha1(s_a,cin,sum,c_b);
or o1(cout,c_a,c_b);
endmodule