"""AMD Versal Premium VP1002, NFVI1369 package — GENERATED MODULE.
Generated by ``python -m jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.tools.generate_pinout``. DO NOT EDIT BY HAND —
regenerate from the AMD package pinout file instead.
Ground truth
* ``xcvp1002nfvi1369pkg.txt`` (AMD package device pinout file,
sha256 ``f02a21966623596a...`` of the newline-
normalized text), downloaded from
https://www.amd.com/en/developer/resources/adaptive-socs-and-fpgas/package-pinout-files/versal-package-device-pinout-files.html
File header identification lines:
Device : xcvp1002nfvi1369
Date : Mon Oct 16 17:52:52 2023
* AM013 "Package Dimensions for NFVI1369" (mechanical) and
"BGA Package Design Rules" (PCB land rules), via
``.landpattern`` -- cited by caption because AM013
renumbers its figures between editions; see
``landpattern.AM013_MECHANICAL_FIGURE`` for the edition
and page each value was read from:
https://docs.amd.com/r/en-US/am013-versal-pkg-pinout
Structure
1369 balls on a full 37x37 grid, 0.92 mm pitch.
Every ball has exactly one ``Port``: unique pin names are
scalar attributes; repeated rail names (GND, VCCINT, VCCO_*,
NC, ...) are indexed lists ordered by (row, col). Ball
coordinates are zero-indexed grid positions; the ball
reference strings ("A1") exist only in the generator.
The ordering-code suffix (speed/temperature grade) is omitted from
``mpn``; see DS959 for full ordering information.
"""
from collections.abc import Iterator
import jitx
from jitx.net import Port
from .bundles import GTMQuadPins
from .landpattern import NFVI1369, make_landpattern
from .symbols import SymbolPartition, build_pad_mapping, build_symbols
PINOUT_SHA256 = "f02a21966623596a7b38a5e658a2a602053e2be5342831aa6f2acda82a856b04"
TOTAL_BALLS = 1369
[docs]
class XCVP1002(jitx.Component):
"""AMD Versal Premium VP1002 FPGA in the NFVI1369 package."""
mpn = "XCVP1002-NFVI1369"
manufacturer = "AMD"
datasheet = "https://docs.amd.com/r/en-US/am013-versal-pkg-pinout"
reference_designator_prefix = "U"
# --- Bank 103 ---
GTY_REFCLKN0_103 = Port()
GTY_REFCLKN1_103 = Port()
GTY_REFCLKP0_103 = Port()
GTY_REFCLKP1_103 = Port()
GTY_RXN0_103 = Port()
GTY_RXN1_103 = Port()
GTY_RXN2_103 = Port()
GTY_RXN3_103 = Port()
GTY_RXP0_103 = Port()
GTY_RXP1_103 = Port()
GTY_RXP2_103 = Port()
GTY_RXP3_103 = Port()
GTY_TXN0_103 = Port()
GTY_TXN1_103 = Port()
GTY_TXN2_103 = Port()
GTY_TXN3_103 = Port()
GTY_TXP0_103 = Port()
GTY_TXP1_103 = Port()
GTY_TXP2_103 = Port()
GTY_TXP3_103 = Port()
# --- Bank 105 ---
GTY_AVTTRCAL_RS = Port()
GTY_REFCLKN0_105 = Port()
GTY_REFCLKN1_105 = Port()
GTY_REFCLKP0_105 = Port()
GTY_REFCLKP1_105 = Port()
GTY_RREF_RS = Port()
GTY_RXN0_105 = Port()
GTY_RXN1_105 = Port()
GTY_RXN2_105 = Port()
GTY_RXN3_105 = Port()
GTY_RXP0_105 = Port()
GTY_RXP1_105 = Port()
GTY_RXP2_105 = Port()
GTY_RXP3_105 = Port()
GTY_TXN0_105 = Port()
GTY_TXN1_105 = Port()
GTY_TXN2_105 = Port()
GTY_TXN3_105 = Port()
GTY_TXP0_105 = Port()
GTY_TXP1_105 = Port()
GTY_TXP2_105 = Port()
GTY_TXP3_105 = Port()
# --- Bank 109 ---
GTM_AVTTRCAL_RN = Port()
GTM_RREF_RN = Port()
# --- Bank 202 ---
GTM_REFCLKN0_202 = Port()
GTM_REFCLKN1_202 = Port()
GTM_REFCLKP0_202 = Port()
GTM_REFCLKP1_202 = Port()
GTM_RXN0_202 = Port()
GTM_RXN1_202 = Port()
GTM_RXN2_202 = Port()
GTM_RXN3_202 = Port()
GTM_RXP0_202 = Port()
GTM_RXP1_202 = Port()
GTM_RXP2_202 = Port()
GTM_RXP3_202 = Port()
GTM_TXN0_202 = Port()
GTM_TXN1_202 = Port()
GTM_TXN2_202 = Port()
GTM_TXN3_202 = Port()
GTM_TXP0_202 = Port()
GTM_TXP1_202 = Port()
GTM_TXP2_202 = Port()
GTM_TXP3_202 = Port()
# --- Bank 203 ---
GTM_AVTTRCAL_L = Port()
GTM_REFCLKN0_203 = Port()
GTM_REFCLKN1_203 = Port()
GTM_REFCLKP0_203 = Port()
GTM_REFCLKP1_203 = Port()
GTM_RREF_L = Port()
GTM_RXN0_203 = Port()
GTM_RXN1_203 = Port()
GTM_RXN2_203 = Port()
GTM_RXN3_203 = Port()
GTM_RXP0_203 = Port()
GTM_RXP1_203 = Port()
GTM_RXP2_203 = Port()
GTM_RXP3_203 = Port()
GTM_TXN0_203 = Port()
GTM_TXN1_203 = Port()
GTM_TXN2_203 = Port()
GTM_TXN3_203 = Port()
GTM_TXP0_203 = Port()
GTM_TXP1_203 = Port()
GTM_TXP2_203 = Port()
GTM_TXP3_203 = Port()
# --- Bank 204 ---
GTM_REFCLKN0_204 = Port()
GTM_REFCLKN1_204 = Port()
GTM_REFCLKP0_204 = Port()
GTM_REFCLKP1_204 = Port()
GTM_RXN0_204 = Port()
GTM_RXN1_204 = Port()
GTM_RXN2_204 = Port()
GTM_RXN3_204 = Port()
GTM_RXP0_204 = Port()
GTM_RXP1_204 = Port()
GTM_RXP2_204 = Port()
GTM_RXP3_204 = Port()
GTM_TXN0_204 = Port()
GTM_TXN1_204 = Port()
GTM_TXN2_204 = Port()
GTM_TXN3_204 = Port()
GTM_TXP0_204 = Port()
GTM_TXP1_204 = Port()
GTM_TXP2_204 = Port()
GTM_TXP3_204 = Port()
# --- Bank 205 ---
GTM_REFCLKN0_205 = Port()
GTM_REFCLKN1_205 = Port()
GTM_REFCLKP0_205 = Port()
GTM_REFCLKP1_205 = Port()
GTM_RXN0_205 = Port()
GTM_RXN1_205 = Port()
GTM_RXN2_205 = Port()
GTM_RXN3_205 = Port()
GTM_RXP0_205 = Port()
GTM_RXP1_205 = Port()
GTM_RXP2_205 = Port()
GTM_RXP3_205 = Port()
GTM_TXN0_205 = Port()
GTM_TXN1_205 = Port()
GTM_TXN2_205 = Port()
GTM_TXN3_205 = Port()
GTM_TXP0_205 = Port()
GTM_TXP1_205 = Port()
GTM_TXP2_205 = Port()
GTM_TXP3_205 = Port()
# --- Bank 206 ---
GTM_REFCLKN0_206 = Port()
GTM_REFCLKN1_206 = Port()
GTM_REFCLKP0_206 = Port()
GTM_REFCLKP1_206 = Port()
GTM_RXN0_206 = Port()
GTM_RXN1_206 = Port()
GTM_RXN2_206 = Port()
GTM_RXN3_206 = Port()
GTM_RXP0_206 = Port()
GTM_RXP1_206 = Port()
GTM_RXP2_206 = Port()
GTM_RXP3_206 = Port()
GTM_TXN0_206 = Port()
GTM_TXN1_206 = Port()
GTM_TXN2_206 = Port()
GTM_TXN3_206 = Port()
GTM_TXP0_206 = Port()
GTM_TXP1_206 = Port()
GTM_TXP2_206 = Port()
GTM_TXP3_206 = Port()
# --- Bank 207 ---
GTM_REFCLKN0_207 = Port()
GTM_REFCLKN1_207 = Port()
GTM_REFCLKP0_207 = Port()
GTM_REFCLKP1_207 = Port()
GTM_RXN0_207 = Port()
GTM_RXN1_207 = Port()
GTM_RXN2_207 = Port()
GTM_RXN3_207 = Port()
GTM_RXP0_207 = Port()
GTM_RXP1_207 = Port()
GTM_RXP2_207 = Port()
GTM_RXP3_207 = Port()
GTM_TXN0_207 = Port()
GTM_TXN1_207 = Port()
GTM_TXN2_207 = Port()
GTM_TXN3_207 = Port()
GTM_TXP0_207 = Port()
GTM_TXP1_207 = Port()
GTM_TXP2_207 = Port()
GTM_TXP3_207 = Port()
# --- Bank 500 ---
PMC_MIO0_500 = Port()
PMC_MIO1_500 = Port()
PMC_MIO2_500 = Port()
PMC_MIO3_500 = Port()
PMC_MIO4_500 = Port()
PMC_MIO5_500 = Port()
PMC_MIO6_500 = Port()
PMC_MIO7_500 = Port()
PMC_MIO8_500 = Port()
PMC_MIO9_500 = Port()
PMC_MIO10_500 = Port()
PMC_MIO11_500 = Port()
PMC_MIO12_500 = Port()
PMC_MIO13_500 = Port()
PMC_MIO14_500 = Port()
PMC_MIO15_500 = Port()
PMC_MIO16_500 = Port()
PMC_MIO17_500 = Port()
PMC_MIO18_500 = Port()
PMC_MIO19_500 = Port()
PMC_MIO20_500 = Port()
PMC_MIO21_500 = Port()
PMC_MIO22_500 = Port()
PMC_MIO23_500 = Port()
PMC_MIO24_500 = Port()
PMC_MIO25_500 = Port()
# --- Bank 501 ---
PMC_MIO26_501 = Port()
PMC_MIO27_501 = Port()
PMC_MIO28_501 = Port()
PMC_MIO29_501 = Port()
PMC_MIO30_501 = Port()
PMC_MIO31_501 = Port()
PMC_MIO32_501 = Port()
PMC_MIO33_501 = Port()
PMC_MIO34_501 = Port()
PMC_MIO35_501 = Port()
PMC_MIO36_501 = Port()
PMC_MIO37_501 = Port()
PMC_MIO38_501 = Port()
PMC_MIO39_501 = Port()
PMC_MIO40_501 = Port()
PMC_MIO41_501 = Port()
PMC_MIO42_501 = Port()
PMC_MIO43_501 = Port()
PMC_MIO44_501 = Port()
PMC_MIO45_501 = Port()
PMC_MIO46_501 = Port()
PMC_MIO47_501 = Port()
PMC_MIO48_501 = Port()
PMC_MIO49_501 = Port()
PMC_MIO50_501 = Port()
PMC_MIO51_501 = Port()
# --- Bank 502 ---
LPD_MIO0_502 = Port()
LPD_MIO1_502 = Port()
LPD_MIO2_502 = Port()
LPD_MIO3_502 = Port()
LPD_MIO4_502 = Port()
LPD_MIO5_502 = Port()
LPD_MIO6_502 = Port()
LPD_MIO7_502 = Port()
LPD_MIO8_502 = Port()
LPD_MIO9_502 = Port()
LPD_MIO10_502 = Port()
LPD_MIO11_502 = Port()
LPD_MIO12_502 = Port()
LPD_MIO13_502 = Port()
LPD_MIO14_502 = Port()
LPD_MIO15_502 = Port()
LPD_MIO16_502 = Port()
LPD_MIO17_502 = Port()
LPD_MIO18_502 = Port()
LPD_MIO19_502 = Port()
LPD_MIO20_502 = Port()
LPD_MIO21_502 = Port()
LPD_MIO22_502 = Port()
LPD_MIO23_502 = Port()
LPD_MIO24_502 = Port()
LPD_MIO25_502 = Port()
# --- Bank 503 ---
DONE_503 = Port()
ERROR_OUT_503 = Port()
MODE0_503 = Port()
MODE1_503 = Port()
MODE2_503 = Port()
MODE3_503 = Port()
POR_B_503 = Port()
PUDC_B_503 = Port()
REF_CLK_503 = Port()
RTC_PADI_503 = Port()
RTC_PADO_503 = Port()
TCK_503 = Port()
TDI_503 = Port()
TDO_503 = Port()
TMS_503 = Port()
# --- Bank 700 ---
IO_L0N_XCC_N0P1_M0P1_700 = Port()
IO_L0P_XCC_N0P0_M0P0_700 = Port()
IO_L1N_N0P3_M0P3_700 = Port()
IO_L1P_N0P2_M0P2_700 = Port()
IO_L2N_N0P5_M0P5_700 = Port()
IO_L2P_N0P4_M0P4_700 = Port()
IO_L3N_XCC_N1P1_M0P7_700 = Port()
IO_L3P_XCC_N1P0_M0P6_700 = Port()
IO_L4N_N1P3_M0P9_700 = Port()
IO_L4P_N1P2_M0P8_700 = Port()
IO_L5N_N1P5_M0P11_700 = Port()
IO_L5P_N1P4_M0P10_700 = Port()
IO_L6N_GC_XCC_N2P1_M0P13_700 = Port()
IO_L6P_GC_XCC_N2P0_M0P12_700 = Port()
IO_L7N_N2P3_M0P15_700 = Port()
IO_L7P_N2P2_M0P14_700 = Port()
IO_L8N_N2P5_M0P17_700 = Port()
IO_L8P_N2P4_M0P16_700 = Port()
IO_L9N_GC_XCC_N3P1_M0P19_700 = Port()
IO_L9P_GC_XCC_N3P0_M0P18_700 = Port()
IO_L10N_N3P3_M0P21_700 = Port()
IO_L10P_N3P2_M0P20_700 = Port()
IO_L11N_N3P5_M0P23_700 = Port()
IO_L11P_N3P4_M0P22_700 = Port()
IO_L12N_GC_XCC_N4P1_M0P25_700 = Port()
IO_L12P_GC_XCC_N4P0_M0P24_700 = Port()
IO_L13N_N4P3_M0P27_700 = Port()
IO_L13P_N4P2_M0P26_700 = Port()
IO_L14N_N4P5_M0P29_700 = Port()
IO_L14P_N4P4_M0P28_700 = Port()
IO_L15N_XCC_N5P1_M0P31_700 = Port()
IO_L15P_XCC_N5P0_M0P30_700 = Port()
IO_L16N_N5P3_M0P33_700 = Port()
IO_L16P_N5P2_M0P32_700 = Port()
IO_L17N_N5P5_M0P35_700 = Port()
IO_L17P_N5P4_M0P34_700 = Port()
IO_L18N_XCC_N6P1_M0P37_700 = Port()
IO_L18P_XCC_N6P0_M0P36_700 = Port()
IO_L19N_N6P3_M0P39_700 = Port()
IO_L19P_N6P2_M0P38_700 = Port()
IO_L20N_N6P5_M0P41_700 = Port()
IO_L20P_N6P4_M0P40_700 = Port()
IO_L21N_XCC_N7P1_M0P43_700 = Port()
IO_L21P_XCC_N7P0_M0P42_700 = Port()
IO_L22N_N7P3_M0P45_700 = Port()
IO_L22P_N7P2_M0P44_700 = Port()
IO_L23N_N7P5_M0P47_700 = Port()
IO_L23P_N7P4_M0P46_700 = Port()
IO_L24N_GC_XCC_N8P1_M0P49_700 = Port()
IO_L24P_GC_XCC_N8P0_M0P48_700 = Port()
IO_L25N_N8P3_M0P51_700 = Port()
IO_L25P_N8P2_M0P50_700 = Port()
IO_L26N_N8P5_M0P53_700 = Port()
IO_L26P_N8P4_M0P52_700 = Port()
IO_VR_700 = Port()
# --- Bank 701 ---
IO_L0N_XCC_N0P1_M0P55_701 = Port()
IO_L0P_XCC_N0P0_M0P54_701 = Port()
IO_L1N_N0P3_M0P57_701 = Port()
IO_L1P_N0P2_M0P56_701 = Port()
IO_L2N_N0P5_M0P59_701 = Port()
IO_L2P_N0P4_M0P58_701 = Port()
IO_L3N_XCC_N1P1_M0P61_701 = Port()
IO_L3P_XCC_N1P0_M0P60_701 = Port()
IO_L4N_N1P3_M0P63_701 = Port()
IO_L4P_N1P2_M0P62_701 = Port()
IO_L5N_N1P5_M0P65_701 = Port()
IO_L5P_N1P4_M0P64_701 = Port()
IO_L6N_GC_XCC_N2P1_M0P67_701 = Port()
IO_L6P_GC_XCC_N2P0_M0P66_701 = Port()
IO_L7N_N2P3_M0P69_701 = Port()
IO_L7P_N2P2_M0P68_701 = Port()
IO_L8N_N2P5_M0P71_701 = Port()
IO_L8P_N2P4_M0P70_701 = Port()
IO_L9N_GC_XCC_N3P1_M0P73_701 = Port()
IO_L9P_GC_XCC_N3P0_M0P72_701 = Port()
IO_L10N_N3P3_M0P75_701 = Port()
IO_L10P_N3P2_M0P74_701 = Port()
IO_L11N_N3P5_M0P77_701 = Port()
IO_L11P_N3P4_M0P76_701 = Port()
IO_L12N_GC_XCC_N4P1_M0P79_701 = Port()
IO_L12P_GC_XCC_N4P0_M0P78_701 = Port()
IO_L13N_N4P3_M0P81_701 = Port()
IO_L13P_N4P2_M0P80_701 = Port()
IO_L14N_N4P5_M0P83_701 = Port()
IO_L14P_N4P4_M0P82_701 = Port()
IO_L15N_XCC_N5P1_M0P85_701 = Port()
IO_L15P_XCC_N5P0_M0P84_701 = Port()
IO_L16N_N5P3_M0P87_701 = Port()
IO_L16P_N5P2_M0P86_701 = Port()
IO_L17N_N5P5_M0P89_701 = Port()
IO_L17P_N5P4_M0P88_701 = Port()
IO_L18N_XCC_N6P1_M0P91_701 = Port()
IO_L18P_XCC_N6P0_M0P90_701 = Port()
IO_L19N_N6P3_M0P93_701 = Port()
IO_L19P_N6P2_M0P92_701 = Port()
IO_L20N_N6P5_M0P95_701 = Port()
IO_L20P_N6P4_M0P94_701 = Port()
IO_L21N_XCC_N7P1_M0P97_701 = Port()
IO_L21P_XCC_N7P0_M0P96_701 = Port()
IO_L22N_N7P3_M0P99_701 = Port()
IO_L22P_N7P2_M0P98_701 = Port()
IO_L23N_N7P5_M0P101_701 = Port()
IO_L23P_N7P4_M0P100_701 = Port()
IO_L24N_GC_XCC_N8P1_M0P103_701 = Port()
IO_L24P_GC_XCC_N8P0_M0P102_701 = Port()
IO_L25N_N8P3_M0P105_701 = Port()
IO_L25P_N8P2_M0P104_701 = Port()
IO_L26N_N8P5_M0P107_701 = Port()
IO_L26P_N8P4_M0P106_701 = Port()
# --- Bank 702 ---
IO_L0N_XCC_N0P1_M0P109_702 = Port()
IO_L0P_XCC_N0P0_M0P108_702 = Port()
IO_L1N_N0P3_M0P111_702 = Port()
IO_L1P_N0P2_M0P110_702 = Port()
IO_L2N_N0P5_M0P113_702 = Port()
IO_L2P_N0P4_M0P112_702 = Port()
IO_L3N_XCC_N1P1_M0P115_702 = Port()
IO_L3P_XCC_N1P0_M0P114_702 = Port()
IO_L4N_N1P3_M0P117_702 = Port()
IO_L4P_N1P2_M0P116_702 = Port()
IO_L5N_N1P5_M0P119_702 = Port()
IO_L5P_N1P4_M0P118_702 = Port()
IO_L6N_GC_XCC_N2P1_M0P121_702 = Port()
IO_L6P_GC_XCC_N2P0_M0P120_702 = Port()
IO_L7N_N2P3_M0P123_702 = Port()
IO_L7P_N2P2_M0P122_702 = Port()
IO_L8N_N2P5_M0P125_702 = Port()
IO_L8P_N2P4_M0P124_702 = Port()
IO_L9N_GC_XCC_N3P1_M0P127_702 = Port()
IO_L9P_GC_XCC_N3P0_M0P126_702 = Port()
IO_L10N_N3P3_M0P129_702 = Port()
IO_L10P_N3P2_M0P128_702 = Port()
IO_L11N_N3P5_M0P131_702 = Port()
IO_L11P_N3P4_M0P130_702 = Port()
IO_L12N_GC_XCC_N4P1_M0P133_702 = Port()
IO_L12P_GC_XCC_N4P0_M0P132_702 = Port()
IO_L13N_N4P3_M0P135_702 = Port()
IO_L13P_N4P2_M0P134_702 = Port()
IO_L14N_N4P5_M0P137_702 = Port()
IO_L14P_N4P4_M0P136_702 = Port()
IO_L15N_XCC_N5P1_M0P139_702 = Port()
IO_L15P_XCC_N5P0_M0P138_702 = Port()
IO_L16N_N5P3_M0P141_702 = Port()
IO_L16P_N5P2_M0P140_702 = Port()
IO_L17N_N5P5_M0P143_702 = Port()
IO_L17P_N5P4_M0P142_702 = Port()
IO_L18N_XCC_N6P1_M0P145_702 = Port()
IO_L18P_XCC_N6P0_M0P144_702 = Port()
IO_L19N_N6P3_M0P147_702 = Port()
IO_L19P_N6P2_M0P146_702 = Port()
IO_L20N_N6P5_M0P149_702 = Port()
IO_L20P_N6P4_M0P148_702 = Port()
IO_L21N_XCC_N7P1_M0P151_702 = Port()
IO_L21P_XCC_N7P0_M0P150_702 = Port()
IO_L22N_N7P3_M0P153_702 = Port()
IO_L22P_N7P2_M0P152_702 = Port()
IO_L23N_N7P5_M0P155_702 = Port()
IO_L23P_N7P4_M0P154_702 = Port()
IO_L24N_GC_XCC_N8P1_M0P157_702 = Port()
IO_L24P_GC_XCC_N8P0_M0P156_702 = Port()
IO_L25N_N8P3_M0P159_702 = Port()
IO_L25P_N8P2_M0P158_702 = Port()
IO_L26N_N8P5_M0P161_702 = Port()
IO_L26P_N8P4_M0P160_702 = Port()
# --- Dedicated / bankless ---
GND_SENSE = Port()
GND_SMON = Port()
VCCAUX_SMON = Port()
VCCINT_SENSE = Port()
VCC_BATT = Port()
VCC_FUSE = Port()
VN_500 = Port()
VP_500 = Port()
VREFN_500 = Port()
VREFP_500 = Port()
# --- Repeated rails (indexed lists, (row, col) order) ---
GND = [Port() for _ in range(689)]
GTM_AVCCAUX_L = [Port() for _ in range(2)]
GTM_AVCCAUX_RN = [Port() for _ in range(2)]
GTM_AVCC_L = [Port() for _ in range(6)]
GTM_AVCC_RN = [Port() for _ in range(3)]
GTM_AVTT_L = [Port() for _ in range(8)]
GTM_AVTT_RN = [Port() for _ in range(4)]
GTY_AVCCAUX_RS = [Port() for _ in range(2)]
GTY_AVCC_RS = [Port() for _ in range(2)]
GTY_AVTT_RS = [Port() for _ in range(4)]
NC = [Port() for _ in range(60)]
RSVDGND = [Port() for _ in range(2)]
VCCAUX = [Port() for _ in range(6)]
VCCAUX_PMC = [Port() for _ in range(2)]
VCCINT = [Port() for _ in range(84)]
VCCINT_GT_L = [Port() for _ in range(5)]
VCCINT_GT_R = [Port() for _ in range(3)]
VCCO_500 = [Port() for _ in range(2)]
VCCO_501 = [Port() for _ in range(2)]
VCCO_502 = [Port() for _ in range(2)]
VCCO_503 = [Port() for _ in range(2)]
VCCO_700 = [Port() for _ in range(3)]
VCCO_701 = [Port() for _ in range(3)]
VCCO_702 = [Port() for _ in range(3)]
VCC_IO = [Port() for _ in range(2)]
VCC_PMC = [Port() for _ in range(3)]
VCC_PSFP = [Port() for _ in range(4)]
VCC_PSLP = [Port() for _ in range(3)]
VCC_RAM = [Port() for _ in range(6)]
VCC_SOC = [Port() for _ in range(18)]
landpattern = make_landpattern(NFVI1369)
[docs]
def ball_assignments(self) -> Iterator[tuple[Port, tuple[int, int]]]:
"""Yield every (port, zero-indexed grid coordinate) pair."""
# Bank 103
yield self.GTY_REFCLKN0_103, (25, 5) # AF6
yield self.GTY_REFCLKN1_103, (23, 5) # AD6
yield self.GTY_REFCLKP0_103, (25, 6) # AF7
yield self.GTY_REFCLKP1_103, (23, 6) # AD7
yield self.GTY_RXN0_103, (31, 2) # AM3
yield self.GTY_RXN1_103, (30, 0) # AL1
yield self.GTY_RXN2_103, (29, 2) # AK3
yield self.GTY_RXN3_103, (28, 0) # AJ1
yield self.GTY_RXP0_103, (31, 3) # AM4
yield self.GTY_RXP1_103, (30, 1) # AL2
yield self.GTY_RXP2_103, (29, 3) # AK4
yield self.GTY_RXP3_103, (28, 1) # AJ2
yield self.GTY_TXN0_103, (36, 2) # AU3
yield self.GTY_TXN1_103, (35, 0) # AT1
yield self.GTY_TXN2_103, (34, 2) # AR3
yield self.GTY_TXN3_103, (33, 0) # AP1
yield self.GTY_TXP0_103, (36, 3) # AU4
yield self.GTY_TXP1_103, (35, 1) # AT2
yield self.GTY_TXP2_103, (34, 3) # AR4
yield self.GTY_TXP3_103, (33, 1) # AP2
# Bank 105
yield self.GTY_AVTTRCAL_RS, (21, 5) # AB6
yield self.GTY_REFCLKN0_105, (20, 7) # AA8
yield self.GTY_REFCLKN1_105, (19, 5) # Y6
yield self.GTY_REFCLKP0_105, (20, 8) # AA9
yield self.GTY_REFCLKP1_105, (19, 6) # Y7
yield self.GTY_RREF_RS, (21, 6) # AB7
yield self.GTY_RXN0_105, (27, 2) # AH3
yield self.GTY_RXN1_105, (26, 0) # AG1
yield self.GTY_RXN2_105, (25, 2) # AF3
yield self.GTY_RXN3_105, (24, 0) # AE1
yield self.GTY_RXP0_105, (27, 3) # AH4
yield self.GTY_RXP1_105, (26, 1) # AG2
yield self.GTY_RXP2_105, (25, 3) # AF4
yield self.GTY_RXP3_105, (24, 1) # AE2
yield self.GTY_TXN0_105, (22, 2) # AC3
yield self.GTY_TXN1_105, (21, 0) # AB1
yield self.GTY_TXN2_105, (20, 2) # AA3
yield self.GTY_TXN3_105, (19, 0) # Y1
yield self.GTY_TXP0_105, (22, 3) # AC4
yield self.GTY_TXP1_105, (21, 1) # AB2
yield self.GTY_TXP2_105, (20, 3) # AA4
yield self.GTY_TXP3_105, (19, 1) # Y2
# Bank 109
yield self.GTM_AVTTRCAL_RN, (15, 9) # T10
yield self.GTM_RREF_RN, (15, 10) # T11
# Bank 202
yield self.GTM_REFCLKN0_202, (22, 27) # AC28
yield self.GTM_REFCLKN1_202, (20, 27) # AA28
yield self.GTM_REFCLKP0_202, (22, 26) # AC27
yield self.GTM_REFCLKP1_202, (20, 26) # AA27
yield self.GTM_RXN0_202, (32, 35) # AN36
yield self.GTM_RXN1_202, (30, 35) # AL36
yield self.GTM_RXN2_202, (28, 35) # AJ36
yield self.GTM_RXN3_202, (27, 33) # AH34
yield self.GTM_RXP0_202, (32, 34) # AN35
yield self.GTM_RXP1_202, (30, 34) # AL35
yield self.GTM_RXP2_202, (28, 34) # AJ35
yield self.GTM_RXP3_202, (27, 32) # AH33
yield self.GTM_TXN0_202, (31, 32) # AM33
yield self.GTM_TXN1_202, (30, 30) # AL31
yield self.GTM_TXN2_202, (29, 32) # AK33
yield self.GTM_TXN3_202, (28, 30) # AJ31
yield self.GTM_TXP0_202, (31, 31) # AM32
yield self.GTM_TXP1_202, (30, 29) # AL30
yield self.GTM_TXP2_202, (29, 31) # AK32
yield self.GTM_TXP3_202, (28, 29) # AJ30
# Bank 203
yield self.GTM_AVTTRCAL_L, (18, 27) # W28
yield self.GTM_REFCLKN0_203, (16, 27) # U28
yield self.GTM_REFCLKN1_203, (14, 27) # R28
yield self.GTM_REFCLKP0_203, (16, 26) # U27
yield self.GTM_REFCLKP1_203, (14, 26) # R27
yield self.GTM_RREF_L, (18, 26) # W27
yield self.GTM_RXN0_203, (26, 35) # AG36
yield self.GTM_RXN1_203, (25, 33) # AF34
yield self.GTM_RXN2_203, (24, 35) # AE36
yield self.GTM_RXN3_203, (23, 33) # AD34
yield self.GTM_RXP0_203, (26, 34) # AG35
yield self.GTM_RXP1_203, (25, 32) # AF33
yield self.GTM_RXP2_203, (24, 34) # AE35
yield self.GTM_RXP3_203, (23, 32) # AD33
yield self.GTM_TXN0_203, (26, 30) # AG31
yield self.GTM_TXN1_203, (24, 30) # AE31
yield self.GTM_TXN2_203, (22, 30) # AC31
yield self.GTM_TXN3_203, (21, 32) # AB33
yield self.GTM_TXP0_203, (26, 29) # AG30
yield self.GTM_TXP1_203, (24, 29) # AE30
yield self.GTM_TXP2_203, (22, 29) # AC30
yield self.GTM_TXP3_203, (21, 31) # AB32
# Bank 204
yield self.GTM_REFCLKN0_204, (12, 27) # N28
yield self.GTM_REFCLKN1_204, (11, 25) # M26
yield self.GTM_REFCLKP0_204, (12, 26) # N27
yield self.GTM_REFCLKP1_204, (11, 24) # M25
yield self.GTM_RXN0_204, (22, 35) # AC36
yield self.GTM_RXN1_204, (20, 35) # AA36
yield self.GTM_RXN2_204, (18, 35) # W36
yield self.GTM_RXN3_204, (16, 35) # U36
yield self.GTM_RXP0_204, (22, 34) # AC35
yield self.GTM_RXP1_204, (20, 34) # AA35
yield self.GTM_RXP2_204, (18, 34) # W35
yield self.GTM_RXP3_204, (16, 34) # U35
yield self.GTM_TXN0_204, (20, 30) # AA31
yield self.GTM_TXN1_204, (19, 32) # Y33
yield self.GTM_TXN2_204, (18, 30) # W31
yield self.GTM_TXN3_204, (17, 32) # V33
yield self.GTM_TXP0_204, (20, 29) # AA30
yield self.GTM_TXP1_204, (19, 31) # Y32
yield self.GTM_TXP2_204, (18, 29) # W30
yield self.GTM_TXP3_204, (17, 31) # V32
# Bank 205
yield self.GTM_REFCLKN0_205, (10, 27) # L28
yield self.GTM_REFCLKN1_205, (9, 25) # K26
yield self.GTM_REFCLKP0_205, (10, 26) # L27
yield self.GTM_REFCLKP1_205, (9, 24) # K25
yield self.GTM_RXN0_205, (14, 35) # R36
yield self.GTM_RXN1_205, (12, 35) # N36
yield self.GTM_RXN2_205, (10, 35) # L36
yield self.GTM_RXN3_205, (9, 33) # K34
yield self.GTM_RXP0_205, (14, 34) # R35
yield self.GTM_RXP1_205, (12, 34) # N35
yield self.GTM_RXP2_205, (10, 34) # L35
yield self.GTM_RXP3_205, (9, 32) # K33
yield self.GTM_TXN0_205, (16, 30) # U31
yield self.GTM_TXN1_205, (15, 32) # T33
yield self.GTM_TXN2_205, (14, 30) # R31
yield self.GTM_TXN3_205, (13, 32) # P33
yield self.GTM_TXP0_205, (16, 29) # U30
yield self.GTM_TXP1_205, (15, 31) # T32
yield self.GTM_TXP2_205, (14, 29) # R30
yield self.GTM_TXP3_205, (13, 31) # P32
# Bank 206
yield self.GTM_REFCLKN0_206, (8, 27) # J28
yield self.GTM_REFCLKN1_206, (7, 25) # H26
yield self.GTM_REFCLKP0_206, (8, 26) # J27
yield self.GTM_REFCLKP1_206, (7, 24) # H25
yield self.GTM_RXN0_206, (8, 35) # J36
yield self.GTM_RXN1_206, (7, 33) # H34
yield self.GTM_RXN2_206, (6, 35) # G36
yield self.GTM_RXN3_206, (5, 33) # F34
yield self.GTM_RXP0_206, (8, 34) # J35
yield self.GTM_RXP1_206, (7, 32) # H33
yield self.GTM_RXP2_206, (6, 34) # G35
yield self.GTM_RXP3_206, (5, 32) # F33
yield self.GTM_TXN0_206, (12, 30) # N31
yield self.GTM_TXN1_206, (11, 32) # M33
yield self.GTM_TXN2_206, (10, 30) # L31
yield self.GTM_TXN3_206, (8, 30) # J31
yield self.GTM_TXP0_206, (12, 29) # N30
yield self.GTM_TXP1_206, (11, 31) # M32
yield self.GTM_TXP2_206, (10, 29) # L30
yield self.GTM_TXP3_206, (8, 29) # J30
# Bank 207
yield self.GTM_REFCLKN0_207, (6, 27) # G28
yield self.GTM_REFCLKN1_207, (4, 27) # E28
yield self.GTM_REFCLKP0_207, (6, 26) # G27
yield self.GTM_REFCLKP1_207, (4, 26) # E27
yield self.GTM_RXN0_207, (4, 35) # E36
yield self.GTM_RXN1_207, (3, 33) # D34
yield self.GTM_RXN2_207, (2, 35) # C36
yield self.GTM_RXN3_207, (1, 33) # B34
yield self.GTM_RXP0_207, (4, 34) # E35
yield self.GTM_RXP1_207, (3, 32) # D33
yield self.GTM_RXP2_207, (2, 34) # C35
yield self.GTM_RXP3_207, (1, 32) # B33
yield self.GTM_TXN0_207, (6, 30) # G31
yield self.GTM_TXN1_207, (4, 30) # E31
yield self.GTM_TXN2_207, (2, 30) # C31
yield self.GTM_TXN3_207, (1, 28) # B29
yield self.GTM_TXP0_207, (6, 29) # G30
yield self.GTM_TXP1_207, (4, 29) # E30
yield self.GTM_TXP2_207, (2, 29) # C30
yield self.GTM_TXP3_207, (1, 27) # B28
# Bank 500
yield self.PMC_MIO0_500, (5, 16) # F17
yield self.PMC_MIO1_500, (6, 16) # G17
yield self.PMC_MIO2_500, (5, 15) # F16
yield self.PMC_MIO3_500, (4, 15) # E16
yield self.PMC_MIO4_500, (3, 15) # D16
yield self.PMC_MIO5_500, (4, 14) # E15
yield self.PMC_MIO6_500, (5, 14) # F15
yield self.PMC_MIO7_500, (6, 14) # G15
yield self.PMC_MIO8_500, (6, 13) # G14
yield self.PMC_MIO9_500, (4, 13) # E14
yield self.PMC_MIO10_500, (3, 13) # D14
yield self.PMC_MIO11_500, (3, 12) # D13
yield self.PMC_MIO12_500, (4, 12) # E13
yield self.PMC_MIO13_500, (5, 12) # F13
yield self.PMC_MIO14_500, (6, 12) # G13
yield self.PMC_MIO15_500, (6, 11) # G12
yield self.PMC_MIO16_500, (5, 11) # F12
yield self.PMC_MIO17_500, (3, 11) # D12
yield self.PMC_MIO18_500, (2, 11) # C12
yield self.PMC_MIO19_500, (2, 10) # C11
yield self.PMC_MIO20_500, (3, 10) # D11
yield self.PMC_MIO21_500, (4, 10) # E11
yield self.PMC_MIO22_500, (5, 10) # F11
yield self.PMC_MIO23_500, (5, 9) # F10
yield self.PMC_MIO24_500, (4, 9) # E10
yield self.PMC_MIO25_500, (3, 9) # D10
# Bank 501
yield self.PMC_MIO26_501, (3, 24) # D25
yield self.PMC_MIO27_501, (4, 24) # E25
yield self.PMC_MIO28_501, (5, 24) # F25
yield self.PMC_MIO29_501, (4, 23) # E24
yield self.PMC_MIO30_501, (3, 23) # D24
yield self.PMC_MIO31_501, (3, 22) # D23
yield self.PMC_MIO32_501, (4, 22) # E23
yield self.PMC_MIO33_501, (5, 22) # F23
yield self.PMC_MIO34_501, (6, 22) # G23
yield self.PMC_MIO35_501, (6, 21) # G22
yield self.PMC_MIO36_501, (5, 21) # F22
yield self.PMC_MIO37_501, (3, 21) # D22
yield self.PMC_MIO38_501, (3, 20) # D21
yield self.PMC_MIO39_501, (4, 20) # E21
yield self.PMC_MIO40_501, (5, 20) # F21
yield self.PMC_MIO41_501, (6, 19) # G20
yield self.PMC_MIO42_501, (5, 19) # F20
yield self.PMC_MIO43_501, (4, 19) # E20
yield self.PMC_MIO44_501, (3, 18) # D19
yield self.PMC_MIO45_501, (4, 18) # E19
yield self.PMC_MIO46_501, (6, 18) # G19
yield self.PMC_MIO47_501, (6, 17) # G18
yield self.PMC_MIO48_501, (5, 17) # F18
yield self.PMC_MIO49_501, (4, 17) # E18
yield self.PMC_MIO50_501, (3, 17) # D18
yield self.PMC_MIO51_501, (3, 16) # D17
# Bank 502
yield self.LPD_MIO0_502, (2, 20) # C21
yield self.LPD_MIO1_502, (2, 19) # C20
yield self.LPD_MIO2_502, (1, 19) # B20
yield self.LPD_MIO3_502, (0, 19) # A20
yield self.LPD_MIO4_502, (2, 18) # C19
yield self.LPD_MIO5_502, (1, 18) # B19
yield self.LPD_MIO6_502, (0, 17) # A18
yield self.LPD_MIO7_502, (1, 17) # B18
yield self.LPD_MIO8_502, (2, 16) # C17
yield self.LPD_MIO9_502, (1, 16) # B17
yield self.LPD_MIO10_502, (0, 16) # A17
yield self.LPD_MIO11_502, (0, 15) # A16
yield self.LPD_MIO12_502, (2, 15) # C16
yield self.LPD_MIO13_502, (0, 14) # A15
yield self.LPD_MIO14_502, (1, 14) # B15
yield self.LPD_MIO15_502, (2, 14) # C15
yield self.LPD_MIO16_502, (2, 13) # C14
yield self.LPD_MIO17_502, (1, 13) # B14
yield self.LPD_MIO18_502, (0, 12) # A13
yield self.LPD_MIO19_502, (1, 12) # B13
yield self.LPD_MIO20_502, (0, 11) # A12
yield self.LPD_MIO21_502, (1, 11) # B12
yield self.LPD_MIO22_502, (0, 10) # A11
yield self.LPD_MIO23_502, (0, 9) # A10
yield self.LPD_MIO24_502, (1, 9) # B10
yield self.LPD_MIO25_502, (2, 9) # C10
# Bank 503
yield self.DONE_503, (2, 21) # C22
yield self.ERROR_OUT_503, (0, 20) # A21
yield self.MODE0_503, (1, 24) # B25
yield self.MODE1_503, (1, 23) # B24
yield self.MODE2_503, (1, 22) # B23
yield self.MODE3_503, (1, 21) # B22
yield self.POR_B_503, (23, 15) # AD16
yield self.PUDC_B_503, (2, 23) # C24
yield self.REF_CLK_503, (22, 15) # AC16
yield self.RTC_PADI_503, (0, 24) # A25
yield self.RTC_PADO_503, (0, 25) # A26
yield self.TCK_503, (2, 24) # C25
yield self.TDI_503, (0, 21) # A22
yield self.TDO_503, (0, 22) # A23
yield self.TMS_503, (2, 25) # C26
# Bank 700
yield self.IO_L0N_XCC_N0P1_M0P1_700, (35, 10) # AT11
yield self.IO_L0P_XCC_N0P0_M0P0_700, (35, 9) # AT10
yield self.IO_L1N_N0P3_M0P3_700, (35, 12) # AT13
yield self.IO_L1P_N0P2_M0P2_700, (35, 11) # AT12
yield self.IO_L2N_N0P5_M0P5_700, (36, 14) # AU15
yield self.IO_L2P_N0P4_M0P4_700, (36, 13) # AU14
yield self.IO_L3N_XCC_N1P1_M0P7_700, (36, 12) # AU13
yield self.IO_L3P_XCC_N1P0_M0P6_700, (36, 11) # AU12
yield self.IO_L4N_N1P3_M0P9_700, (36, 9) # AU10
yield self.IO_L4P_N1P2_M0P8_700, (36, 8) # AU9
yield self.IO_L5N_N1P5_M0P11_700, (36, 7) # AU8
yield self.IO_L5P_N1P4_M0P10_700, (36, 6) # AU7
yield self.IO_L6N_GC_XCC_N2P1_M0P13_700, (34, 10) # AR11
yield self.IO_L6P_GC_XCC_N2P0_M0P12_700, (33, 10) # AP11
yield self.IO_L7N_N2P3_M0P15_700, (33, 13) # AP14
yield self.IO_L7P_N2P2_M0P14_700, (33, 12) # AP13
yield self.IO_L8N_N2P5_M0P17_700, (34, 13) # AR14
yield self.IO_L8P_N2P4_M0P16_700, (34, 12) # AR13
yield self.IO_L9N_GC_XCC_N3P1_M0P19_700, (34, 9) # AR10
yield self.IO_L9P_GC_XCC_N3P0_M0P18_700, (34, 8) # AR9
yield self.IO_L10N_N3P3_M0P21_700, (35, 5) # AT6
yield self.IO_L10P_N3P2_M0P20_700, (34, 5) # AR6
yield self.IO_L11N_N3P5_M0P23_700, (35, 7) # AT8
yield self.IO_L11P_N3P4_M0P22_700, (35, 6) # AT7
yield self.IO_L12N_GC_XCC_N4P1_M0P25_700, (30, 13) # AL14
yield self.IO_L12P_GC_XCC_N4P0_M0P24_700, (29, 12) # AK13
yield self.IO_L13N_N4P3_M0P27_700, (31, 10) # AM11
yield self.IO_L13P_N4P2_M0P26_700, (30, 10) # AL11
yield self.IO_L14N_N4P5_M0P29_700, (31, 7) # AM8
yield self.IO_L14P_N4P4_M0P28_700, (30, 7) # AL8
yield self.IO_L15N_XCC_N5P1_M0P31_700, (31, 6) # AM7
yield self.IO_L15P_XCC_N5P0_M0P30_700, (30, 5) # AL6
yield self.IO_L16N_N5P3_M0P33_700, (32, 6) # AN7
yield self.IO_L16P_N5P2_M0P32_700, (32, 5) # AN6
yield self.IO_L17N_N5P5_M0P35_700, (33, 8) # AP9
yield self.IO_L17P_N5P4_M0P34_700, (32, 8) # AN9
yield self.IO_L18N_XCC_N6P1_M0P37_700, (28, 5) # AJ6
yield self.IO_L18P_XCC_N6P0_M0P36_700, (27, 5) # AH6
yield self.IO_L19N_N6P3_M0P39_700, (29, 9) # AK10
yield self.IO_L19P_N6P2_M0P38_700, (28, 9) # AJ10
yield self.IO_L20N_N6P5_M0P41_700, (28, 7) # AJ8
yield self.IO_L20P_N6P4_M0P40_700, (28, 6) # AJ7
yield self.IO_L21N_XCC_N7P1_M0P43_700, (29, 6) # AK7
yield self.IO_L21P_XCC_N7P0_M0P42_700, (29, 5) # AK6
yield self.IO_L22N_N7P3_M0P45_700, (30, 8) # AL9
yield self.IO_L22P_N7P2_M0P44_700, (29, 8) # AK9
yield self.IO_L23N_N7P5_M0P47_700, (30, 11) # AL12
yield self.IO_L23P_N7P4_M0P46_700, (29, 11) # AK12
yield self.IO_L24N_GC_XCC_N8P1_M0P49_700, (33, 11) # AP12
yield self.IO_L24P_GC_XCC_N8P0_M0P48_700, (32, 11) # AN12
yield self.IO_L25N_N8P3_M0P51_700, (34, 7) # AR8
yield self.IO_L25P_N8P2_M0P50_700, (33, 7) # AP8
yield self.IO_L26N_N8P5_M0P53_700, (33, 6) # AP7
yield self.IO_L26P_N8P4_M0P52_700, (33, 5) # AP6
yield self.IO_VR_700, (28, 11) # AJ12
# Bank 701
yield self.IO_L0N_XCC_N0P1_M0P55_701, (34, 15) # AR16
yield self.IO_L0P_XCC_N0P0_M0P54_701, (34, 14) # AR15
yield self.IO_L1N_N0P3_M0P57_701, (35, 17) # AT18
yield self.IO_L1P_N0P2_M0P56_701, (34, 17) # AR18
yield self.IO_L2N_N0P5_M0P59_701, (34, 20) # AR21
yield self.IO_L2P_N0P4_M0P58_701, (34, 19) # AR20
yield self.IO_L3N_XCC_N1P1_M0P61_701, (36, 16) # AU17
yield self.IO_L3P_XCC_N1P0_M0P60_701, (35, 16) # AT17
yield self.IO_L4N_N1P3_M0P63_701, (35, 15) # AT16
yield self.IO_L4P_N1P2_M0P62_701, (35, 14) # AT15
yield self.IO_L5N_N1P5_M0P65_701, (36, 18) # AU19
yield self.IO_L5P_N1P4_M0P64_701, (36, 17) # AU18
yield self.IO_L6N_GC_XCC_N2P1_M0P67_701, (33, 22) # AP23
yield self.IO_L6P_GC_XCC_N2P0_M0P66_701, (33, 21) # AP22
yield self.IO_L7N_N2P3_M0P69_701, (34, 23) # AR24
yield self.IO_L7P_N2P2_M0P68_701, (34, 22) # AR23
yield self.IO_L8N_N2P5_M0P71_701, (36, 19) # AU20
yield self.IO_L8P_N2P4_M0P70_701, (35, 19) # AT20
yield self.IO_L9N_GC_XCC_N3P1_M0P73_701, (35, 21) # AT22
yield self.IO_L9P_GC_XCC_N3P0_M0P72_701, (35, 20) # AT21
yield self.IO_L10N_N3P3_M0P75_701, (36, 23) # AU24
yield self.IO_L10P_N3P2_M0P74_701, (35, 22) # AT23
yield self.IO_L11N_N3P5_M0P77_701, (36, 22) # AU23
yield self.IO_L11P_N3P4_M0P76_701, (36, 21) # AU22
yield self.IO_L12N_GC_XCC_N4P1_M0P79_701, (29, 15) # AK16
yield self.IO_L12P_GC_XCC_N4P0_M0P78_701, (29, 14) # AK15
yield self.IO_L13N_N4P3_M0P81_701, (29, 18) # AK19
yield self.IO_L13P_N4P2_M0P80_701, (29, 17) # AK18
yield self.IO_L14N_N4P5_M0P83_701, (30, 17) # AL18
yield self.IO_L14P_N4P4_M0P82_701, (30, 16) # AL17
yield self.IO_L15N_XCC_N5P1_M0P85_701, (31, 15) # AM16
yield self.IO_L15P_XCC_N5P0_M0P84_701, (30, 14) # AL15
yield self.IO_L16N_N5P3_M0P87_701, (31, 19) # AM20
yield self.IO_L16P_N5P2_M0P86_701, (31, 18) # AM19
yield self.IO_L17N_N5P5_M0P89_701, (33, 15) # AP16
yield self.IO_L17P_N5P4_M0P88_701, (32, 14) # AN15
yield self.IO_L18N_XCC_N6P1_M0P91_701, (29, 21) # AK22
yield self.IO_L18P_XCC_N6P0_M0P90_701, (29, 20) # AK21
yield self.IO_L19N_N6P3_M0P93_701, (31, 22) # AM23
yield self.IO_L19P_N6P2_M0P92_701, (30, 22) # AL23
yield self.IO_L20N_N6P5_M0P95_701, (30, 20) # AL21
yield self.IO_L20P_N6P4_M0P94_701, (30, 19) # AL20
yield self.IO_L21N_XCC_N7P1_M0P97_701, (32, 21) # AN22
yield self.IO_L21P_XCC_N7P0_M0P96_701, (31, 21) # AM22
yield self.IO_L22N_N7P3_M0P99_701, (33, 20) # AP21
yield self.IO_L22P_N7P2_M0P98_701, (32, 20) # AN21
yield self.IO_L23N_N7P5_M0P101_701, (32, 19) # AN20
yield self.IO_L23P_N7P4_M0P100_701, (32, 18) # AN19
yield self.IO_L24N_GC_XCC_N8P1_M0P103_701, (33, 23) # AP24
yield self.IO_L24P_GC_XCC_N8P0_M0P102_701, (32, 23) # AN24
yield self.IO_L25N_N8P3_M0P105_701, (34, 18) # AR19
yield self.IO_L25P_N8P2_M0P104_701, (33, 18) # AP19
yield self.IO_L26N_N8P5_M0P107_701, (33, 17) # AP18
yield self.IO_L26P_N8P4_M0P106_701, (33, 16) # AP17
# Bank 702
yield self.IO_L0N_XCC_N0P1_M0P109_702, (35, 31) # AT32
yield self.IO_L0P_XCC_N0P0_M0P108_702, (35, 30) # AT31
yield self.IO_L1N_N0P3_M0P111_702, (36, 33) # AU34
yield self.IO_L1P_N0P2_M0P110_702, (35, 32) # AT33
yield self.IO_L2N_N0P5_M0P113_702, (36, 34) # AU35
yield self.IO_L2P_N0P4_M0P112_702, (35, 34) # AT35
yield self.IO_L3N_XCC_N1P1_M0P115_702, (35, 36) # AT37
yield self.IO_L3P_XCC_N1P0_M0P114_702, (35, 35) # AT36
yield self.IO_L4N_N1P3_M0P117_702, (36, 32) # AU33
yield self.IO_L4P_N1P2_M0P116_702, (36, 31) # AU32
yield self.IO_L5N_N1P5_M0P119_702, (36, 27) # AU28
yield self.IO_L5P_N1P4_M0P118_702, (36, 26) # AU27
yield self.IO_L6N_GC_XCC_N2P1_M0P121_702, (34, 33) # AR34
yield self.IO_L6P_GC_XCC_N2P0_M0P120_702, (34, 32) # AR33
yield self.IO_L7N_N2P3_M0P123_702, (34, 35) # AR36
yield self.IO_L7P_N2P2_M0P122_702, (34, 34) # AR35
yield self.IO_L8N_N2P5_M0P125_702, (36, 29) # AU30
yield self.IO_L8P_N2P4_M0P124_702, (35, 29) # AT30
yield self.IO_L9N_GC_XCC_N3P1_M0P127_702, (36, 28) # AU29
yield self.IO_L9P_GC_XCC_N3P0_M0P126_702, (35, 27) # AT28
yield self.IO_L10N_N3P3_M0P129_702, (35, 26) # AT27
yield self.IO_L10P_N3P2_M0P128_702, (35, 25) # AT26
yield self.IO_L11N_N3P5_M0P131_702, (36, 24) # AU25
yield self.IO_L11P_N3P4_M0P130_702, (35, 24) # AT25
yield self.IO_L12N_GC_XCC_N4P1_M0P133_702, (32, 28) # AN29
yield self.IO_L12P_GC_XCC_N4P0_M0P132_702, (31, 27) # AM28
yield self.IO_L13N_N4P3_M0P135_702, (33, 30) # AP31
yield self.IO_L13P_N4P2_M0P134_702, (32, 29) # AN30
yield self.IO_L14N_N4P5_M0P137_702, (33, 26) # AP27
yield self.IO_L14P_N4P4_M0P136_702, (32, 26) # AN27
yield self.IO_L15N_XCC_N5P1_M0P139_702, (33, 25) # AP26
yield self.IO_L15P_XCC_N5P0_M0P138_702, (32, 24) # AN25
yield self.IO_L16N_N5P3_M0P141_702, (33, 28) # AP29
yield self.IO_L16P_N5P2_M0P140_702, (33, 27) # AP28
yield self.IO_L17N_N5P5_M0P143_702, (33, 32) # AP33
yield self.IO_L17P_N5P4_M0P142_702, (33, 31) # AP32
yield self.IO_L18N_XCC_N6P1_M0P145_702, (29, 26) # AK27
yield self.IO_L18P_XCC_N6P0_M0P144_702, (28, 25) # AJ26
yield self.IO_L19N_N6P3_M0P147_702, (29, 27) # AK28
yield self.IO_L19P_N6P2_M0P146_702, (28, 27) # AJ28
yield self.IO_L20N_N6P5_M0P149_702, (29, 24) # AK25
yield self.IO_L20P_N6P4_M0P148_702, (29, 23) # AK24
yield self.IO_L21N_XCC_N7P1_M0P151_702, (31, 24) # AM25
yield self.IO_L21P_XCC_N7P0_M0P150_702, (30, 23) # AL24
yield self.IO_L22N_N7P3_M0P153_702, (30, 26) # AL27
yield self.IO_L22P_N7P2_M0P152_702, (30, 25) # AL26
yield self.IO_L23N_N7P5_M0P155_702, (32, 25) # AN26
yield self.IO_L23P_N7P4_M0P154_702, (31, 25) # AM26
yield self.IO_L24N_GC_XCC_N8P1_M0P157_702, (34, 25) # AR26
yield self.IO_L24P_GC_XCC_N8P0_M0P156_702, (34, 24) # AR25
yield self.IO_L25N_N8P3_M0P159_702, (34, 28) # AR29
yield self.IO_L25P_N8P2_M0P158_702, (34, 27) # AR28
yield self.IO_L26N_N8P5_M0P161_702, (34, 30) # AR31
yield self.IO_L26P_N8P4_M0P160_702, (34, 29) # AR30
# Dedicated / bankless
yield self.GND_SENSE, (7, 13) # H14
yield self.GND_SMON, (17, 15) # V16
yield self.VCCAUX_SMON, (17, 14) # V15
yield self.VCCINT_SENSE, (7, 12) # H13
yield self.VCC_BATT, (22, 10) # AC11
yield self.VCC_FUSE, (24, 10) # AE11
yield self.VN_500, (19, 15) # Y16
yield self.VP_500, (18, 14) # W15
yield self.VREFN_500, (18, 15) # W16
yield self.VREFP_500, (19, 14) # Y15
yield from zip(self.GND, _GND_BALLS, strict=True)
yield from zip(self.GTM_AVCCAUX_L, _GTM_AVCCAUX_L_BALLS, strict=True)
yield from zip(self.GTM_AVCCAUX_RN, _GTM_AVCCAUX_RN_BALLS, strict=True)
yield from zip(self.GTM_AVCC_L, _GTM_AVCC_L_BALLS, strict=True)
yield from zip(self.GTM_AVCC_RN, _GTM_AVCC_RN_BALLS, strict=True)
yield from zip(self.GTM_AVTT_L, _GTM_AVTT_L_BALLS, strict=True)
yield from zip(self.GTM_AVTT_RN, _GTM_AVTT_RN_BALLS, strict=True)
yield from zip(self.GTY_AVCCAUX_RS, _GTY_AVCCAUX_RS_BALLS, strict=True)
yield from zip(self.GTY_AVCC_RS, _GTY_AVCC_RS_BALLS, strict=True)
yield from zip(self.GTY_AVTT_RS, _GTY_AVTT_RS_BALLS, strict=True)
yield from zip(self.NC, _NC_BALLS, strict=True)
yield from zip(self.RSVDGND, _RSVDGND_BALLS, strict=True)
yield from zip(self.VCCAUX, _VCCAUX_BALLS, strict=True)
yield from zip(self.VCCAUX_PMC, _VCCAUX_PMC_BALLS, strict=True)
yield from zip(self.VCCINT, _VCCINT_BALLS, strict=True)
yield from zip(self.VCCINT_GT_L, _VCCINT_GT_L_BALLS, strict=True)
yield from zip(self.VCCINT_GT_R, _VCCINT_GT_R_BALLS, strict=True)
yield from zip(self.VCCO_500, _VCCO_500_BALLS, strict=True)
yield from zip(self.VCCO_501, _VCCO_501_BALLS, strict=True)
yield from zip(self.VCCO_502, _VCCO_502_BALLS, strict=True)
yield from zip(self.VCCO_503, _VCCO_503_BALLS, strict=True)
yield from zip(self.VCCO_700, _VCCO_700_BALLS, strict=True)
yield from zip(self.VCCO_701, _VCCO_701_BALLS, strict=True)
yield from zip(self.VCCO_702, _VCCO_702_BALLS, strict=True)
yield from zip(self.VCC_IO, _VCC_IO_BALLS, strict=True)
yield from zip(self.VCC_PMC, _VCC_PMC_BALLS, strict=True)
yield from zip(self.VCC_PSFP, _VCC_PSFP_BALLS, strict=True)
yield from zip(self.VCC_PSLP, _VCC_PSLP_BALLS, strict=True)
yield from zip(self.VCC_RAM, _VCC_RAM_BALLS, strict=True)
yield from zip(self.VCC_SOC, _VCC_SOC_BALLS, strict=True)
[docs]
def gtm_quad_pins(self) -> dict[int, GTMQuadPins]:
"""Structural lane/refclk pins of each GTM bank."""
return {
202: GTMQuadPins(
rxp=(
self.GTM_RXP0_202,
self.GTM_RXP1_202,
self.GTM_RXP2_202,
self.GTM_RXP3_202,
),
rxn=(
self.GTM_RXN0_202,
self.GTM_RXN1_202,
self.GTM_RXN2_202,
self.GTM_RXN3_202,
),
txp=(
self.GTM_TXP0_202,
self.GTM_TXP1_202,
self.GTM_TXP2_202,
self.GTM_TXP3_202,
),
txn=(
self.GTM_TXN0_202,
self.GTM_TXN1_202,
self.GTM_TXN2_202,
self.GTM_TXN3_202,
),
refclkp=(
self.GTM_REFCLKP0_202,
self.GTM_REFCLKP1_202,
),
refclkn=(
self.GTM_REFCLKN0_202,
self.GTM_REFCLKN1_202,
),
),
203: GTMQuadPins(
rxp=(
self.GTM_RXP0_203,
self.GTM_RXP1_203,
self.GTM_RXP2_203,
self.GTM_RXP3_203,
),
rxn=(
self.GTM_RXN0_203,
self.GTM_RXN1_203,
self.GTM_RXN2_203,
self.GTM_RXN3_203,
),
txp=(
self.GTM_TXP0_203,
self.GTM_TXP1_203,
self.GTM_TXP2_203,
self.GTM_TXP3_203,
),
txn=(
self.GTM_TXN0_203,
self.GTM_TXN1_203,
self.GTM_TXN2_203,
self.GTM_TXN3_203,
),
refclkp=(
self.GTM_REFCLKP0_203,
self.GTM_REFCLKP1_203,
),
refclkn=(
self.GTM_REFCLKN0_203,
self.GTM_REFCLKN1_203,
),
),
204: GTMQuadPins(
rxp=(
self.GTM_RXP0_204,
self.GTM_RXP1_204,
self.GTM_RXP2_204,
self.GTM_RXP3_204,
),
rxn=(
self.GTM_RXN0_204,
self.GTM_RXN1_204,
self.GTM_RXN2_204,
self.GTM_RXN3_204,
),
txp=(
self.GTM_TXP0_204,
self.GTM_TXP1_204,
self.GTM_TXP2_204,
self.GTM_TXP3_204,
),
txn=(
self.GTM_TXN0_204,
self.GTM_TXN1_204,
self.GTM_TXN2_204,
self.GTM_TXN3_204,
),
refclkp=(
self.GTM_REFCLKP0_204,
self.GTM_REFCLKP1_204,
),
refclkn=(
self.GTM_REFCLKN0_204,
self.GTM_REFCLKN1_204,
),
),
205: GTMQuadPins(
rxp=(
self.GTM_RXP0_205,
self.GTM_RXP1_205,
self.GTM_RXP2_205,
self.GTM_RXP3_205,
),
rxn=(
self.GTM_RXN0_205,
self.GTM_RXN1_205,
self.GTM_RXN2_205,
self.GTM_RXN3_205,
),
txp=(
self.GTM_TXP0_205,
self.GTM_TXP1_205,
self.GTM_TXP2_205,
self.GTM_TXP3_205,
),
txn=(
self.GTM_TXN0_205,
self.GTM_TXN1_205,
self.GTM_TXN2_205,
self.GTM_TXN3_205,
),
refclkp=(
self.GTM_REFCLKP0_205,
self.GTM_REFCLKP1_205,
),
refclkn=(
self.GTM_REFCLKN0_205,
self.GTM_REFCLKN1_205,
),
),
206: GTMQuadPins(
rxp=(
self.GTM_RXP0_206,
self.GTM_RXP1_206,
self.GTM_RXP2_206,
self.GTM_RXP3_206,
),
rxn=(
self.GTM_RXN0_206,
self.GTM_RXN1_206,
self.GTM_RXN2_206,
self.GTM_RXN3_206,
),
txp=(
self.GTM_TXP0_206,
self.GTM_TXP1_206,
self.GTM_TXP2_206,
self.GTM_TXP3_206,
),
txn=(
self.GTM_TXN0_206,
self.GTM_TXN1_206,
self.GTM_TXN2_206,
self.GTM_TXN3_206,
),
refclkp=(
self.GTM_REFCLKP0_206,
self.GTM_REFCLKP1_206,
),
refclkn=(
self.GTM_REFCLKN0_206,
self.GTM_REFCLKN1_206,
),
),
207: GTMQuadPins(
rxp=(
self.GTM_RXP0_207,
self.GTM_RXP1_207,
self.GTM_RXP2_207,
self.GTM_RXP3_207,
),
rxn=(
self.GTM_RXN0_207,
self.GTM_RXN1_207,
self.GTM_RXN2_207,
self.GTM_RXN3_207,
),
txp=(
self.GTM_TXP0_207,
self.GTM_TXP1_207,
self.GTM_TXP2_207,
self.GTM_TXP3_207,
),
txn=(
self.GTM_TXN0_207,
self.GTM_TXN1_207,
self.GTM_TXN2_207,
self.GTM_TXN3_207,
),
refclkp=(
self.GTM_REFCLKP0_207,
self.GTM_REFCLKP1_207,
),
refclkn=(
self.GTM_REFCLKN0_207,
self.GTM_REFCLKN1_207,
),
),
}
[docs]
def symbol_partitions(self) -> Iterator[SymbolPartition]:
"""Yield the schematic box partitions (see .symbols)."""
# Bank 103 (GTY)
yield SymbolPartition(
left=(
self.GTY_RXN0_103,
self.GTY_RXN1_103,
self.GTY_RXN2_103,
self.GTY_RXN3_103,
self.GTY_RXP0_103,
self.GTY_RXP1_103,
self.GTY_RXP2_103,
self.GTY_RXP3_103,
),
right=(
self.GTY_TXN0_103,
self.GTY_TXN1_103,
self.GTY_TXN2_103,
self.GTY_TXN3_103,
self.GTY_TXP0_103,
self.GTY_TXP1_103,
self.GTY_TXP2_103,
self.GTY_TXP3_103,
self.GTY_REFCLKN0_103,
self.GTY_REFCLKN1_103,
self.GTY_REFCLKP0_103,
self.GTY_REFCLKP1_103,
),
)
# Bank 105 (GTY)
yield SymbolPartition(
left=(
self.GTY_RXN0_105,
self.GTY_RXN1_105,
self.GTY_RXN2_105,
self.GTY_RXN3_105,
self.GTY_RXP0_105,
self.GTY_RXP1_105,
self.GTY_RXP2_105,
self.GTY_RXP3_105,
),
right=(
self.GTY_TXN0_105,
self.GTY_TXN1_105,
self.GTY_TXN2_105,
self.GTY_TXN3_105,
self.GTY_TXP0_105,
self.GTY_TXP1_105,
self.GTY_TXP2_105,
self.GTY_TXP3_105,
self.GTY_REFCLKN0_105,
self.GTY_REFCLKN1_105,
self.GTY_REFCLKP0_105,
self.GTY_REFCLKP1_105,
),
down=(
self.GTY_AVTTRCAL_RS,
self.GTY_RREF_RS,
),
)
# Bank 109 (GTM)
yield SymbolPartition(
down=(
self.GTM_AVTTRCAL_RN,
self.GTM_RREF_RN,
),
)
# Bank 202 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_202,
self.GTM_RXN1_202,
self.GTM_RXN2_202,
self.GTM_RXN3_202,
self.GTM_RXP0_202,
self.GTM_RXP1_202,
self.GTM_RXP2_202,
self.GTM_RXP3_202,
),
right=(
self.GTM_TXN0_202,
self.GTM_TXN1_202,
self.GTM_TXN2_202,
self.GTM_TXN3_202,
self.GTM_TXP0_202,
self.GTM_TXP1_202,
self.GTM_TXP2_202,
self.GTM_TXP3_202,
self.GTM_REFCLKN0_202,
self.GTM_REFCLKN1_202,
self.GTM_REFCLKP0_202,
self.GTM_REFCLKP1_202,
),
)
# Bank 203 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_203,
self.GTM_RXN1_203,
self.GTM_RXN2_203,
self.GTM_RXN3_203,
self.GTM_RXP0_203,
self.GTM_RXP1_203,
self.GTM_RXP2_203,
self.GTM_RXP3_203,
),
right=(
self.GTM_TXN0_203,
self.GTM_TXN1_203,
self.GTM_TXN2_203,
self.GTM_TXN3_203,
self.GTM_TXP0_203,
self.GTM_TXP1_203,
self.GTM_TXP2_203,
self.GTM_TXP3_203,
self.GTM_REFCLKN0_203,
self.GTM_REFCLKN1_203,
self.GTM_REFCLKP0_203,
self.GTM_REFCLKP1_203,
),
down=(
self.GTM_AVTTRCAL_L,
self.GTM_RREF_L,
),
)
# Bank 204 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_204,
self.GTM_RXN1_204,
self.GTM_RXN2_204,
self.GTM_RXN3_204,
self.GTM_RXP0_204,
self.GTM_RXP1_204,
self.GTM_RXP2_204,
self.GTM_RXP3_204,
),
right=(
self.GTM_TXN0_204,
self.GTM_TXN1_204,
self.GTM_TXN2_204,
self.GTM_TXN3_204,
self.GTM_TXP0_204,
self.GTM_TXP1_204,
self.GTM_TXP2_204,
self.GTM_TXP3_204,
self.GTM_REFCLKN0_204,
self.GTM_REFCLKN1_204,
self.GTM_REFCLKP0_204,
self.GTM_REFCLKP1_204,
),
)
# Bank 205 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_205,
self.GTM_RXN1_205,
self.GTM_RXN2_205,
self.GTM_RXN3_205,
self.GTM_RXP0_205,
self.GTM_RXP1_205,
self.GTM_RXP2_205,
self.GTM_RXP3_205,
),
right=(
self.GTM_TXN0_205,
self.GTM_TXN1_205,
self.GTM_TXN2_205,
self.GTM_TXN3_205,
self.GTM_TXP0_205,
self.GTM_TXP1_205,
self.GTM_TXP2_205,
self.GTM_TXP3_205,
self.GTM_REFCLKN0_205,
self.GTM_REFCLKN1_205,
self.GTM_REFCLKP0_205,
self.GTM_REFCLKP1_205,
),
)
# Bank 206 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_206,
self.GTM_RXN1_206,
self.GTM_RXN2_206,
self.GTM_RXN3_206,
self.GTM_RXP0_206,
self.GTM_RXP1_206,
self.GTM_RXP2_206,
self.GTM_RXP3_206,
),
right=(
self.GTM_TXN0_206,
self.GTM_TXN1_206,
self.GTM_TXN2_206,
self.GTM_TXN3_206,
self.GTM_TXP0_206,
self.GTM_TXP1_206,
self.GTM_TXP2_206,
self.GTM_TXP3_206,
self.GTM_REFCLKN0_206,
self.GTM_REFCLKN1_206,
self.GTM_REFCLKP0_206,
self.GTM_REFCLKP1_206,
),
)
# Bank 207 (GTM)
yield SymbolPartition(
left=(
self.GTM_RXN0_207,
self.GTM_RXN1_207,
self.GTM_RXN2_207,
self.GTM_RXN3_207,
self.GTM_RXP0_207,
self.GTM_RXP1_207,
self.GTM_RXP2_207,
self.GTM_RXP3_207,
),
right=(
self.GTM_TXN0_207,
self.GTM_TXN1_207,
self.GTM_TXN2_207,
self.GTM_TXN3_207,
self.GTM_TXP0_207,
self.GTM_TXP1_207,
self.GTM_TXP2_207,
self.GTM_TXP3_207,
self.GTM_REFCLKN0_207,
self.GTM_REFCLKN1_207,
self.GTM_REFCLKP0_207,
self.GTM_REFCLKP1_207,
),
)
# Bank 500 (PMCMIO)
yield SymbolPartition(
left=(
self.PMC_MIO0_500,
self.PMC_MIO1_500,
self.PMC_MIO2_500,
self.PMC_MIO3_500,
self.PMC_MIO4_500,
self.PMC_MIO5_500,
self.PMC_MIO6_500,
self.PMC_MIO7_500,
self.PMC_MIO8_500,
self.PMC_MIO9_500,
self.PMC_MIO10_500,
self.PMC_MIO11_500,
self.PMC_MIO12_500,
),
right=(
self.PMC_MIO13_500,
self.PMC_MIO14_500,
self.PMC_MIO15_500,
self.PMC_MIO16_500,
self.PMC_MIO17_500,
self.PMC_MIO18_500,
self.PMC_MIO19_500,
self.PMC_MIO20_500,
self.PMC_MIO21_500,
self.PMC_MIO22_500,
self.PMC_MIO23_500,
self.PMC_MIO24_500,
self.PMC_MIO25_500,
),
down=(*self.VCCO_500,),
)
# Bank 501 (PMCMIO)
yield SymbolPartition(
left=(
self.PMC_MIO26_501,
self.PMC_MIO27_501,
self.PMC_MIO28_501,
self.PMC_MIO29_501,
self.PMC_MIO30_501,
self.PMC_MIO31_501,
self.PMC_MIO32_501,
self.PMC_MIO33_501,
self.PMC_MIO34_501,
self.PMC_MIO35_501,
self.PMC_MIO36_501,
self.PMC_MIO37_501,
self.PMC_MIO38_501,
),
right=(
self.PMC_MIO39_501,
self.PMC_MIO40_501,
self.PMC_MIO41_501,
self.PMC_MIO42_501,
self.PMC_MIO43_501,
self.PMC_MIO44_501,
self.PMC_MIO45_501,
self.PMC_MIO46_501,
self.PMC_MIO47_501,
self.PMC_MIO48_501,
self.PMC_MIO49_501,
self.PMC_MIO50_501,
self.PMC_MIO51_501,
),
down=(*self.VCCO_501,),
)
# Bank 502 (LPDMIO)
yield SymbolPartition(
left=(
self.LPD_MIO0_502,
self.LPD_MIO1_502,
self.LPD_MIO2_502,
self.LPD_MIO3_502,
self.LPD_MIO4_502,
self.LPD_MIO5_502,
self.LPD_MIO6_502,
self.LPD_MIO7_502,
self.LPD_MIO8_502,
self.LPD_MIO9_502,
self.LPD_MIO10_502,
self.LPD_MIO11_502,
self.LPD_MIO12_502,
),
right=(
self.LPD_MIO13_502,
self.LPD_MIO14_502,
self.LPD_MIO15_502,
self.LPD_MIO16_502,
self.LPD_MIO17_502,
self.LPD_MIO18_502,
self.LPD_MIO19_502,
self.LPD_MIO20_502,
self.LPD_MIO21_502,
self.LPD_MIO22_502,
self.LPD_MIO23_502,
self.LPD_MIO24_502,
self.LPD_MIO25_502,
),
down=(*self.VCCO_502,),
)
# Bank 503 (PMCDIO)
yield SymbolPartition(
left=(
self.DONE_503,
self.ERROR_OUT_503,
self.MODE0_503,
self.MODE1_503,
self.MODE2_503,
self.MODE3_503,
self.POR_B_503,
self.PUDC_B_503,
),
right=(
self.REF_CLK_503,
self.RTC_PADI_503,
self.RTC_PADO_503,
self.TCK_503,
self.TDI_503,
self.TDO_503,
self.TMS_503,
),
down=(*self.VCCO_503,),
)
# Bank 700 (XPIO)
yield SymbolPartition(
left=(
self.IO_L0N_XCC_N0P1_M0P1_700,
self.IO_L0P_XCC_N0P0_M0P0_700,
self.IO_L1N_N0P3_M0P3_700,
self.IO_L1P_N0P2_M0P2_700,
self.IO_L2N_N0P5_M0P5_700,
self.IO_L2P_N0P4_M0P4_700,
self.IO_L3N_XCC_N1P1_M0P7_700,
self.IO_L3P_XCC_N1P0_M0P6_700,
self.IO_L4N_N1P3_M0P9_700,
self.IO_L4P_N1P2_M0P8_700,
self.IO_L5N_N1P5_M0P11_700,
self.IO_L5P_N1P4_M0P10_700,
self.IO_L6N_GC_XCC_N2P1_M0P13_700,
self.IO_L6P_GC_XCC_N2P0_M0P12_700,
self.IO_L7N_N2P3_M0P15_700,
self.IO_L7P_N2P2_M0P14_700,
self.IO_L8N_N2P5_M0P17_700,
self.IO_L8P_N2P4_M0P16_700,
self.IO_L9N_GC_XCC_N3P1_M0P19_700,
self.IO_L9P_GC_XCC_N3P0_M0P18_700,
self.IO_L10N_N3P3_M0P21_700,
self.IO_L10P_N3P2_M0P20_700,
self.IO_L11N_N3P5_M0P23_700,
self.IO_L11P_N3P4_M0P22_700,
self.IO_L12N_GC_XCC_N4P1_M0P25_700,
self.IO_L12P_GC_XCC_N4P0_M0P24_700,
self.IO_L13N_N4P3_M0P27_700,
self.IO_L13P_N4P2_M0P26_700,
),
right=(
self.IO_L14N_N4P5_M0P29_700,
self.IO_L14P_N4P4_M0P28_700,
self.IO_L15N_XCC_N5P1_M0P31_700,
self.IO_L15P_XCC_N5P0_M0P30_700,
self.IO_L16N_N5P3_M0P33_700,
self.IO_L16P_N5P2_M0P32_700,
self.IO_L17N_N5P5_M0P35_700,
self.IO_L17P_N5P4_M0P34_700,
self.IO_L18N_XCC_N6P1_M0P37_700,
self.IO_L18P_XCC_N6P0_M0P36_700,
self.IO_L19N_N6P3_M0P39_700,
self.IO_L19P_N6P2_M0P38_700,
self.IO_L20N_N6P5_M0P41_700,
self.IO_L20P_N6P4_M0P40_700,
self.IO_L21N_XCC_N7P1_M0P43_700,
self.IO_L21P_XCC_N7P0_M0P42_700,
self.IO_L22N_N7P3_M0P45_700,
self.IO_L22P_N7P2_M0P44_700,
self.IO_L23N_N7P5_M0P47_700,
self.IO_L23P_N7P4_M0P46_700,
self.IO_L24N_GC_XCC_N8P1_M0P49_700,
self.IO_L24P_GC_XCC_N8P0_M0P48_700,
self.IO_L25N_N8P3_M0P51_700,
self.IO_L25P_N8P2_M0P50_700,
self.IO_L26N_N8P5_M0P53_700,
self.IO_L26P_N8P4_M0P52_700,
self.IO_VR_700,
),
down=(*self.VCCO_700,),
)
# Bank 701 (XPIO)
yield SymbolPartition(
left=(
self.IO_L0N_XCC_N0P1_M0P55_701,
self.IO_L0P_XCC_N0P0_M0P54_701,
self.IO_L1N_N0P3_M0P57_701,
self.IO_L1P_N0P2_M0P56_701,
self.IO_L2N_N0P5_M0P59_701,
self.IO_L2P_N0P4_M0P58_701,
self.IO_L3N_XCC_N1P1_M0P61_701,
self.IO_L3P_XCC_N1P0_M0P60_701,
self.IO_L4N_N1P3_M0P63_701,
self.IO_L4P_N1P2_M0P62_701,
self.IO_L5N_N1P5_M0P65_701,
self.IO_L5P_N1P4_M0P64_701,
self.IO_L6N_GC_XCC_N2P1_M0P67_701,
self.IO_L6P_GC_XCC_N2P0_M0P66_701,
self.IO_L7N_N2P3_M0P69_701,
self.IO_L7P_N2P2_M0P68_701,
self.IO_L8N_N2P5_M0P71_701,
self.IO_L8P_N2P4_M0P70_701,
self.IO_L9N_GC_XCC_N3P1_M0P73_701,
self.IO_L9P_GC_XCC_N3P0_M0P72_701,
self.IO_L10N_N3P3_M0P75_701,
self.IO_L10P_N3P2_M0P74_701,
self.IO_L11N_N3P5_M0P77_701,
self.IO_L11P_N3P4_M0P76_701,
self.IO_L12N_GC_XCC_N4P1_M0P79_701,
self.IO_L12P_GC_XCC_N4P0_M0P78_701,
self.IO_L13N_N4P3_M0P81_701,
),
right=(
self.IO_L13P_N4P2_M0P80_701,
self.IO_L14N_N4P5_M0P83_701,
self.IO_L14P_N4P4_M0P82_701,
self.IO_L15N_XCC_N5P1_M0P85_701,
self.IO_L15P_XCC_N5P0_M0P84_701,
self.IO_L16N_N5P3_M0P87_701,
self.IO_L16P_N5P2_M0P86_701,
self.IO_L17N_N5P5_M0P89_701,
self.IO_L17P_N5P4_M0P88_701,
self.IO_L18N_XCC_N6P1_M0P91_701,
self.IO_L18P_XCC_N6P0_M0P90_701,
self.IO_L19N_N6P3_M0P93_701,
self.IO_L19P_N6P2_M0P92_701,
self.IO_L20N_N6P5_M0P95_701,
self.IO_L20P_N6P4_M0P94_701,
self.IO_L21N_XCC_N7P1_M0P97_701,
self.IO_L21P_XCC_N7P0_M0P96_701,
self.IO_L22N_N7P3_M0P99_701,
self.IO_L22P_N7P2_M0P98_701,
self.IO_L23N_N7P5_M0P101_701,
self.IO_L23P_N7P4_M0P100_701,
self.IO_L24N_GC_XCC_N8P1_M0P103_701,
self.IO_L24P_GC_XCC_N8P0_M0P102_701,
self.IO_L25N_N8P3_M0P105_701,
self.IO_L25P_N8P2_M0P104_701,
self.IO_L26N_N8P5_M0P107_701,
self.IO_L26P_N8P4_M0P106_701,
),
down=(*self.VCCO_701,),
)
# Bank 702 (XPIO)
yield SymbolPartition(
left=(
self.IO_L0N_XCC_N0P1_M0P109_702,
self.IO_L0P_XCC_N0P0_M0P108_702,
self.IO_L1N_N0P3_M0P111_702,
self.IO_L1P_N0P2_M0P110_702,
self.IO_L2N_N0P5_M0P113_702,
self.IO_L2P_N0P4_M0P112_702,
self.IO_L3N_XCC_N1P1_M0P115_702,
self.IO_L3P_XCC_N1P0_M0P114_702,
self.IO_L4N_N1P3_M0P117_702,
self.IO_L4P_N1P2_M0P116_702,
self.IO_L5N_N1P5_M0P119_702,
self.IO_L5P_N1P4_M0P118_702,
self.IO_L6N_GC_XCC_N2P1_M0P121_702,
self.IO_L6P_GC_XCC_N2P0_M0P120_702,
self.IO_L7N_N2P3_M0P123_702,
self.IO_L7P_N2P2_M0P122_702,
self.IO_L8N_N2P5_M0P125_702,
self.IO_L8P_N2P4_M0P124_702,
self.IO_L9N_GC_XCC_N3P1_M0P127_702,
self.IO_L9P_GC_XCC_N3P0_M0P126_702,
self.IO_L10N_N3P3_M0P129_702,
self.IO_L10P_N3P2_M0P128_702,
self.IO_L11N_N3P5_M0P131_702,
self.IO_L11P_N3P4_M0P130_702,
self.IO_L12N_GC_XCC_N4P1_M0P133_702,
self.IO_L12P_GC_XCC_N4P0_M0P132_702,
self.IO_L13N_N4P3_M0P135_702,
),
right=(
self.IO_L13P_N4P2_M0P134_702,
self.IO_L14N_N4P5_M0P137_702,
self.IO_L14P_N4P4_M0P136_702,
self.IO_L15N_XCC_N5P1_M0P139_702,
self.IO_L15P_XCC_N5P0_M0P138_702,
self.IO_L16N_N5P3_M0P141_702,
self.IO_L16P_N5P2_M0P140_702,
self.IO_L17N_N5P5_M0P143_702,
self.IO_L17P_N5P4_M0P142_702,
self.IO_L18N_XCC_N6P1_M0P145_702,
self.IO_L18P_XCC_N6P0_M0P144_702,
self.IO_L19N_N6P3_M0P147_702,
self.IO_L19P_N6P2_M0P146_702,
self.IO_L20N_N6P5_M0P149_702,
self.IO_L20P_N6P4_M0P148_702,
self.IO_L21N_XCC_N7P1_M0P151_702,
self.IO_L21P_XCC_N7P0_M0P150_702,
self.IO_L22N_N7P3_M0P153_702,
self.IO_L22P_N7P2_M0P152_702,
self.IO_L23N_N7P5_M0P155_702,
self.IO_L23P_N7P4_M0P154_702,
self.IO_L24N_GC_XCC_N8P1_M0P157_702,
self.IO_L24P_GC_XCC_N8P0_M0P156_702,
self.IO_L25N_N8P3_M0P159_702,
self.IO_L25P_N8P2_M0P158_702,
self.IO_L26N_N8P5_M0P161_702,
self.IO_L26P_N8P4_M0P160_702,
),
down=(*self.VCCO_702,),
)
# Dedicated / analog singletons
yield SymbolPartition(
left=(
self.GND_SENSE,
self.GND_SMON,
self.VCCAUX_SMON,
self.VCCINT_SENSE,
self.VCC_BATT,
),
right=(
self.VCC_FUSE,
self.VN_500,
self.VP_500,
self.VREFN_500,
self.VREFP_500,
),
)
# Power/ground: GND[0:64]
yield SymbolPartition(
left=(*self.GND[0:32],),
right=(*self.GND[32:64],),
)
# Power/ground: GND[64:128]
yield SymbolPartition(
left=(*self.GND[64:96],),
right=(*self.GND[96:128],),
)
# Power/ground: GND[128:192]
yield SymbolPartition(
left=(*self.GND[128:160],),
right=(*self.GND[160:192],),
)
# Power/ground: GND[192:256]
yield SymbolPartition(
left=(*self.GND[192:224],),
right=(*self.GND[224:256],),
)
# Power/ground: GND[256:320]
yield SymbolPartition(
left=(*self.GND[256:288],),
right=(*self.GND[288:320],),
)
# Power/ground: GND[320:384]
yield SymbolPartition(
left=(*self.GND[320:352],),
right=(*self.GND[352:384],),
)
# Power/ground: GND[384:448]
yield SymbolPartition(
left=(*self.GND[384:416],),
right=(*self.GND[416:448],),
)
# Power/ground: GND[448:512]
yield SymbolPartition(
left=(*self.GND[448:480],),
right=(*self.GND[480:512],),
)
# Power/ground: GND[512:576]
yield SymbolPartition(
left=(*self.GND[512:544],),
right=(*self.GND[544:576],),
)
# Power/ground: GND[576:640]
yield SymbolPartition(
left=(*self.GND[576:608],),
right=(*self.GND[608:640],),
)
# Power/ground: GND[640:689]
yield SymbolPartition(
left=(*self.GND[640:665],),
right=(*self.GND[665:689],),
)
# Power/ground: VCCINT[0:64]
yield SymbolPartition(
left=(*self.VCCINT[0:32],),
right=(*self.VCCINT[32:64],),
)
# Power/ground: VCCINT[64:84]
yield SymbolPartition(
left=(*self.VCCINT[64:74],),
right=(*self.VCCINT[74:84],),
)
# Power/ground: NC
yield SymbolPartition(
left=(*self.NC[0:30],),
right=(*self.NC[30:60],),
)
# Power/ground: VCC_SOC, GTM_AVTT_L, GTM_AVCC_L, VCCAUX, VCC_RAM, VCCINT_GT_L, GTM_AVTT_RN, GTY_AVTT_RS, VCC_PSFP, GTM_AVCC_RN
yield SymbolPartition(
left=(
*self.VCC_SOC,
*self.GTM_AVTT_L,
*self.GTM_AVCC_L,
),
right=(
*self.VCCAUX,
*self.VCC_RAM,
*self.VCCINT_GT_L,
*self.GTM_AVTT_RN,
*self.GTY_AVTT_RS,
*self.VCC_PSFP,
*self.GTM_AVCC_RN,
),
)
# Power/ground: VCCINT_GT_R, VCC_PMC, VCC_PSLP, GTM_AVCCAUX_L, GTM_AVCCAUX_RN, GTY_AVCCAUX_RS, GTY_AVCC_RS, RSVDGND, VCCAUX_PMC, VCC_IO
yield SymbolPartition(
left=(
*self.VCCINT_GT_R,
*self.VCC_PMC,
*self.VCC_PSLP,
*self.GTM_AVCCAUX_L,
),
right=(
*self.GTM_AVCCAUX_RN,
*self.GTY_AVCCAUX_RS,
*self.GTY_AVCC_RS,
*self.RSVDGND,
*self.VCCAUX_PMC,
*self.VCC_IO,
),
)
def __init__(self):
self.mappings = [
build_pad_mapping(self.landpattern, self.ball_assignments(), TOTAL_BALLS)
]
self.symbols = build_symbols(self.symbol_partitions())
# Ball coordinate tables for the rail lists, (row, col) sorted.
# fmt: off
_GND_BALLS: tuple[tuple[int, int], ...] = (
(0, 0), (0, 3), (0, 4), (0, 5), (0, 8), (0, 13), (0, 18),
(0, 23), (0, 26), (0, 27), (0, 28), (0, 29), (0, 30), (0, 31),
(0, 32), (0, 33), (0, 34), (0, 35), (0, 36), (1, 0), (1, 1),
(1, 2), (1, 5), (1, 6), (1, 7), (1, 8), (1, 10), (1, 15),
(1, 20), (1, 25), (1, 26), (1, 29), (1, 30), (1, 31), (1, 34),
(1, 35), (1, 36), (2, 0), (2, 3), (2, 4), (2, 5), (2, 8),
(2, 12), (2, 17), (2, 22), (2, 26), (2, 27), (2, 28), (2, 31),
(2, 32), (2, 33), (2, 36), (3, 0), (3, 1), (3, 2), (3, 5),
(3, 6), (3, 7), (3, 8), (3, 14), (3, 19), (3, 25), (3, 26),
(3, 27), (3, 28), (3, 29), (3, 30), (3, 31), (3, 34), (3, 35),
(3, 36), (4, 0), (4, 3), (4, 4), (4, 5), (4, 8), (4, 11),
(4, 16), (4, 21), (4, 25), (4, 28), (4, 31), (4, 32), (4, 33),
(4, 36), (5, 0), (5, 1), (5, 2), (5, 5), (5, 6), (5, 7),
(5, 8), (5, 13), (5, 18), (5, 23), (5, 25), (5, 26), (5, 27),
(5, 28), (5, 29), (5, 30), (5, 31), (5, 34), (5, 35), (5, 36),
(6, 0), (6, 3), (6, 4), (6, 5), (6, 8), (6, 9), (6, 10),
(6, 15), (6, 20), (6, 23), (6, 24), (6, 25), (6, 28), (6, 31),
(6, 32), (6, 33), (6, 36), (7, 0), (7, 1), (7, 2), (7, 3),
(7, 6), (7, 7), (7, 8), (7, 10), (7, 11), (7, 15), (7, 17),
(7, 19), (7, 21), (7, 23), (7, 26), (7, 27), (7, 28), (7, 29),
(7, 30), (7, 31), (7, 34), (7, 35), (7, 36), (8, 0), (8, 3),
(8, 4), (8, 5), (8, 6), (8, 9), (8, 11), (8, 12), (8, 14),
(8, 16), (8, 18), (8, 20), (8, 22), (8, 23), (8, 24), (8, 28),
(8, 31), (8, 32), (8, 33), (8, 36), (9, 0), (9, 1), (9, 2),
(9, 3), (9, 6), (9, 7), (9, 11), (9, 13), (9, 15), (9, 17),
(9, 19), (9, 21), (9, 23), (9, 26), (9, 28), (9, 29), (9, 30),
(9, 31), (9, 34), (9, 35), (9, 36), (10, 0), (10, 3), (10, 4),
(10, 5), (10, 6), (10, 9), (10, 11), (10, 12), (10, 14), (10, 16),
(10, 18), (10, 20), (10, 22), (10, 23), (10, 24), (10, 28), (10, 31),
(10, 32), (10, 33), (10, 36), (11, 0), (11, 1), (11, 2), (11, 3),
(11, 6), (11, 7), (11, 11), (11, 13), (11, 15), (11, 17), (11, 19),
(11, 21), (11, 23), (11, 26), (11, 28), (11, 29), (11, 30), (11, 33),
(11, 34), (11, 35), (11, 36), (12, 0), (12, 3), (12, 4), (12, 5),
(12, 6), (12, 8), (12, 9), (12, 11), (12, 12), (12, 14), (12, 16),
(12, 18), (12, 20), (12, 22), (12, 23), (12, 24), (12, 28), (12, 31),
(12, 32), (12, 33), (12, 36), (13, 0), (13, 1), (13, 2), (13, 3),
(13, 6), (13, 7), (13, 8), (13, 10), (13, 11), (13, 13), (13, 15),
(13, 17), (13, 19), (13, 21), (13, 23), (13, 24), (13, 25), (13, 26),
(13, 28), (13, 29), (13, 30), (13, 33), (13, 34), (13, 35), (13, 36),
(14, 0), (14, 3), (14, 4), (14, 5), (14, 8), (14, 9), (14, 11),
(14, 12), (14, 14), (14, 16), (14, 18), (14, 20), (14, 22), (14, 24),
(14, 28), (14, 31), (14, 32), (14, 33), (14, 36), (15, 0), (15, 1),
(15, 2), (15, 3), (15, 6), (15, 7), (15, 8), (15, 11), (15, 13),
(15, 15), (15, 17), (15, 19), (15, 21), (15, 23), (15, 24), (15, 25),
(15, 26), (15, 28), (15, 29), (15, 30), (15, 33), (15, 34), (15, 35),
(15, 36), (16, 0), (16, 3), (16, 4), (16, 5), (16, 8), (16, 9),
(16, 11), (16, 12), (16, 14), (16, 16), (16, 18), (16, 20), (16, 22),
(16, 24), (16, 28), (16, 31), (16, 32), (16, 33), (16, 36), (17, 0),
(17, 1), (17, 2), (17, 3), (17, 6), (17, 7), (17, 8), (17, 10),
(17, 11), (17, 13), (17, 17), (17, 19), (17, 21), (17, 23), (17, 24),
(17, 25), (17, 26), (17, 28), (17, 29), (17, 30), (17, 33), (17, 34),
(17, 35), (17, 36), (18, 0), (18, 1), (18, 2), (18, 3), (18, 4),
(18, 5), (18, 6), (18, 9), (18, 11), (18, 12), (18, 16), (18, 18),
(18, 20), (18, 22), (18, 24), (18, 28), (18, 31), (18, 32), (18, 33),
(18, 36), (19, 2), (19, 3), (19, 4), (19, 7), (19, 11), (19, 13),
(19, 17), (19, 19), (19, 21), (19, 23), (19, 24), (19, 25), (19, 26),
(19, 28), (19, 29), (19, 30), (19, 33), (19, 34), (19, 35), (19, 36),
(20, 0), (20, 1), (20, 4), (20, 5), (20, 9), (20, 11), (20, 12),
(20, 16), (20, 18), (20, 20), (20, 22), (20, 24), (20, 28), (20, 31),
(20, 32), (20, 33), (20, 36), (21, 2), (21, 3), (21, 4), (21, 7),
(21, 9), (21, 10), (21, 11), (21, 13), (21, 15), (21, 17), (21, 19),
(21, 21), (21, 23), (21, 24), (21, 25), (21, 26), (21, 28), (21, 29),
(21, 30), (21, 33), (21, 34), (21, 35), (21, 36), (22, 0), (22, 1),
(22, 4), (22, 5), (22, 7), (22, 8), (22, 9), (22, 11), (22, 14),
(22, 16), (22, 18), (22, 20), (22, 22), (22, 24), (22, 28), (22, 31),
(22, 32), (22, 33), (22, 36), (23, 0), (23, 1), (23, 2), (23, 3),
(23, 4), (23, 7), (23, 10), (23, 13), (23, 17), (23, 19), (23, 21),
(23, 23), (23, 24), (23, 25), (23, 26), (23, 28), (23, 29), (23, 30),
(23, 31), (23, 34), (23, 35), (23, 36), (24, 2), (24, 3), (24, 4),
(24, 5), (24, 6), (24, 7), (24, 9), (24, 12), (24, 15), (24, 16),
(24, 18), (24, 20), (24, 22), (24, 24), (24, 26), (24, 27), (24, 28),
(24, 31), (24, 32), (24, 33), (24, 36), (25, 0), (25, 1), (25, 4),
(25, 7), (25, 8), (25, 11), (25, 14), (25, 17), (25, 19), (25, 21),
(25, 23), (25, 25), (25, 27), (25, 28), (25, 29), (25, 30), (25, 31),
(25, 34), (25, 35), (25, 36), (26, 2), (26, 3), (26, 4), (26, 5),
(26, 6), (26, 7), (26, 10), (26, 12), (26, 14), (26, 16), (26, 18),
(26, 20), (26, 22), (26, 24), (26, 26), (26, 27), (26, 28), (26, 31),
(26, 32), (26, 33), (26, 36), (27, 0), (27, 1), (27, 4), (27, 6),
(27, 9), (27, 11), (27, 13), (27, 15), (27, 17), (27, 19), (27, 21),
(27, 23), (27, 25), (27, 27), (27, 28), (27, 29), (27, 30), (27, 31),
(27, 34), (27, 35), (27, 36), (28, 2), (28, 3), (28, 4), (28, 8),
(28, 10), (28, 12), (28, 14), (28, 16), (28, 18), (28, 20), (28, 22),
(28, 24), (28, 26), (28, 28), (28, 31), (28, 32), (28, 33), (28, 36),
(29, 0), (29, 1), (29, 4), (29, 7), (29, 10), (29, 13), (29, 16),
(29, 19), (29, 22), (29, 25), (29, 28), (29, 29), (29, 30), (29, 33),
(29, 34), (29, 35), (29, 36), (30, 2), (30, 3), (30, 4), (30, 6),
(30, 9), (30, 12), (30, 15), (30, 18), (30, 21), (30, 24), (30, 27),
(30, 28), (30, 31), (30, 32), (30, 33), (30, 36), (31, 0), (31, 1),
(31, 4), (31, 5), (31, 8), (31, 11), (31, 14), (31, 17), (31, 20),
(31, 23), (31, 26), (31, 28), (31, 29), (31, 30), (31, 33), (31, 34),
(31, 35), (31, 36), (32, 0), (32, 1), (32, 2), (32, 3), (32, 4),
(32, 7), (32, 12), (32, 17), (32, 22), (32, 27), (32, 30), (32, 31),
(32, 32), (32, 33), (32, 36), (33, 2), (33, 3), (33, 4), (33, 9),
(33, 14), (33, 19), (33, 24), (33, 29), (33, 33), (33, 34), (33, 35),
(33, 36), (34, 0), (34, 1), (34, 4), (34, 6), (34, 11), (34, 16),
(34, 21), (34, 26), (34, 31), (34, 36), (35, 2), (35, 3), (35, 4),
(35, 8), (35, 13), (35, 18), (35, 23), (35, 28), (35, 33), (36, 0),
(36, 1), (36, 4), (36, 5), (36, 10), (36, 15), (36, 20), (36, 25),
(36, 30), (36, 35), (36, 36),
)
# fmt: on
# fmt: off
_GTM_AVCCAUX_L_BALLS: tuple[tuple[int, int], ...] = (
(16, 25), (18, 25),
)
# fmt: on
# fmt: off
_GTM_AVCCAUX_RN_BALLS: tuple[tuple[int, int], ...] = (
(10, 10), (12, 10),
)
# fmt: on
# fmt: off
_GTM_AVCC_L_BALLS: tuple[tuple[int, int], ...] = (
(8, 25), (10, 25), (12, 25), (14, 25), (20, 25), (22, 25),
)
# fmt: on
# fmt: off
_GTM_AVCC_RN_BALLS: tuple[tuple[int, int], ...] = (
(8, 10), (13, 9), (14, 10),
)
# fmt: on
# fmt: off
_GTM_AVTT_L_BALLS: tuple[tuple[int, int], ...] = (
(9, 27), (11, 27), (13, 27), (15, 27), (17, 27), (19, 27), (21, 27),
(23, 27),
)
# fmt: on
# fmt: off
_GTM_AVTT_RN_BALLS: tuple[tuple[int, int], ...] = (
(7, 9), (9, 8), (11, 8), (12, 7),
)
# fmt: on
# fmt: off
_GTY_AVCCAUX_RS_BALLS: tuple[tuple[int, int], ...] = (
(17, 9), (18, 10),
)
# fmt: on
# fmt: off
_GTY_AVCC_RS_BALLS: tuple[tuple[int, int], ...] = (
(16, 10), (20, 10),
)
# fmt: on
# fmt: off
_GTY_AVTT_RS_BALLS: tuple[tuple[int, int], ...] = (
(19, 8), (20, 6), (21, 8), (22, 6),
)
# fmt: on
# fmt: off
_NC_BALLS: tuple[tuple[int, int], ...] = (
(0, 1), (0, 2), (0, 6), (0, 7), (1, 3), (1, 4), (2, 1),
(2, 2), (2, 6), (2, 7), (3, 3), (3, 4), (4, 1), (4, 2),
(4, 6), (4, 7), (5, 3), (5, 4), (6, 1), (6, 2), (6, 6),
(6, 7), (7, 4), (7, 5), (8, 1), (8, 2), (8, 7), (8, 8),
(9, 4), (9, 5), (9, 9), (9, 10), (10, 1), (10, 2), (10, 7),
(10, 8), (11, 4), (11, 5), (11, 9), (11, 10), (12, 1), (12, 2),
(13, 4), (13, 5), (14, 1), (14, 2), (14, 6), (14, 7), (15, 4),
(15, 5), (16, 1), (16, 2), (16, 6), (16, 7), (17, 4), (17, 5),
(18, 7), (18, 8), (19, 9), (19, 10),
)
# fmt: on
# fmt: off
_RSVDGND_BALLS: tuple[tuple[int, int], ...] = (
(20, 14), (20, 15),
)
# fmt: on
# fmt: off
_VCCAUX_BALLS: tuple[tuple[int, int], ...] = (
(15, 16), (15, 18), (15, 20), (24, 17), (24, 19), (24, 21),
)
# fmt: on
# fmt: off
_VCCAUX_PMC_BALLS: tuple[tuple[int, int], ...] = (
(22, 13), (23, 14),
)
# fmt: on
# fmt: off
_VCCINT_BALLS: tuple[tuple[int, int], ...] = (
(7, 14), (7, 16), (7, 18), (7, 20), (7, 22), (8, 13), (8, 15),
(8, 17), (8, 19), (8, 21), (9, 14), (9, 16), (9, 18), (9, 20),
(9, 22), (11, 14), (11, 16), (11, 18), (11, 20), (11, 22), (12, 13),
(12, 21), (13, 14), (13, 16), (13, 18), (13, 20), (13, 22), (14, 13),
(14, 15), (14, 17), (14, 19), (14, 21), (15, 12), (15, 14), (15, 22),
(16, 13), (16, 15), (16, 17), (16, 19), (16, 21), (17, 12), (17, 16),
(17, 18), (17, 20), (17, 22), (18, 13), (18, 17), (18, 19), (18, 21),
(19, 12), (19, 16), (19, 18), (19, 20), (19, 22), (20, 13), (20, 17),
(20, 19), (20, 21), (21, 12), (21, 14), (21, 16), (22, 17), (22, 19),
(22, 21), (23, 16), (23, 18), (23, 20), (23, 22), (24, 23), (24, 25),
(25, 16), (25, 18), (25, 20), (25, 22), (25, 24), (25, 26), (26, 11),
(26, 13), (26, 15), (26, 17), (26, 19), (26, 21), (26, 23), (26, 25),
)
# fmt: on
# fmt: off
_VCCINT_GT_L_BALLS: tuple[tuple[int, int], ...] = (
(14, 23), (16, 23), (18, 23), (20, 23), (22, 23),
)
# fmt: on
# fmt: off
_VCCINT_GT_R_BALLS: tuple[tuple[int, int], ...] = (
(9, 12), (11, 12), (13, 12),
)
# fmt: on
# fmt: off
_VCCO_500_BALLS: tuple[tuple[int, int], ...] = (
(24, 8), (25, 9),
)
# fmt: on
# fmt: off
_VCCO_501_BALLS: tuple[tuple[int, int], ...] = (
(27, 7), (27, 8),
)
# fmt: on
# fmt: off
_VCCO_502_BALLS: tuple[tuple[int, int], ...] = (
(23, 8), (23, 9),
)
# fmt: on
# fmt: off
_VCCO_503_BALLS: tuple[tuple[int, int], ...] = (
(26, 8), (26, 9),
)
# fmt: on
# fmt: off
_VCCO_700_BALLS: tuple[tuple[int, int], ...] = (
(31, 9), (32, 9), (32, 10),
)
# fmt: on
# fmt: off
_VCCO_701_BALLS: tuple[tuple[int, int], ...] = (
(31, 12), (31, 13), (32, 13),
)
# fmt: on
# fmt: off
_VCCO_702_BALLS: tuple[tuple[int, int], ...] = (
(31, 16), (32, 15), (32, 16),
)
# fmt: on
# fmt: off
_VCC_IO_BALLS: tuple[tuple[int, int], ...] = (
(28, 13), (28, 15),
)
# fmt: on
# fmt: off
_VCC_PMC_BALLS: tuple[tuple[int, int], ...] = (
(22, 12), (23, 11), (23, 12),
)
# fmt: on
# fmt: off
_VCC_PSFP_BALLS: tuple[tuple[int, int], ...] = (
(25, 10), (25, 12), (25, 13), (25, 15),
)
# fmt: on
# fmt: off
_VCC_PSLP_BALLS: tuple[tuple[int, int], ...] = (
(24, 11), (24, 13), (24, 14),
)
# fmt: on
# fmt: off
_VCC_RAM_BALLS: tuple[tuple[int, int], ...] = (
(12, 15), (12, 17), (12, 19), (21, 18), (21, 20), (21, 22),
)
# fmt: on
# fmt: off
_VCC_SOC_BALLS: tuple[tuple[int, int], ...] = (
(10, 13), (10, 15), (10, 17), (10, 19), (10, 21), (27, 10), (27, 12),
(27, 14), (27, 16), (27, 18), (27, 20), (27, 22), (27, 24), (27, 26),
(28, 17), (28, 19), (28, 21), (28, 23),
)
# fmt: on
Device: type[XCVP1002] = XCVP1002