data/full_repos/permissive/428158935/sources_1/new/AdderModule.v
data/verilator_xmls/dff4d8a6-ea7a-49c3-a5fc-75c71889658f.xml
module CLA_4bit(
    input[3:0] P,
    input[3:0] G,
    input CI_0,
    output[4:1] CI,
    output Gm,
    output Pm
);

wire temp[9:0];
and(temp[0],CI_0,P[0]);
and(temp[1],temp[0],P[1]);
and(temp[2],temp[1],P[2]);
and(temp[3],temp[2],P[3]);

and(temp[4],G[0],P[1]);
and(temp[5],temp[4],P[2]);
and(temp[6],temp[5],P[3]);

and(temp[7],G[1],P[2]);
and(temp[8],temp[7],P[3]);

and(temp[9],G[2],P[3]);

or(CI[1],G[0],temp[0]);
or(CI[2],G[1],temp[4],temp[1]);
or(CI[3],G[2],temp[7],temp[5],temp[2]);
or(CI[4],G[3],temp[9],temp[8],temp[6],temp[3]);
  
or(Gm,G[3],temp[9],temp[8],temp[6]);
and(Pm,P[0],P[1],P[2],P[3]);
    
endmodule
module CLA_4bit(
    input[3:0] P,
    input[3:0] G,
    input CI_0,
    output[4:1] CI,
    output Gm,
    output Pm
);


wire temp[9:0];
and(temp[0],CI_0,P[0]);
and(temp[1],temp[0],P[1]);
and(temp[2],temp[1],P[2]);
and(temp[3],temp[2],P[3]);

and(temp[4],G[0],P[1]);
and(temp[5],temp[4],P[2]);
and(temp[6],temp[5],P[3]);

and(temp[7],G[1],P[2]);
and(temp[8],temp[7],P[3]);

and(temp[9],G[2],P[3]);

or(CI[1],G[0],temp[0]);
or(CI[2],G[1],temp[4],temp[1]);
or(CI[3],G[2],temp[7],temp[5],temp[2]);
or(CI[4],G[3],temp[9],temp[8],temp[6],temp[3]);
  
or(Gm,G[3],temp[9],temp[8],temp[6]);
and(Pm,P[0],P[1],P[2],P[3]);
    
endmodule