|
|
|
|
@ -450,3 +450,194 @@ LATCHX{1,2}$ input(D,CLK) output(Q,QN) Q=LATCH(D,CLK) QN=INV1(Q) ;
@@ -450,3 +450,194 @@ LATCHX{1,2}$ input(D,CLK) output(Q,QN) Q=LATCH(D,CLK) QN=INV1(Q) ;
|
|
|
|
|
"""The SAED 90nm educational technology library. |
|
|
|
|
It defines all cells except: negative-edge flip-flops, tri-state, latches, clock gating, level shifters |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SKY130 = TechLib(r""" |
|
|
|
|
$decap_{3,4,6,8,12} ; |
|
|
|
|
$fill_{1,2,4,8} ; |
|
|
|
|
$tap_{1,2} ; |
|
|
|
|
$tapvgnd_1 ; |
|
|
|
|
$tapvgnd2_1 ; |
|
|
|
|
$tapvpwrvgnd_1 ; |
|
|
|
|
$lpflow_decapkapwr_{3,4,6,8,12} ; |
|
|
|
|
$lpflow_bleeder_1 input(SHORT) ; |
|
|
|
|
|
|
|
|
|
$conb_1 output(HI,LO) HI=__const1__() LO=__const0__() ; |
|
|
|
|
$macro_sparecell output(LO) LO=__const0__() ; |
|
|
|
|
|
|
|
|
|
$diode_2 input(DIODE) ; |
|
|
|
|
$probe_p_8 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$probec_p_8 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
|
|
|
|
|
$inv_{1,2,4,6,8,12,16} input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
$buf_{1,2,4,6,8,12,16} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$bufbuf_{8,16} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$bufinv_{8,16} input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
$clkbuf_{1,2,4,8,16} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$clkinv_{1,2,4,8,16} input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
$clkinvlp_{2,4} input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
$clkdlybuf4s15_{1,2} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$clkdlybuf4s18_{1,2} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$clkdlybuf4s25_{1,2} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$clkdlybuf4s50_{1,2} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlygate4sd1_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlygate4sd2_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlygate4sd3_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlymetal6s2s_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlymetal6s4s_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$dlymetal6s6s_1 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$lpflow_clkbufkapwr_{1,2,4,8,16} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$lpflow_clkinvkapwr_{1,2,4,8,16} input(A) output(Y) Y=INV1(A) ; |
|
|
|
|
$lpflow_lsbuf_lh_hl_isowell_tap_{1,2,4} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$lpflow_lsbuf_lh_isowell_4 input(A) output(X) X=BUF1(A) ; |
|
|
|
|
$lpflow_lsbuf_lh_isowell_tap_{1,2,4} input(A) output(X) X=BUF1(A) ; |
|
|
|
|
|
|
|
|
|
$and2_{0,1,2,4} input(A,B) output(X) X=AND2(A,B) ; |
|
|
|
|
$and2b_{1,2,4} input(A_N,B) output(X) AN=INV1(A_N) X=AND2(AN,B) ; |
|
|
|
|
$and3_{1,2,4} input(A,B,C) output(X) X=AND3(A,B,C) ; |
|
|
|
|
$and3b_{1,2,4} input(A_N,B,C) output(X) AN=INV1(A_N) X=AND3(AN,B,C) ; |
|
|
|
|
$and4_{1,2,4} input(A,B,C,D) output(X) X=AND4(A,B,C,D) ; |
|
|
|
|
$and4b_{1,2,4} input(A_N,B,C,D) output(X) AN=INV1(A_N) X=AND4(AN,B,C,D) ; |
|
|
|
|
$and4bb_{1,2,4} input(A_N,B_N,C,D) output(X) AN=INV1(A_N) BN=INV1(B_N) X=AND4(AN,BN,C,D) ; |
|
|
|
|
|
|
|
|
|
$or2_{0,1,2,4} input(A,B) output(X) X=OR2(A,B) ; |
|
|
|
|
$or2b_{1,2,4} input(A,B_N) output(X) BN=INV1(B_N) X=OR2(A,BN) ; |
|
|
|
|
$or3_{1,2,4} input(A,B,C) output(X) X=OR3(A,B,C) ; |
|
|
|
|
$or3b_{1,2,4} input(A,B,C_N) output(X) CN=INV1(C_N) X=OR3(A,B,CN) ; |
|
|
|
|
$or4_{1,2,4} input(A,B,C,D) output(X) X=OR4(A,B,C,D) ; |
|
|
|
|
$or4b_{1,2,4} input(A,B,C,D_N) output(X) DN=INV1(D_N) X=OR4(A,B,C,DN) ; |
|
|
|
|
$or4bb_{1,2,4} input(A,B,C_N,D_N) output(X) CN=INV1(C_N) DN=INV1(D_N) X=OR4(A,B,CN,DN) ; |
|
|
|
|
|
|
|
|
|
$nand2_{1,2,4,8} input(A,B) output(Y) Y=NAND2(A,B) ; |
|
|
|
|
$nand2b_{1,2,4} input(A_N,B) output(Y) AN=INV1(A_N) Y=NAND2(AN,B) ; |
|
|
|
|
$nand3_{1,2,4} input(A,B,C) output(Y) Y=NAND3(A,B,C) ; |
|
|
|
|
$nand3b_{1,2,4} input(A_N,B,C) output(Y) AN=INV1(A_N) Y=NAND3(AN,B,C) ; |
|
|
|
|
$nand4_{1,2,4} input(A,B,C,D) output(Y) Y=NAND4(A,B,C,D) ; |
|
|
|
|
$nand4b_{1,2,4} input(A_N,B,C,D) output(Y) AN=INV1(A_N) Y=NAND4(AN,B,C,D) ; |
|
|
|
|
$nand4bb_{1,2,4} input(A_N,B_N,C,D) output(Y) AN=INV1(A_N) BN=INV1(B_N) Y=NAND4(AN,BN,C,D) ; |
|
|
|
|
|
|
|
|
|
$nor2_{1,2,4,8} input(A,B) output(Y) Y=NOR2(A,B) ; |
|
|
|
|
$nor2b_{1,2,4} input(A,B_N) output(Y) BN=INV1(B_N) Y=NOR2(A,BN) ; |
|
|
|
|
$nor3_{1,2,4} input(A,B,C) output(Y) Y=NOR3(A,B,C) ; |
|
|
|
|
$nor3b_{1,2,4} input(A,B,C_N) output(Y) CN=INV1(C_N) Y=NOR3(A,B,CN) ; |
|
|
|
|
$nor4_{1,2,4} input(A,B,C,D) output(Y) Y=NOR4(A,B,C,D) ; |
|
|
|
|
$nor4b_{1,2,4} input(A,B,C,D_N) output(Y) DN=INV1(D_N) Y=NOR4(A,B,C,DN) ; |
|
|
|
|
$nor4bb_{1,2,4} input(A,B,C_N,D_N) output(Y) CN=INV1(C_N) DN=INV1(D_N) Y=NOR4(A,B,CN,DN) ; |
|
|
|
|
|
|
|
|
|
$xor2_{1,2,4} input(A,B) output(X) X=XOR2(A,B) ; |
|
|
|
|
$xor3_{1,2,4} input(A,B,C) output(X) X=XOR3(A,B,C) ; |
|
|
|
|
$xnor2_{1,2,4} input(A,B) output(Y) Y=XNOR2(A,B) ; |
|
|
|
|
$xnor3_{1,2,4} input(A,B,C) output(X) X=XNOR3(A,B,C) ; |
|
|
|
|
|
|
|
|
|
$maj3_{1,2,4} input(A,B,C) output(X) AB=AND2(A,B) BC=AND2(B,C) AC=AND2(A,C) X=OR3(AB,BC,AC) ; |
|
|
|
|
|
|
|
|
|
$mux2_{1,2,4,8} input(A0,A1,S) output(X) X=MUX21(A0,A1,S) ; |
|
|
|
|
$mux2i_{1,2,4} input(A0,A1,S) output(Y) M=MUX21(A0,A1,S) Y=INV1(M) ; |
|
|
|
|
$mux4_{1,2,4} input(A0,A1,A2,A3,S0,S1) output(X) M0=MUX21(A0,A1,S0) M1=MUX21(A2,A3,S0) X=MUX21(M0,M1,S1) ; |
|
|
|
|
|
|
|
|
|
$ha_{1,2,4} input(A,B) output(COUT,SUM) SUM=XOR2(A,B) COUT=AND2(A,B) ; |
|
|
|
|
$fa_{1,2,4} input(A,B,CIN) output(COUT,SUM) AB=XOR2(A,B) SUM=XOR2(AB,CIN) COUT=AO22(A,B,AB,CIN) ; |
|
|
|
|
$fah_1 input(A,B,CI) output(COUT,SUM) AB=XOR2(A,B) SUM=XOR2(AB,CI) COUT=AO22(A,B,AB,CI) ; |
|
|
|
|
$fahcin_1 input(A,B,CIN) output(COUT,SUM) AB=XOR2(A,B) SUM=XOR2(AB,CIN) COUT=AO22(A,B,AB,CIN) ; |
|
|
|
|
$fahcon_1 input(A,B,CI) output(COUT_N,SUM) AB=XOR2(A,B) SUM=XOR2(AB,CI) T=AO22(A,B,AB,CI) COUT_N=INV1(T) ; |
|
|
|
|
|
|
|
|
|
$a21o_{1,2,4} input(A1,A2,B1) output(X) X=AO21(A1,A2,B1) ; |
|
|
|
|
$a21bo_{1,2,4} input(A1,A2,B1_N) output(X) BN=INV1(B1_N) X=AO21(A1,A2,BN) ; |
|
|
|
|
$a22o_{1,2,4} input(A1,A2,B1,B2) output(X) X=AO22(A1,A2,B1,B2) ; |
|
|
|
|
$a2bb2o_{1,2,4} input(A1_N,A2_N,B1,B2) output(X) AN1=INV1(A1_N) AN2=INV1(A2_N) X=AO22(AN1,AN2,B1,B2) ; |
|
|
|
|
$a211o_{1,2,4} input(A1,A2,B1,C1) output(X) X=AO211(A1,A2,B1,C1) ; |
|
|
|
|
$a221o_{1,2,4} input(A1,A2,B1,B2,C1) output(X) T=AO22(A1,A2,B1,B2) X=OR2(T,C1) ; |
|
|
|
|
$a31o_{1,2,4} input(A1,A2,A3,B1) output(X) AA=AND3(A1,A2,A3) X=OR2(AA,B1) ; |
|
|
|
|
$a311o_{1,2,4} input(A1,A2,A3,B1,C1) output(X) T=AND2(A1,A2) X=AO211(T,A3,B1,C1) ; |
|
|
|
|
$a32o_{1,2,4} input(A1,A2,A3,B1,B2) output(X) T=AND2(A1,A2) X=AO22(T,A3,B1,B2) ; |
|
|
|
|
$a41o_{1,2,4} input(A1,A2,A3,A4,B1) output(X) T1=AND2(A1,A2) T2=AND2(T1,A3) X=AO21(T2,A4,B1) ; |
|
|
|
|
$a2111o_{1,2,4} input(A1,A2,B1,C1,D1) output(X) T=AO211(A1,A2,B1,C1) X=OR2(T,D1) ; |
|
|
|
|
|
|
|
|
|
$a21oi_{1,2,4} input(A1,A2,B1) output(Y) Y=AOI21(A1,A2,B1) ; |
|
|
|
|
$a21boi_{0,1,2,4} input(A1,A2,B1_N) output(Y) BN=INV1(B1_N) Y=AOI21(A1,A2,BN) ; |
|
|
|
|
$a22oi_{1,2,4} input(A1,A2,B1,B2) output(Y) Y=AOI22(A1,A2,B1,B2) ; |
|
|
|
|
$a2bb2oi_{1,2,4} input(A1_N,A2_N,B1,B2) output(Y) AN1=INV1(A1_N) AN2=INV1(A2_N) Y=AOI22(AN1,AN2,B1,B2) ; |
|
|
|
|
$a211oi_{1,2,4} input(A1,A2,B1,C1) output(Y) Y=AOI211(A1,A2,B1,C1) ; |
|
|
|
|
$a221oi_{1,2,4} input(A1,A2,B1,B2,C1) output(Y) T=AO22(A1,A2,B1,B2) Y=NOR2(T,C1) ; |
|
|
|
|
$a222oi_1 input(A1,A2,B1,B2,C1,C2) output(Y) AB=AO22(A1,A2,B1,B2) Y=AOI21(C1,C2,AB) ; |
|
|
|
|
$a31oi_{1,2,4} input(A1,A2,A3,B1) output(Y) AA=AND3(A1,A2,A3) Y=NOR2(AA,B1) ; |
|
|
|
|
$a311oi_{1,2,4} input(A1,A2,A3,B1,C1) output(Y) T=AND2(A1,A2) Y=AOI211(T,A3,B1,C1) ; |
|
|
|
|
$a32oi_{1,2,4} input(A1,A2,A3,B1,B2) output(Y) T=AND2(A1,A2) Y=AOI22(T,A3,B1,B2) ; |
|
|
|
|
$a41oi_{1,2,4} input(A1,A2,A3,A4,B1) output(Y) T1=AND2(A1,A2) T2=AND2(T1,A3) Y=AOI21(T2,A4,B1) ; |
|
|
|
|
$a2111oi_{0,1,2,4} input(A1,A2,B1,C1,D1) output(Y) T=AO211(A1,A2,B1,C1) Y=NOR2(T,D1) ; |
|
|
|
|
|
|
|
|
|
$o21a_{1,2,4} input(A1,A2,B1) output(X) X=OA21(A1,A2,B1) ; |
|
|
|
|
$o21ba_{1,2,4} input(A1,A2,B1_N) output(X) BN=INV1(B1_N) X=OA21(A1,A2,BN) ; |
|
|
|
|
$o22a_{1,2,4} input(A1,A2,B1,B2) output(X) X=OA22(A1,A2,B1,B2) ; |
|
|
|
|
$o2bb2a_{1,2,4} input(A1_N,A2_N,B1,B2) output(X) T=NAND2(A1_N,A2_N) X=OA21(B1,B2,T) ; |
|
|
|
|
$o211a_{1,2,4} input(A1,A2,B1,C1) output(X) X=OA211(A1,A2,B1,C1) ; |
|
|
|
|
$o221a_{1,2,4} input(A1,A2,B1,B2,C1) output(X) T=OA22(A1,A2,B1,B2) X=AND2(T,C1) ; |
|
|
|
|
$o31a_{1,2,4} input(A1,A2,A3,B1) output(X) T=OR3(A1,A2,A3) X=AND2(T,B1) ; |
|
|
|
|
$o311a_{1,2,4} input(A1,A2,A3,B1,C1) output(X) T=OR2(A1,A2) X=OA211(T,A3,B1,C1) ; |
|
|
|
|
$o32a_{1,2,4} input(A1,A2,A3,B1,B2) output(X) T=OR3(A1,A2,A3) X=OA21(B1,B2,T) ; |
|
|
|
|
$o41a_{1,2,4} input(A1,A2,A3,A4,B1) output(X) T=OR4(A1,A2,A3,A4) X=AND2(T,B1) ; |
|
|
|
|
$o2111a_{1,2,4} input(A1,A2,B1,C1,D1) output(X) T=OA211(A1,A2,B1,C1) X=AND2(T,D1) ; |
|
|
|
|
|
|
|
|
|
$o21ai_{0,1,2,4} input(A1,A2,B1) output(Y) Y=OAI21(A1,A2,B1) ; |
|
|
|
|
$o21bai_{1,2,4} input(A1,A2,B1_N) output(Y) BN=INV1(B1_N) Y=OAI21(A1,A2,BN) ; |
|
|
|
|
$o22ai_{1,2,4} input(A1,A2,B1,B2) output(Y) Y=OAI22(A1,A2,B1,B2) ; |
|
|
|
|
$o2bb2ai_{1,2,4} input(A1_N,A2_N,B1,B2) output(Y) T=NAND2(A1_N,A2_N) Y=OAI21(B1,B2,T) ; |
|
|
|
|
$o211ai_{1,2,4} input(A1,A2,B1,C1) output(Y) Y=OAI211(A1,A2,B1,C1) ; |
|
|
|
|
$o221ai_{1,2,4} input(A1,A2,B1,B2,C1) output(Y) T=OA22(A1,A2,B1,B2) Y=NAND2(T,C1) ; |
|
|
|
|
$o31ai_{1,2,4} input(A1,A2,A3,B1) output(Y) T=OR3(A1,A2,A3) Y=NAND2(T,B1) ; |
|
|
|
|
$o311ai_{0,1,2,4} input(A1,A2,A3,B1,C1) output(Y) T=OR2(A1,A2) Y=OAI211(T,A3,B1,C1) ; |
|
|
|
|
$o32ai_{1,2,4} input(A1,A2,A3,B1,B2) output(Y) T=OR3(A1,A2,A3) Y=OAI21(B1,B2,T) ; |
|
|
|
|
$o41ai_{1,2,4} input(A1,A2,A3,A4,B1) output(Y) T=OR4(A1,A2,A3,A4) Y=NAND2(T,B1) ; |
|
|
|
|
$o2111ai_{1,2,4} input(A1,A2,B1,C1,D1) output(Y) T=OA211(A1,A2,B1,C1) Y=NAND2(T,D1) ; |
|
|
|
|
|
|
|
|
|
$dfxtp_{1,2,4} input(CLK,D) output(Q) Q=DFF(D,CLK) ; |
|
|
|
|
$dfxbp_{1,2} input(CLK,D) output(Q,Q_N) Q=DFF(D,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$dfrtp_{1,2,4} input(CLK,D,RESET_B) output(Q) DR=AND2(D,RESET_B) Q=DFF(DR,CLK) ; |
|
|
|
|
$dfrbp_{1,2} input(CLK,D,RESET_B) output(Q,Q_N) DR=AND2(D,RESET_B) Q=DFF(DR,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$dfstp_{1,2,4} input(CLK,D,SET_B) output(Q) S=INV1(SET_B) DS=OR2(D,S) Q=DFF(DS,CLK) ; |
|
|
|
|
$dfsbp_{1,2} input(CLK,D,SET_B) output(Q,Q_N) S=INV1(SET_B) DS=OR2(D,S) Q=DFF(DS,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$dfbbp_1 input(CLK,D,SET_B,RESET_B) output(Q,Q_N) DR=AND2(D,RESET_B) S=INV1(SET_B) DRS=OR2(DR,S) Q=DFF(DRS,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$dfrtn_1 input(CLK_N,D,RESET_B) output(Q) CLKN=INV1(CLK_N) DR=AND2(D,RESET_B) Q=DFF(DR,CLKN) ; |
|
|
|
|
$dfbbn_{1,2} input(CLK_N,D,SET_B,RESET_B) output(Q,Q_N) CLKN=INV1(CLK_N) DR=AND2(D,RESET_B) S=INV1(SET_B) DRS=OR2(DR,S) Q=DFF(DRS,CLKN) Q_N=INV1(Q) ; |
|
|
|
|
|
|
|
|
|
$sdfxtp_{1,2,4} input(CLK,D,SCD,SCE) output(Q) DI=MUX21(D,SCD,SCE) Q=DFF(DI,CLK) ; |
|
|
|
|
$sdfxbp_{1,2} input(CLK,D,SCD,SCE) output(Q,Q_N) DI=MUX21(D,SCD,SCE) Q=DFF(DI,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$sdfrtp_{1,2,4} input(CLK,D,SCD,SCE,RESET_B) output(Q) DR=AND2(D,RESET_B) DI=MUX21(DR,SCD,SCE) Q=DFF(DI,CLK) ; |
|
|
|
|
$sdfrbp_{1,2} input(CLK,D,SCD,SCE,RESET_B) output(Q,Q_N) DR=AND2(D,RESET_B) DI=MUX21(DR,SCD,SCE) Q=DFF(DI,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$sdfstp_{1,2,4} input(CLK,D,SCD,SCE,SET_B) output(Q) S=INV1(SET_B) DS=OR2(D,S) DI=MUX21(DS,SCD,SCE) Q=DFF(DI,CLK) ; |
|
|
|
|
$sdfsbp_{1,2} input(CLK,D,SCD,SCE,SET_B) output(Q,Q_N) S=INV1(SET_B) DS=OR2(D,S) DI=MUX21(DS,SCD,SCE) Q=DFF(DI,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$sdfbbp_1 input(CLK,D,SCD,SCE,SET_B,RESET_B) output(Q,Q_N) DR=AND2(D,RESET_B) S=INV1(SET_B) DRS=OR2(DR,S) DI=MUX21(DRS,SCD,SCE) Q=DFF(DI,CLK) Q_N=INV1(Q) ; |
|
|
|
|
$sdfrtn_1 input(CLK_N,D,SCD,SCE,RESET_B) output(Q) CLKN=INV1(CLK_N) DR=AND2(D,RESET_B) DI=MUX21(DR,SCD,SCE) Q=DFF(DI,CLKN) ; |
|
|
|
|
$sdfbbn_{1,2} input(CLK_N,D,SCD,SCE,SET_B,RESET_B) output(Q,Q_N) CLKN=INV1(CLK_N) DR=AND2(D,RESET_B) S=INV1(SET_B) DRS=OR2(DR,S) DI=MUX21(DRS,SCD,SCE) Q=DFF(DI,CLKN) Q_N=INV1(Q) ; |
|
|
|
|
|
|
|
|
|
$edfxtp_1 input(CLK,D,DE) output(Q) GCK=AND2(CLK,DE) Q=DFF(D,GCK) ; |
|
|
|
|
$edfxbp_1 input(CLK,D,DE) output(Q,Q_N) GCK=AND2(CLK,DE) Q=DFF(D,GCK) Q_N=INV1(Q) ; |
|
|
|
|
$sedfxtp_{1,2,4} input(CLK,D,DE,SCD,SCE) output(Q) DI=MUX21(D,SCD,SCE) GCK=AND2(CLK,DE) Q=DFF(DI,GCK) ; |
|
|
|
|
$sedfxbp_{1,2} input(CLK,D,DE,SCD,SCE) output(Q,Q_N) DI=MUX21(D,SCD,SCE) GCK=AND2(CLK,DE) Q=DFF(DI,GCK) Q_N=INV1(Q) ; |
|
|
|
|
|
|
|
|
|
$dlxtp_1 input(D,GATE) output(Q) Q=LATCH(D,GATE) ; |
|
|
|
|
$dlxtn_{1,2,4} input(D,GATE_N) output(Q) GN=INV1(GATE_N) Q=LATCH(D,GN) ; |
|
|
|
|
$dlxbp_1 input(D,GATE) output(Q,Q_N) Q=LATCH(D,GATE) Q_N=INV1(Q) ; |
|
|
|
|
$dlxbn_{1,2} input(D,GATE_N) output(Q,Q_N) GN=INV1(GATE_N) Q=LATCH(D,GN) Q_N=INV1(Q) ; |
|
|
|
|
$dlrtp_{1,2,4} input(D,GATE,RESET_B) output(Q) DR=AND2(D,RESET_B) Q=LATCH(DR,GATE) ; |
|
|
|
|
$dlrtn_{1,2,4} input(D,GATE_N,RESET_B) output(Q) GN=INV1(GATE_N) DR=AND2(D,RESET_B) Q=LATCH(DR,GN) ; |
|
|
|
|
$dlrbp_{1,2} input(D,GATE,RESET_B) output(Q,Q_N) DR=AND2(D,RESET_B) Q=LATCH(DR,GATE) Q_N=INV1(Q) ; |
|
|
|
|
$dlrbn_{1,2} input(D,GATE_N,RESET_B) output(Q,Q_N) GN=INV1(GATE_N) DR=AND2(D,RESET_B) Q=LATCH(DR,GN) Q_N=INV1(Q) ; |
|
|
|
|
|
|
|
|
|
$dlclkp_{1,2,4} input(CLK,GATE) output(GCLK) GCLK=AND2(CLK,GATE) ; |
|
|
|
|
$sdlclkp_{1,2,4} input(CLK,GATE,SCE) output(GCLK) G=OR2(GATE,SCE) GCLK=AND2(CLK,G) ; |
|
|
|
|
|
|
|
|
|
$ebufn_{1,2,4,8} input(A,TE_B) output(Z) TE=INV1(TE_B) Z=AND2(A,TE) ; |
|
|
|
|
$einvn_{0,1,2,4,8} input(A,TE_B) output(Z) TE=INV1(TE_B) ZI=INV1(A) Z=AND2(ZI,TE) ; |
|
|
|
|
$einvp_{1,2,4,8} input(A,TE) output(Z) ZI=INV1(A) Z=AND2(ZI,TE) ; |
|
|
|
|
|
|
|
|
|
$lpflow_inputiso0n_1 input(A,SLEEP_B) output(X) X=AND2(A,SLEEP_B) ; |
|
|
|
|
$lpflow_inputiso0p_1 input(A,SLEEP) output(X) SB=INV1(SLEEP) X=AND2(A,SB) ; |
|
|
|
|
$lpflow_inputiso1n_1 input(A,SLEEP_B) output(X) X=AND2(A,SLEEP_B) ; |
|
|
|
|
$lpflow_inputiso1p_1 input(A,SLEEP) output(X) SB=INV1(SLEEP) X=AND2(A,SB) ; |
|
|
|
|
$lpflow_isobufsrc_{1,2,4,8,16} input(A,SLEEP) output(X) AI=INV1(A) X=OR2(AI,SLEEP) ; |
|
|
|
|
$lpflow_isobufsrckapwr_16 input(A,SLEEP) output(X) AI=INV1(A) X=OR2(AI,SLEEP) ; |
|
|
|
|
$lpflow_inputisolatch_1 input(D,SLEEP_B) output(Q) Q=LATCH(D,SLEEP_B) ; |
|
|
|
|
""".replace('$','sky130_fd_sc_hd__')) |
|
|
|
|
"""SkyWater 130nm High Density Digital Standard Cells (skywater-pdk-libs-sky130_fd_sc_hd). |
|
|
|
|
""" |