`timescale 1ns/1ns

module huawei8//四位超前进位加法器
(
	input wire [3:0]A,
	input wire [3:0]B,
	output wire [4:0]OUT
);

//*************code***********//
wire [3:0] G,P,F;
wire [4:1] Ci;
Add1 u0(A[0],B[0],1'b0,F[0],G[0],P[0]);
Add1 u1(A[1],B[1],Ci[1],F[1],G[1],P[1]);
Add1 u2(A[2],B[2],Ci[2],F[2],G[2],P[2]);
Add1 u3(A[3],B[3],Ci[3],F[3],G[3],P[3]);
CLA_4 U0(P,G,1'b0,Ci, ,);
assign OUT={Ci[4],F};
//*************code***********//
endmodule



//////////////下面是两个子模块////////

module Add1
(
		input a,
		input b,
		input C_in,
		output f,
		output g,
		output p
		);

assign p=a^b;
assign g=a&b;
assign f=a^b^C_in;
endmodule
module CLA_4(
		input [3:0]P,
		input [3:0]G,
		input C_in,
		output [4:1]Ci,
		output Gm,
		output Pm
	);
	assign  Ci[1]=G[0]|P[0]&C_in;
	assign  Ci[2]=G[1]|P[1]&Ci[1];
	assign  Ci[3]=G[2]|P[2]&Ci[2];
	assign  Ci[4]=G[3]|P[3]&Ci[3];
    assign  Gm=G[3]|P[3]&G[2]|P[2]&G[1]|P[3]&P[2]&P[1]&G[0];
    assign  Pm=P[3]&P[2]&P[1]&P[0];
endmodule
module texbench ();

reg [3:0]A,B;
wire [4:0]OUT;
 huawei8 INST(
	A,
	B,
	OUT
);        


initial
begin
A=0;B=0;
#10 A=9;B=9;
#2  A=1;
#6  B=15;
#3 A=15;
#20 
$finish;
end
endmodule

仿真结果如下: