from collections import defaultdict
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE

from skidl.pin import pin_types

SKIDL_lib_version = '0.0.1'

MCU_SiFive = SchLib(tool=SKIDL).add_parts(*[
        Part(**{ 'name':'FE310-G000', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'FE310-G000'}), 'ref_prefix':'U', 'fplist':['Package_DFN_QFN:QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias'], 'footprint':'Package_DFN_QFN:QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias', 'keywords':'microcontroller RISC-V SiFive', 'description':'', 'datasheet':'https://sifive.cdn.prismic.io/sifive%2Ffeb6f967-ff96-418f-9af4-a7f3b7fd1dfc_fe310-g000-ds.pdf', 'search_text':'/usr/share/kicad/symbols/MCU_SiFive.kicad_sym\nFE310-G000\n\nmicrocontroller RISC-V SiFive', 'pins':[
            Pin(num='1',name='QSPI_DQ_3',func=pin_types.BIDIR,unit=1),
            Pin(num='10',name='XTAL_XO',func=pin_types.OUTPUT,unit=1),
            Pin(num='11',name='IVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='12',name='OTP_AIVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='13',name='JTAG_TCK',func=pin_types.INPUT,unit=1),
            Pin(num='14',name='JTAG_TDO',func=pin_types.OUTPUT,unit=1),
            Pin(num='15',name='JTAG_TMS',func=pin_types.INPUT,unit=1),
            Pin(num='16',name='JTAG_TDI',func=pin_types.INPUT,unit=1),
            Pin(num='17',name='AON_PMU_OUT_1',func=pin_types.OUTPUT,unit=1),
            Pin(num='18',name='~{AON_PMU_DWAKEUP}',func=pin_types.INPUT,unit=1),
            Pin(num='19',name='AON_IVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='2',name='QSPI_DQ_2',func=pin_types.BIDIR,unit=1),
            Pin(num='20',name='AON_PSD_LFALTCLK',func=pin_types.INPUT,unit=1),
            Pin(num='21',name='AON_PSD_LFCLKSEL',func=pin_types.INPUT,unit=1),
            Pin(num='22',name='AON_PMU_OUT_0',func=pin_types.OUTPUT,unit=1),
            Pin(num='23',name='AON_VDD',func=pin_types.PWRIN,unit=1),
            Pin(num='24',name='~{AON_ERST}',func=pin_types.INPUT,unit=1),
            Pin(num='25',name='GPIO_0',func=pin_types.BIDIR,unit=1),
            Pin(num='26',name='GPIO_1',func=pin_types.BIDIR,unit=1),
            Pin(num='27',name='GPIO_2',func=pin_types.BIDIR,unit=1),
            Pin(num='28',name='GPIO_3',func=pin_types.BIDIR,unit=1),
            Pin(num='29',name='GPIO_4',func=pin_types.BIDIR,unit=1),
            Pin(num='3',name='QSPI_DQ_1',func=pin_types.BIDIR,unit=1),
            Pin(num='30',name='VDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='31',name='GPIO_5',func=pin_types.BIDIR,unit=1),
            Pin(num='32',name='IVDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='33',name='GPIO_9',func=pin_types.BIDIR,unit=1),
            Pin(num='34',name='GPIO_10',func=pin_types.BIDIR,unit=1),
            Pin(num='35',name='GPIO_11',func=pin_types.BIDIR,unit=1),
            Pin(num='36',name='GPIO_12',func=pin_types.BIDIR,unit=1),
            Pin(num='37',name='GPIO_13',func=pin_types.BIDIR,unit=1),
            Pin(num='38',name='GPIO_16',func=pin_types.BIDIR,unit=1),
            Pin(num='39',name='GPIO_17',func=pin_types.BIDIR,unit=1),
            Pin(num='4',name='QSPI_DQ_0',func=pin_types.BIDIR,unit=1),
            Pin(num='40',name='GPIO_18',func=pin_types.BIDIR,unit=1),
            Pin(num='41',name='GPIO_19',func=pin_types.BIDIR,unit=1),
            Pin(num='42',name='GPIO_20',func=pin_types.BIDIR,unit=1),
            Pin(num='43',name='GPIO_21',func=pin_types.BIDIR,unit=1),
            Pin(num='44',name='GPIO_22',func=pin_types.BIDIR,unit=1),
            Pin(num='45',name='GPIO_23',func=pin_types.BIDIR,unit=1),
            Pin(num='46',name='VDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='47',name='IVDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='48',name='QSPI_SCK',func=pin_types.OUTPUT,unit=1),
            Pin(num='49',name='GND',func=pin_types.PWRIN,unit=1),
            Pin(num='5',name='~{QSPI_CS}',func=pin_types.OUTPUT,unit=1),
            Pin(num='6',name='VDD',func=pin_types.PWRIN,unit=1),
            Pin(num='7',name='PLL_AVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='8',name='PLL_AVSS',func=pin_types.PWRIN,unit=1),
            Pin(num='9',name='XTAL_XI',func=pin_types.INPUT,unit=1)], 'unit_defs':[] }),
        Part(**{ 'name':'FU540-C000', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'FU540-C000'}), 'ref_prefix':'U', 'fplist':['Package_BGA:BGA-484_23.0x23.0mm_Layout22x22_P1.0mm'], 'footprint':'Package_BGA:BGA-484_23.0x23.0mm_Layout22x22_P1.0mm', 'keywords':'SiFive', 'description':'', 'datasheet':'https://static.dev.sifive.com/FU540-C000-v1.0.pdf', 'search_text':'/usr/share/kicad/symbols/MCU_SiFive.kicad_sym\nFU540-C000\n\nSiFive', 'pins':[
            Pin(num='AA18',name='CL_0_B2C_D_2',func=pin_types.INPUT,unit=1),
            Pin(num='AA19',name='CL_0_B2C_D_8',func=pin_types.INPUT,unit=1),
            Pin(num='AA20',name='CL_0_B2C_D_23',func=pin_types.INPUT,unit=1),
            Pin(num='AA21',name='CL_0_B2C_D_29',func=pin_types.INPUT,unit=1),
            Pin(num='AA22',name='CL_0_B2C_CLK',func=pin_types.INPUT,unit=1),
            Pin(num='AB18',name='CL_0_B2C_D_1',func=pin_types.INPUT,unit=1),
            Pin(num='AB19',name='CL_0_B2C_D_13',func=pin_types.INPUT,unit=1),
            Pin(num='AB20',name='CL_0_B2C_D_22',func=pin_types.INPUT,unit=1),
            Pin(num='AB21',name='CL_0_B2C_D_26',func=pin_types.INPUT,unit=1),
            Pin(num='K19',name='CL_0_C2B_D_28',func=pin_types.OUTPUT,unit=1),
            Pin(num='K20',name='CL_0_C2B_D_24',func=pin_types.OUTPUT,unit=1),
            Pin(num='K22',name='CL_0_C2B_D_26',func=pin_types.OUTPUT,unit=1),
            Pin(num='L17',name='CL_0_C2B_D_31',func=pin_types.OUTPUT,unit=1),
            Pin(num='L18',name='CL_0_C2B_D_30',func=pin_types.OUTPUT,unit=1),
            Pin(num='L19',name='CL_0_C2B_D_27',func=pin_types.OUTPUT,unit=1),
            Pin(num='L20',name='CL_0_C2B_D_20',func=pin_types.OUTPUT,unit=1),
            Pin(num='L21',name='CL_0_C2B_D_18',func=pin_types.OUTPUT,unit=1),
            Pin(num='L22',name='CL_0_C2B_D_29',func=pin_types.OUTPUT,unit=1),
            Pin(num='M17',name='CL_0_C2B_D_15',func=pin_types.OUTPUT,unit=1),
            Pin(num='M18',name='CL_0_C2B_D_19',func=pin_types.OUTPUT,unit=1),
            Pin(num='M19',name='CL_0_C2B_D_23',func=pin_types.OUTPUT,unit=1),
            Pin(num='M20',name='CL_0_C2B_D_12',func=pin_types.OUTPUT,unit=1),
            Pin(num='M21',name='CL_0_C2B_D_25',func=pin_types.OUTPUT,unit=1),
            Pin(num='M22',name='CL_0_C2B_D_22',func=pin_types.OUTPUT,unit=1),
            Pin(num='N17',name='CL_0_C2B_SEND',func=pin_types.OUTPUT,unit=1),
            Pin(num='N18',name='CL_0_C2B_D_2',func=pin_types.OUTPUT,unit=1),
            Pin(num='N19',name='CL_0_C2B_D_6',func=pin_types.OUTPUT,unit=1),
            Pin(num='N20',name='CL_0_C2B_D_21',func=pin_types.OUTPUT,unit=1),
            Pin(num='N21',name='CL_0_C2B_D_16',func=pin_types.OUTPUT,unit=1),
            Pin(num='N22',name='CL_0_C2B_D_14',func=pin_types.OUTPUT,unit=1),
            Pin(num='P17',name='CL_0_B2C_RST',func=pin_types.INPUT,unit=1),
            Pin(num='P18',name='CL_0_B2C_D_21',func=pin_types.INPUT,unit=1),
            Pin(num='P19',name='CL_0_C2B_CLK',func=pin_types.OUTPUT,unit=1),
            Pin(num='P20',name='CL_0_C2B_D_4',func=pin_types.OUTPUT,unit=1),
            Pin(num='R17',name='CL_0_B2C_D_24',func=pin_types.INPUT,unit=1),
            Pin(num='R18',name='CL_0_B2C_D_17',func=pin_types.INPUT,unit=1),
            Pin(num='R19',name='CL_0_C2B_D_1',func=pin_types.OUTPUT,unit=1),
            Pin(num='R20',name='CL_0_C2B_D_3',func=pin_types.OUTPUT,unit=1),
            Pin(num='R21',name='CL_0_C2B_D_8',func=pin_types.OUTPUT,unit=1),
            Pin(num='R22',name='CL_0_C2B_D_17',func=pin_types.OUTPUT,unit=1),
            Pin(num='T18',name='CL_0_B2C_D_19',func=pin_types.INPUT,unit=1),
            Pin(num='T19',name='CL_0_C2B_D_0',func=pin_types.OUTPUT,unit=1),
            Pin(num='T20',name='CL_0_C2B_RST',func=pin_types.OUTPUT,unit=1),
            Pin(num='T21',name='CL_0_C2B_D_13',func=pin_types.OUTPUT,unit=1),
            Pin(num='T22',name='CL_0_C2B_D_10',func=pin_types.OUTPUT,unit=1),
            Pin(num='U17',name='CL_0_B2C_D_20',func=pin_types.INPUT,unit=1),
            Pin(num='U18',name='CL_0_B2C_D_14',func=pin_types.INPUT,unit=1),
            Pin(num='U19',name='CL_0_B2C_D_18',func=pin_types.INPUT,unit=1),
            Pin(num='U20',name='CL_0_C2B_D_5',func=pin_types.OUTPUT,unit=1),
            Pin(num='U21',name='CL_0_C2B_D_11',func=pin_types.OUTPUT,unit=1),
            Pin(num='U22',name='CL_0_C2B_D_7',func=pin_types.OUTPUT,unit=1),
            Pin(num='V16',name='CL_0_B2C_D_12',func=pin_types.INPUT,unit=1),
            Pin(num='V17',name='CL_0_B2C_D_16',func=pin_types.INPUT,unit=1),
            Pin(num='V18',name='CL_0_B2C_D_9',func=pin_types.INPUT,unit=1),
            Pin(num='V19',name='CL_0_B2C_D_15',func=pin_types.INPUT,unit=1),
            Pin(num='V20',name='CL_0_B2C_D_25',func=pin_types.INPUT,unit=1),
            Pin(num='W16',name='CL_0_B2C_D_4',func=pin_types.INPUT,unit=1),
            Pin(num='W17',name='CL_0_B2C_D_3',func=pin_types.INPUT,unit=1),
            Pin(num='W18',name='CL_0_B2C_D_5',func=pin_types.INPUT,unit=1),
            Pin(num='W19',name='CL_0_B2C_D_11',func=pin_types.INPUT,unit=1),
            Pin(num='W20',name='CL_0_B2C_D_28',func=pin_types.INPUT,unit=1),
            Pin(num='W21',name='CL_0_B2C_SEND',func=pin_types.INPUT,unit=1),
            Pin(num='W22',name='CL_0_C2B_D_9',func=pin_types.OUTPUT,unit=1),
            Pin(num='Y16',name='CL_0_B2C_D_0',func=pin_types.INPUT,unit=1),
            Pin(num='Y17',name='CL_0_B2C_D_7',func=pin_types.INPUT,unit=1),
            Pin(num='Y18',name='CL_0_B2C_D_6',func=pin_types.INPUT,unit=1),
            Pin(num='Y19',name='CL_0_B2C_D_10',func=pin_types.INPUT,unit=1),
            Pin(num='Y20',name='CL_0_B2C_D_27',func=pin_types.INPUT,unit=1),
            Pin(num='Y21',name='CL_0_B2C_D_31',func=pin_types.INPUT,unit=1),
            Pin(num='Y22',name='CL_0_B2C_D_30',func=pin_types.INPUT,unit=1),
            Pin(num='A4',name='DDR_MEM_D[18]',func=pin_types.BIDIR,unit=2),
            Pin(num='A5',name='DDR_MEM_D[19]',func=pin_types.BIDIR,unit=2),
            Pin(num='A6',name='DDR_MEM_DQS_P[2]',func=pin_types.BIDIR,unit=2),
            Pin(num='A7',name='DDR_MEM_DQS_M[2]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA1',name='DDR_MEM_D[41]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA10',name='DDR_MEM_D[61]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA11',name='DDR_MEM_D[63]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA12',name='DDR_MEM_D[58]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA13',name='DDR_MEM_D[56]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA3',name='DDR_MEM_D[45]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA4',name='DDR_MEM_D[47]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA5',name='DDR_MEM_ODT[0]',func=pin_types.OUTPUT,unit=2),
            Pin(num='AA6',name='DDR_MEM_CKE[1]',func=pin_types.OUTPUT,unit=2),
            Pin(num='AA7',name='DDR_MEM_DQS_M[6]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA8',name='DDR_MEM_DQS_P[7]',func=pin_types.BIDIR,unit=2),
            Pin(num='AA9',name='DDR_MEM_D[62]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB11',name='DDR_MEM_D[60]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB12',name='DDR_MEM_DM[7]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB2',name='DDR_MEM_D[44]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB3',name='DDR_MEM_D[46]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB5',name='DDR_MEM_ODT[1]',func=pin_types.OUTPUT,unit=2),
            Pin(num='AB6',name='DDR_MEM_CKE[0]',func=pin_types.OUTPUT,unit=2),
            Pin(num='AB8',name='DDR_MEM_D[57]',func=pin_types.BIDIR,unit=2),
            Pin(num='AB9',name='DDR_MEM_D[59]',func=pin_types.BIDIR,unit=2),
            Pin(num='B1',name='DDR_MEM_D[1]',func=pin_types.BIDIR,unit=2),
            Pin(num='B2',name='DDR_MEM_D[17]',func=pin_types.BIDIR,unit=2),
            Pin(num='B3',name='DDR_MEM_D[22]',func=pin_types.BIDIR,unit=2),
            Pin(num='B4',name='DDR_MEM_D[16]',func=pin_types.BIDIR,unit=2),
            Pin(num='B5',name='DDR_MEM_D[20]',func=pin_types.BIDIR,unit=2),
            Pin(num='B6',name='DDR_MEM_D[23]',func=pin_types.BIDIR,unit=2),
            Pin(num='C1',name='DDR_MEM_D[4]',func=pin_types.BIDIR,unit=2),
            Pin(num='C2',name='DDR_MEM_D[29]',func=pin_types.BIDIR,unit=2),
            Pin(num='C3',name='DDR_MEM_D[27]',func=pin_types.BIDIR,unit=2),
            Pin(num='C4',name='DDR_MEM_D[24]',func=pin_types.BIDIR,unit=2),
            Pin(num='C5',name='DDR_MEM_D[21]',func=pin_types.BIDIR,unit=2),
            Pin(num='C6',name='DDR_MEM_DM[2]',func=pin_types.BIDIR,unit=2),
            Pin(num='C7',name='DDR_MEM_D[31]',func=pin_types.BIDIR,unit=2),
            Pin(num='D2',name='DDR_MEM_D[0]',func=pin_types.BIDIR,unit=2),
            Pin(num='D3',name='DDR_MEM_D[30]',func=pin_types.BIDIR,unit=2),
            Pin(num='D4',name='DDR_MEM_D[25]',func=pin_types.BIDIR,unit=2),
            Pin(num='D5',name='DDR_MEM_DM[3]',func=pin_types.BIDIR,unit=2),
            Pin(num='D6',name='DDR_MEM_D[26]',func=pin_types.BIDIR,unit=2),
            Pin(num='D7',name='DDR_MEM_DQS_M[3]',func=pin_types.BIDIR,unit=2),
            Pin(num='D8',name='DDR_RSVD1',func=pin_types.PASSIVE,unit=2),
            Pin(num='E1',name='DDR_MEM_D[6]',func=pin_types.BIDIR,unit=2),
            Pin(num='E2',name='DDR_MEM_D[3]',func=pin_types.BIDIR,unit=2),
            Pin(num='E5',name='DDR_MEM_DM[0]',func=pin_types.BIDIR,unit=2),
            Pin(num='E6',name='DDR_MEM_D[28]',func=pin_types.BIDIR,unit=2),
            Pin(num='E7',name='DDR_MEM_DQS_P[3]',func=pin_types.BIDIR,unit=2),
            Pin(num='E8',name='DDR_RSVD0',func=pin_types.PASSIVE,unit=2),
            Pin(num='F1',name='DDR_MEM_D[9]',func=pin_types.BIDIR,unit=2),
            Pin(num='F2',name='DDR_MEM_DQS_P[0]',func=pin_types.BIDIR,unit=2),
            Pin(num='F3',name='DDR_MEM_DQS_M[0]',func=pin_types.BIDIR,unit=2),
            Pin(num='F4',name='DDR_MEM_D[2]',func=pin_types.BIDIR,unit=2),
            Pin(num='F5',name='DDR_MEM_D[10]',func=pin_types.BIDIR,unit=2),
            Pin(num='F6',name='DDR_CAL_0',func=pin_types.PASSIVE,unit=2),
            Pin(num='F8',name='DDR_RSVD2',func=pin_types.PASSIVE,unit=2),
            Pin(num='F9',name='DDR_RSVD3',func=pin_types.PASSIVE,unit=2),
            Pin(num='G1',name='DDR_MEM_D[11]',func=pin_types.BIDIR,unit=2),
            Pin(num='G3',name='DDR_MEM_D[7]',func=pin_types.BIDIR,unit=2),
            Pin(num='G4',name='DDR_MEM_D[5]',func=pin_types.BIDIR,unit=2),
            Pin(num='G5',name='DDR_MEM_DM[1]',func=pin_types.BIDIR,unit=2),
            Pin(num='H1',name='DDR_MEM_D[12]',func=pin_types.BIDIR,unit=2),
            Pin(num='H2',name='DDR_MEM_DQS_P[1]',func=pin_types.BIDIR,unit=2),
            Pin(num='H3',name='DDR_MEM_DQS_M[1]',func=pin_types.BIDIR,unit=2),
            Pin(num='H4',name='DDR_MEM_D[8]',func=pin_types.BIDIR,unit=2),
            Pin(num='H5',name='DDR_MEM_ECC_D[0]',func=pin_types.BIDIR,unit=2),
            Pin(num='J2',name='DDR_MEM_D[14]',func=pin_types.BIDIR,unit=2),
            Pin(num='J3',name='DDR_MEM_D[13]',func=pin_types.BIDIR,unit=2),
            Pin(num='J4',name='DDR_MEM_D[15]',func=pin_types.BIDIR,unit=2),
            Pin(num='J5',name='DDR_MEM_ECC_DM',func=pin_types.BIDIR,unit=2),
            Pin(num='K1',name='DDR_MEM_ECC_D[1]',func=pin_types.BIDIR,unit=2),
            Pin(num='K2',name='DDR_MEM_ECC_DQS_P',func=pin_types.BIDIR,unit=2),
            Pin(num='K3',name='DDR_MEM_ECC_DQS_M',func=pin_types.BIDIR,unit=2),
            Pin(num='K4',name='DDR_MEM_ECC_D[2]',func=pin_types.BIDIR,unit=2),
            Pin(num='K5',name='DDR_MEM_CLK',func=pin_types.OUTPUT,unit=2),
            Pin(num='L1',name='DDR_MEM_ECC_D[4]',func=pin_types.BIDIR,unit=2),
            Pin(num='L2',name='DDR_MEM_ECC_D[3]',func=pin_types.BIDIR,unit=2),
            Pin(num='L3',name='DDR_MEM_ECC_D[7]',func=pin_types.BIDIR,unit=2),
            Pin(num='L4',name='DDR_MEM_ECC_D[5]',func=pin_types.BIDIR,unit=2),
            Pin(num='L5',name='DDR_MEM_CLK_N',func=pin_types.OUTPUT,unit=2),
            Pin(num='M1',name='DDR_MEM_ECC_D[6]',func=pin_types.BIDIR,unit=2),
            Pin(num='M2',name='DDR_MEM_RAS_N',func=pin_types.OUTPUT,unit=2),
            Pin(num='M3',name='DDR_MEM_CAS_N',func=pin_types.OUTPUT,unit=2),
            Pin(num='M4',name='DDR_MEM_BANK[0]',func=pin_types.OUTPUT,unit=2),
            Pin(num='M5',name='DDR_MEM_BANK[2]',func=pin_types.OUTPUT,unit=2),
            Pin(num='N1',name='DDR_MEM_WE_N',func=pin_types.OUTPUT,unit=2),
            Pin(num='N2',name='DDR_MEM_BANK[1]',func=pin_types.OUTPUT,unit=2),
            Pin(num='N3',name='DDR_MEM_ADDR[0]',func=pin_types.OUTPUT,unit=2),
            Pin(num='N4',name='DDR_MEM_ADDR[2]',func=pin_types.OUTPUT,unit=2),
            Pin(num='N5',name='DDR_MEM_ADDR[5]',func=pin_types.OUTPUT,unit=2),
            Pin(num='P3',name='DDR_MEM_ADDR[3]',func=pin_types.OUTPUT,unit=2),
            Pin(num='P4',name='DDR_MEM_ADDR[6]',func=pin_types.OUTPUT,unit=2),
            Pin(num='P5',name='DDR_MEM_ADDR[12]',func=pin_types.OUTPUT,unit=2),
            Pin(num='R1',name='DDR_MEM_ADDR[1]',func=pin_types.OUTPUT,unit=2),
            Pin(num='R2',name='DDR_MEM_ADDR[7]',func=pin_types.OUTPUT,unit=2),
            Pin(num='R3',name='DDR_MEM_ADDR[8]',func=pin_types.OUTPUT,unit=2),
            Pin(num='R4',name='DDR_MEM_ADDR[11]',func=pin_types.OUTPUT,unit=2),
            Pin(num='R5',name='DDR_MEM_D[32]',func=pin_types.BIDIR,unit=2),
            Pin(num='T1',name='DDR_MEM_ADDR[4]',func=pin_types.OUTPUT,unit=2),
            Pin(num='T2',name='DDR_MEM_ADDR[13]',func=pin_types.OUTPUT,unit=2),
            Pin(num='T3',name='DDR_MEM_ADDR[9]',func=pin_types.OUTPUT,unit=2),
            Pin(num='T4',name='DDR_MEM_D[34]',func=pin_types.BIDIR,unit=2),
            Pin(num='T5',name='DDR_MEM_DM[4]',func=pin_types.BIDIR,unit=2),
            Pin(num='U1',name='DDR_MEM_ADDR[10]',func=pin_types.OUTPUT,unit=2),
            Pin(num='U2',name='DDR_MEM_PARITY_IN',func=pin_types.OUTPUT,unit=2),
            Pin(num='U3',name='DDR_MEM_ADDR[14]',func=pin_types.OUTPUT,unit=2),
            Pin(num='U4',name='DDR_MEM_DQS_M[4]',func=pin_types.BIDIR,unit=2),
            Pin(num='U5',name='DDR_MEM_D[39]',func=pin_types.BIDIR,unit=2),
            Pin(num='V2',name='DDR_MEM_D[35]',func=pin_types.BIDIR,unit=2),
            Pin(num='V3',name='DDR_MEM_ADDR[15]',func=pin_types.OUTPUT,unit=2),
            Pin(num='V4',name='DDR_MEM_DQS_P[4]',func=pin_types.BIDIR,unit=2),
            Pin(num='V5',name='DDR_MEM_D[40]',func=pin_types.BIDIR,unit=2),
            Pin(num='W1',name='DDR_MEM_D[33]',func=pin_types.BIDIR,unit=2),
            Pin(num='W10',name='DDR_MEM_DM[6]',func=pin_types.BIDIR,unit=2),
            Pin(num='W11',name='DDR_MEM_D[49]',func=pin_types.BIDIR,unit=2),
            Pin(num='W12',name='DDR_MEM_D[54]',func=pin_types.BIDIR,unit=2),
            Pin(num='W2',name='DDR_MEM_D[38]',func=pin_types.BIDIR,unit=2),
            Pin(num='W3',name='DDR_MEM_D[37]',func=pin_types.BIDIR,unit=2),
            Pin(num='W4',name='DDR_MEM_DQS_M[5]',func=pin_types.BIDIR,unit=2),
            Pin(num='W5',name='DDR_MEM_DM[5]',func=pin_types.BIDIR,unit=2),
            Pin(num='W6',name='DDR_MEM_ERROR_N',func=pin_types.INPUT,unit=2),
            Pin(num='W7',name='DDR_MEM_CS_N[1]',func=pin_types.OUTPUT,unit=2),
            Pin(num='W8',name='DDR_MEM_D[51]',func=pin_types.BIDIR,unit=2),
            Pin(num='W9',name='DDR_MEM_D[55]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y1',name='DDR_MEM_D[36]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y10',name='DDR_MEM_D[52]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y11',name='DDR_MEM_D[50]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y12',name='DDR_MEM_D[48]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y2',name='DDR_MEM_D[43]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y3',name='DDR_MEM_D[42]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y4',name='DDR_MEM_DQS_P[5]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y5',name='DDR_MEM_RESET_N',func=pin_types.OUTPUT,unit=2),
            Pin(num='Y6',name='DDR_MEM_CS_N[0]',func=pin_types.OUTPUT,unit=2),
            Pin(num='Y7',name='DDR_MEM_DQS_P[6]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y8',name='DDR_MEM_DQS_M[7]',func=pin_types.BIDIR,unit=2),
            Pin(num='Y9',name='DDR_MEM_D[53]',func=pin_types.BIDIR,unit=2),
            Pin(num='A10',name='GEMGXL_0_RXD_2',func=pin_types.INPUT,unit=3),
            Pin(num='A11',name='GEMGXL_0_RX_DV',func=pin_types.INPUT,unit=3),
            Pin(num='A12',name='GEMGXL_0_RXD_0',func=pin_types.INPUT,unit=3),
            Pin(num='A13',name='GEMGXL_0_COL',func=pin_types.INPUT,unit=3),
            Pin(num='A8',name='GEMGXL_0_RXD_5',func=pin_types.INPUT,unit=3),
            Pin(num='B10',name='GEMGXL_0_RXD_1',func=pin_types.INPUT,unit=3),
            Pin(num='B11',name='GEMGXL_0_RX_ER',func=pin_types.INPUT,unit=3),
            Pin(num='B12',name='GEMGXL_0_TXD_0',func=pin_types.OUTPUT,unit=3),
            Pin(num='B13',name='GEMGXL_0_MDC',func=pin_types.OUTPUT,unit=3),
            Pin(num='B7',name='GEMGXL_0_TX_EN',func=pin_types.OUTPUT,unit=3),
            Pin(num='B8',name='GEMGXL_0_TXD_6',func=pin_types.OUTPUT,unit=3),
            Pin(num='C10',name='GEMGXL_0_TXD_4',func=pin_types.OUTPUT,unit=3),
            Pin(num='C11',name='GEMGXL_0_TXD_1',func=pin_types.OUTPUT,unit=3),
            Pin(num='C12',name='GEMGXL_0_MDIO',func=pin_types.BIDIR,unit=3),
            Pin(num='C13',name='GEMGXL_0_CRS',func=pin_types.INPUT,unit=3),
            Pin(num='C8',name='GEMGXL_0_TX_CLK',func=pin_types.INPUT,unit=3),
            Pin(num='C9',name='GEMGXL_0_RXD_6',func=pin_types.INPUT,unit=3),
            Pin(num='D10',name='GEMGXL_0_TXD_5',func=pin_types.OUTPUT,unit=3),
            Pin(num='D11',name='GEMGXL_0_TXD_2',func=pin_types.OUTPUT,unit=3),
            Pin(num='D9',name='GEMGXL_0_TXD_7',func=pin_types.OUTPUT,unit=3),
            Pin(num='E10',name='GEMGXL_0_RXD_4',func=pin_types.INPUT,unit=3),
            Pin(num='E11',name='GEMGXL_0_RXD_3',func=pin_types.INPUT,unit=3),
            Pin(num='E12',name='GEMGXL_0_GTX_CLK',func=pin_types.INPUT,unit=3),
            Pin(num='E9',name='GEMGXL_0_RXD_7',func=pin_types.INPUT,unit=3),
            Pin(num='F10',name='GEMGXL_0_TX_ER',func=pin_types.OUTPUT,unit=3),
            Pin(num='F11',name='GEMGXL_0_TXD_3',func=pin_types.OUTPUT,unit=3),
            Pin(num='F12',name='GEMGXL_0_RX_CLK',func=pin_types.INPUT,unit=3),
            Pin(num='A21',name='GPIO_0_P_9',func=pin_types.BIDIR,unit=4),
            Pin(num='AA14',name='UART_1_RXD',func=pin_types.INPUT,unit=4),
            Pin(num='AA15',name='UART_1_TXD',func=pin_types.OUTPUT,unit=4),
            Pin(num='AA16',name='QSPI_2_DQ_0',func=pin_types.BIDIR,unit=4),
            Pin(num='AB14',name='QSPI_2_CS_0',func=pin_types.OUTPUT,unit=4),
            Pin(num='AB15',name='QSPI_2_DQ_1',func=pin_types.BIDIR,unit=4),
            Pin(num='AB16',name='QSPI_2_DQ_2',func=pin_types.BIDIR,unit=4),
            Pin(num='B20',name='GPIO_0_P_11',func=pin_types.BIDIR,unit=4),
            Pin(num='B21',name='GPIO_0_P_12',func=pin_types.BIDIR,unit=4),
            Pin(num='B22',name='GPIO_0_P_14',func=pin_types.BIDIR,unit=4),
            Pin(num='C20',name='GPIO_0_P_7',func=pin_types.BIDIR,unit=4),
            Pin(num='C21',name='GPIO_0_P_2',func=pin_types.BIDIR,unit=4),
            Pin(num='C22',name='GPIO_0_P_1',func=pin_types.BIDIR,unit=4),
            Pin(num='D19',name='GPIO_0_P_8',func=pin_types.BIDIR,unit=4),
            Pin(num='D20',name='GPIO_0_P_5',func=pin_types.BIDIR,unit=4),
            Pin(num='D21',name='GPIO_0_P_3',func=pin_types.BIDIR,unit=4),
            Pin(num='D22',name='PWM_1_P_0',func=pin_types.BIDIR,unit=4),
            Pin(num='E18',name='GPIO_0_P_4',func=pin_types.BIDIR,unit=4),
            Pin(num='E19',name='GPIO_0_P_13',func=pin_types.BIDIR,unit=4),
            Pin(num='E20',name='GPIO_0_P_6',func=pin_types.BIDIR,unit=4),
            Pin(num='F17',name='GPIO_0_P_0',func=pin_types.BIDIR,unit=4),
            Pin(num='F18',name='GPIO_0_P_10',func=pin_types.BIDIR,unit=4),
            Pin(num='F19',name='PWM_1_P_3',func=pin_types.BIDIR,unit=4),
            Pin(num='F20',name='PWM_0_P_2',func=pin_types.BIDIR,unit=4),
            Pin(num='F21',name='PWM_0_P_1',func=pin_types.BIDIR,unit=4),
            Pin(num='F22',name='QSPI_1_DQ_2',func=pin_types.BIDIR,unit=4),
            Pin(num='G17',name='GPIO_0_P_15',func=pin_types.BIDIR,unit=4),
            Pin(num='G18',name='PWM_1_P_2',func=pin_types.BIDIR,unit=4),
            Pin(num='G19',name='PWM_0_P_0',func=pin_types.BIDIR,unit=4),
            Pin(num='G20',name='PWM_0_P_3',func=pin_types.BIDIR,unit=4),
            Pin(num='G21',name='QSPI_1_CS_1',func=pin_types.OUTPUT,unit=4),
            Pin(num='G22',name='QSPI_1_DQ_0',func=pin_types.BIDIR,unit=4),
            Pin(num='H17',name='PWM_1_P_1',func=pin_types.BIDIR,unit=4),
            Pin(num='H18',name='QSPI_1_SCK',func=pin_types.OUTPUT,unit=4),
            Pin(num='H19',name='QSPI_1_CS_2',func=pin_types.OUTPUT,unit=4),
            Pin(num='H20',name='QSPI_0_DQ_3',func=pin_types.BIDIR,unit=4),
            Pin(num='H21',name='QSPI_0_DQ_0',func=pin_types.BIDIR,unit=4),
            Pin(num='H22',name='QSPI_0_DQ_1',func=pin_types.BIDIR,unit=4),
            Pin(num='J17',name='QSPI_1_DQ_3',func=pin_types.BIDIR,unit=4),
            Pin(num='J18',name='QSPI_1_DQ_1',func=pin_types.BIDIR,unit=4),
            Pin(num='J19',name='QSPI_0_CS_0',func=pin_types.OUTPUT,unit=4),
            Pin(num='J20',name='QSPI_1_CS_3',func=pin_types.OUTPUT,unit=4),
            Pin(num='J21',name='QSPI_0_DQ_2',func=pin_types.BIDIR,unit=4),
            Pin(num='K17',name='QSPI_1_CS_0',func=pin_types.OUTPUT,unit=4),
            Pin(num='K18',name='QSPI_0_SCK',func=pin_types.OUTPUT,unit=4),
            Pin(num='W13',name='I2C_0_SDA',func=pin_types.BIDIR,unit=4),
            Pin(num='W14',name='UART_0_RXD',func=pin_types.INPUT,unit=4),
            Pin(num='W15',name='QSPI_2_SCK',func=pin_types.OUTPUT,unit=4),
            Pin(num='Y13',name='UART_0_TXD',func=pin_types.OUTPUT,unit=4),
            Pin(num='Y14',name='I2C_0_SCL',func=pin_types.BIDIR,unit=4),
            Pin(num='Y15',name='QSPI_2_DQ_3',func=pin_types.BIDIR,unit=4),
            Pin(num='A15',name='HFXOSCIN',func=pin_types.PASSIVE,unit=5),
            Pin(num='A16',name='PRCI_RSVD0',func=pin_types.PASSIVE,unit=5),
            Pin(num='A17',name='PRCI_PORESET_N',func=pin_types.INPUT,unit=5),
            Pin(num='A19',name='MSEL_MSEL_0',func=pin_types.INPUT,unit=5),
            Pin(num='A20',name='MSEL_MSEL_2',func=pin_types.INPUT,unit=5),
            Pin(num='B15',name='HFXOSCOUT',func=pin_types.PASSIVE,unit=5),
            Pin(num='B16',name='PRCI_RTCXALTCLKIN',func=pin_types.PASSIVE,unit=5),
            Pin(num='B17',name='PRCI_RSVD6',func=pin_types.PASSIVE,unit=5),
            Pin(num='B19',name='MSEL_MSEL_3',func=pin_types.INPUT,unit=5),
            Pin(num='C14',name='PRCI_RSVD15',func=pin_types.PASSIVE,unit=5),
            Pin(num='C15',name='PRCI_HFXSEL',func=pin_types.INPUT,unit=5),
            Pin(num='C16',name='PRCI_RSVD4',func=pin_types.PASSIVE,unit=5),
            Pin(num='C17',name='PRCI_ERESET_N',func=pin_types.INPUT,unit=5),
            Pin(num='C18',name='MSEL_MSEL_1',func=pin_types.INPUT,unit=5),
            Pin(num='C19',name='JTAG_TDI',func=pin_types.INPUT,unit=5),
            Pin(num='D13',name='PRCI_RSVD1',func=pin_types.PASSIVE,unit=5),
            Pin(num='D14',name='PRCI_RSVD11',func=pin_types.PASSIVE,unit=5),
            Pin(num='D15',name='PRCI_RTCXSEL',func=pin_types.INPUT,unit=5),
            Pin(num='D16',name='PRCI_RSVD3',func=pin_types.PASSIVE,unit=5),
            Pin(num='D17',name='PRCI_RSVD10',func=pin_types.PASSIVE,unit=5),
            Pin(num='D18',name='JTAG_TCK',func=pin_types.INPUT,unit=5),
            Pin(num='E13',name='PRCI_RSVD2',func=pin_types.PASSIVE,unit=5),
            Pin(num='E14',name='PRCI_RSVD12',func=pin_types.PASSIVE,unit=5),
            Pin(num='E15',name='PRCI_RSVD5',func=pin_types.PASSIVE,unit=5),
            Pin(num='E16',name='PRCI_RSVD9',func=pin_types.PASSIVE,unit=5),
            Pin(num='E17',name='JTAG_TDO',func=pin_types.OUTPUT,unit=5),
            Pin(num='F13',name='PRCI_RSVD14',func=pin_types.PASSIVE,unit=5),
            Pin(num='F14',name='PRCI_RSVD13',func=pin_types.PASSIVE,unit=5),
            Pin(num='F15',name='PRCI_HFXCLKIN',func=pin_types.INPUT,unit=5),
            Pin(num='F16',name='JTAG_TMS',func=pin_types.INPUT,unit=5),
            Pin(num='G13',name='PRCI_RSVD7',func=pin_types.PASSIVE,unit=5),
            Pin(num='H13',name='PRCI_RSVD8',func=pin_types.PASSIVE,unit=5),
            Pin(num='A1',name='VSS',func=pin_types.PWRIN,unit=6),
            Pin(num='A14',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='A18',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='A2',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='A22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='A3',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='A9',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AA17',name='VDD',func=pin_types.PWRIN,unit=6),
            Pin(num='AA2',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB1',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB13',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB17',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB4',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='AB7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='B14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='B18',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='B9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='D1',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='D12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='E21',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='E22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='E3',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='E4',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='F7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G11',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='G12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G14',name='OTP_VDD',func=pin_types.PWRIN,unit=6),
            Pin(num='G15',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='G16',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G2',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G7',name='DDR_VDDQ',func=pin_types.PWRIN,unit=6),
            Pin(num='G8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='G9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H11',name='GIVSS',func=pin_types.PWRIN,unit=6),
            Pin(num='H12',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H15',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='H16',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H6',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='H7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='H8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='H9',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J1',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J11',name='GIVDD',func=pin_types.PWRIN,unit=6),
            Pin(num='J12',name='GEMGXLPLL_AVSS',func=pin_types.PWRIN,unit=6),
            Pin(num='J13',name='DDRPLL_AVSS',func=pin_types.PWRIN,unit=6),
            Pin(num='J14',name='COREPLL_AVSS',func=pin_types.PWRIN,unit=6),
            Pin(num='J15',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='J16',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J7',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='J8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='J9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='K10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='K11',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='K12',name='GEMGXLPLL_AVDD',func=pin_types.PWRIN,unit=6),
            Pin(num='K13',name='DDRPLL_AVDD',func=pin_types.PWRIN,unit=6),
            Pin(num='K14',name='COREPLL_AVDD',func=pin_types.PWRIN,unit=6),
            Pin(num='K15',name='IVSS',func=pin_types.PWRIN,unit=6),
            Pin(num='K16',name='IVDD',func=pin_types.PWRIN,unit=6),
            Pin(num='K21',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='K6',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='K7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='K8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='K9',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L11',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='L12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L13',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='L14',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L15',name='IVSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L16',name='IVDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='L6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L7',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='L8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='L9',name='DDR_VDDPLL',func=pin_types.PASSIVE,unit=6),
            Pin(num='M10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='M11',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='M12',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='M13',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='M14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='M15',name='IVSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='M16',name='IVDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='M6',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='M7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='M8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='M9',name='DDR_VDDPLL',func=pin_types.PWRIN,unit=6),
            Pin(num='N10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N11',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='N12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N13',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='N14',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N15',name='IVSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N16',name='IVDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='N6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N7',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='N8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='N9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P1',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P11',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P12',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P13',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P15',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P16',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P2',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P21',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P6',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='P7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='P8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='P9',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R11',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='R12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R13',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='R14',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R15',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='R16',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R7',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='R8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='R9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T11',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='T12',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T13',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='T14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T15',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='T16',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T17',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='T6',name='DDR_VDDQ',func=pin_types.PASSIVE,unit=6),
            Pin(num='T7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='T8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='T9',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U10',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U11',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='U12',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U13',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='U14',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U15',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='U16',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U6',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U7',name='DDR_VDDQCK',func=pin_types.PWRIN,unit=6),
            Pin(num='U8',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='U9',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V1',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V10',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V11',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V12',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V13',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V14',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V15',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V21',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V22',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V6',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V7',name='VSS',func=pin_types.PASSIVE,unit=6),
            Pin(num='V8',name='VDD',func=pin_types.PASSIVE,unit=6),
            Pin(num='V9',name='VSS',func=pin_types.PASSIVE,unit=6)], 'unit_defs':[{'label': 'uA', 'num': 1, 'pin_nums': ['AA19', 'AA21', 'M22', 'P18', 'L20', 'R22', 'AB20', 'U19', 'V20', 'Y16', 'N17', 'P19', 'T18', 'U20', 'Y17', 'L21', 'W16', 'AB21', 'K19', 'L19', 'L22', 'N18', 'P20', 'T19', 'P17', 'U21', 'W17', 'Y18', 'R21', 'U18', 'K20', 'M17', 'N19', 'R17', 'AB18', 'AA20', 'T20', 'U22', 'V19', 'W18', 'W22', 'Y19', 'K22', 'M18', 'N20', 'R18', 'AA22', 'T21', 'V16', 'W19', 'Y20', 'L17', 'M19', 'N21', 'R19', 'AA18', 'T22', 'V17', 'W20', 'Y21', 'L18', 'M20', 'N22', 'R20', 'U17', 'V18', 'W21', 'Y22', 'AB19', 'M21']},{'label': 'uB', 'num': 2, 'pin_nums': ['B1', 'T3', 'Y6', 'B2', 'F9', 'T4', 'M3', 'Y7', 'B3', 'G1', 'T5', 'Y8', 'B4', 'G3', 'U1', 'Y9', 'B5', 'G4', 'U2', 'B6', 'G5', 'U3', 'C1', 'H1', 'U4', 'C2', 'H2', 'U5', 'A4', 'C3', 'H3', 'V2', 'A5', 'C4', 'H4', 'V3', 'A6', 'C5', 'H5', 'V4', 'A7', 'C6', 'J2', 'V5', 'AA1', 'C7', 'J3', 'P3', 'W1', 'AA10', 'D2', 'J4', 'W10', 'AA11', 'D3', 'J5', 'N4', 'W11', 'N5', 'AA12', 'D4', 'K1', 'W12', 'AA13', 'D5', 'P4', 'K2', 'W2', 'AA3', 'D6', 'K3', 'W3', 'N2', 'AA4', 'D7', 'K4', 'M2', 'W4', 'AA5', 'D8', 'K5', 'W5', 'AA6', 'E1', 'L1', 'W6', 'AA7', 'E2', 'L2', 'W7', 'AA8', 'E5', 'L3', 'N1', 'P5', 'W8', 'AA9', 'E6', 'L4', 'W9', 'AB11', 'E7', 'L5', 'N3', 'Y1', 'AB12', 'E8', 'R1', 'Y10', 'AB2', 'F1', 'R2', 'Y11', 'AB3', 'F2', 'R3', 'Y12', 'AB5', 'F3', 'M5', 'R4', 'Y2', 'T2', 'AB6', 'F4', 'R5', 'Y3', 'AB8', 'F5', 'F8', 'T1', 'Y4', 'AB9', 'F6', 'M1', 'M4', 'Y5']},{'label': 'uC', 'num': 3, 'pin_nums': ['C11', 'A8', 'E10', 'B10', 'C12', 'E11', 'B11', 'C13', 'E12', 'A13', 'C10', 'B12', 'C8', 'E9', 'B13', 'C9', 'A10', 'F10', 'A11', 'B7', 'D10', 'F11', 'D11', 'A12', 'B8', 'F12', 'D9']},{'label': 'uD', 'num': 4, 'pin_nums': ['A21', 'B21', 'F21', 'D22', 'J19', 'Y13', 'AA14', 'B22', 'E18', 'F22', 'H18', 'J20', 'Y14', 'AA15', 'C20', 'E19', 'G17', 'H19', 'J21', 'Y15', 'AA16', 'C21', 'E20', 'G18', 'H20', 'K17', 'AB14', 'C22', 'F17', 'G19', 'H21', 'K18', 'AB15', 'D19', 'F18', 'G20', 'H22', 'W13', 'AB16', 'D20', 'F19', 'G21', 'H17', 'J17', 'W14', 'B20', 'D21', 'F20', 'G22', 'J18', 'W15']},{'label': 'uE', 'num': 5, 'pin_nums': ['B15', 'E13', 'F16', 'C18', 'C19', 'E14', 'G13', 'B16', 'B17', 'D13', 'E15', 'H13', 'A15', 'B19', 'D14', 'E16', 'D15', 'A16', 'C14', 'E17', 'A17', 'C15', 'D16', 'F13', 'A19', 'C16', 'D17', 'F14', 'A20', 'D18', 'F15', 'C17']},{'label': 'uF', 'num': 6, 'pin_nums': ['H8', 'L14', 'AB17', 'T7', 'AB22', 'L15', 'P13', 'T8', 'AB4', 'H9', 'P14', 'L16', 'T9', 'AB7', 'J1', 'L6', 'P15', 'U10', 'B14', 'J10', 'L7', 'P16', 'U11', 'B18', 'L8', 'P2', 'U12', 'B9', 'J11', 'L9', 'P21', 'U13', 'D1', 'J12', 'M10', 'P22', 'U14', 'D12', 'J13', 'M11', 'P6', 'J15', 'U15', 'E21', 'J14', 'M12', 'P7', 'U16', 'E22', 'J16', 'M13', 'P8', 'U6', 'E3', 'J22', 'M14', 'P9', 'U8', 'E4', 'J6', 'M15', 'R10', 'U7', 'F7', 'J7', 'M16', 'R11', 'U9', 'G10', 'J8', 'M6', 'R12', 'V1', 'G11', 'J9', 'M7', 'R13', 'V10', 'G12', 'K10', 'M8', 'R14', 'V11', 'K11', 'G15', 'R15', 'N10', 'V12', 'G14', 'M9', 'R16', 'V13', 'G16', 'K12', 'N11', 'R6', 'V14', 'G2', 'K13', 'A14', 'N12', 'R7', 'V15', 'A1', 'G6', 'K14', 'N13', 'R8', 'V21', 'A18', 'K15', 'G8', 'K21', 'N14', 'R9', 'V22', 'A2', 'G7', 'K16', 'N15', 'T10', 'V6', 'A22', 'G9', 'K6', 'N16', 'T11', 'V7', 'A3', 'H10', 'K7', 'N6', 'T12', 'V8', 'A9', 'K8', 'H12', 'N7', 'T13', 'V9', 'AA2', 'H11', 'K9', 'N8', 'T14', 'AA17', 'H14', 'L10', 'N9', 'T15', 'AB1', 'H15', 'L11', 'P1', 'T16', 'AB10', 'H16', 'L12', 'P10', 'T17', 'AB13', 'H6', 'L13', 'P11', 'T6', 'H7', 'P12']}] }),
        Part(**{ 'name':'FE310-G002', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'FE310-G002'}), 'ref_prefix':'U', 'fplist':['Package_DFN_QFN:QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias', 'Package_DFN_QFN:QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias'], 'footprint':'Package_DFN_QFN:QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias', 'keywords':'microcontroller RISC-V SiFive', 'description':'', 'datasheet':'https://sifive.cdn.prismic.io/sifive%2F3d777659-a0dd-49ed-a011-5bebba17aecf_fe310-g002-ds.pdf', 'search_text':'/usr/share/kicad/symbols/MCU_SiFive.kicad_sym\nFE310-G002\n\nmicrocontroller RISC-V SiFive', 'pins':[
            Pin(num='1',name='QSPI_DQ_3',func=pin_types.BIDIR,unit=1),
            Pin(num='10',name='XTAL_XO',func=pin_types.OUTPUT,unit=1),
            Pin(num='11',name='IVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='12',name='OTP_AIVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='13',name='JTAG_TCK',func=pin_types.INPUT,unit=1),
            Pin(num='14',name='JTAG_TDO',func=pin_types.OUTPUT,unit=1),
            Pin(num='15',name='JTAG_TMS',func=pin_types.INPUT,unit=1),
            Pin(num='16',name='JTAG_TDI',func=pin_types.INPUT,unit=1),
            Pin(num='17',name='AON_PMU_OUT_1',func=pin_types.OUTPUT,unit=1),
            Pin(num='18',name='~{AON_PMU_DWAKEUP}',func=pin_types.INPUT,unit=1),
            Pin(num='19',name='AON_IVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='2',name='QSPI_DQ_2',func=pin_types.BIDIR,unit=1),
            Pin(num='20',name='AON_PSD_LFALTCLK',func=pin_types.INPUT,unit=1),
            Pin(num='21',name='AON_PSD_LFCLKSEL',func=pin_types.INPUT,unit=1),
            Pin(num='22',name='AON_PMU_OUT_0',func=pin_types.OUTPUT,unit=1),
            Pin(num='23',name='AON_VDD',func=pin_types.PWRIN,unit=1),
            Pin(num='24',name='~{AON_ERST}',func=pin_types.INPUT,unit=1),
            Pin(num='25',name='GPIO_0',func=pin_types.BIDIR,unit=1),
            Pin(num='26',name='GPIO_1',func=pin_types.BIDIR,unit=1),
            Pin(num='27',name='GPIO_2',func=pin_types.BIDIR,unit=1),
            Pin(num='28',name='GPIO_3',func=pin_types.BIDIR,unit=1),
            Pin(num='29',name='GPIO_4',func=pin_types.BIDIR,unit=1),
            Pin(num='3',name='QSPI_DQ_1',func=pin_types.BIDIR,unit=1),
            Pin(num='30',name='VDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='31',name='GPIO_5',func=pin_types.BIDIR,unit=1),
            Pin(num='32',name='IVDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='33',name='GPIO_9',func=pin_types.BIDIR,unit=1),
            Pin(num='34',name='GPIO_10',func=pin_types.BIDIR,unit=1),
            Pin(num='35',name='GPIO_11',func=pin_types.BIDIR,unit=1),
            Pin(num='36',name='GPIO_12',func=pin_types.BIDIR,unit=1),
            Pin(num='37',name='GPIO_13',func=pin_types.BIDIR,unit=1),
            Pin(num='38',name='GPIO_16',func=pin_types.BIDIR,unit=1),
            Pin(num='39',name='GPIO_17',func=pin_types.BIDIR,unit=1),
            Pin(num='4',name='QSPI_DQ_0',func=pin_types.BIDIR,unit=1),
            Pin(num='40',name='GPIO_18',func=pin_types.BIDIR,unit=1),
            Pin(num='41',name='GPIO_19',func=pin_types.BIDIR,unit=1),
            Pin(num='42',name='GPIO_20',func=pin_types.BIDIR,unit=1),
            Pin(num='43',name='GPIO_21',func=pin_types.BIDIR,unit=1),
            Pin(num='44',name='GPIO_22',func=pin_types.BIDIR,unit=1),
            Pin(num='45',name='GPIO_23',func=pin_types.BIDIR,unit=1),
            Pin(num='46',name='VDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='47',name='IVDD',func=pin_types.PASSIVE,unit=1),
            Pin(num='48',name='QSPI_SCK',func=pin_types.OUTPUT,unit=1),
            Pin(num='49',name='GND',func=pin_types.PWRIN,unit=1),
            Pin(num='5',name='~{QSPI_CS}',func=pin_types.OUTPUT,unit=1),
            Pin(num='6',name='VDD',func=pin_types.PWRIN,unit=1),
            Pin(num='7',name='PLL_AVDD',func=pin_types.PWRIN,unit=1),
            Pin(num='8',name='PLL_AVSS',func=pin_types.PWRIN,unit=1),
            Pin(num='9',name='XTAL_XI',func=pin_types.INPUT,unit=1)], 'unit_defs':[] })])