blob: 8b06584927e6cd683545b502b8de235a9ed732ff [file] [log] [blame]
# 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*, ioclamp*, wb(s)_*, la_data*, user_clock2, user_irq
"vccd1": _geo.Rect(left=2911.70, bottom=3148.92, right=2924.00, top=3172.92),
"vssd1": _geo.Rect(left=2911.70, bottom=957.15, right=2924.00, top=981.15),
# "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),
}