Source code for jitxexamples.jumpstart_kits.js1_stackup_components.versal_fpga.xcvp1002

"""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
from dataclasses import dataclass
from enum import Enum

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 DDRMC(Enum): """The "DDRMC Only" column of the pin file, for an XPIO pin. Defined in AM013 "About ASCII Package Files". NO does not exclude a pin from DDR memory use: it means the pin also has full access to I/O logic resources.""" YES = "YES" "DDR memory applications only; no full access to I/O logic" YES_PLUS_GC = "YES_PLUS_GC" "DDR memory applications, with full access to clock management" NO = "NO" "Full access to I/O logic resources"
[docs] @dataclass(frozen=True) class TripletPin: """One XPIO pin of a DDRMC triplet and its DDRMC column value.""" port: Port ddrmc: DDRMC
[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 xpio_triplet_pins(self) -> dict[int, tuple[TripletPin, ...]]: """XPIO pins of each DDRMC triplet, keyed by triplet number. Tuple index ``i`` is pin ``MxPi`` of the pin file: bank ``i // 54`` of the triplet, nibble ``i % 54 // 6``, pin ``i % 6``. """ m0 = ( # banks 700/701/702 TripletPin(self.IO_L0P_XCC_N0P0_M0P0_700, DDRMC.YES), TripletPin(self.IO_L0N_XCC_N0P1_M0P1_700, DDRMC.YES), TripletPin(self.IO_L1P_N0P2_M0P2_700, DDRMC.YES), TripletPin(self.IO_L1N_N0P3_M0P3_700, DDRMC.YES), TripletPin(self.IO_L2P_N0P4_M0P4_700, DDRMC.YES), TripletPin(self.IO_L2N_N0P5_M0P5_700, DDRMC.YES), TripletPin(self.IO_L3P_XCC_N1P0_M0P6_700, DDRMC.YES), TripletPin(self.IO_L3N_XCC_N1P1_M0P7_700, DDRMC.YES), TripletPin(self.IO_L4P_N1P2_M0P8_700, DDRMC.YES), TripletPin(self.IO_L4N_N1P3_M0P9_700, DDRMC.YES), TripletPin(self.IO_L5P_N1P4_M0P10_700, DDRMC.YES), TripletPin(self.IO_L5N_N1P5_M0P11_700, DDRMC.YES), TripletPin(self.IO_L6P_GC_XCC_N2P0_M0P12_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L6N_GC_XCC_N2P1_M0P13_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L7P_N2P2_M0P14_700, DDRMC.YES), TripletPin(self.IO_L7N_N2P3_M0P15_700, DDRMC.YES), TripletPin(self.IO_L8P_N2P4_M0P16_700, DDRMC.YES), TripletPin(self.IO_L8N_N2P5_M0P17_700, DDRMC.YES), TripletPin(self.IO_L9P_GC_XCC_N3P0_M0P18_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L9N_GC_XCC_N3P1_M0P19_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L10P_N3P2_M0P20_700, DDRMC.YES), TripletPin(self.IO_L10N_N3P3_M0P21_700, DDRMC.YES), TripletPin(self.IO_L11P_N3P4_M0P22_700, DDRMC.YES), TripletPin(self.IO_L11N_N3P5_M0P23_700, DDRMC.YES), TripletPin(self.IO_L12P_GC_XCC_N4P0_M0P24_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L12N_GC_XCC_N4P1_M0P25_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L13P_N4P2_M0P26_700, DDRMC.YES), TripletPin(self.IO_L13N_N4P3_M0P27_700, DDRMC.YES), TripletPin(self.IO_L14P_N4P4_M0P28_700, DDRMC.YES), TripletPin(self.IO_L14N_N4P5_M0P29_700, DDRMC.YES), TripletPin(self.IO_L15P_XCC_N5P0_M0P30_700, DDRMC.YES), TripletPin(self.IO_L15N_XCC_N5P1_M0P31_700, DDRMC.YES), TripletPin(self.IO_L16P_N5P2_M0P32_700, DDRMC.YES), TripletPin(self.IO_L16N_N5P3_M0P33_700, DDRMC.YES), TripletPin(self.IO_L17P_N5P4_M0P34_700, DDRMC.YES), TripletPin(self.IO_L17N_N5P5_M0P35_700, DDRMC.YES), TripletPin(self.IO_L18P_XCC_N6P0_M0P36_700, DDRMC.YES), TripletPin(self.IO_L18N_XCC_N6P1_M0P37_700, DDRMC.YES), TripletPin(self.IO_L19P_N6P2_M0P38_700, DDRMC.YES), TripletPin(self.IO_L19N_N6P3_M0P39_700, DDRMC.YES), TripletPin(self.IO_L20P_N6P4_M0P40_700, DDRMC.YES), TripletPin(self.IO_L20N_N6P5_M0P41_700, DDRMC.YES), TripletPin(self.IO_L21P_XCC_N7P0_M0P42_700, DDRMC.YES), TripletPin(self.IO_L21N_XCC_N7P1_M0P43_700, DDRMC.YES), TripletPin(self.IO_L22P_N7P2_M0P44_700, DDRMC.YES), TripletPin(self.IO_L22N_N7P3_M0P45_700, DDRMC.YES), TripletPin(self.IO_L23P_N7P4_M0P46_700, DDRMC.YES), TripletPin(self.IO_L23N_N7P5_M0P47_700, DDRMC.YES), TripletPin(self.IO_L24P_GC_XCC_N8P0_M0P48_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L24N_GC_XCC_N8P1_M0P49_700, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L25P_N8P2_M0P50_700, DDRMC.YES), TripletPin(self.IO_L25N_N8P3_M0P51_700, DDRMC.YES), TripletPin(self.IO_L26P_N8P4_M0P52_700, DDRMC.YES), TripletPin(self.IO_L26N_N8P5_M0P53_700, DDRMC.YES), TripletPin(self.IO_L0P_XCC_N0P0_M0P54_701, DDRMC.YES), TripletPin(self.IO_L0N_XCC_N0P1_M0P55_701, DDRMC.YES), TripletPin(self.IO_L1P_N0P2_M0P56_701, DDRMC.YES), TripletPin(self.IO_L1N_N0P3_M0P57_701, DDRMC.YES), TripletPin(self.IO_L2P_N0P4_M0P58_701, DDRMC.YES), TripletPin(self.IO_L2N_N0P5_M0P59_701, DDRMC.YES), TripletPin(self.IO_L3P_XCC_N1P0_M0P60_701, DDRMC.YES), TripletPin(self.IO_L3N_XCC_N1P1_M0P61_701, DDRMC.YES), TripletPin(self.IO_L4P_N1P2_M0P62_701, DDRMC.YES), TripletPin(self.IO_L4N_N1P3_M0P63_701, DDRMC.YES), TripletPin(self.IO_L5P_N1P4_M0P64_701, DDRMC.YES), TripletPin(self.IO_L5N_N1P5_M0P65_701, DDRMC.YES), TripletPin(self.IO_L6P_GC_XCC_N2P0_M0P66_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L6N_GC_XCC_N2P1_M0P67_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L7P_N2P2_M0P68_701, DDRMC.YES), TripletPin(self.IO_L7N_N2P3_M0P69_701, DDRMC.YES), TripletPin(self.IO_L8P_N2P4_M0P70_701, DDRMC.YES), TripletPin(self.IO_L8N_N2P5_M0P71_701, DDRMC.YES), TripletPin(self.IO_L9P_GC_XCC_N3P0_M0P72_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L9N_GC_XCC_N3P1_M0P73_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L10P_N3P2_M0P74_701, DDRMC.YES), TripletPin(self.IO_L10N_N3P3_M0P75_701, DDRMC.YES), TripletPin(self.IO_L11P_N3P4_M0P76_701, DDRMC.YES), TripletPin(self.IO_L11N_N3P5_M0P77_701, DDRMC.YES), TripletPin(self.IO_L12P_GC_XCC_N4P0_M0P78_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L12N_GC_XCC_N4P1_M0P79_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L13P_N4P2_M0P80_701, DDRMC.YES), TripletPin(self.IO_L13N_N4P3_M0P81_701, DDRMC.YES), TripletPin(self.IO_L14P_N4P4_M0P82_701, DDRMC.YES), TripletPin(self.IO_L14N_N4P5_M0P83_701, DDRMC.YES), TripletPin(self.IO_L15P_XCC_N5P0_M0P84_701, DDRMC.YES), TripletPin(self.IO_L15N_XCC_N5P1_M0P85_701, DDRMC.YES), TripletPin(self.IO_L16P_N5P2_M0P86_701, DDRMC.YES), TripletPin(self.IO_L16N_N5P3_M0P87_701, DDRMC.YES), TripletPin(self.IO_L17P_N5P4_M0P88_701, DDRMC.YES), TripletPin(self.IO_L17N_N5P5_M0P89_701, DDRMC.YES), TripletPin(self.IO_L18P_XCC_N6P0_M0P90_701, DDRMC.YES), TripletPin(self.IO_L18N_XCC_N6P1_M0P91_701, DDRMC.YES), TripletPin(self.IO_L19P_N6P2_M0P92_701, DDRMC.YES), TripletPin(self.IO_L19N_N6P3_M0P93_701, DDRMC.YES), TripletPin(self.IO_L20P_N6P4_M0P94_701, DDRMC.YES), TripletPin(self.IO_L20N_N6P5_M0P95_701, DDRMC.YES), TripletPin(self.IO_L21P_XCC_N7P0_M0P96_701, DDRMC.YES), TripletPin(self.IO_L21N_XCC_N7P1_M0P97_701, DDRMC.YES), TripletPin(self.IO_L22P_N7P2_M0P98_701, DDRMC.YES), TripletPin(self.IO_L22N_N7P3_M0P99_701, DDRMC.YES), TripletPin(self.IO_L23P_N7P4_M0P100_701, DDRMC.YES), TripletPin(self.IO_L23N_N7P5_M0P101_701, DDRMC.YES), TripletPin(self.IO_L24P_GC_XCC_N8P0_M0P102_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L24N_GC_XCC_N8P1_M0P103_701, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L25P_N8P2_M0P104_701, DDRMC.YES), TripletPin(self.IO_L25N_N8P3_M0P105_701, DDRMC.YES), TripletPin(self.IO_L26P_N8P4_M0P106_701, DDRMC.YES), TripletPin(self.IO_L26N_N8P5_M0P107_701, DDRMC.YES), TripletPin(self.IO_L0P_XCC_N0P0_M0P108_702, DDRMC.YES), TripletPin(self.IO_L0N_XCC_N0P1_M0P109_702, DDRMC.YES), TripletPin(self.IO_L1P_N0P2_M0P110_702, DDRMC.YES), TripletPin(self.IO_L1N_N0P3_M0P111_702, DDRMC.YES), TripletPin(self.IO_L2P_N0P4_M0P112_702, DDRMC.YES), TripletPin(self.IO_L2N_N0P5_M0P113_702, DDRMC.YES), TripletPin(self.IO_L3P_XCC_N1P0_M0P114_702, DDRMC.YES), TripletPin(self.IO_L3N_XCC_N1P1_M0P115_702, DDRMC.YES), TripletPin(self.IO_L4P_N1P2_M0P116_702, DDRMC.YES), TripletPin(self.IO_L4N_N1P3_M0P117_702, DDRMC.YES), TripletPin(self.IO_L5P_N1P4_M0P118_702, DDRMC.YES), TripletPin(self.IO_L5N_N1P5_M0P119_702, DDRMC.YES), TripletPin(self.IO_L6P_GC_XCC_N2P0_M0P120_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L6N_GC_XCC_N2P1_M0P121_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L7P_N2P2_M0P122_702, DDRMC.YES), TripletPin(self.IO_L7N_N2P3_M0P123_702, DDRMC.YES), TripletPin(self.IO_L8P_N2P4_M0P124_702, DDRMC.YES), TripletPin(self.IO_L8N_N2P5_M0P125_702, DDRMC.YES), TripletPin(self.IO_L9P_GC_XCC_N3P0_M0P126_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L9N_GC_XCC_N3P1_M0P127_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L10P_N3P2_M0P128_702, DDRMC.YES), TripletPin(self.IO_L10N_N3P3_M0P129_702, DDRMC.YES), TripletPin(self.IO_L11P_N3P4_M0P130_702, DDRMC.YES), TripletPin(self.IO_L11N_N3P5_M0P131_702, DDRMC.YES), TripletPin(self.IO_L12P_GC_XCC_N4P0_M0P132_702, DDRMC.NO), TripletPin(self.IO_L12N_GC_XCC_N4P1_M0P133_702, DDRMC.NO), TripletPin(self.IO_L13P_N4P2_M0P134_702, DDRMC.NO), TripletPin(self.IO_L13N_N4P3_M0P135_702, DDRMC.NO), TripletPin(self.IO_L14P_N4P4_M0P136_702, DDRMC.NO), TripletPin(self.IO_L14N_N4P5_M0P137_702, DDRMC.NO), TripletPin(self.IO_L15P_XCC_N5P0_M0P138_702, DDRMC.NO), TripletPin(self.IO_L15N_XCC_N5P1_M0P139_702, DDRMC.NO), TripletPin(self.IO_L16P_N5P2_M0P140_702, DDRMC.NO), TripletPin(self.IO_L16N_N5P3_M0P141_702, DDRMC.NO), TripletPin(self.IO_L17P_N5P4_M0P142_702, DDRMC.NO), TripletPin(self.IO_L17N_N5P5_M0P143_702, DDRMC.NO), TripletPin(self.IO_L18P_XCC_N6P0_M0P144_702, DDRMC.NO), TripletPin(self.IO_L18N_XCC_N6P1_M0P145_702, DDRMC.NO), TripletPin(self.IO_L19P_N6P2_M0P146_702, DDRMC.NO), TripletPin(self.IO_L19N_N6P3_M0P147_702, DDRMC.NO), TripletPin(self.IO_L20P_N6P4_M0P148_702, DDRMC.NO), TripletPin(self.IO_L20N_N6P5_M0P149_702, DDRMC.NO), TripletPin(self.IO_L21P_XCC_N7P0_M0P150_702, DDRMC.NO), TripletPin(self.IO_L21N_XCC_N7P1_M0P151_702, DDRMC.NO), TripletPin(self.IO_L22P_N7P2_M0P152_702, DDRMC.NO), TripletPin(self.IO_L22N_N7P3_M0P153_702, DDRMC.NO), TripletPin(self.IO_L23P_N7P4_M0P154_702, DDRMC.NO), TripletPin(self.IO_L23N_N7P5_M0P155_702, DDRMC.NO), TripletPin(self.IO_L24P_GC_XCC_N8P0_M0P156_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L24N_GC_XCC_N8P1_M0P157_702, DDRMC.YES_PLUS_GC), TripletPin(self.IO_L25P_N8P2_M0P158_702, DDRMC.YES), TripletPin(self.IO_L25N_N8P3_M0P159_702, DDRMC.YES), TripletPin(self.IO_L26P_N8P4_M0P160_702, DDRMC.YES), TripletPin(self.IO_L26N_N8P5_M0P161_702, DDRMC.YES), ) return {0: m0}
[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