diff --git a/testdata/algo/l2n_writer_au_p.txt b/testdata/algo/l2n_writer_au_p.txt new file mode 100644 index 000000000..8a847e9ec --- /dev/null +++ b/testdata/algo/l2n_writer_au_p.txt @@ -0,0 +1,529 @@ +#%l2n-klayout +W(RINGO) +U(0.001) +L(poly '3/0') +L(poly_lbl '3/1') +L(diff_cont '4/0') +L(poly_cont '5/0') +L(metal1 '6/0') +L(metal1_lbl '6/1') +L(via1 '7/0') +L(metal2 '8/0') +L(metal2_lbl '8/1') +L(psd) +L(nsd) +C(poly poly poly_lbl poly_cont) +C(poly_lbl poly) +C(diff_cont diff_cont metal1 psd nsd) +C(poly_cont poly poly_cont metal1) +C(metal1 diff_cont poly_cont metal1 metal1_lbl via1) +C(metal1_lbl metal1) +C(via1 metal1 via1 metal2) +C(metal2 via1 metal2 metal2_lbl) +C(metal2_lbl metal2) +C(psd diff_cont psd) +C(nsd diff_cont nsd) +D(D$PMOS PMOS + T(S + R(psd (-650 -475) (525 950)) + ) + T(G + R(poly (-125 -475) (250 950)) + ) + T(D + R(psd (125 -475) (550 950)) + ) +) +D(D$PMOS$1 PMOS + T(S + R(psd (-675 -475) (550 950)) + ) + T(G + R(poly (-125 -475) (250 950)) + ) + T(D + R(psd (125 -475) (525 950)) + ) +) +D(D$NMOS NMOS + T(S + R(nsd (-650 -475) (525 950)) + ) + T(G + R(poly (-125 -475) (250 950)) + ) + T(D + R(nsd (125 -475) (550 950)) + ) +) +D(D$NMOS$1 NMOS + T(S + R(nsd (-675 -475) (550 950)) + ) + T(G + R(poly (-125 -475) (250 950)) + ) + T(D + R(nsd (125 -475) (525 950)) + ) +) +X(INV2 + R((-1700 -800) (3100 4600)) + N(1 I(IN) + R(poly (-525 -250) (250 2500)) + R(poly (-1425 -630) (1300 360)) + R(poly (-125 -2780) (250 1600)) + R(poly (-250 1200) (250 1600)) + R(poly_lbl (-526 -1801) (2 2)) + R(poly_cont (-831 -111) (220 220)) + ) + N(2 + R(poly (275 -250) (250 2500)) + R(poly (-305 -1430) (360 360)) + R(poly (-305 820) (250 1600)) + R(poly (-250 -4400) (250 1600)) + R(diff_cont (-1435 1690) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(poly_cont (980 580) (220 220)) + R(metal1 (-1310 -290) (1380 360)) + R(metal1 (-1560 -1600) (360 2840)) + R(metal1 (-360 0) (360 760)) + R(metal1 (-360 -3560) (360 760)) + R(psd (-430 1945) (525 950)) + R(nsd (-525 -3750) (525 950)) + ) + N(3 I(OUT) + R(diff_cont (690 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + Q(metal1 (-110 110) (0 360) (140 0) (0 1240) (-320 0) (0 800) (360 0) (0 -440) (320 0) (0 -1960)) + R(metal1 (-680 2400) (360 760)) + R(metal1 (-360 -3560) (360 760)) + R(metal1_lbl (-181 1419) (2 2)) + R(psd (-276 524) (525 950)) + R(nsd (-525 -3750) (525 950)) + ) + N(4 + R(diff_cont (-110 -310) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(metal1 (-290 -290) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(via1 (-305 -705) (250 250)) + R(via1 (-250 150) (250 250)) + R(metal2 (-1525 -775) (2800 900)) + R(nsd (-1675 -925) (550 950)) + ) + N(5 + R(diff_cont (-110 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(metal1 (-290 -290) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(via1 (-305 -705) (250 250)) + R(via1 (-250 150) (250 250)) + R(metal2 (-1525 -775) (2800 900)) + R(psd (-1675 -925) (550 950)) + ) + P(1 I(IN)) + P(2) + P(3 I(OUT)) + P(4) + P(5) + D(1 D$PMOS + Y(-400 2800) + F(#17 #242) + F('a_"non_quoted"_string' '2s') + F('a_float' ##20.5) + E(L 0.25) + E(W 0.95) + E(AS 0.49875) + E(AD 0.26125) + E(PS 2.95) + E(PD 1.5) + T(S 2) + T(G 1) + T(D 5) + ) + D(2 D$PMOS$1 + Y(400 2800) + E(L 0.25) + E(W 0.95) + E(AS 0.26125) + E(AD 0.49875) + E(PS 1.5) + E(PD 2.95) + T(S 5) + T(G 2) + T(D 3) + ) + D(3 D$NMOS + Y(-400 0) + E(L 0.25) + E(W 0.95) + E(AS 0.49875) + E(AD 0.26125) + E(PS 2.95) + E(PD 1.5) + T(S 2) + T(G 1) + T(D 4) + ) + D(4 D$NMOS$1 + Y(400 0) + E(L 0.25) + E(W 0.95) + E(AS 0.26125) + E(AD 0.49875) + E(PS 1.5) + E(PD 2.95) + T(S 4) + T(G 2) + T(D 3) + ) +) +X(RINGO + R((-1720 -800) (26880 4600)) + F(#17 #42) + F('a_"non_quoted"_string' 's') + F('a_float' ##0.5) + N(1 I(FB) + F(#17 #142) + F('a_"non_quoted"_string' '1s') + F('a_float' ##10.5) + R(diff_cont (22850 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(metal1 (-24770 1310) (360 360)) + R(via1 (-305 -305) (250 250)) + R(via1 (24230 -250) (250 250)) + R(metal2 (-24805 -325) (24880 400)) + R(metal2_lbl (-23161 -201) (2 2)) + ) + N(2 I(OSC) + R(diff_cont (24450 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(via1 (-235 1765) (250 250)) + R(metal2 (-325 -325) (400 400)) + R(metal2_lbl (-201 -201) (2 2)) + ) + N(3 I(VSS) + R(diff_cont (2530 -310) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-2860 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (5060 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(metal1 (-21410 -290) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (-3000 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (4920 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal2_lbl (-23941 -381) (2 2)) + ) + N(4 I(VDD) + R(diff_cont (2530 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-2860 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (5060 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (2420 -220) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -220) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(metal1 (-21410 -290) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (-3000 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (4920 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal1 (2280 -760) (360 760)) + R(metal1 (-360 -760) (360 760)) + R(metal2_lbl (-23941 -381) (2 2)) + ) + N(5 + R(diff_cont (20210 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(6 + R(diff_cont (17570 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(7 + R(diff_cont (14930 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(8 + R(diff_cont (12290 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(9 + R(diff_cont (9650 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(10 + R(diff_cont (7010 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(11 + R(diff_cont (4370 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(12 + R(diff_cont (1730 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(13 + R(diff_cont (-910 2490) (220 220)) + R(diff_cont (-220 180) (220 220)) + R(diff_cont (-220 -3420) (220 220)) + R(diff_cont (-220 180) (220 220)) + ) + N(14 + R(diff_cont (690 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(15 + R(diff_cont (21810 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(16 + R(diff_cont (19170 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(17 + R(diff_cont (16530 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(18 + R(diff_cont (13890 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(19 + R(diff_cont (11250 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(20 + R(diff_cont (8610 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(21 + R(diff_cont (5970 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + N(22 + R(diff_cont (3330 2890) (220 220)) + R(diff_cont (-220 -620) (220 220)) + R(diff_cont (-220 -2620) (220 220)) + R(diff_cont (-220 -620) (220 220)) + ) + P(1 I(FB)) + P(2 I(OSC)) + P(3 I(VSS)) + P(4 I(VDD)) + X(1 INV2 Y(23760 0) + F(#17 #342) + F('a_"non_quoted"_string' '3s') + F('a_float' ##30.5) + P(0 15) + P(1 1) + P(2 2) + P(3 3) + P(4 4) + ) + X(2 INV2 Y(0 0) + P(0 1) + P(1 13) + P(2 14) + P(3 3) + P(4 4) + ) + X(3 INV2 Y(2640 0) + P(0 14) + P(1 12) + P(2 22) + P(3 3) + P(4 4) + ) + X(4 INV2 Y(5280 0) + P(0 22) + P(1 11) + P(2 21) + P(3 3) + P(4 4) + ) + X(5 INV2 Y(7920 0) + P(0 21) + P(1 10) + P(2 20) + P(3 3) + P(4 4) + ) + X(6 INV2 Y(10560 0) + P(0 20) + P(1 9) + P(2 19) + P(3 3) + P(4 4) + ) + X(7 INV2 Y(13200 0) + P(0 19) + P(1 8) + P(2 18) + P(3 3) + P(4 4) + ) + X(8 INV2 Y(15840 0) + P(0 18) + P(1 7) + P(2 17) + P(3 3) + P(4 4) + ) + X(9 INV2 Y(18480 0) + P(0 17) + P(1 6) + P(2 16) + P(3 3) + P(4 4) + ) + X(10 INV2 Y(21120 0) + P(0 16) + P(1 5) + P(2 15) + P(3 3) + P(4 4) + ) +)