module FullAdder(CO, SUM, A, B, CI);
output CO, SUM;
input A, B, CI;
wire M1, M2, M3;
or(M1, A, B);
and(M2, CI, M1);
and(M3, A, B);
or(CO, M2, M3);
xor(SUM, A, B, CI);
specify
(A, B, CI=>SUM)=1;
(A, B, CI=>CO)=1;
endspecify
endmodule
module FullAdder3b(CO, SUM, A, B, CI);
output [2:0] SUM;
output CO;
input [2:0] A, B;
input CI;
wire C1, C2;
FullAdder FA0(C1, SUM[0], A[0], B[0], CI);
FullAdder FA1(C2, SUM[1], A[1], B[1], C1);
FullAdder FA2(CO, SUM[2], A[2], B[2], C2);
endmodule
module FullAdder3b_bhv(O[3], O[2:0], A, B, CI);
output [3:0] O;
input [2:0] A, B;
input CI;
assign O=A+B+CI;
endmodule
               (
geocities.com/uxormania)