// Half Adder primitive
module half_adder (
input a, b,
output sum, carry
);
assign sum = (a ^ b);
assign carry = (a & b);
// Write code here
endmodule
// Full Adder using 2 Half Adders
module full_adder_struct (
input a, b, cin,
output sum, cout
);
wire sum1, carry1;
wire sum2, carry2;
half_adder h1 (a,b, sum1, carry1);
half_adder h2 (sum1, cin, sum2, carry2);
assign sum = sum2;
assign cout = (carry1 | carry2);
// Write code here
endmodule