| # SPDX-License-Identifier: LGPL-2.1-or-later |
| from pdkmaster.technology import geometry as _geo |
| |
| |
| __all__ = ["boundary", "toppins"] |
| |
| |
| # The metal3 pins for the IOs |
| boundary = _geo.Rect(left=0.0, bottom=0.0, right=2920.0, top=3520.0) |
| toppins = { |
| "io_in_3v3[0]": _geo.Rect(left=2917.60, bottom=7.72, right=2924.00, top=8.28), |
| "io_in[0]": _geo.Rect(left=2917.60, bottom=13.63, right=2924.00, top=14.19), |
| "io_out[0]": _geo.Rect(left=2917.60, bottom=19.54, right=2924.00, top=20.10), |
| "io_oeb[0]": _geo.Rect(left=2917.60, bottom=25.45, right=2924.00, top=26.01), |
| "io_in_3v3[1]": _geo.Rect(left=2917.60, bottom=31.36, right=2924.00, top=31.92), |
| "io_in[1]": _geo.Rect(left=2917.60, bottom=37.27, right=2924.00, top=37.83), |
| "io_out[1]": _geo.Rect(left=2917.60, bottom=43.18, right=2924.00, top=43.74), |
| "io_oeb[1]": _geo.Rect(left=2917.60, bottom=49.09, right=2924.00, top=49.65), |
| "io_in_3v3[2]": _geo.Rect(left=2917.60, bottom=55.00, right=2924.00, top=55.56), |
| "io_in[2]": _geo.Rect(left=2917.60, bottom=60.91, right=2924.00, top=61.47), |
| "io_out[2]": _geo.Rect(left=2917.60, bottom=66.82, right=2924.00, top=67.38), |
| "io_oeb[2]": _geo.Rect(left=2917.60, bottom=72.73, right=2924.00, top=73.29), |
| "io_in_3v3[3]": _geo.Rect(left=2917.60, bottom=78.64, right=2924.00, top=79.20), |
| "io_in[3]": _geo.Rect(left=2917.60, bottom=84.55, right=2924.00, top=85.11), |
| "io_out[3]": _geo.Rect(left=2917.60, bottom=90.46, right=2924.00, top=91.02), |
| "io_oeb[3]": _geo.Rect(left=2917.60, bottom=96.37, right=2924.00, top=96.93), |
| "io_in_3v3[4]": _geo.Rect(left=2917.60, bottom=102.28, right=2924.00, top=102.84), |
| "io_in[4]": _geo.Rect(left=2917.60, bottom=108.19, right=2924.00, top=108.75), |
| "io_out[4]": _geo.Rect(left=2917.60, bottom=114.10, right=2924.00, top=114.66), |
| "io_oeb[4]": _geo.Rect(left=2917.60, bottom=120.01, right=2924.00, top=120.57), |
| "io_in_3v3[5]": _geo.Rect(left=2917.60, bottom=234.57, right=2924.00, top=235.13), |
| "io_in[5]": _geo.Rect(left=2917.60, bottom=240.48, right=2924.00, top=241.04), |
| "io_out[5]": _geo.Rect(left=2917.60, bottom=246.39, right=2924.00, top=246.95), |
| "io_oeb[5]": _geo.Rect(left=2917.60, bottom=252.30, right=2924.00, top=252.86), |
| "io_in_3v3[6]": _geo.Rect(left=2917.60, bottom=457.86, right=2924.00, top=458.42), |
| "io_in[6]": _geo.Rect(left=2917.60, bottom=463.77, right=2924.00, top=464.33), |
| "io_out[6]": _geo.Rect(left=2917.60, bottom=469.68, right=2924.00, top=470.24), |
| "io_oeb[6]": _geo.Rect(left=2917.60, bottom=475.59, right=2924.00, top=476.15), |
| "gpio_analog[0]": _geo.Rect(left=2917.60, bottom=1346.15, right=2924.00, top=1346.71), |
| "gpio_noesd[0]": _geo.Rect(left=2917.60, bottom=1352.06, right=2924.00, top=1352.62), |
| "io_in_3v3[7]": _geo.Rect(left=2917.60, bottom=1357.97, right=2924.00, top=1358.53), |
| "io_in[7]": _geo.Rect(left=2917.60, bottom=1363.88, right=2924.00, top=1364.44), |
| "io_out[7]": _geo.Rect(left=2917.60, bottom=1369.79, right=2924.00, top=1370.35), |
| "io_oeb[7]": _geo.Rect(left=2917.60, bottom=1375.70, right=2924.00, top=1376.26), |
| "gpio_analog[1]": _geo.Rect(left=2917.60, bottom=1568.26, right=2924.00, top=1568.82), |
| "gpio_noesd[1]": _geo.Rect(left=2917.60, bottom=1574.17, right=2924.00, top=1574.73), |
| "io_in_3v3[8]": _geo.Rect(left=2917.60, bottom=1580.08, right=2924.00, top=1580.64), |
| "io_in[8]": _geo.Rect(left=2917.60, bottom=1585.99, right=2924.00, top=1586.55), |
| "io_out[8]": _geo.Rect(left=2917.60, bottom=1591.90, right=2924.00, top=1592.46), |
| "io_oeb[8]": _geo.Rect(left=2917.60, bottom=1597.81, right=2924.00, top=1598.37), |
| "gpio_analog[2]": _geo.Rect(left=2917.60, bottom=1794.37, right=2924.00, top=1794.93), |
| "gpio_noesd[2]": _geo.Rect(left=2917.60, bottom=1800.28, right=2924.00, top=1800.84), |
| "io_in_3v3[9]": _geo.Rect(left=2917.60, bottom=1806.19, right=2924.00, top=1806.75), |
| "io_in[9]": _geo.Rect(left=2917.60, bottom=1812.10, right=2924.00, top=1812.66), |
| "io_out[9]": _geo.Rect(left=2917.60, bottom=1818.01, right=2924.00, top=1818.57), |
| "io_oeb[9]": _geo.Rect(left=2917.60, bottom=1823.92, right=2924.00, top=1824.48), |
| "gpio_analog[3]": _geo.Rect(left=2917.60, bottom=2026.48, right=2924.00, top=2027.04), |
| "gpio_noesd[3]": _geo.Rect(left=2917.60, bottom=2032.39, right=2924.00, top=2032.95), |
| "io_in_3v3[10]": _geo.Rect(left=2917.60, bottom=2038.30, right=2924.00, top=2039.86), |
| "io_in[10]": _geo.Rect(left=2917.60, bottom=2044.21, right=2924.00, top=2044.77), |
| "io_out[10]": _geo.Rect(left=2917.60, bottom=2050.12, right=2924.00, top=2050.68), |
| "io_oeb[10]": _geo.Rect(left=2917.60, bottom=2056.03, right=2924.00, top=2056.59), |
| "gpio_analog[4]": _geo.Rect(left=2917.60, bottom=2248.59, right=2924.00, top=2249.15), |
| "gpio_noesd[4]": _geo.Rect(left=2917.60, bottom=2254.50, right=2924.00, top=2255.06), |
| "io_in_3v3[11]": _geo.Rect(left=2917.60, bottom=2260.41, right=2924.00, top=2260.97), |
| "io_in[11]": _geo.Rect(left=2917.60, bottom=2266.32, right=2924.00, top=2266.88), |
| "io_out[11]": _geo.Rect(left=2917.60, bottom=2272.23, right=2924.00, top=2272.79), |
| "io_oeb[11]": _geo.Rect(left=2917.60, bottom=2278.14, right=2924.00, top=2278.70), |
| "gpio_analog[5]": _geo.Rect(left=2917.60, bottom=2470.70, right=2924.00, top=2471.26), |
| "gpio_noesd[5]": _geo.Rect(left=2917.60, bottom=2476.61, right=2924.00, top=2477.17), |
| "io_in_3v3[12]": _geo.Rect(left=2917.60, bottom=2482.52, right=2924.00, top=2483.08), |
| "io_in[12]": _geo.Rect(left=2917.60, bottom=2488.43, right=2924.00, top=2488.99), |
| "io_out[12]": _geo.Rect(left=2917.60, bottom=2494.34, right=2924.00, top=2494.90), |
| "io_oeb[12]": _geo.Rect(left=2917.60, bottom=2500.25, right=2924.00, top=2500.81), |
| "gpio_analog[6]": _geo.Rect(left=2917.60, bottom=2917.81, right=2924.00, top=2918.37), |
| "gpio_noesd[6]": _geo.Rect(left=2917.60, bottom=2923.72, right=2924.00, top=2924.28), |
| "io_in_3v3[13]": _geo.Rect(left=2917.60, bottom=2929.63, right=2924.00, top=2930.19), |
| "io_in[13]": _geo.Rect(left=2917.60, bottom=2935.54, right=2924.00, top=2936.10), |
| "io_out[13]": _geo.Rect(left=2917.60, bottom=2941.45, right=2924.00, top=2942.01), |
| "io_oeb[13]": _geo.Rect(left=2917.60, bottom=2947.36, right=2924.00, top=2947.92), |
| "io_analog[0]": _geo.Rect(left=2911.50, bottom=3389.92, right=2924.00, top=3414.92), |
| "io_analog[1]": _geo.Rect(left=2832.97, bottom=3511.50, right=2857.97, top=3524.00), |
| "io_analog[2]": _geo.Rect(left=2326.97, bottom=3511.50, right=2351.97, top=3524.00), |
| "io_analog[3]": _geo.Rect(left=2066.97, bottom=3511.50, right=2091.97, top=3524.00), |
| "io_analog[4]": _geo.Rect(left=1594.97, bottom=3511.50, right=1619.97, top=3524.00), |
| "io_analog[5]": _geo.Rect(left=1086.47, bottom=3511.50, right=1111.47, top=3524.00), |
| "io_analog[6]": _geo.Rect(left=827.97, bottom=3511.50, right=852.97, top=3524.00), |
| "io_analog[7]": _geo.Rect(left=600.97, bottom=3511.50, right=625.97, top=3524.00), |
| "io_analog[8]": _geo.Rect(left=340.97, bottom=3511.50, right=365.97, top=3524.00), |
| "io_analog[9]": _geo.Rect(left=80.97, bottom=3511.50, right=105.97, top=3524.00), |
| "io_analog[10]": _geo.Rect(left=-4.00, bottom=3401.21, right=8.50, top=3426.21), |
| "io_oeb[14]": _geo.Rect(left=-4.00, bottom=2528.10, right=2.40, top=2528.66), |
| "io_out[14]": _geo.Rect(left=-4.00, bottom=2534.01, right=2.40, top=2534.57), |
| "io_in[14]": _geo.Rect(left=-4.00, bottom=2539.92, right=2.40, top=2540.48), |
| "io_in_3v3[14]": _geo.Rect(left=-4.00, bottom=2545.83, right=2.40, top=2546.39), |
| "gpio_noesd[7]": _geo.Rect(left=-4.00, bottom=2551.74, right=2.40, top=2552.30), |
| "gpio_analog[7]": _geo.Rect(left=-4.00, bottom=2557.65, right=2.40, top=2558.21), |
| "io_oeb[15]": _geo.Rect(left=-4.00, bottom=2311.99, right=2.40, top=2312.55), |
| "io_out[15]": _geo.Rect(left=-4.00, bottom=2317.90, right=2.40, top=2318.46), |
| "io_in[15]": _geo.Rect(left=-4.00, bottom=2323.81, right=2.40, top=2324.37), |
| "io_in_3v3[15]": _geo.Rect(left=-4.00, bottom=2329.72, right=2.40, top=2330.28), |
| "gpio_noesd[8]": _geo.Rect(left=-4.00, bottom=2335.63, right=2.40, top=2336.19), |
| "gpio_analog[8]": _geo.Rect(left=-4.00, bottom=2341.54, right=2.40, top=2342.10), |
| "io_oeb[16]": _geo.Rect(left=-4.00, bottom=2095.88, right=2.40, top=2096.44), |
| "io_out[16]": _geo.Rect(left=-4.00, bottom=2101.79, right=2.40, top=2102.35), |
| "io_in[16]": _geo.Rect(left=-4.00, bottom=2107.70, right=2.40, top=2108.26), |
| "io_in_3v3[16]": _geo.Rect(left=-4.00, bottom=2113.61, right=2.40, top=2114.17), |
| "gpio_noesd[9]": _geo.Rect(left=-4.00, bottom=2119.52, right=2.40, top=2120.08), |
| "gpio_analog[9]": _geo.Rect(left=-4.00, bottom=2125.43, right=2.40, top=2125.99), |
| "io_oeb[17]": _geo.Rect(left=-4.00, bottom=1879.77, right=2.40, top=1880.33), |
| "io_out[17]": _geo.Rect(left=-4.00, bottom=1885.68, right=2.40, top=1886.24), |
| "io_in[17]": _geo.Rect(left=-4.00, bottom=1891.59, right=2.40, top=1892.15), |
| "io_in_3v3[17]": _geo.Rect(left=-4.00, bottom=1897.50, right=2.40, top=1898.06), |
| "gpio_noesd[10]": _geo.Rect(left=-4.00, bottom=1903.41, right=2.40, top=1903.97), |
| "gpio_analog[10]": _geo.Rect(left=-4.00, bottom=1909.32, right=2.40, top=1909.88), |
| "io_oeb[18]": _geo.Rect(left=-4.00, bottom=1663.66, right=2.40, top=1664.22), |
| "io_out[18]": _geo.Rect(left=-4.00, bottom=1669.57, right=2.40, top=1670.13), |
| "io_in[18]": _geo.Rect(left=-4.00, bottom=1675.48, right=2.40, top=1676.04), |
| "io_in_3v3[18]": _geo.Rect(left=-4.00, bottom=1681.39, right=2.40, top=1681.95), |
| "gpio_noesd[11]": _geo.Rect(left=-4.00, bottom=1687.30, right=2.40, top=1687.86), |
| "gpio_analog[11]": _geo.Rect(left=-4.00, bottom=1693.21, right=2.40, top=1693.77), |
| "io_oeb[19]": _geo.Rect(left=-4.00, bottom=1447.55, right=2.40, top=1448.11), |
| "io_out[19]": _geo.Rect(left=-4.00, bottom=1453.46, right=2.40, top=1454.02), |
| "io_in[19]": _geo.Rect(left=-4.00, bottom=1459.37, right=2.40, top=1459.93), |
| "io_in_3v3[19]": _geo.Rect(left=-4.00, bottom=1465.28, right=2.40, top=1465.84), |
| "gpio_noesd[12]": _geo.Rect(left=-4.00, bottom=1471.19, right=2.40, top=1471.75), |
| "gpio_analog[12]": _geo.Rect(left=-4.00, bottom=1477.10, right=2.40, top=1477.66), |
| "io_oeb[20]": _geo.Rect(left=-4.00, bottom=1232.44, right=2.40, top=1233.00), |
| "io_out[20]": _geo.Rect(left=-4.00, bottom=1238.35, right=2.40, top=1238.91), |
| "io_in[20]": _geo.Rect(left=-4.00, bottom=1244.26, right=2.40, top=1244.82), |
| "io_in_3v3[20]": _geo.Rect(left=-4.00, bottom=1250.17, right=2.40, top=1250.73), |
| "gpio_noesd[13]": _geo.Rect(left=-4.00, bottom=1256.08, right=2.40, top=1256.64), |
| "gpio_analog[13]": _geo.Rect(left=-4.00, bottom=1261.99, right=2.40, top=1262.55), |
| "io_oeb[21]": _geo.Rect(left=-4.00, bottom=594.33, right=2.40, top=594.89), |
| "io_out[21]": _geo.Rect(left=-4.00, bottom=600.24, right=2.40, top=600.80), |
| "io_in[21]": _geo.Rect(left=-4.00, bottom=606.15, right=2.40, top=606.71), |
| "io_in_3v3[21]": _geo.Rect(left=-4.00, bottom=612.06, right=2.40, top=612.62), |
| "gpio_noesd[14]": _geo.Rect(left=-4.00, bottom=617.97, right=2.40, top=618.53), |
| "gpio_analog[14]": _geo.Rect(left=-4.00, bottom=623.88, right=2.40, top=624.44), |
| "io_oeb[22]": _geo.Rect(left=-4.00, bottom=378.22, right=2.40, top=378.78), |
| "io_out[22]": _geo.Rect(left=-4.00, bottom=384.13, right=2.40, top=384.69), |
| "io_in[22]": _geo.Rect(left=-4.00, bottom=390.04, right=2.40, top=390.60), |
| "io_in_3v3[22]": _geo.Rect(left=-4.00, bottom=395.95, right=2.40, top=396.51), |
| "gpio_noesd[15]": _geo.Rect(left=-4.00, bottom=401.86, right=2.40, top=402.42), |
| "gpio_analog[15]": _geo.Rect(left=-4.00, bottom=407.77, right=2.40, top=408.33), |
| "io_oeb[23]": _geo.Rect(left=-4.00, bottom=162.11, right=2.40, top=162.67), |
| "io_out[23]": _geo.Rect(left=-4.00, bottom=168.02, right=2.40, top=168.58), |
| "io_in[23]": _geo.Rect(left=-4.00, bottom=173.93, right=2.40, top=174.49), |
| "io_in_3v3[23]": _geo.Rect(left=-4.00, bottom=179.84, right=2.40, top=180.40), |
| "gpio_noesd[16]": _geo.Rect(left=-4.00, bottom=185.75, right=2.40, top=186.31), |
| "gpio_analog[16]": _geo.Rect(left=-4.00, bottom=191.66, right=2.40, top=192.22), |
| "io_oeb[24]": _geo.Rect(left=-4.00, bottom=55.00, right=2.40, top=55.56), |
| "io_out[24]": _geo.Rect(left=-4.00, bottom=60.91, right=2.40, top=61.47), |
| "io_in[24]": _geo.Rect(left=-4.00, bottom=66.82, right=2.40, top=67.38), |
| "io_in_3v3[24]": _geo.Rect(left=-4.00, bottom=72.73, right=2.40, top=73.29), |
| "gpio_noesd[17]": _geo.Rect(left=-4.00, bottom=78.64, right=2.40, top=79.20), |
| "gpio_analog[17]": _geo.Rect(left=-4.00, bottom=84.55, right=2.40, top=85.11), |
| "io_oeb[25]": _geo.Rect(left=-4.00, bottom=31.36, right=2.40, top=31.92), |
| "io_out[25]": _geo.Rect(left=-4.00, bottom=37.27, right=2.40, top=37.83), |
| "io_in[25]": _geo.Rect(left=-4.00, bottom=43.18, right=2.40, top=43.74), |
| "io_in_3v3[25]": _geo.Rect(left=-4.00, bottom=49.09, right=2.40, top=49.65), |
| "io_oeb[26]": _geo.Rect(left=-4.00, bottom=7.72, right=2.40, top=8.28), |
| "io_out[26]": _geo.Rect(left=-4.00, bottom=13.63, right=2.40, top=14.19), |
| "io_in[26]": _geo.Rect(left=-4.00, bottom=19.54, right=2.40, top=20.10), |
| "io_in_3v3[26]": _geo.Rect(left=-4.00, bottom=25.45, right=2.40, top=26.01), |
| # TODO: vss*, vdd*, wb_*, la_data*, user_clock2, user_irq |
| # "vdda2": _geo.Rect(left=-4.00, bottom=1074.44, right=8.30, top=1098.44), |
| # "vdda2": _geo.Rect(left=-4.00, bottom=1024.44, right=8.30, top=1048.44), |
| # "vssd2": _geo.Rect(left=-4.00, bottom=864.44, right=8.30, top=888.44), |
| # "vssd2": _geo.Rect(left=-4.00, bottom=814.44, right=8.30, top=838.44), |
| } |