--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*----OPARVersion1Synthesis(Demo) ---Additionneurdedelaiimposé4traverséesde"BK" --synthesisedSunday,25September2011 ---*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-libraryIEEE; useIEEE.STD_LOGIC_1164.All; entityCLAdderis port(A,B:inStd_Logic_Vector(3downto0);--A,B:addends S:outStd_Logic_Vector(3downto0);--S:Sum; Cout:outStd_Logic);--carryout endCLAdder; architecturestructuralofCLAdderis --G(ii)(jj),P(ii)(jj):"groupGenerate","groupPropagate".ii=groupleftp osition,jj=grouprightposition typeTrisarray(3downto0)ofStd_Logic_Vector(3downto0); signalG,P:Tr; procedureHA (signalG,P:outStd_Logic;signalA,B:inStd_Logic)is beginG<=AandB;P<=AxorB;endHA; procedureBK (signalGO,PO:outStd_Logic;signalGI1,PI1,GI2,PI2:inStd_Logic)is beginGO<=GI1or(PI1andGI2);PO<=PI1andPI2;endBK; begin --"HA"cellsrow HA(G(03)(03),P(03)(03),A(03),B(03)); HA(G(02)(02),P(02)(02),A(02),B(02)); HA(G(01)(01),P(01)(01),A(01),B(01)); HA(G(00)(00),P(00)(00),A(00),B(00)); --"BK"cellsrow1 --"BK"cellsrow2 BK(G(01)(00),P(01)(00),G(01)(01),P(01)(01),G(00)(00),P(00)(00)); --"BK"cellsrow3 BK(G(02)(00),P(02)(00),G(02)(02),P(02)(02),G(01)(00),P(01)(00)); --"BK"cellsrow4 BK(G(03)(00),P(03)(00),G(03)(03),P(03)(03),G(02)(00),P(02)(00)); --"XOR"gatesrow Cout<=G(03)(00); S(03)<=P(03)(03)xorG(02)(00); S(02)<=P(02)(02)xorG(01)(00); S(01)<=P(01)(01)xorG(00)(00); S(00)<=P(00)(00); endstructural;