|
|
@ -204,7 +204,8 @@ DLL_X{1,2} input(D,GN) output(Q) G=INV1(GN) Q=LATCH(D,G) ; |
|
|
|
""") |
|
|
|
""") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# SAED90nm library. unsupported: negative-edge flip-flops, tri-state, latches, clock gating, level shifters |
|
|
|
# SAED90nm and SAED32nm libraries. |
|
|
|
|
|
|
|
# not included here: negative-edge flip-flops, tri-state, latches, clock gating, level shifters |
|
|
|
|
|
|
|
|
|
|
|
saed90 = TechLibNew(r""" |
|
|
|
saed90 = TechLibNew(r""" |
|
|
|
NBUFFX{2,4,8,16,32}$ input(INP) output(Z) Z=BUF1(INP) ; |
|
|
|
NBUFFX{2,4,8,16,32}$ input(INP) output(Z) Z=BUF1(INP) ; |
|
|
@ -289,3 +290,92 @@ SDFFASX{1,2}$ input(D,CLK,SETB,SE,SI) output(Q,QN) SET=INV1(SETB) DS=OR2( |
|
|
|
SDFFSSRX{1,2}$ input(CLK,D,RSTB,SETB,SI,SE) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) DI=MUX21(DRS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
SDFFSSRX{1,2}$ input(CLK,D,RSTB,SETB,SI,SE) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) DI=MUX21(DRS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
SDFFX{1,2}$ input(D,CLK,SE,SI) output(Q,QN) DI=MUX21(D,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
SDFFX{1,2}$ input(D,CLK,SE,SI) output(Q,QN) DI=MUX21(D,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
""".replace('$','{,_LVT,_HVT}')) |
|
|
|
""".replace('$','{,_LVT,_HVT}')) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
saed32 = TechLibNew(r""" |
|
|
|
|
|
|
|
NBUFFX{2,4,8,16,32}$ input(A) output(Y) Y=BUF1(A) ; |
|
|
|
|
|
|
|
AOBUFX{1,2,4}$ input(A) output(Y) Y=BUF1(A) ; |
|
|
|
|
|
|
|
DELLN{1,2,3}X2$ input(A) output(Y) Y=BUF1(A) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INVX{0,1,2,4,8,16,32}$ input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
|
|
|
AOINVX{1,2,4}$ input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
|
|
|
IBUFFX{2,4,8,16,32}$ input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TIEH$ output(Y) Y=__const1__() ; |
|
|
|
|
|
|
|
TIEL$ output(Y) Y=__const0__() ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HEAD2X{2,4,8,16,32}$ input(SLEEP) output(SLEEPOUT) SLEEPOUT=BUF1(SLEEP) ; |
|
|
|
|
|
|
|
HEADX{2,4,8,16,32}$ input(SLEEP) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FOOT2X{2,4,8,16,32}$ input(SLEEP) output(SLEEPOUT) SLEEPOUT=BUF1(SLEEP) ; |
|
|
|
|
|
|
|
FOOTX{2,4,8,16,32}$ input(SLEEP) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ANTENNA$ input(INP) ; |
|
|
|
|
|
|
|
CLOAD1$ input(A) ; |
|
|
|
|
|
|
|
DCAP$ ; |
|
|
|
|
|
|
|
DHFILLH2$ ; |
|
|
|
|
|
|
|
DHFILLHL2$ ; |
|
|
|
|
|
|
|
DHFILLHLHLS11$ ; |
|
|
|
|
|
|
|
SHFILL{1,2,3,64,128}$ ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AND2X{1,2,4}$ input(A1,A2) output(Y) Y=AND2(A1,A2) ; |
|
|
|
|
|
|
|
AND3X{1,2,4}$ input(A1,A2,A3) output(Y) Y=AND3(A1,A2,A3) ; |
|
|
|
|
|
|
|
AND4X{1,2,4}$ input(A1,A2,A3,A4) output(Y) Y=AND4(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
OR2X{1,2,4}$ input(A1,A2) output(Y) Y=OR2(A1,A2) ; |
|
|
|
|
|
|
|
OR3X{1,2,4}$ input(A1,A2,A3) output(Y) Y=OR3(A1,A2,A3) ; |
|
|
|
|
|
|
|
OR4X{1,2,4}$ input(A1,A2,A3,A4) output(Y) Y=OR4(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
XOR2X{1,2}$ input(A1,A2) output(Y) Y=XOR2(A1,A2) ; |
|
|
|
|
|
|
|
XOR3X{1,2}$ input(A1,A2,A3) output(Y) Y=XOR3(A1,A2,A3) ; |
|
|
|
|
|
|
|
NAND2X{0,1,2,4}$ input(A1,A2) output(Y) Y=NAND2(A1,A2) ; |
|
|
|
|
|
|
|
NAND3X{0,1,2,4}$ input(A1,A2,A3) output(Y) Y=NAND3(A1,A2,A3) ; |
|
|
|
|
|
|
|
NAND4X{0,1}$ input(A1,A2,A3,A4) output(Y) Y=NAND4(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
NOR2X{0,1,2,4}$ input(A1,A2) output(Y) Y=NOR2(A1,A2) ; |
|
|
|
|
|
|
|
NOR3X{0,1,2,4}$ input(A1,A2,A3) output(Y) Y=NOR3(A1,A2,A3) ; |
|
|
|
|
|
|
|
NOR4X{0,1}$ input(A1,A2,A3,A4) output(Y) Y=NOR4(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
XNOR2X{1,2}$ input(A1,A2) output(Y) Y=XNOR2(A1,A2) ; |
|
|
|
|
|
|
|
XNOR3X{1,2}$ input(A1,A2,A3) output(Y) Y=XNOR3(A1,A2,A3) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ISOLAND{,AO}X{1,2,4,8}$ input(ISO,D) output(Q) ISOB=NOT1(ISO) Q=AND2(ISOB,D) ; |
|
|
|
|
|
|
|
ISOLOR{,AO}X{1,2,4,8}$ input(ISO,D) output(Q) Q=OR2(ISO,D) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AO21X{1,2}$ input(A1,A2,A3) output(Y) Y=AO21(A1,A2,A3) ; |
|
|
|
|
|
|
|
OA21X{1,2}$ input(A1,A2,A3) output(Y) Y=OA21(A1,A2,A3) ; |
|
|
|
|
|
|
|
AOI21X{1,2}$ input(A1,A2,A3) output(Y) Y=AOI21(A1,A2,A3) ; |
|
|
|
|
|
|
|
OAI21X{1,2}$ input(A1,A2,A3) output(Y) Y=OAI21(A1,A2,A3) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AO22X{1,2}$ input(A1,A2,A3,A4) output(Y) Y=AO22(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
OA22X{1,2}$ input(A1,A2,A3,A4) output(Y) Y=OA22(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
AOI22X{1,2}$ input(A1,A2,A3,A4) output(Y) Y=AOI22(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
OAI22X{1,2}$ input(A1,A2,A3,A4) output(Y) Y=OAI22(A1,A2,A3,A4) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MUX21X{1,2}$ input(A1,A2,S0) output(Y) Y=MUX21(A1,A2,S0) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AO221X{1,2}$ input(A1,A2,A3,A4,A5) output(Y) A=AO22(A1,A2,A3,A4) Y=OR2(A5,A) ; |
|
|
|
|
|
|
|
OA221X{1,2}$ input(A1,A2,A3,A4,A5) output(Y) A=OA22(A1,A2,A3,A4) Y=AND2(A5,A) ; |
|
|
|
|
|
|
|
AOI221X{1,2}$ input(A1,A2,A3,A4,A5) output(Y) A=AO22(A1,A2,A3,A4) Y=NOR2(A5,A) ; |
|
|
|
|
|
|
|
OAI221X{1,2}$ input(A1,A2,A3,A4,A5) output(Y) A=OA22(A1,A2,A3,A4) Y=NAND2(A5,A) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AO222X{1,2}$ input(A1,A2,A3,A4,A5,A6) output(Y) A=AO22(A1,A2,A3,A4) Y=AO21(A5,A6,A) ; |
|
|
|
|
|
|
|
OA222X{1,2}$ input(A1,A2,A3,A4,A5,A6) output(Y) A=OA22(A1,A2,A3,A4) Y=OA21(A5,A6,A) ; |
|
|
|
|
|
|
|
AOI222X{1,2}$ input(A1,A2,A3,A4,A5,A6) output(Y) A=AO22(A1,A2,A3,A4) Y=AOI21(A5,A6,A) ; |
|
|
|
|
|
|
|
OAI222X{1,2}$ input(A1,A2,A3,A4,A5,A6) output(Y) A=OA22(A1,A2,A3,A4) Y=OAI21(A5,A6,A) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MUX41X{1,2}$ input(A1,A2,A3,A4,S0,S1) output(Y) A=MUX21(A1,A2,S0) B=MUX21(A3,A4,S0) Y=MUX21(A,B,S1) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEC24X{1,2}$ input(A0,A1) output(Y0,Y1,Y2,Y3) A0B=INV1(A0) A1B=INV1(A1) Y0=NOR2(A0,A1) Y1=AND(A0,A1B) Y2=AND(A0B,A1) Y3=AND(A0,A1) ; |
|
|
|
|
|
|
|
FADDX{1,2}$ input(A,B,CI) output(S,CO) AB=XOR2(A,B) CO=XOR(AB,CI) S=AO22(AB,CI,A,B) ; |
|
|
|
|
|
|
|
HADDX{1,2}$ input(A0,B0) output(SO,C1) C1=XOR2(A0,B0) SO=AND2(A0,B0) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{,AO}DFFARX{1,2}$ input(D,CLK,RSTB) output(Q,QN) DR=AND2(D,RSTB) Q=DFF(DR,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
DFFASRX{1,2}$ input(D,CLK,RSTB,SETB) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) Q=DFF(DRS,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
DFFASX{1,2}$ input(D,CLK,SETB) output(Q,QN) SET=INV1(SETB) DS=OR2(D,SET) Q=DFF(DS,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
DFFSSRX{1,2}$ input(CLK,D,RSTB,SETB) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) Q=DFF(DRS,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
DFFX{1,2}$ input(D,CLK) output(Q,QN) Q=DFF(D,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDFFARX{1,2}$ input(D,CLK,RSTB,SE,SI) output(Q,QN) DR=AND2(D,RSTB) DI=MUX21(DR,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
SDFFASRSX{1,2}$ input(D,CLK,RSTB,SETB,SE,SI) output(Q,QN,SO) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) DI=MUX21(DRS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) SO=BUF1(Q) ; |
|
|
|
|
|
|
|
SDFFASRX{1,2}$ input(D,CLK,RSTB,SETB,SE,SI) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) DI=MUX21(DRS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
SDFFASX{1,2}$ input(D,CLK,SETB,SE,SI) output(Q,QN) SET=INV1(SETB) DS=OR2(D,SET) DI=MUX21(DS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
SDFFSSRX{1,2}$ input(CLK,D,RSTB,SETB,SI,SE) output(Q,QN) DR=AND2(D,RSTB) SET=INV1(SETB) DRS=OR2(DR,SET) DI=MUX21(DRS,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
SDFFX{1,2}$ input(D,CLK,SE,SI) output(Q,QN) DI=MUX21(D,SI,SE) Q=DFF(DI,CLK) QN=INV1(Q) ; |
|
|
|
|
|
|
|
""".replace('$','_RVT')) |