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

    Source: geocities.com/uxormania/galant

               ( geocities.com/uxormania)