blob: d3bb4e8ebc0d2085d1d210cb85a70af83fad1d8d [file] [log] [blame] [edit]
(* whitebox *)
module CARRY4_VPR(O0, O1, O2, O3, CO_CHAIN, CO_FABRIC0, CO_FABRIC1, CO_FABRIC2, CO_FABRIC3, CYINIT, CIN, DI0, DI1, DI2, DI3, S0, S1, S2, S3);
parameter CYINIT_AX = 1'b0;
parameter CYINIT_C0 = 1'b0;
parameter CYINIT_C1 = 1'b0;
(* DELAY_CONST_CYINIT="0.491e-9" *)
(* DELAY_CONST_CIN="0.235e-9" *)
(* DELAY_CONST_S0="0.223e-9" *)
output wire O0;
(* DELAY_CONST_CYINIT="0.613e-9" *)
(* DELAY_CONST_CIN="0.348e-9" *)
(* DELAY_CONST_S0="0.400e-9" *)
(* DELAY_CONST_S1="0.205e-9" *)
(* DELAY_CONST_DI0="0.337e-9" *)
output wire O1;
(* DELAY_CONST_CYINIT="0.600e-9" *)
(* DELAY_CONST_CIN="0.256e-9" *)
(* DELAY_CONST_S0="0.523e-9" *)
(* DELAY_CONST_S1="0.558e-9" *)
(* DELAY_CONST_S2="0.226e-9" *)
(* DELAY_CONST_DI0="0.486e-9" *)
(* DELAY_CONST_DI1="0.471e-9" *)
output wire O2;
(* DELAY_CONST_CYINIT="0.657e-9" *)
(* DELAY_CONST_CIN="0.329e-9" *)
(* DELAY_CONST_S0="0.582e-9" *)
(* DELAY_CONST_S1="0.618e-9" *)
(* DELAY_CONST_S2="0.330e-9" *)
(* DELAY_CONST_S3="0.227e-9" *)
(* DELAY_CONST_DI0="0.545e-9" *)
(* DELAY_CONST_DI1="0.532e-9" *)
(* DELAY_CONST_DI2="0.372e-9" *)
output wire O3;
(* DELAY_CONST_CYINIT="0.578e-9" *)
(* DELAY_CONST_CIN="0.293e-9" *)
(* DELAY_CONST_S0="0.340e-9" *)
(* DELAY_CONST_DI0="0.329e-9" *)
output wire CO_FABRIC0;
(* DELAY_CONST_CYINIT="0.529e-9" *)
(* DELAY_CONST_CIN="0.178e-9" *)
(* DELAY_CONST_S0="0.433e-9" *)
(* DELAY_CONST_S1="0.469e-9" *)
(* DELAY_CONST_DI0="0.396e-9" *)
(* DELAY_CONST_DI1="0.376e-9" *)
output wire CO_FABRIC1;
(* DELAY_CONST_CYINIT="0.617e-9" *)
(* DELAY_CONST_CIN="0.250e-9" *)
(* DELAY_CONST_S0="0.512e-9" *)
(* DELAY_CONST_S1="0.548e-9" *)
(* DELAY_CONST_S2="0.292e-9" *)
(* DELAY_CONST_DI0="0.474e-9" *)
(* DELAY_CONST_DI1="0.459e-9" *)
(* DELAY_CONST_DI2="0.289e-9" *)
output wire CO_FABRIC2;
(* DELAY_CONST_CYINIT="0.580e-9" *)
(* DELAY_CONST_CIN="0.114e-9" *)
(* DELAY_CONST_S0="0.508e-9" *)
(* DELAY_CONST_S1="0.528e-9" *)
(* DELAY_CONST_S2="0.376e-9" *)
(* DELAY_CONST_S3="0.380e-9" *)
(* DELAY_CONST_DI0="0.456e-9" *)
(* DELAY_CONST_DI1="0.443e-9" *)
(* DELAY_CONST_DI2="0.324e-9" *)
(* DELAY_CONST_DI3="0.327e-9" *)
output wire CO_FABRIC3;
(* DELAY_CONST_CYINIT="0.580e-9" *)
(* DELAY_CONST_CIN="0.114e-9" *)
(* DELAY_CONST_S0="0.508e-9" *)
(* DELAY_CONST_S1="0.528e-9" *)
(* DELAY_CONST_S2="0.376e-9" *)
(* DELAY_CONST_S3="0.380e-9" *)
(* DELAY_CONST_DI0="0.456e-9" *)
(* DELAY_CONST_DI1="0.443e-9" *)
(* DELAY_CONST_DI2="0.324e-9" *)
(* DELAY_CONST_DI3="0.327e-9" *)
output wire CO_CHAIN;
input wire DI0, DI1, DI2, DI3;
input wire S0, S1, S2, S3;
input wire CYINIT;
input wire CIN;
wire CI0;
wire CI1;
wire CI2;
wire CI3;
wire CI4;
assign CI0 = (CYINIT & CYINIT_AX) | CYINIT_C1 | (CIN & (!CYINIT_AX && !CYINIT_C0 && !CYINIT_C1));
assign CI1 = S0 ? CI0 : DI0;
assign CI2 = S1 ? CI1 : DI1;
assign CI3 = S2 ? CI2 : DI2;
assign CI4 = S3 ? CI3 : DI3;
assign CO_FABRIC0 = CI1;
assign CO_FABRIC1 = CI2;
assign CO_FABRIC2 = CI3;
assign CO_FABRIC3 = CI4;
assign O0 = CI0 ^ S0;
assign O1 = CI1 ^ S1;
assign O2 = CI2 ^ S2;
assign O3 = CI3 ^ S3;
assign CO_CHAIN = CO_FABRIC3;
endmodule