udev.device SK7-70-T999

#==================== Part1: library setup ====================

udev.comp SLICE
udev.comp SLICEM
udev.comp HSLICE
udev.comp HSLICEM
udev.comp PIO
udev.comp PIO_DS
udev.comp IOLOGIC
udev.comp MIOLOGIC
udev.comp EBR
udev.comp EBR9
udev.comp EBR18
udev.comp EBR36
udev.comp DSP
udev.comp MULT9
udev.comp MULT18
udev.comp ALU24
udev.comp ALU54
udev.comp PRADD9
udev.comp PRADD18
udev.comp PLL
udev.comp PLLREFCS
udev.comp DLL
udev.comp DQS
udev.comp DLLDEL
udev.comp ECLKSYNC
udev.comp CLKDIV
udev.comp ECLKBRIDGECS
udev.comp DCM
udev.comp DCS
udev.comp DCC
udev.comp OSC
udev.comp JTAG
udev.comp EFB
udev.comp ECC_MEM
udev.comp START
udev.comp SED
udev.comp EFUSE
udev.comp TSALL
udev.comp CM3
udev.comp SADC
udev.comp GADC
udev.comp BCLVDSO
udev.comp BCINRD
udev.comp BCPG
udev.comp BCTMDSO
udev.comp CENTEST
udev.comp TAPTEST
udev.comp MX
udev.comp CLKFBBUF
udev.comp GSR
udev.comp WAKEUP
udev.comp PCNTR
udev.comp BG
udev.comp MFG
udev.comp DDRCTRL
udev.comp CIBBOOT
udev.comp CIBTEST
udev.comp RCLK
udev.comp RCLKDIV
udev.comp PCIE
udev.comp BCODT
udev.comp CFG_PERSIST
udev.comp ISCPU
udev.comp DNA_PORT
udev.comp POR
udev.comp PCS
udev.comp SERDES_COM
udev.comp SERDES_CH
udev.comp SERDES_IBUFDS
udev.comp IPAD
udev.comp OPAD
udev.comp DMP_EFB
udev.comp CDELAY
udev.comp EDELAY
udev.comp CLKBRANCH
udev.comp MIPI_CTRL
udev.comp MIPI_CLOCK
udev.comp MIPI_PLL
udev.comp CRC32
udev.comp PRBS31
udev.comp TESTCNT
udev.comp DTR
udev.comp STAR


#==================== Part2: model define ====================

udev.model HSLICE HSLICE
	udev.port HSLICE CLK CLK 0 0
	udev.port HSLICE SR SR
	udev.port HSLICE CIN CIN
	udev.port HSLICE COUT COUT
	udev.port HSLICE CE CE
udev.model HSLICEL HSLICE
	udev.port HSLICEL CLK CLK 0 0
	udev.port HSLICEL SR SR
	udev.port HSLICEL CIN CIN
	udev.port HSLICEL COUT COUT
	udev.port HSLICEL CE CE
udev.model HSLICEM HSLICEM
	udev.port HSLICEM CLK CLK 0 0
	udev.port HSLICEM SR SR
	udev.port HSLICEM CIN CIN
	udev.port HSLICEM COUT COUT
	udev.port HSLICEM CE CE
udev.model SLICE SLICE
	udev.port SLICE CIN CIN
	udev.port SLICE COUT COUT
	udev.port SLICE CKEN1 CE
	udev.port SLICE CKEN2 CE
	udev.port SLICE CKEN3 CE
	udev.port SLICE CKEN4 CE
	udev.port SLICE CLK1 CLK
	udev.port SLICE CLK2 CLK
	udev.port SLICE SRST1 SR
	udev.port SLICE SRST2 SR
udev.model SLICEL SLICE
	udev.port SLICEL CIN CIN
	udev.port SLICEL COUT COUT
	udev.port SLICEL CKEN1 CE
	udev.port SLICEL CKEN2 CE
	udev.port SLICEL CKEN3 CE
	udev.port SLICEL CKEN4 CE
	udev.port SLICEL CLK1 CLK
	udev.port SLICEL CLK2 CLK
	udev.port SLICEL SRST1 SR
	udev.port SLICEL SRST2 SR
udev.model SLICEM SLICEM
	udev.port SLICEM CIN CIN
	udev.port SLICEM COUT COUT
	udev.port SLICEM CKEN1 CE
	udev.port SLICEM CKEN2 CE
	udev.port SLICEM CKEN3 CE
	udev.port SLICEM CKEN4 CE
	udev.port SLICEM CLK1 CLK
	udev.port SLICEM CLK2 CLK
	udev.port SLICEM SRST1 SR
	udev.port SLICEM SRST2 SR
udev.model SLICELH HSLICE
	udev.port SLICELH CIN CIN
	udev.port SLICELH COUT COUT
	udev.port SLICELH CKEN1 CE
	udev.port SLICELH CKEN2 CE
	udev.port SLICELH CLK1 CLK
	udev.port SLICELH SRST1 SR

udev.model PIO PIO
udev.model PIO_DS PIO_DS
udev.model IOLOGIC IOLOGIC
	udev.port IOLOGIC CLK CLK
	udev.port IOLOGIC ECLK CLK
	udev.port IOLOGIC DQSR90 CLK
	udev.port IOLOGIC DQSW CLK
	udev.port IOLOGIC DQSW270 CLK
udev.model MIOLOGIC MIOLOGIC
	udev.port MIOLOGIC CLK CLK
	udev.port MIOLOGIC ECLK CLK
	udev.port MIOLOGIC DQSR90 CLK
	udev.port MIOLOGIC DQSW CLK
	udev.port MIOLOGIC DQSW270 CLK

udev.model PIO_MIPI PIO
udev.model IOLOGIC_MIPI IOLOGIC

udev.model EBR EBR9
	udev.port EBR CLKA CLK
	udev.port EBR CLKB CLK
udev.model EBR9 EBR9
	udev.port EBR9 CLKA CLK
	udev.port EBR9 CLKB CLK
udev.model EBR18 EBR18
	udev.port EBR18 CLKA CLK
	udev.port EBR18 CLKB CLK
udev.model EBR36 EBR36
	udev.port EBR36 CLKA CLK
	udev.port EBR36 CLKB CLK
udev.model DSP DSP
udev.model EXHPLL PLL
	udev.port EXHPLL CLKI CLK
	udev.port EXHPLL CLKFB CLK
	udev.port EXHPLL CLKOP CLK
	udev.port EXHPLL CLKOS2 CLK
	udev.port EXHPLL CLKOS3 CLK
	udev.port EXHPLL CLKOS5 CLK
	udev.port EXHPLL CLKOS6 CLK
	udev.port EXHPLL CLKOS7 CLK
udev.model PLL PLL
	udev.port PLL CLKI CLK
	udev.port PLL CLKFB CLK
	udev.port PLL CLKOP CLK
	udev.port PLL CLKOS2 CLK
	udev.port PLL CLKOS3 CLK
	udev.port PLL CLKOS5 CLK
	udev.port PLL CLKOS6 CLK
	udev.port PLL CLKOS7 CLK
udev.model DDRDLL DLL
	udev.port DDRDLL CLK CLK
	udev.port DDRDLL DLLDEL CLK
udev.model ECLKSYNC ECLKSYNC
	udev.port ECLKSYNC ECLKI CLK
	udev.port ECLKSYNC ECLKO CLK
udev.model DQS DQS
	udev.port DQS DQSR90 CLK
	udev.port DQS DQSW CLK
	udev.port DQS DQSW279 CLK
	udev.port DQS SCLK CLK
	udev.port DQS ECLK CLK
udev.model DLLDEL DLLDEL
udev.model CLKDIV CLKDIV
	udev.port CLKDIV CLKI CLK
	udev.port CLKDIV CDIV1 CLK
udev.model ECLKBRIDGECS ECLKBRIDGECS
	udev.port ECLKBRIDGECS CLK0 CLK
	udev.port ECLKBRIDGECS CLK1 CLK
	udev.port ECLKBRIDGECS ECSOUT CLK
udev.model DCM DCM
udev.model DCS DCS
	udev.port DCS CLK0 CLK
	udev.port DCS CLK1 CLK
	udev.port DCS DCSOUT CLK
udev.model DCC DCC
	udev.port DCC CLKI CLK
	udev.port DCC CLKO CLK
udev.model OSC OSC
	udev.port OSC OSC CLK
udev.model JTAG JTAG
udev.model EFB EFB
udev.model ECC_MEM ECC_MEM
udev.model START START
udev.model SED SED
udev.model EFUSE EFUSE
udev.model CM3 CM3
udev.model SADC SADC
udev.model GADC GADC
udev.model BCLVDSO BCLVDSO
udev.model BCINRD BCINRD
udev.model BCPG BCPG
udev.model BCTMDSO BCTMDSO
udev.model CENTEST CENTEST
udev.model TAPTEST TAPTEST
udev.model CLKFBBUF CLKFBBUF
udev.model IPAD IPAD
udev.model OPAD OPAD
udev.model GSR GSR
udev.model WAKEUP WAKEUP
udev.model PCNTR PCNTR
udev.model RCLKDIV RCLKDIV
	udev.port RCLKDIV CLKI CLK
	udev.port RCLKDIV CDIVO CLK
udev.model CDELAY CDELAY
    udev.port CDELAY I CLK
    udev.port CDELAY O CLK
udev.model EDELAY EDELAY
    udev.port EDELAY I CLK
    udev.port EDELAY O CLK
udev.model CLKBRANCH CLKBRANCH
    udev.port CLKBRANCH CLKI CLK
    udev.port CLKBRANCH TO_RCLK CLK
    udev.port CLKBRANCH TO_PCLK CLK
    udev.port CLKBRANCH TO_NCLK CLK
udev.model PCIE PCIE
	udev.port PCIE DRP_CLK CLK
	udev.port PCIE CORE_CLK_MI_REPLAY_RAM CLK
	udev.port PCIE CORE_CLK_MI_REQUEST_RAM CLK
	udev.port PCIE CORE_CLK CLK
	udev.port PCIE USER_CLK CLK
	udev.port PCIE PIPE_CLK CLK
	udev.port PCIE REC_CLK CLK
	udev.port PCIE CORE_CLK_MI_COMPLETION_RAM_L CLK
	udev.port PCIE CORE_CLK_MI_COMPLETION_RAM_U CLK
udev.model BCODT BCODT
udev.model CFG_PERSIST CFG_PERSIST
udev.model ISCPU ISCPU
	udev.port ISCPU CLK CLK
udev.model DNA_PORT DNA_PORT
    udev.port DNA_PORT CLK CLK
udev.model DMP_EFB DMP_EFB
	udev.port DMP_EFB WBCLK CLK

set MULT MULT9X9C
udev.model $MULT MULT9
for {set i 0} {$i < 4} {incr i} {
	udev.port $MULT CLK${i} CLK	
	udev.port $MULT CE${i} CE	
	udev.port $MULT RST${i} SR	
}
for {set i 0} {$i < 9} {incr i} {
	udev.port $MULT A${i} MULT_A	
	udev.port $MULT B${i} MULT_B	
	udev.port $MULT SRIA${i} MULT_SRIA	
	udev.port $MULT SRIB${i} MULT_SRIB	
	udev.port $MULT SROA${i} MULT_SROA	
	udev.port $MULT SROB${i} MULT_SROB	
	udev.port $MULT ROA${i} MULT_ROA	
	udev.port $MULT ROB${i} MULT_ROB	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $MULT P${i} MULT_P	
}

set MULT MULT9
udev.model $MULT MULT9
for {set i 0} {$i < 4} {incr i} {
	udev.port $MULT CLK${i} CLK	
	udev.port $MULT CE${i} CE	
	udev.port $MULT RST${i} SR	
}
for {set i 0} {$i < 9} {incr i} {
	udev.port $MULT A${i} MULT_A	
	udev.port $MULT B${i} MULT_B	
	udev.port $MULT C${i} MULT_C	
	udev.port $MULT SRIA${i} MULT_SRIA	
	udev.port $MULT SRIB${i} MULT_SRIB	
	udev.port $MULT SROA${i} MULT_SROA	
	udev.port $MULT SROB${i} MULT_SROB	
	udev.port $MULT ROA${i} MULT_ROA	
	udev.port $MULT ROB${i} MULT_ROB	
	udev.port $MULT ROC${i} MULT_ROC	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $MULT P${i} MULT_P	
}

set MULT MULT18X18C
udev.model $MULT MULT18
for {set i 0} {$i < 4} {incr i} {
	udev.port $MULT CLK${i} CLK	
	udev.port $MULT CE${i} CE	
	udev.port $MULT RST${i} SR	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $MULT A${i} MULT_A	
	udev.port $MULT B${i} MULT_B	
	udev.port $MULT SRIA${i} MULT_SRIA	
	udev.port $MULT SRIB${i} MULT_SRIB	
	udev.port $MULT SROA${i} MULT_SROA	
	udev.port $MULT SROB${i} MULT_SROB	
	udev.port $MULT ROA${i} MULT_ROA	
	udev.port $MULT ROB${i} MULT_ROB	
}
for {set i 0} {$i < 36} {incr i} {
	udev.port $MULT P${i} MULT_P	
}

set MULT MULT18
udev.model $MULT MULT18
for {set i 0} {$i < 4} {incr i} {
	udev.port $MULT CLK${i} CLK	
	udev.port $MULT CE${i} CE	
	udev.port $MULT RST${i} SR	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $MULT A${i} MULT_A	
	udev.port $MULT B${i} MULT_B	
	udev.port $MULT C${i} MULT_C	
	udev.port $MULT SRIA${i} MULT_SRIA	
	udev.port $MULT SRIB${i} MULT_SRIB	
	udev.port $MULT SROA${i} MULT_SROA	
	udev.port $MULT SROB${i} MULT_SROB	
	udev.port $MULT ROA${i} MULT_ROA	
	udev.port $MULT ROB${i} MULT_ROB	
	udev.port $MULT ROC${i} MULT_ROC	
}
for {set i 0} {$i < 36} {incr i} {
	udev.port $MULT P${i} MULT_P	
}

set ALU ALU54A
udev.model $ALU ALU54
for {set i 0} {$i < 4} {incr i} {
	udev.port $ALU CLK${i} CLK	
	udev.port $ALU CE${i} CE	
	udev.port $ALU RST${i} SR	
}
for {set i 0} {$i < 54} {incr i} {
	udev.port $ALU R${i} ALU_R	
	#udev.port $ALU CO${i} ALU_CO	
	udev.port $ALU C${i} ALU_C	
	#udev.port $ALU CFB${i} ALU_CFB	
	udev.port $ALU CIN${i} ALU_CIN	
}
for {set i 0} {$i < 36} {incr i} {
	udev.port $ALU MA${i} ALU_MA	
	udev.port $ALU MB${i} ALU_MB	
	udev.port $ALU A${i} ALU_A	
	udev.port $ALU B${i} ALU_B	
}
for {set i 0} {$i < 11} {incr i} {
	udev.port $ALU OP${i} ALU_OP	
}

set ALU ALU54
udev.model $ALU ALU54
for {set i 0} {$i < 4} {incr i} {
	udev.port $ALU CLK${i} CLK	
	udev.port $ALU CE${i} CE	
	udev.port $ALU RST${i} SR	
}
for {set i 0} {$i < 54} {incr i} {
	udev.port $ALU R${i} ALU_R	
	udev.port $ALU CO${i} ALU_CO	
	udev.port $ALU C${i} ALU_C	
	udev.port $ALU CFB${i} ALU_CFB	
	udev.port $ALU CIN${i} ALU_CIN	
}
for {set i 0} {$i < 36} {incr i} {
	udev.port $ALU MA${i} ALU_MA	
	udev.port $ALU MB${i} ALU_MB	
	udev.port $ALU A${i} ALU_A	
	udev.port $ALU B${i} ALU_B	
}
for {set i 0} {$i < 11} {incr i} {
	udev.port $ALU OP${i} ALU_OP	
}

set ALU ALU24A
udev.model $ALU ALU24
for {set i 0} {$i < 4} {incr i} {
	udev.port $ALU CLK${i} CLK	
	udev.port $ALU CE${i} CE	
	udev.port $ALU RST${i} SR	
}
for {set i 0} {$i < 24} {incr i} {
	udev.port $ALU R${i} ALU_R	
	udev.port $ALU CO${i} ALU_CO	
	udev.port $ALU CFB${i} ALU_CFB	
	udev.port $ALU CIN${i} ALU_CIN	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $ALU MA${i} ALU_MA	
	udev.port $ALU MB${i} ALU_MB	
}

set ALU ALU24
udev.model $ALU ALU24
for {set i 0} {$i < 4} {incr i} {
	udev.port $ALU CLK${i} CLK	
	udev.port $ALU CE${i} CE	
	udev.port $ALU RST${i} SR	
}
for {set i 0} {$i < 24} {incr i} {
	udev.port $ALU R${i} ALU_R	
	udev.port $ALU CO${i} ALU_CO	
	udev.port $ALU CFB${i} ALU_CFB	
	udev.port $ALU CIN${i} ALU_CIN	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $ALU MA${i} ALU_MA	
	udev.port $ALU MB${i} ALU_MB	
}

set PRADD PRADD18
udev.model $PRADD PRADD18
for {set i 0} {$i < 4} {incr i} {
	udev.port $PRADD CLK${i} CLK	
	udev.port $PRADD CE${i} CE	
	udev.port $PRADD RST${i} SR	
}
for {set i 0} {$i < 18} {incr i} {
	udev.port $PRADD PO${i} PREADD_PO	
	udev.port $PRADD SROA${i} PREADD_SROA	
	udev.port $PRADD SROB${i} PREADD_SROB	
	udev.port $PRADD PA${i} PREADD_PA	
	udev.port $PRADD PB${i} PREADD_PB	
	udev.port $PRADD SRIA${i} PREADD_SRIA	
	udev.port $PRADD SRIB${i} PREADD_SRIB	
	udev.port $PRADD C${i} PREADD_C	
}
	
set PRADD PRADD9
udev.model $PRADD PRADD9
for {set i 0} {$i < 4} {incr i} {
	udev.port $PRADD CLK${i} CLK	
	udev.port $PRADD CE${i} CE	
	udev.port $PRADD RST${i} SR	
}
for {set i 0} {$i < 9} {incr i} {
	udev.port $PRADD PO${i} PREADD_PO	
	udev.port $PRADD SROA${i} PREADD_SROA	
	udev.port $PRADD SROB${i} PREADD_SROB	
	udev.port $PRADD PA${i} PREADD_PA	
	udev.port $PRADD PB${i} PREADD_PB	
	udev.port $PRADD SRIA${i} PREADD_SRIA	
	udev.port $PRADD SRIB${i} PREADD_SRIB	
	udev.port $PRADD C${i} PREADD_C	
}

udev.model DDRCTRL128 DDRCTRL
	udev.port DDRCTRL128 WB_CLK_I_CIB CLK
	udev.port DDRCTRL128 USR_CLK0 CLK
	udev.port DDRCTRL128 SCLK CLK
	udev.port DDRCTRL128 REFCLK CLK
	udev.port DDRCTRL128 USR_CLK1 CLK
udev.model DDRCTRL_E1 DDRCTRL
        udev.port DDRCTRL_E1 WB_CLK_I_CIB CLK
        udev.port DDRCTRL_E1 USR_CLK0 CLK
        udev.port DDRCTRL_E1 SCLK CLK
        udev.port DDRCTRL_E1 REFCLK CLK
        udev.port DDRCTRL_E1 USR_CLK1 CLK
        udev.port DDRCTRL_E1 USR_CMD_CLK_1 CLK
        udev.port DDRCTRL_E1 USR_CMD_CLK_0 CLK
        udev.port DDRCTRL_E1 USR_DW_CLK_0 CLK
        udev.port DDRCTRL_E1 USR_DR_CLK_0 CLK
        udev.port DDRCTRL_E1 USR_DW_CLK_1 CLK
        udev.port DDRCTRL_E1 USR_DR_CLK_1 CLK
        udev.port DDRCTRL_E1 SCAN_CLK CLK
udev.model CIBBOOT CIBBOOT
	udev.port  CIBBOOT BOOTCLK CLK
	
udev.model POR POR
udev.model PCS PCS

udev.model SERDES_COM SERDES_COM
	udev.port SERDES_COM QDCLKPINSPRD0 CLK
	udev.port SERDES_COM QDCLKPINSPRD1 CLK
	udev.port SERDES_COM REFCKTESTCLK0 CLK
	udev.port SERDES_COM REFCKTESTCLK1 CLK
	udev.port SERDES_COM COREREFCLK CLK
	udev.port SERDES_COM QPLLDMONCLK CLK
	udev.port SERDES_COM QDPMASCANCLK0 CLK
	udev.port SERDES_COM QDPMASCANCLK1 CLK
	udev.port SERDES_COM DCLK_COM CLK

udev.model SERDES_CH SERDES_CH
	udev.port SERDES_CH CKPINRSRVD0 CLK
	udev.port SERDES_CH CKPINRSRVD1 CLK
	udev.port SERDES_CH TSTCLK0 CLK
	udev.port SERDES_CH TXUSRCLK CLK
	udev.port SERDES_CH TXUSRCLK2 CLK
	udev.port SERDES_CH DMONCLK CLK
	udev.port SERDES_CH SCANCLK CLK
	udev.port SERDES_CH DCLK CLK
	udev.port SERDES_CH RXUSRCLK CLK
	udev.port SERDES_CH RXUSRCLK2 CLK
	udev.port SERDES_CH TCOCLKFSMFROUT CLK
	udev.port SERDES_CH ALT_SIGVALID_CLK CLK
	udev.port SERDES_CH TSTCLK1 CLK
	udev.port SERDES_CH PMASCANCLK0 CLK
	udev.port SERDES_CH PMASCANCLK1 CLK
	udev.port SERDES_CH PMASCANCLK2 CLK
	udev.port SERDES_CH PMASCANCLK3 CLK
	udev.port SERDES_CH PMASCANCLK4 CLK
	udev.port SERDES_CH CPLLDMONCLK CLK
	udev.port SERDES_CH COREREFCLK CLK
	udev.port SERDES_CH RING_OSC_CLK_INT CLK

udev.model SERDES_IBUFDS SERDES_IBUFDS
udev.model SERDES_IBUFDS_DYN SERDES_IBUFDS
udev.model PLLREFCS PLLREFCS
	udev.port PLLREFCS CLK0 CLK
	udev.port PLLREFCS CLK1 CLK
udev.model CIBTEST CIBTEST
	udev.port CIBTEST L_CLK CLK
	udev.port CIBTEST M_CLK CLK
udev.model TSALL TSALL
udev.model RCLK RCLK
udev.model MIPI_CTRL MIPI_CTRL
udev.model MIPI_CLOCK MIPI_CLOCK
udev.model MIPI_PLL MIPI_PLL
udev.model CRC32 CRC32
udev.model PRBS31 PRBS31
udev.model TESTCNT TESTCNT
udev.model DTR DTR
	udev.port DTR CLK CLK
udev.model STAR STAR
	udev.port STAR CLK CLK

#==================== Part3: tile define ====================

udev.tile PT 10
udev.add_comp PT PIO A
udev.add_comp PT PIO_DS A
udev.add_comp PT PIO B
udev.add_comp PT PIO C
udev.add_comp PT PIO_DS C
udev.add_comp PT PIO D
udev.add_comp PT IOLOGIC AA
udev.add_comp PT IOLOGIC BB
udev.add_comp PT IOLOGIC CC
udev.add_comp PT IOLOGIC DD

udev.tile PB 10
udev.add_comp PB PIO A
udev.add_comp PB PIO_DS A
udev.add_comp PB PIO B
udev.add_comp PB PIO C
udev.add_comp PB PIO_DS C
udev.add_comp PB PIO D
udev.add_comp PB IOLOGIC AA
udev.add_comp PB IOLOGIC BB
udev.add_comp PB IOLOGIC CC
udev.add_comp PB IOLOGIC DD

udev.tile PLB 6
udev.add_comp PLB SLICE T0
udev.add_comp PLB HSLICE T0
udev.add_comp PLB HSLICE T1
udev.add_comp PLB SLICE B0
udev.add_comp PLB HSLICE B0
udev.add_comp PLB HSLICE B1

udev.tile EBR0 8
udev.add_comp EBR0 EBR9 A
udev.add_comp EBR0 CIBTEST B
udev.add_comp EBR0 SLICE T0
udev.add_comp EBR0 SLICEM T0
udev.add_comp EBR0 HSLICE T0
udev.add_comp EBR0 HSLICEM T0
udev.add_comp EBR0 HSLICE T1
udev.add_comp EBR0 HSLICEM T1

udev.tile EBR1 7
udev.add_comp EBR1 CIBTEST B
udev.add_comp EBR1 SLICE T0
udev.add_comp EBR1 SLICEM T0
udev.add_comp EBR1 HSLICE T0
udev.add_comp EBR1 HSLICEM T0
udev.add_comp EBR1 HSLICE T1
udev.add_comp EBR1 HSLICEM T1

udev.tile DSP0 10
udev.add_comp DSP0 MULT18 B
udev.add_comp DSP0 MULT9 B
udev.add_comp DSP0 MULT9 A
udev.add_comp DSP0 CIBTEST BB
udev.add_comp DSP0 SLICE T0
udev.add_comp DSP0 SLICEM T0
udev.add_comp DSP0 HSLICE T0
udev.add_comp DSP0 HSLICEM T0
udev.add_comp DSP0 HSLICE T1
udev.add_comp DSP0 HSLICEM T1

udev.tile DSP1 10
udev.add_comp DSP1 MULT18 B
udev.add_comp DSP1 MULT9 B
udev.add_comp DSP1 MULT9 A
udev.add_comp DSP1 CIBTEST BB
udev.add_comp DSP1 SLICE T0
udev.add_comp DSP1 SLICEM T0
udev.add_comp DSP1 HSLICE T0
udev.add_comp DSP1 HSLICEM T0
udev.add_comp DSP1 HSLICE T1
udev.add_comp DSP1 HSLICEM T1

udev.tile DSP2 10
udev.add_comp DSP2 ALU54 B
udev.add_comp DSP2 ALU24 B
udev.add_comp DSP2 ALU24 A
udev.add_comp DSP2 CIBTEST BB
udev.add_comp DSP2 SLICE T0
udev.add_comp DSP2 SLICEM T0
udev.add_comp DSP2 HSLICE T0
udev.add_comp DSP2 HSLICEM T0
udev.add_comp DSP2 HSLICE T1
udev.add_comp DSP2 HSLICEM T1

udev.tile TPLL0 2
udev.add_comp TPLL0 PLL TPLL0
udev.add_comp TPLL0 PLLREFCS TPLLREFCS0

udev.tile TPLL1 2
udev.add_comp TPLL1 PLL TPLL1
udev.add_comp TPLL1 PLLREFCS TPLLREFCS1

udev.tile BPLL0 1
udev.add_comp BPLL0 PLL BPLL0
#udev.add_comp BPLL0 PLLREFCS BPLLREFCS0

udev.tile BPLL1 2
udev.add_comp BPLL1 PLL BPLL1
udev.add_comp BPLL1 PLLREFCS BPLLREFCS1

for {set i 1} {$i < 4} {incr i} {
    udev.tile BC${i} 4
    udev.add_comp BC${i} BCLVDSO BCLVDSO${i}
    udev.add_comp BC${i} BCINRD  BCINRD${i}
    udev.add_comp BC${i} BCPG    BCPG${i}
	udev.add_comp BC${i} BCODT   BCODT${i}
}

udev.tile TECLK0 12
udev.add_comp TECLK0 EDELAY TEDELAY0_0
udev.add_comp TECLK0 EDELAY TEDELAY0_1
udev.add_comp TECLK0 EDELAY TEDELAY0_2
udev.add_comp TECLK0 EDELAY TEDELAY0_3
udev.add_comp TECLK0 CLKDIV TCLKDIV0_0
udev.add_comp TECLK0 CLKDIV TCLKDIV0_1
udev.add_comp TECLK0 CLKDIV TCLKDIV0_2
udev.add_comp TECLK0 CLKDIV TCLKDIV0_3
udev.add_comp TECLK0 ECLKSYNC TECLKSYNC0_0
udev.add_comp TECLK0 ECLKSYNC TECLKSYNC0_1
udev.add_comp TECLK0 ECLKSYNC TECLKSYNC0_2
udev.add_comp TECLK0 ECLKSYNC TECLKSYNC0_3

udev.tile TECLK1 12
udev.add_comp TECLK1 EDELAY TEDELAY1_0
udev.add_comp TECLK1 EDELAY TEDELAY1_1
udev.add_comp TECLK1 EDELAY TEDELAY1_2
udev.add_comp TECLK1 EDELAY TEDELAY1_3
udev.add_comp TECLK1 CLKDIV TCLKDIV1_0
udev.add_comp TECLK1 CLKDIV TCLKDIV1_1
udev.add_comp TECLK1 CLKDIV TCLKDIV1_2
udev.add_comp TECLK1 CLKDIV TCLKDIV1_3
udev.add_comp TECLK1 ECLKSYNC TECLKSYNC1_0
udev.add_comp TECLK1 ECLKSYNC TECLKSYNC1_1
udev.add_comp TECLK1 ECLKSYNC TECLKSYNC1_2
udev.add_comp TECLK1 ECLKSYNC TECLKSYNC1_3

udev.tile BECLK1 14
udev.add_comp BECLK1 EDELAY BEDELAY1_0
udev.add_comp BECLK1 EDELAY BEDELAY1_1
udev.add_comp BECLK1 EDELAY BEDELAY1_2
udev.add_comp BECLK1 EDELAY BEDELAY1_3
udev.add_comp BECLK1 CLKDIV BCLKDIV1_0
udev.add_comp BECLK1 CLKDIV BCLKDIV1_1
udev.add_comp BECLK1 CLKDIV BCLKDIV1_2
udev.add_comp BECLK1 CLKDIV BCLKDIV1_3
udev.add_comp BECLK1 ECLKSYNC BECLKSYNC1_0
udev.add_comp BECLK1 ECLKSYNC BECLKSYNC1_1
udev.add_comp BECLK1 ECLKSYNC BECLKSYNC1_2
udev.add_comp BECLK1 ECLKSYNC BECLKSYNC1_3
udev.add_comp BECLK1 CLKFBBUF CLKFBBUF0
udev.add_comp BECLK1 CLKFBBUF CLKFBBUF1

for {set i 0} {$i < 2} {incr i} {
    for {set j 0} {$j < 4} {incr j} {
        set loc ${i}_${j}
        udev.tile TDQS${loc} 1
        udev.add_comp TDQS${loc} DQS TDQS${loc}
		
		udev.tile TDDRDLL${loc} 1
        udev.add_comp TDDRDLL${loc} DLL TDDRDLL${loc}
		
		udev.tile TDLLDEL${loc} 1
        udev.add_comp TDLLDEL${loc} DLLDEL TDLLDEL${loc}
    }
}

for {set i 1} {$i < 2} {incr i} {
    for {set j 0} {$j < 4} {incr j} {
        set loc ${i}_${j}
        udev.tile BDQS${loc} 1
        udev.add_comp BDQS${loc} DQS BDQS${loc}
		
		udev.tile BDDRDLL${loc} 1
        udev.add_comp BDDRDLL${loc} DLL BDDRDLL${loc}
		
		udev.tile BDLLDEL${loc} 1
        udev.add_comp BDLLDEL${loc} DLLDEL BDLLDEL${loc}
    }
}

udev.tile BDDRDLL0_0 1
udev.add_comp BDDRDLL0_0 DLL BDDRDLL0_0

for {set i 0} {$i < 1} {incr i} {
    for {set j 0} {$j < 4} {incr j} {
        set loc ${i}_${j}
		udev.tile BDLLDEL${loc} 1
        udev.add_comp BDLLDEL${loc} DLLDEL BDLLDEL${loc}
    }
}

udev.tile CENTER 41
for {set i 0} {$i < 30} {incr i} {
	udev.add_comp CENTER DCC DCC${i}
}
for {set i 30} {$i < 32} {incr i} {
	udev.add_comp CENTER DCS DCS${i}
}
udev.add_comp CENTER CENTEST CENTEST
udev.add_comp CENTER TAPTEST TAPTEST
udev.add_comp CENTER CIBTEST B
udev.add_comp CENTER SLICE T0
udev.add_comp CENTER SLICEM T0
udev.add_comp CENTER HSLICE T0
udev.add_comp CENTER HSLICEM T0
udev.add_comp CENTER HSLICE T1
udev.add_comp CENTER HSLICEM T1

#set regions {LT LL RT RL MB}
#foreach r $regions {
#    for {set i 0} {$i < 12} {incr i} {
#        udev.add_comp CENTER RCLK RCLK_${r}_$i
#    }
#}

#for {set n 0} {$n < 8} {incr n} {
#    udev.tile TREGION${n} 96
#    for {set i 0} {$i < 12} {incr i} {
#        udev.add_comp TREGION${n} DCC TDCC${n}_${i}
#    }
#    for {set i 12} {$i < 14} {incr i} {
#        udev.add_comp TREGION${n} DCS TDCS${n}_${i}
#    }
#    for {set i 14} {$i < 16} {incr i} {
#        udev.add_comp TREGION${n} DCC TDCC${n}_${i}
#    }
#    for {set i 1} {$i < 16} {incr i} {
#        udev.add_comp TREGION${n} CLKBRANCH TCLKBRANCH${n}_${i}
#    }
#    for {set i 1} {$i < 16} {incr i} {
#        udev.add_comp TREGION${n} CDELAY TCDELAY${n}_${i}
#    }
#    udev.add_comp TREGION${n} CENTEST TCENTEST{n}_${i}
#    udev.add_comp TREGION${n} TAPTEST TTAPTEST{n}_${i}
#    udev.add_comp TREGION${n} CIBTEST T        
#}
#
#for {set n 0} {$n < 8} {incr n} {
#    udev.tile BREGION${n} 112
#    for {set i 0} {$i < 12} {incr i} {
#        udev.add_comp BREGION${n} DCC BDCC${n}_${i} -pin_map BDCC${n}_${i}_MAP
#    }
#    for {set i 12} {$i < 14} {incr i} {
#        udev.add_comp BREGION${n} DCS BDCS${n}_${i}
#    }
#    for {set i 14} {$i < 16} {incr i} {
#        udev.add_comp BREGION${n} DCC BDCC${n}_${i}
#    }
#    if {$n < 4} {
#        for {set i 0} {$i < 16} {incr i} {
#            udev.add_comp BREGION${n} RCLKDIV BRCLKDIV${n}_${i} -pin_map BRCLKDIV${n}_${i}_MAP
#        }
#    }
#    for {set i 1} {$i < 16} {incr i} {
#        udev.add_comp BREGION${n} CLKBRANCH BCLKBRANCH${n}_${i}
#    }
#    for {set i 1} {$i < 16} {incr i} {
#        udev.add_comp BREGION${n} CDELAY BCDELAY${n}_${i}
#    }
#    udev.add_comp BREGION${n} CENTEST BCENTEST{n}_${i}
#    udev.add_comp BREGION${n} TAPTEST BTAPTEST{n}_${i}
#    udev.add_comp BREGION${n} CIBTEST T        
#}

udev.tile JTAG 18
udev.add_comp JTAG JTAG JTAG
udev.add_comp JTAG GSR GSR
udev.add_comp JTAG EFB EFB
udev.add_comp JTAG ECC_MEM ECC_MEM
udev.add_comp JTAG CFG_PERSIST CFG_PERSIST
udev.add_comp JTAG START START
udev.add_comp JTAG TSALL TSALL
udev.add_comp JTAG OSC OSC
udev.add_comp JTAG SED SED
udev.add_comp JTAG PCNTR PCNTR
udev.add_comp JTAG CIBBOOT CIBBOOT
udev.add_comp JTAG CRC32 CRC32A
udev.add_comp JTAG CRC32 CRC32B
udev.add_comp JTAG PRBS31 PRBS31
udev.add_comp JTAG TESTCNT TESTCNT
udev.add_comp JTAG DNA_PORT DNA_PORT
udev.add_comp JTAG ISCPU ISCPU
udev.add_comp JTAG DTR DTR
udev.add_comp JTAG STAR STAR

#udev.tile CM3 1
#udev.add_comp CM3 CM3 CM3 -pin_map CM3_MAP
#udev.tile SADC 1
#udev.add_comp SADC SADC SADC -pin_map SADC_MAP
#udev.add_comp SADC CIBTEST T
#udev.tile GADC 1
#udev.add_comp GADC GADC GADC -pin_map GADC_MAP
#udev.add_comp GADC CIBTEST T

#udev.tile TDDRCTRL0 1
#udev.add_comp TDDRCTRL0 DDRCTRL TDDRCTRL0 -pin_map TDDRCTRL0_MAP
#
#udev.tile BDDRCTRL0 1
#udev.add_comp BDDRCTRL0 DDRCTRL BDDRCTRL0 -pin_map BDDRCTRL0_MAP
#
#udev.tile BDDRCTRL1 1
#udev.add_comp BDDRCTRL1 DDRCTRL BDDRCTRL1 -pin_map BDDRCTRL1_MAP
#
#udev.tile MFG 1
#udev.add_comp MFG MFG MFG
#
#udev.tile POR 1
#udev.add_comp POR POR POR
#
#udev.tile BG 1
#udev.add_comp BG BG BG

#for {set i 2} {$i < 4} {incr i} {
#    udev.tile SERDES${i} 7
#    udev.add_comp SERDES${i} SERDES_COM SERDES${i}_COM -pin_map SERDES${i}_COM_MAP
#    udev.add_comp SERDES${i} SERDES_CH SERDES${i}_CH0  -pin_map SERDES${i}_CH0_MAP
#    udev.add_comp SERDES${i} SERDES_CH SERDES${i}_CH1  -pin_map SERDES${i}_CH1_MAP
#    udev.add_comp SERDES${i} SERDES_CH SERDES${i}_CH2  -pin_map SERDES${i}_CH2_MAP
#    udev.add_comp SERDES${i} SERDES_CH SERDES${i}_CH3  -pin_map SERDES${i}_CH3_MAP
#    udev.add_comp SERDES${i} SERDES_IBUFDS SERDES${i}_IBUFDS0 
#    udev.add_comp SERDES${i} SERDES_IBUFDS SERDES${i}_IBUFDS1 
#}

#udev.tile PCIE 1
#udev.add_comp PCIE PCIE PCIE -pin_map PCIE_MAP
#udev.add_comp PCIE CIBTEST T        

udev.tile CIB 1
udev.add_comp CIB CIBTEST T

udev.tile DIB 4
udev.add_comp DIB CIBTEST T
udev.add_comp DIB SLICE B0
udev.add_comp DIB HSLICE B0
udev.add_comp DIB HSLICE B1

udev.tile CLIB 4
udev.add_comp CLIB CIBTEST B
udev.add_comp CLIB SLICE T0
udev.add_comp CLIB HSLICE T0
udev.add_comp CLIB HSLICE T1

udev.tile CEIB 4
udev.add_comp CEIB CIBTEST B
udev.add_comp CEIB SLICE T0
udev.add_comp CEIB HSLICE T0
udev.add_comp CEIB HSLICE T1

udev.tile DUMMY 7
udev.add_comp DUMMY CIBTEST B
udev.add_comp DUMMY SLICE T0
udev.add_comp DUMMY SLICEM T0
udev.add_comp DUMMY HSLICE T0
udev.add_comp DUMMY HSLICEM T0
udev.add_comp DUMMY HSLICE T1
udev.add_comp DUMMY HSLICEM T1

udev.tile MIPI 7
udev.add_comp MIPI MIPI_CTRL MIPI_CTRL
udev.add_comp MIPI MIPI_CLOCK MIPI_CLOCK
udev.add_comp MIPI MIPI_PLL MIPI_PLL


#==================== Part4: floorplan setup ====================

set ROW 27
set COL 121
udev.init_floorplan $ROW $COL

set bank 1
set IO_COL {9 13 16 20 23 27 37 40 44 47 51 54 58}
foreach c $IO_COL {
	udev.fp.add_tile PT${c} PT 0 $c
}

set bank 2
set IO_COL {61 65 68 72 75 79 82 86 97 100 104 107 111 114 118}
foreach c $IO_COL {
	udev.fp.add_tile PT${c} PT 0 $c
}

set bank 3
set IO_COL {69 73 76 80 83 87 97 100 104 107 111 114 118}
foreach c $IO_COL {
	udev.fp.add_tile PB${c} PB 26 $c
}

set bank 5
set IO_COL {32 35 38 41 44}
foreach c $IO_COL {
	udev.fp.add_tile PB${c} PB 26 $c
}

set bank 4
set IO_COL {49 53 57 61 65}
foreach c $IO_COL {
	udev.fp.add_tile PB${c} PB 26 $c
}

#Serdes PIO
#udev.fp.add_tile PB97 PBXB 91 97
#udev.fp.add_tile PB108 PBXB 91 108
#udev.fp.add_tile PB119 PBXA 91 119
#udev.fp.add_tile PB123 PBXB 91 123
#udev.fp.add_tile PB134 PBXB 91 134
#udev.fp.add_tile PB145 PBXB 91 145
#udev.fp.add_tile PB156 PBXB 91 156
#udev.fp.add_tile PB167 PBXA 91 167
#udev.fp.add_tile PB171 PBXB 91 171
#udev.fp.add_tile PB182 PBXB 91 182

set PLB_ROW {2 3 5 7 8 10 11 13 15 17 19 21 23}
foreach r $PLB_ROW {
    for {set c 9} {$c < $COL } {incr c} {
        udev.fp.add_tile R${r}C${c} PLB $r $c
    }
}
set PLB_ROW {24}
foreach r $PLB_ROW {
    for {set c 9} {$c < 49 } {incr c} {
        udev.fp.add_tile R${r}C${c} PLB $r $c
    }
	for {set c 69} {$c < $COL } {incr c} {
        udev.fp.add_tile R${r}C${c} PLB $r $c
    }
}

set EBR_ROW {4 6 12 16 20 22}
foreach r $EBR_ROW {
    for {set c 9} {$c < $COL } {incr c 2} {
        udev.fp.add_tile R${r}C${c} EBR0 $r $c
		if {$r == 12 && $c == 59} {
			udev.fp.add_tile R${r}C[expr $c+1] CENTER $r [expr $c + 1]
		} else {
			udev.fp.add_tile R${r}C[expr $c+1] EBR1 $r [expr $c + 1]
		}
    }
}

set DSP_ROW {9 14 18}
foreach r $DSP_ROW {
    for {set c 10} {$c < $COL } {incr c 3} {
        udev.fp.add_tile R${r}C${c} DSP0 $r $c
        udev.fp.add_tile R${r}C[expr $c + 1] DSP1 $r [expr $c + 1]
        udev.fp.add_tile R${r}C[expr $c + 2] DSP2 $r [expr $c + 2]
    }
}
foreach r $DSP_ROW {
    for {set c 9} {$c < 10 } {incr c 1} {
		udev.fp.add_tile R${r}C${c} DUMMY $r $c
    }
}

udev.fp.add_tile TPLL0 TPLL0 0 31
udev.fp.add_tile TPLL1 TPLL1 0 91
udev.fp.add_tile BPLL0 BPLL0 26 30
udev.fp.add_tile BPLL1 BPLL1 26 91
udev.fp.add_tile MIPI MIPI 26 50

udev.fp.add_tile BC1 BC1 0 26
udev.fp.add_tile BC2 BC2 0 85
udev.fp.add_tile BC3 BC3 26 86

udev.fp.add_tile TECLK0 TECLK0 0 30
udev.fp.add_tile TECLK1 TECLK1 0 90
udev.fp.add_tile BECLK1 BECLK1 26 90

udev.fp.add_tile TDQS0_0 TDQS0_0 0 11
udev.fp.add_tile TDQS0_1 TDQS0_1 0 25
udev.fp.add_tile TDQS0_2 TDQS0_2 0 38
udev.fp.add_tile TDQS0_3 TDQS0_3 0 56

udev.fp.add_tile TDQS1_0 TDQS1_0 0 63
udev.fp.add_tile TDQS1_1 TDQS1_1 0 84
udev.fp.add_tile TDQS1_2 TDQS1_2 0 98
udev.fp.add_tile TDQS1_3 TDQS1_3 0 116

udev.fp.add_tile BDQS1_0 BDQS1_0 26 71
udev.fp.add_tile BDQS1_1 BDQS1_1 26 85
udev.fp.add_tile BDQS1_2 BDQS1_2 26 98
udev.fp.add_tile BDQS1_3 BDQS1_3 26 116

udev.fp.add_tile TDDRDLL0_0 TDDRDLL0_0 0 19
udev.fp.add_tile TDDRDLL0_1 TDDRDLL0_1 0 21
udev.fp.add_tile TDDRDLL0_2 TDDRDLL0_2 0 43
udev.fp.add_tile TDDRDLL0_3 TDDRDLL0_3 0 50

udev.fp.add_tile TDDRDLL1_0 TDDRDLL1_0 0 71
udev.fp.add_tile TDDRDLL1_1 TDDRDLL1_1 0 78
udev.fp.add_tile TDDRDLL1_2 TDDRDLL1_2 0 103
udev.fp.add_tile TDDRDLL1_3 TDDRDLL1_3 0 110

udev.fp.add_tile BDDRDLL0_0 BDDRDLL0_0 26 40

udev.fp.add_tile BDDRDLL1_0 BDDRDLL1_0 26 78
udev.fp.add_tile BDDRDLL1_1 BDDRDLL1_1 26 82
udev.fp.add_tile BDDRDLL1_2 BDDRDLL1_2 26 102
udev.fp.add_tile BDDRDLL1_3 BDDRDLL1_3 26 109

udev.fp.add_tile TDLLDEL0_0 TDLLDEL0_0 0 28
udev.fp.add_tile TDLLDEL0_1 TDLLDEL0_1 0 29
udev.fp.add_tile TDLLDEL0_2 TDLLDEL0_2 0 34
udev.fp.add_tile TDLLDEL0_3 TDLLDEL0_3 0 35

udev.fp.add_tile TDLLDEL1_0 TDLLDEL1_0 0 87
udev.fp.add_tile TDLLDEL1_1 TDLLDEL1_1 0 88
udev.fp.add_tile TDLLDEL1_2 TDLLDEL1_2 0 94
udev.fp.add_tile TDLLDEL1_3 TDLLDEL1_3 0 95

udev.fp.add_tile BDLLDEL0_0 BDLLDEL0_0 26 36
udev.fp.add_tile BDLLDEL0_1 BDLLDEL0_1 26 37
udev.fp.add_tile BDLLDEL0_2 BDLLDEL0_2 26 42
udev.fp.add_tile BDLLDEL0_3 BDLLDEL0_3 26 43

udev.fp.add_tile BDLLDEL1_0 BDLLDEL1_0 26 88
udev.fp.add_tile BDLLDEL1_1 BDLLDEL1_1 26 89
udev.fp.add_tile BDLLDEL1_2 BDLLDEL1_2 26 94
udev.fp.add_tile BDLLDEL1_3 BDLLDEL1_3 26 95

#udev.fp.add_tile TREGION2 TREGION2 27 120
#udev.fp.add_tile TREGION3 TREGION3 27 168
#udev.fp.add_tile TREGION4 TREGION4 27 216
#udev.fp.add_tile TREGION5 TREGION5 27 264
#udev.fp.add_tile TREGION6 TREGION6 27 312
#
#udev.fp.add_tile BREGION2 BREGION2 52 120
#udev.fp.add_tile BREGION3 BREGION3 52 168
#udev.fp.add_tile BREGION4 BREGION4 52 216
#udev.fp.add_tile BREGION5 BREGION5 52 264
#udev.fp.add_tile BREGION6 BREGION6 52 312

udev.fp.add_tile JTAG JTAG 26 9

#udev.fp.add_tile PCIE PCIE 61 12
#udev.fp.add_tile TDDRCTRL0 TDDRCTRL0 0 144
#udev.fp.add_tile BDDRCTRL0 BDDRCTRL0 91 240
#udev.fp.add_tile BDDRCTRL1 BDDRCTRL1 91 288

set r 1
set skips {}
for {set c 9} {$c < $COL} {incr c} {
    if {[lsearch $skips $c] < 0} {
        udev.fp.add_tile R${r}C${c} DIB $r $c
    }
}

set r 25
set skips {}
for {set c 9} {$c < $COL} {incr c} {
    if {[lsearch $skips $c] < 0} {
        udev.fp.add_tile R${r}C${c} CLIB $r $c
    }
}

set r 24
for {set c 49} {$c < 69} {incr c} {
    udev.fp.add_tile R${r}C${c} CEIB $r $c
}


#==================== Part5: pad setup ====================

#udev.pad.bind PB41A PB41A JTAG_TDI 0
#udev.pad.bind PB44A PB44A JTAG_TDO 0
#udev.pad.bind PB41B PB41B JTAG_TCK 0
#udev.pad.bind PB44B PB44B JTAG_TMS 0

#udev.pad.bind P7 PB185A CFG_BVS 0
#udev.pad.bind T5 PB185B CFG_M0 0
#udev.pad.bind T2 PB185C CFG_M1 0
#udev.pad.bind P6 PB185D CFG_PROGRAM_B 0
#udev.pad.bind J7 PB191A CFG_DONE 0
#udev.pad.bind P5 PB191B CFG_M2 0
#udev.pad.bind G7 PB191C CFG_INIT_B 0
#udev.pad.bind C8 PB191D CFG_CCLK 0

udev.pad.bind PT9A PT9A IO|DIFFM 1
udev.pad.bind PT9B PT9B IO|DIFFS 1
udev.pad.bind PT9C PT9C IO|DIFFM|TDQS0_0 1
udev.pad.bind PT9D PT9D IO|DIFFS|TDQSN0_0 1
udev.pad.bind PT13A PT13A IO|DIFFM 1
udev.pad.bind PT13B PT13B IO|DIFFS 1
udev.pad.bind PT13C PT13C IO|DIFFM 1
udev.pad.bind PT13D PT13D IO|DIFFS 1
udev.pad.bind PT16A PT16A IO|DIFFM 1
udev.pad.bind PT16B PT16B IO|DIFFS 1
udev.pad.bind PT16C PT16C IO|DIFFM 1
udev.pad.bind PT16D PT16D IO|DIFFS 1
udev.pad.bind PT20A PT20A IO|DIFFM 1
udev.pad.bind PT20B PT20B IO|DIFFS 1
udev.pad.bind PT20C PT20C IO|DIFFM|TDQS0_1 1
udev.pad.bind PT20D PT20D IO|DIFFS|TDQSN0_1 1
udev.pad.bind PT23A PT23A IO|DIFFM 1
udev.pad.bind PT23B PT23B IO|DIFFS 1
udev.pad.bind PT23C PT23C IO|DIFFM|TPLL0_FB 1
udev.pad.bind PT23D PT23D IO|DIFFS 1
udev.pad.bind PT27A PT27A IO|DIFFM|CLK10P 1
udev.pad.bind PT27B PT27B IO|DIFFS 1
udev.pad.bind PT27C PT27C IO|DIFFM|CLK11P 1
udev.pad.bind PT27D PT27D IO|DIFFS 1
udev.pad.bind PT37A PT37A IO|DIFFM 1
udev.pad.bind PT37B PT37B IO|DIFFS 1
udev.pad.bind PT37C PT37C IO|DIFFM|CLK12P 1
udev.pad.bind PT37D PT37D IO|DIFFS 1
udev.pad.bind PT40A PT40A IO|DIFFM|TPLL0_REF 1
udev.pad.bind PT40B PT40B IO|DIFFS 1
udev.pad.bind PT40C PT40C IO|DIFFM|CLK13P 1
udev.pad.bind PT40D PT40D IO|DIFFS 1
udev.pad.bind PT44A PT44A IO|DIFFM|TDQS0_2 1
udev.pad.bind PT44B PT44B IO|DIFFS|TDQSN0_2 1
udev.pad.bind PT44C PT44C IO|DIFFM 1
udev.pad.bind PT44D PT44D IO|DIFFS 1
udev.pad.bind PT47A PT47A IO|DIFFM 1
udev.pad.bind PT47B PT47B IO|DIFFS 1
udev.pad.bind PT47C PT47C IO|DIFFM 1
udev.pad.bind PT47D PT47D IO|DIFFS 1
udev.pad.bind PT51A PT51A IO|DIFFM 1
udev.pad.bind PT51B PT51B IO|DIFFS 1
udev.pad.bind PT51C PT51C IO|DIFFM 1
udev.pad.bind PT51D PT51D IO|DIFFS 1
udev.pad.bind PT54A PT54A IO|DIFFM 1
udev.pad.bind PT54B PT54B IO|DIFFS 1
udev.pad.bind PT54C PT54C IO|DIFFM 1
udev.pad.bind PT54D PT54D IO|DIFFS 1
udev.pad.bind PT58A PT58A IO|DIFFM|TDQS0_3 1
udev.pad.bind PT58B PT58B IO|DIFFS|TDQSN0_3 1
udev.pad.bind PT58C PT58C IO|DIFFM 1
udev.pad.bind PT58D PT58D IO|DIFFS 1

udev.pad.bind PT61A PT61A IO|DIFFM 2
udev.pad.bind PT61B PT61B IO|DIFFS 2
udev.pad.bind PT61C PT61C IO|DIFFM 2
udev.pad.bind PT61D PT61D IO|DIFFS 2
udev.pad.bind PT65A PT65A IO|DIFFM|TDQS1_0 2
udev.pad.bind PT65B PT65B IO|DIFFS|TDQSN1_0 2
udev.pad.bind PT65C PT65C IO|DIFFM 2
udev.pad.bind PT65D PT65D IO|DIFFS 2
udev.pad.bind PT68A PT68A IO|DIFFM 2
udev.pad.bind PT68B PT68B IO|DIFFS 2
udev.pad.bind PT68C PT68C IO|DIFFM 2
udev.pad.bind PT68D PT68D IO|DIFFS 2
udev.pad.bind PT72A PT72A IO|DIFFM 2
udev.pad.bind PT72B PT72B IO|DIFFS 2
udev.pad.bind PT72C PT72C IO|DIFFM 2
udev.pad.bind PT72D PT72D IO|DIFFS 2
udev.pad.bind PT75A PT75A IO|DIFFM 2
udev.pad.bind PT75B PT75B IO|DIFFS 2
udev.pad.bind PT75C PT75C IO|DIFFM 2
udev.pad.bind PT75D PT75D IO|DIFFS 2
udev.pad.bind PT79A PT79A IO|DIFFM 2
udev.pad.bind PT79B PT79B IO|DIFFS 2
udev.pad.bind PT79C PT79C IO|DIFFM 2
udev.pad.bind PT79D PT79D IO|DIFFS 2
udev.pad.bind PT82A PT82A IO|DIFFM|TDQS1_1 2
udev.pad.bind PT82B PT82B IO|DIFFS|TDQSN1_1 2
udev.pad.bind PT82C PT82C IO|DIFFM|TPLL1_REF 2
udev.pad.bind PT82D PT82D IO|DIFFS 2
udev.pad.bind PT86A PT86A IO|DIFFM|CLK20P 2
udev.pad.bind PT86B PT86B IO|DIFFS 2
udev.pad.bind PT86C PT86C IO|DIFFM|CLK21P 2
udev.pad.bind PT86D PT86D IO|DIFFS 2
udev.pad.bind PT97A PT97A IO|DIFFM 2
udev.pad.bind PT97B PT97B IO|DIFFS 2
udev.pad.bind PT97C PT97C IO|DIFFM|CLK22P 2
udev.pad.bind PT97D PT97D IO|DIFFS 2
udev.pad.bind PT100A PT100A IO|DIFFM|CLK23P 2
udev.pad.bind PT100B PT100B IO|DIFFS 2
udev.pad.bind PT100C PT100C IO|DIFFM|TPLL1_FB 2
udev.pad.bind PT100D PT100D IO|DIFFS 2
udev.pad.bind PT104A PT104A IO|DIFFM|TDQS1_2 2
udev.pad.bind PT104B PT104B IO|DIFFS|TDQSN1_2 2
udev.pad.bind PT104C PT104C IO|DIFFM 2
udev.pad.bind PT104D PT104D IO|DIFFS 2
udev.pad.bind PT107A PT107A IO|DIFFM 2
udev.pad.bind PT107B PT107B IO|DIFFS 2
udev.pad.bind PT107C PT107C IO|DIFFM 2
udev.pad.bind PT107D PT107D IO|DIFFS 2
udev.pad.bind PT111A PT111A IO|DIFFM 2
udev.pad.bind PT111B PT111B IO|DIFFS 2
udev.pad.bind PT111C PT111C IO|DIFFM 2
udev.pad.bind PT111D PT111D IO|DIFFS 2
udev.pad.bind PT114A PT114A IO|DIFFM 2
udev.pad.bind PT114B PT114B IO|DIFFS 2
udev.pad.bind PT114C PT114C IO|DIFFM|TDQS1_3 2
udev.pad.bind PT114D PT114D IO|DIFFS|TDQSN1_3 2
udev.pad.bind PT118A PT118A IO|DIFFM 2
udev.pad.bind PT118B PT118B IO|DIFFS 2
udev.pad.bind PT118C PT118C IO|DIFFM 2
udev.pad.bind PT118D PT118D IO|DIFFS 2

udev.pad.bind PB69A PB69A IO|DIFFM 3
udev.pad.bind PB69B PB69B IO|DIFFS 3
udev.pad.bind PB69C PB69C IO|DIFFM 3
udev.pad.bind PB69D PB69D IO|DIFFS 3
udev.pad.bind PB73A PB73A IO|DIFFM|BDQS1_0 3
udev.pad.bind PB73B PB73B IO|DIFFS|BDQSN1_0 3
udev.pad.bind PB73C PB73C IO|DIFFM 3
udev.pad.bind PB73D PB73D IO|DIFFS 3
udev.pad.bind PB76A PB76A IO|DIFFM 3
udev.pad.bind PB76B PB76B IO|DIFFS 3
udev.pad.bind PB76C PB76C IO|DIFFM 3
udev.pad.bind PB76D PB76D IO|DIFFS 3
udev.pad.bind PB80A PB80A IO|DIFFM 3
udev.pad.bind PB80B PB80B IO|DIFFS 3
udev.pad.bind PB80C PB80C IO|DIFFM 3
udev.pad.bind PB80D PB80D IO|DIFFS 3
udev.pad.bind PB83A PB83A IO|DIFFM|BDQS1_1 3
udev.pad.bind PB83B PB83B IO|DIFFS|BDQSN1_1 3
udev.pad.bind PB83C PB83C IO|DIFFM|BPLL1_REF 3
udev.pad.bind PB83D PB83D IO|DIFFS 3
udev.pad.bind PB87A PB87A IO|DIFFM|CLK30P 3
udev.pad.bind PB87B PB87B IO|DIFFS 3
udev.pad.bind PB87C PB87C IO|DIFFM|CLK31P 3
udev.pad.bind PB87D PB87D IO|DIFFS 3
udev.pad.bind PB97A PB97A IO|DIFFM 3
udev.pad.bind PB97B PB97B IO|DIFFS 3
udev.pad.bind PB97C PB97C IO|DIFFM|CLK32P 3
udev.pad.bind PB97D PB97D IO|DIFFS 3
udev.pad.bind PB100A PB100A IO|DIFFM|CLK33P 3
udev.pad.bind PB100B PB100B IO|DIFFS 3
udev.pad.bind PB100C PB100C IO|DIFFM|BPLL1_FB 3
udev.pad.bind PB100D PB100D IO|DIFFS 3
udev.pad.bind PB104A PB104A IO|DIFFM|BDQS1_2 3
udev.pad.bind PB104B PB104B IO|DIFFS|BDQSN1_2 3
udev.pad.bind PB104C PB104C IO|DIFFM 3
udev.pad.bind PB104D PB104D IO|DIFFS 3
udev.pad.bind PB107A PB107A IO|DIFFM 3
udev.pad.bind PB107B PB107B IO|DIFFS 3
udev.pad.bind PB107C PB107C IO|DIFFM 3
udev.pad.bind PB107D PB107D IO|DIFFS 3
udev.pad.bind PB111A PB111A IO|DIFFM 3
udev.pad.bind PB111B PB111B IO|DIFFS 3
udev.pad.bind PB111C PB111C IO|DIFFM 3
udev.pad.bind PB111D PB111D IO|DIFFS 3
udev.pad.bind PB114A PB114A IO|DIFFM 3
udev.pad.bind PB114B PB114B IO|DIFFS 3
udev.pad.bind PB114C PB114C IO|DIFFM|BDQS1_3 3
udev.pad.bind PB114D PB114D IO|DIFFS|BDQSN1_3 3
udev.pad.bind PB118A PB118A IO|DIFFM 3
udev.pad.bind PB118B PB118B IO|DIFFS 3
udev.pad.bind PB118C PB118C IO|DIFFM 3
udev.pad.bind PB118D PB118D IO|DIFFS 3

#MIPI IO
udev.pad.bind PB49A PB49A MIPI|IO|DIFFM 4
udev.pad.bind PB49B PB49B MIPI|IO|DIFFS 4
udev.pad.bind PB49C PB49C MIPI|IO|DIFFM 4
udev.pad.bind PB49D PB49D MIPI|IO|DIFFS 4
udev.pad.bind PB53A PB53A MIPI|IO|DIFFM 4
udev.pad.bind PB53B PB53B MIPI|IO|DIFFS 4
udev.pad.bind PB53C PB53C MIPI|IO|DIFFM 4
udev.pad.bind PB53D PB53D MIPI|IO|DIFFS 4
udev.pad.bind PB57A PB57A MIPI|IO|DIFFM 4
udev.pad.bind PB57B PB57B MIPI|IO|DIFFS 4
udev.pad.bind PB57C PB57C MIPI|IO|DIFFM 4
udev.pad.bind PB57D PB57D MIPI|IO|DIFFS 4
udev.pad.bind PB61A PB61A MIPI|IO|DIFFM 4
udev.pad.bind PB61B PB61B MIPI|IO|DIFFS 4
udev.pad.bind PB61C PB61C MIPI|IO|DIFFM 4
udev.pad.bind PB61D PB61D MIPI|IO|DIFFS 4
udev.pad.bind PB65A PB65A MIPI|IO|DIFFM 4
udev.pad.bind PB65B PB65B MIPI|IO|DIFFS 4
udev.pad.bind PB65C PB65C MIPI|IO|DIFFM 4
udev.pad.bind PB65D PB65D MIPI|IO|DIFFS 4

udev.pad.bind PB32A PB32A IO|DIFFM|BPLL0_REF 5
udev.pad.bind PB32B PB32B IO|DIFFS 5
udev.pad.bind PB32C PB32C IO|DIFFM|BPLL0_FB 5
udev.pad.bind PB32D PB32D IO|DIFFS 5
udev.pad.bind PB35A PB35A IO|DIFFM|CLK50P 5
udev.pad.bind PB35B PB35B IO|DIFFS 5
udev.pad.bind PB35C PB35C IO|DIFFM|CLK51P 5
udev.pad.bind PB35D PB35D IO|DIFFS 5
udev.pad.bind PB38A PB38A IO|DIFFM|CLK52P 5
udev.pad.bind PB38B PB38B IO|DIFFS 5
udev.pad.bind PB38C PB38C IO|DIFFM|CLK53P 5
udev.pad.bind PB38D PB38D IO|DIFFS 5
udev.pad.bind PB41A PB41A IO|DIFFM 5
udev.pad.bind PB41B PB41B IO|DIFFS 5
udev.pad.bind PB41C PB41C IO|DIFFM 5
udev.pad.bind PB41D PB41D IO|DIFFS 5
udev.pad.bind PB44A PB44A IO|DIFFM 5
udev.pad.bind PB44B PB44B IO|DIFFS 5
udev.pad.bind PB44C PB44C IO|DIFFM 5
udev.pad.bind PB44D PB44D IO|DIFFS 5


#==================== Part6: bank info setup ====================

udev.bank.info DLLDEL { TDLLDEL0_0:1; TDLLDEL0_1:1; TDLLDEL0_2:1; TDLLDEL0_3:1; \
                        TDLLDEL1_0:2; TDLLDEL1_1:2; TDLLDEL1_2:2; TDLLDEL1_3:2; \
                        BDLLDEL0_0:5; BDLLDEL0_1:5; BDLLDEL0_2:5; BDLLDEL0_3:5; \
						BDLLDEL1_0:3; BDLLDEL1_1:3; BDLLDEL1_2:3; BDLLDEL1_3:3; }

udev.bank.info CLKDIV { TCLKDIV0_0:1; TCLKDIV0_1:1; TCLKDIV0_2:1; TCLKDIV0_3:1; \
                        TCLKDIV1_0:2; TCLKDIV1_1:2; TCLKDIV1_2:2; TCLKDIV1_3:2; \
                        BCLKDIV1_0:3; BCLKDIV1_1:3; BCLKDIV1_2:3; BCLKDIV1_3:3; }

udev.bank.info EDELAY { TEDELAY0_0:1; TEDELAY0_1:1; TEDELAY0_2:1; TEDELAY0_3:1; \
                        TEDELAY1_0:2; TEDELAY1_1:2; TEDELAY1_2:2; TEDELAY1_3:2; \
                        BEDELAY1_0:3; BEDELAY1_1:3; BEDELAY1_2:3; BEDELAY1_3:3; }

udev.bank.info ECLKSYNC { TECLKSYNC0_0:1; TECLKSYNC0_1:1; TECLKSYNC0_2:1; TECLKSYNC0_3:1; \
                          TECLKSYNC1_0:2; TECLKSYNC1_1:2; TECLKSYNC1_2:2; TECLKSYNC1_3:2; \
                          BECLKSYNC1_0:3; BECLKSYNC1_1:3; BECLKSYNC1_2:3; BECLKSYNC1_3:3; }

udev.bank.info CLKFBBUF {CLKFBBUF0:3; CLKFBBUF1:3;}

udev.bank.info DDRDLL { TDDRDLL0_0:1; TDDRDLL0_1:1; TDDRDLL0_2:1; TDDRDLL0_3:1; \
                        TDDRDLL1_0:2; TDDRDLL1_1:2; TDDRDLL1_2:2; TDDRDLL1_3:2; \
						BDDRDLL0_0:5; \
                        BDDRDLL1_0:3; BDDRDLL1_1:3; BDDRDLL1_2:3; BDDRDLL1_3:3; }

udev.bank.info DQS { TDQS0_0:1; TDQS0_1:1; TDQS0_2:1; TDQS0_3:1; \
                     TDQS1_0:2; TDQS1_1:2; TDQS1_2:2; TDQS1_3:2; \
                     BDQS1_0:3; BDQS1_1:3; BDQS1_2:3; BDQS1_3:3; }

udev.bank.info PLL {TPLL0:1; TPLL1:2; BPLL0:5; BPLL1:3; MIPI_PLL:4;}

udev.bank.info PLLREFCS {TPLLREFCS0:1; TPLLREFCS1:2; BPLLREFCS0:5; BPLLREFCS1:3;}

set hp_types { \
    LVCMOS18 \
    LVCMOS15 LVCMOS12 \
    LVCMOS18D LVCMOS15D LVCMOS12D \
    SSTL18_I SSTL15 SSTL15_I \
    SSTL15_R SSTL135 SSTL135_R HSTL15_I \
    HSTL18_I HSUL12 SSTL18_II \
    SSTL15_II HSTL15_II HSTL18_II \
    SSTL18D_I SSTL15D_I SSTL15D SSTL15D_R SSTL135D \
    SSTL135D_R HSTL15D_I HSTL18D_I HSUL12D \
    SSTL18D_II SSTL15D_II HSTL15D_II \
    HSTL18D_II MDDR18 MDDR18D LVDS18 \
    HSTL12 HSTL12D SSTL12 SSTL12D \
	POD12 POD12D \
	MIPI \
}
foreach type $hp_types {
    foreach bank {1 2 3} {
        udev.bank.iotype $bank $type
    }
}

set hd_types { \
    LVCMOS33 PCI33 LVTTL33 LVCMOS25 LVCMOS18 \
    LVCMOS15 LVCMOS12 LVTTL33D LVCMOS33D LVCMOS25D \
    LVCMOS18D LVCMOS15D LVCMOS12D LVCMOS25R33 \
    LVCMOS18R33 LVCMOS15R33 LVCMOS18R25 LVCMOS15R25 \
    SSTL25_I SSTL18_I SSTL15 SSTL15_I \
    SSTL15_R SSTL135 SSTL135_R HSTL15_I \
    HSTL18_I HSUL12 SSTL25_II SSTL18_II \
    SSTL15_II HSTL15_II HSTL18_II SSTL25D_I \
    SSTL18D_I SSTL15D_I SSTL15D SSTL15D_R SSTL135D \
    SSTL135D_R HSTL15D_I HSTL18D_I HSUL12D \
    SSTL25D_II SSTL18D_II SSTL15D_II HSTL15D_II \
    HSTL18D_II MDDR18 MDDR18D LVDS18 \
    LVDS25 M_LVDS25 TMDS33 MLVDS25E \
    BLVDS25E RSDS25E LVDS25E PPDS25 \
    HSTL12 HSTL12D SSTL12 SSTL12D \
}
foreach type $hd_types {
    foreach bank {5} {
        udev.bank.iotype $bank $type
    }
}


#==================== Part7: connection setup ====================

#=====DLLDEL conn=====
udev.conn TDLLDEL0_0::A PT27A::PADDI
udev.conn TDLLDEL0_1::A PT27C::PADDI
udev.conn TDLLDEL0_2::A PT37C::PADDI
udev.conn TDLLDEL0_3::A PT40C::PADDI

udev.conn TDLLDEL1_0::A PT86A::PADDI
udev.conn TDLLDEL1_1::A PT86C::PADDI
udev.conn TDLLDEL1_2::A PT97C::PADDI
udev.conn TDLLDEL1_3::A PT100A::PADDI

udev.conn BDLLDEL0_0::A PB35A::PADDI
udev.conn BDLLDEL0_1::A PB35C::PADDI
udev.conn BDLLDEL0_2::A PB38A::PADDI
udev.conn BDLLDEL0_3::A PB38C::PADDI

udev.conn BDLLDEL1_0::A PB87A::PADDI
udev.conn BDLLDEL1_1::A PB87C::PADDI
udev.conn BDLLDEL1_2::A PB97C::PADDI
udev.conn BDLLDEL1_3::A PB100A::PADDI

udev.conn TDLLDEL0_0::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDLLDEL0_1::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDLLDEL0_2::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDLLDEL0_3::DDRDEL TDDRDLL0_<0:3>::DDRDEL

udev.conn TDLLDEL1_0::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDLLDEL1_1::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDLLDEL1_2::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDLLDEL1_3::DDRDEL TDDRDLL1_<0:3>::DDRDEL

udev.conn BDLLDEL0_0::DDRDEL BDDRDLL0_0::DDRDEL
udev.conn BDLLDEL0_1::DDRDEL BDDRDLL0_0::DDRDEL
udev.conn BDLLDEL0_2::DDRDEL BDDRDLL0_0::DDRDEL
udev.conn BDLLDEL0_3::DDRDEL BDDRDLL0_0::DDRDEL

udev.conn BDLLDEL1_0::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDLLDEL1_1::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDLLDEL1_2::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDLLDEL1_3::DDRDEL BDDRDLL1_<0:3>::DDRDEL

#=====DDRDLL conn=====
udev.conn TDDRDLL0_0::CLK TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO TDLLDEL0_<0:3>::Z
udev.conn TDDRDLL0_1::CLK TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO TDLLDEL0_<0:3>::Z
udev.conn TDDRDLL0_2::CLK TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO TDLLDEL0_<0:3>::Z
udev.conn TDDRDLL0_3::CLK TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO TDLLDEL0_<0:3>::Z

udev.conn TDDRDLL1_0::CLK TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO TDLLDEL1_<0:3>::Z
udev.conn TDDRDLL1_1::CLK TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO TDLLDEL1_<0:3>::Z
udev.conn TDDRDLL1_2::CLK TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO TDLLDEL1_<0:3>::Z
udev.conn TDDRDLL1_3::CLK TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO TDLLDEL1_<0:3>::Z

udev.conn BDDRDLL0_0::CLK BDLLDEL0_<0:3>::Z

udev.conn BDDRDLL1_0::CLK BECLKSYNC1_<0:3>::ECLKO BDLLDEL1_<0:3>::Z
udev.conn BDDRDLL1_1::CLK BECLKSYNC1_<0:3>::ECLKO BDLLDEL1_<0:3>::Z
udev.conn BDDRDLL1_2::CLK BECLKSYNC1_<0:3>::ECLKO BDLLDEL1_<0:3>::Z
udev.conn BDDRDLL1_3::CLK BECLKSYNC1_<0:3>::ECLKO BDLLDEL1_<0:3>::Z

udev.conn TDDRDLL0_0::CLK TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDDRDLL0_1::CLK TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDDRDLL0_2::CLK TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDDRDLL0_3::CLK TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O

udev.conn TDDRDLL1_0::CLK TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDDRDLL1_1::CLK TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDDRDLL1_2::CLK TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDDRDLL1_3::CLK TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O

udev.conn BDDRDLL1_0::CLK BEDELAY1_<0:3>::O
udev.conn BDDRDLL1_1::CLK BEDELAY1_<0:3>::O
udev.conn BDDRDLL1_2::CLK BEDELAY1_<0:3>::O
udev.conn BDDRDLL1_3::CLK BEDELAY1_<0:3>::O

#=====CLKDIV conn=====
udev.conn TCLKDIV0_0::CLKI TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO CIB
udev.conn TCLKDIV0_1::CLKI TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO CIB
udev.conn TCLKDIV0_2::CLKI TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO CIB
udev.conn TCLKDIV0_3::CLKI TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO CIB

udev.conn TCLKDIV1_0::CLKI TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO CIB
udev.conn TCLKDIV1_1::CLKI TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO CIB
udev.conn TCLKDIV1_2::CLKI TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO CIB
udev.conn TCLKDIV1_3::CLKI TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO CIB

udev.conn BCLKDIV1_0::CLKI BECLKSYNC1_0::ECLKO CIB
udev.conn BCLKDIV1_1::CLKI BECLKSYNC1_1::ECLKO CIB
udev.conn BCLKDIV1_2::CLKI BECLKSYNC1_2::ECLKO CIB
udev.conn BCLKDIV1_3::CLKI BECLKSYNC1_3::ECLKO CIB

#=====ECLKSYNC conn=====
udev.conn TECLKSYNC0_0::ECLKI TDLLDEL0_0::Z GND TPLL0::CLKOP TPLL0::CLKOS TPLL0::CLKOS2 CIB PT27A::PADDI TPLL0::CLKO6 TPLL0::CLKO5 TPLL0::CLKOS3
udev.conn TECLKSYNC0_1::ECLKI TDLLDEL0_1::Z GND TPLL0::CLKOP TPLL0::CLKOS TPLL0::CLKOS2 CIB PT27C::PADDI TPLL0::CLKO6 TPLL0::CLKO5 TPLL0::CLKOS3
udev.conn TECLKSYNC0_2::ECLKI TDLLDEL0_2::Z GND TPLL0::CLKOP TPLL0::CLKOS TPLL0::CLKOS2 CIB PT37C::PADDI TPLL0::CLKO6 TPLL0::CLKO5 TPLL0::CLKOS3
udev.conn TECLKSYNC0_3::ECLKI TDLLDEL0_3::Z GND TPLL0::CLKOP TPLL0::CLKOS TPLL0::CLKOS2 CIB PT40C::PADDI TPLL0::CLKO6 TPLL0::CLKO5 TPLL0::CLKOS3

udev.conn TECLKSYNC1_0::ECLKI TDLLDEL1_0::Z GND TPLL1::CLKOP TPLL1::CLKOS TPLL1::CLKOS2 CIB PT86A::PADDI TPLL1::CLKO6 TPLL1::CLKO5 TPLL1::CLKOS3
udev.conn TECLKSYNC1_1::ECLKI TDLLDEL1_1::Z GND TPLL1::CLKOP TPLL1::CLKOS TPLL1::CLKOS2 CIB PT86C::PADDI TPLL1::CLKO6 TPLL1::CLKO5 TPLL1::CLKOS3
udev.conn TECLKSYNC1_2::ECLKI TDLLDEL1_2::Z GND TPLL1::CLKOP TPLL1::CLKOS TPLL1::CLKOS2 CIB PT97C::PADDI TPLL1::CLKO6 TPLL1::CLKO5 TPLL1::CLKOS3
udev.conn TECLKSYNC1_3::ECLKI TDLLDEL1_3::Z GND TPLL1::CLKOP TPLL1::CLKOS TPLL1::CLKOS2 CIB PT100A::PADDI TPLL1::CLKO6 TPLL1::CLKO5 TPLL1::CLKOS3

udev.conn BECLKSYNC1_0::ECLKI BDLLDEL1_0::Z GND BPLL1::CLKOP BPLL1::CLKOS BPLL1::CLKOS2 CIB PB87A::PADDI BPLL1::CLKO6 BPLL1::CLKO5 BPLL1::CLKOS3
udev.conn BECLKSYNC1_1::ECLKI BDLLDEL1_1::Z GND BPLL1::CLKOP BPLL1::CLKOS BPLL1::CLKOS2 CIB PB87C::PADDI BPLL1::CLKO6 BPLL1::CLKO5 BPLL1::CLKOS3
udev.conn BECLKSYNC1_2::ECLKI BDLLDEL1_2::Z GND BPLL1::CLKOP BPLL1::CLKOS BPLL1::CLKOS2 CIB PB97C::PADDI BPLL1::CLKO6 BPLL1::CLKO5 BPLL1::CLKOS3
udev.conn BECLKSYNC1_3::ECLKI BDLLDEL1_3::Z GND BPLL1::CLKOP BPLL1::CLKOS BPLL1::CLKOS2 CIB PB100A::PADDI BPLL1::CLKO6 BPLL1::CLKO5 BPLL1::CLKOS3

#=====PLL conn=====
udev.conn TPLL0::CLKI EFB::TPLL0_USRCLK CFG CIB PCLK PT40A::PADDI PT27A::PADDI PT27C::PADDI PT37C::PADDI PT40C::PADDI  TPLLREFCS0::PLLCSOUT
udev.conn TPLL1::CLKI EFB::TPLL1_USRCLK CFG CIB PCLK PT82C::PADDI PT86A::PADDI PT86C::PADDI PT97C::PADDI PT100A::PADDI TPLLREFCS1::PLLCSOUT
udev.conn BPLL0::CLKI EFB::BPLL0_USRCLK CFG CIB PCLK PB32A::PADDI PB35A::PADDI PB35C::PADDI PB38A::PADDI PB38C::PADDI  BPLLREFCS0::PLLCSOUT
udev.conn BPLL1::CLKI EFB::BPLL1_USRCLK CFG CIB PCLK PB83C::PADDI PB87A::PADDI PB87C::PADDI PB97C::PADDI PB100A::PADDI BPLLREFCS1::PLLCSOUT

udev.conn TPLL0::CLKI EFB::TPLL0_USRCLK CFG CIB PCLK PT23C::PADDI  PT27A::PADDI PT27C::PADDI PT37C::PADDI PT40C::PADDI
udev.conn TPLL1::CLKI EFB::TPLL1_USRCLK CFG CIB PCLK PT100C::PADDI PT86A::PADDI PT86C::PADDI PT97C::PADDI PT100A::PADDI
udev.conn BPLL0::CLKI EFB::BPLL0_USRCLK CFG CIB PCLK PB32C::PADDI  PB35A::PADDI PB35C::PADDI PB38A::PADDI PB38C::PADDI
udev.conn BPLL1::CLKI EFB::BPLL1_USRCLK CFG CIB PCLK PB100C::PADDI PB87A::PADDI PB87C::PADDI PB97C::PADDI PB100A::PADDI

udev.conn TPLL0::CLKI TDLLDEL0_0::Z TDLLDEL0_1::Z TDLLDEL0_2::Z TDLLDEL0_3::Z
udev.conn TPLL1::CLKI TDLLDEL1_0::Z TDLLDEL1_1::Z TDLLDEL1_2::Z TDLLDEL1_3::Z
udev.conn BPLL0::CLKI BDLLDEL0_0::Z BDLLDEL0_1::Z BDLLDEL0_2::Z BDLLDEL0_3::Z
udev.conn BPLL1::CLKI BDLLDEL1_0::Z BDLLDEL1_1::Z BDLLDEL1_2::Z BDLLDEL1_3::Z

udev.conn TPLLREFCS0::CLK0 EFB::TPLL0_USRCLK CFG CIB PCLK PT40A::PADDI PT27A::PADDI PT27C::PADDI PT37C::PADDI PT40C::PADDI
udev.conn TPLLREFCS1::CLK0 EFB::TPLL1_USRCLK CFG CIB PCLK PT82C::PADDI PT86A::PADDI PT86C::PADDI PT97C::PADDI PT100A::PADDI
udev.conn BPLLREFCS0::CLK0 EFB::BPLL0_USRCLK CFG CIB PCLK PB32A::PADDI PB35A::PADDI PB35C::PADDI PB38A::PADDI PB38C::PADDI
udev.conn BPLLREFCS1::CLK0 EFB::BPLL1_USRCLK CFG CIB PCLK PB83C::PADDI PB87A::PADDI PB87C::PADDI PB97C::PADDI PB100A::PADDI

udev.conn TPLLREFCS0::CLK1 EFB::TPLL0_USRCLK CFG CIB PCLK PT23C::PADDI  PT27A::PADDI PT27C::PADDI PT37C::PADDI PT40C::PADDI
udev.conn TPLLREFCS1::CLK1 EFB::TPLL1_USRCLK CFG CIB PCLK PT100C::PADDI PT86A::PADDI PT86C::PADDI PT97C::PADDI PT100A::PADDI
udev.conn BPLLREFCS0::CLK1 EFB::BPLL0_USRCLK CFG CIB PCLK PB32C::PADDI  PB35A::PADDI PB35C::PADDI PB38A::PADDI PB38C::PADDI
udev.conn BPLLREFCS1::CLK1 EFB::BPLL1_USRCLK CFG CIB PCLK PB100C::PADDI PB87A::PADDI PB87C::PADDI PB97C::PADDI PB100A::PADDI

udev.conn TPLLREFCS0::CLK0 TDLLDEL0_0::Z TDLLDEL0_1::Z TDLLDEL0_2::Z TDLLDEL0_3::Z
udev.conn TPLLREFCS1::CLK0 TDLLDEL1_0::Z TDLLDEL1_1::Z TDLLDEL1_2::Z TDLLDEL1_3::Z
udev.conn BPLLREFCS0::CLK0 BDLLDEL0_0::Z BDLLDEL0_1::Z BDLLDEL0_2::Z BDLLDEL0_3::Z
udev.conn BPLLREFCS1::CLK0 BDLLDEL1_0::Z BDLLDEL1_1::Z BDLLDEL1_2::Z BDLLDEL1_3::Z

udev.conn TPLLREFCS0::CLK1 TDLLDEL0_0::Z TDLLDEL0_1::Z TDLLDEL0_2::Z TDLLDEL0_3::Z
udev.conn TPLLREFCS1::CLK1 TDLLDEL1_0::Z TDLLDEL1_1::Z TDLLDEL1_2::Z TDLLDEL1_3::Z
udev.conn BPLLREFCS0::CLK1 BDLLDEL0_0::Z BDLLDEL0_1::Z BDLLDEL0_2::Z BDLLDEL0_3::Z
udev.conn BPLLREFCS1::CLK1 BDLLDEL1_0::Z BDLLDEL1_1::Z BDLLDEL1_2::Z BDLLDEL1_3::Z

udev.conn TPLL0::CLKFB GND GND GND GND GND GND GND CIB TPLL0::CLKOP TPLL0::CLKOS
udev.conn TPLL1::CLKFB GND GND GND GND GND GND GND CIB TPLL1::CLKOP TPLL1::CLKOS
udev.conn BPLL0::CLKFB GND GND GND GND GND GND GND CIB BPLL0::CLKOP BPLL0::CLKOS
udev.conn BPLL1::CLKFB GND GND GND GND GND GND GND CIB BPLL1::CLKOP BPLL1::CLKOS

udev.conn TPLL0::MFG1 PT40B::PADDI
udev.conn TPLL0::MFG2 PT40A::PADDI
udev.conn TPLL1::MFG1 PT100B::PADDI
udev.conn TPLL1::MFG2 PT100A::PADDI
udev.conn BPLL0::MFG1 PB32B::PADDI
udev.conn BPLL0::MFG2 PB32A::PADDI
udev.conn BPLL1::MFG1 PB100B::PADDI
udev.conn BPLL1::MFG2 PB100A::PADDI

#=====DQS conn=====
# DQS DQSI conn
udev.conn TDQS0_0::DQSI PT9C::PADDI  IOL_T9C::INDD
udev.conn TDQS0_1::DQSI PT20C::PADDI IOL_T20C::INDD
udev.conn TDQS0_2::DQSI PT44A::PADDI IOL_T44A::INDD
udev.conn TDQS0_3::DQSI PT58A::PADDI IOL_T58A::INDD

udev.conn TDQS1_0::DQSI PT65A::PADDI IOL_T65A::INDD
udev.conn TDQS1_1::DQSI PT82A::PADDI IOL_T82A::INDD
udev.conn TDQS1_2::DQSI PT104A::PADDI IOL_T104A::INDD
udev.conn TDQS1_3::DQSI PT114C::PADDI IOL_T114C::INDD

udev.conn BDQS1_0::DQSI PB73A::PADDI IOL_B73A::INDD
udev.conn BDQS1_1::DQSI PB83A::PADDI IOL_B83A::INDD
udev.conn BDQS1_2::DQSI PB104A::PADDI IOL_B104A::INDD
udev.conn BDQS1_3::DQSI PB114C::PADDI IOL_B114C::INDD

# DQS ECLK conn
udev.conn TDQS0_0::ECLK  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_1::ECLK  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_2::ECLK  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_3::ECLK  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO

udev.conn TDQS1_0::ECLK  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_1::ECLK  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_2::ECLK  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_3::ECLK  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO

udev.conn BDQS1_0::ECLK  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_1::ECLK  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_2::ECLK  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_3::ECLK  BECLKSYNC1_<0:3>::ECLKO

udev.conn TDQS0_0::ECLK  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_1::ECLK  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_2::ECLK  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_3::ECLK  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O

udev.conn TDQS1_0::ECLK  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_1::ECLK  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_2::ECLK  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_3::ECLK  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O

udev.conn BDQS1_0::ECLK  BEDELAY1_<0:3>::O
udev.conn BDQS1_1::ECLK  BEDELAY1_<0:3>::O
udev.conn BDQS1_2::ECLK  BEDELAY1_<0:3>::O
udev.conn BDQS1_3::ECLK  BEDELAY1_<0:3>::O

# DQS ECLK90 conn
udev.conn TDQS0_0::ECLK90  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_1::ECLK90  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_2::ECLK90  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TDQS0_3::ECLK90  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO

udev.conn TDQS1_0::ECLK90  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_1::ECLK90  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_2::ECLK90  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TDQS1_3::ECLK90  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO

udev.conn BDQS1_0::ECLK90  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_1::ECLK90  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_2::ECLK90  BECLKSYNC1_<0:3>::ECLKO
udev.conn BDQS1_3::ECLK90  BECLKSYNC1_<0:3>::ECLKO

udev.conn TDQS0_0::ECLK90  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_1::ECLK90  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_2::ECLK90  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O
udev.conn TDQS0_3::ECLK90  TEDELAY0_<0:3>::O TEDELAY1_<0:3>::O

udev.conn TDQS1_0::ECLK90  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_1::ECLK90  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_2::ECLK90  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O
udev.conn TDQS1_3::ECLK90  TEDELAY1_<0:3>::O TEDELAY0_<0:3>::O

udev.conn BDQS1_0::ECLK90  BEDELAY1_<0:3>::O
udev.conn BDQS1_1::ECLK90  BEDELAY1_<0:3>::O
udev.conn BDQS1_2::ECLK90  BEDELAY1_<0:3>::O
udev.conn BDQS1_3::ECLK90  BEDELAY1_<0:3>::O

# DQS DDRDEL conn
udev.conn TDQS0_0::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDQS0_1::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDQS0_2::DDRDEL TDDRDLL0_<0:3>::DDRDEL
udev.conn TDQS0_3::DDRDEL TDDRDLL0_<0:3>::DDRDEL

udev.conn TDQS1_0::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDQS1_1::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDQS1_2::DDRDEL TDDRDLL1_<0:3>::DDRDEL
udev.conn TDQS1_3::DDRDEL TDDRDLL1_<0:3>::DDRDEL

udev.conn BDQS1_0::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDQS1_1::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDQS1_2::DDRDEL BDDRDLL1_<0:3>::DDRDEL
udev.conn BDQS1_3::DDRDEL BDDRDLL1_<0:3>::DDRDEL

#=====EDELAY conn=====
udev.conn TEDELAY0_0::I  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TEDELAY0_1::I  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TEDELAY0_2::I  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TEDELAY0_3::I  TECLKSYNC0_<0:3>::ECLKO TECLKSYNC1_<0:3>::ECLKO
udev.conn TEDELAY1_0::I  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TEDELAY1_1::I  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TEDELAY1_2::I  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn TEDELAY1_3::I  TECLKSYNC1_<0:3>::ECLKO TECLKSYNC0_<0:3>::ECLKO
udev.conn BEDELAY1_0::I  BECLKSYNC1_0::ECLKO
udev.conn BEDELAY1_1::I  BECLKSYNC1_1::ECLKO
udev.conn BEDELAY1_2::I  BECLKSYNC1_2::ECLKO
udev.conn BEDELAY1_3::I  BECLKSYNC1_3::ECLKO

#=====IOL conn=====
proc make_conns {groups suffixs sigs prefix} {
    foreach gp $groups {
        lassign $gp nums idx
        foreach num $nums {
            foreach suf $suffixs {
                foreach sig $sigs {
                    lassign $sig pin dst
                    udev.conn IOL_${prefix}$num${suf}::$pin [format $dst $idx]
                }
            }
        }
    }
}
set suffixs {A B C D}

set groups1 {{{9 13 16} 0} {{20 23 27} 1} {{37 40 44} 2} {{47 51 54 58} 3}}
set sigs1 {
    {ECLK TECLKSYNC0_<0:3>::ECLKO}
    {ECLK TECLKSYNC1_<0:3>::ECLKO}
	{ECLK TEDELAY0_<0:3>::O}
    {ECLK TEDELAY1_<0:3>::O}
    {DQSR90 TDQS0_%d::DQSR90}
    {DQSW270 TDQS0_%d::DQSW270}
    {DQSW TDQS0_%d::DQSW}
}
make_conns $groups1 $suffixs $sigs1 "T"

set groups2 {{{61 65 68 72} 0} {{75 79 82 86} 1} {{97 100 104} 2} {{107 111 114 118} 3}}
set sigs2 {
    {ECLK TECLKSYNC1_<0:3>::ECLKO}
    {ECLK TECLKSYNC0_<0:3>::ECLKO}
	{ECLK TEDELAY1_<0:3>::O}
	{ECLK TEDELAY0_<0:3>::O}
    {DQSR90 TDQS1_%d::DQSR90}
    {DQSW270 TDQS1_%d::DQSW270}
    {DQSW TDQS1_%d::DQSW}
}
make_conns $groups2 $suffixs $sigs2 "T"

set groups3 {{{69 73 76} 0} {{80 83 87} 1} {{97 100 104} 2} {{107 111 114 118} 3}}
set sigs3 {
    {ECLK BECLKSYNC1_<0:3>::ECLKO}
	{ECLK BEDELAY1_<0:3>::O}
    {DQSR90 BDQS1_%d::DQSR90}
    {DQSW270 BDQS1_%d::DQSW270}
    {DQSW BDQS1_%d::DQSW}
}
make_conns $groups3 $suffixs $sigs3 "B"


#=====================

#for {set i 0} {$i < 8} {incr i} {
#    for {set j 0} {$j < 16} {incr j} {
#        udev.conn TCLKBRANCH${i}_${j}::CLKI BCLKBRANCH${i}_<0:15>::TO_NCLK
#        if { $j != 12 && $j != 13} {
#            udev.conn TDCC${i}_${j}::CLKI BCLKBRANCH${i}_<0:15>::TO_NCLK
#        } else {
#            udev.conn TDCS${i}_${j}::CLK0 BCLKBRANCH${i}_<0:15>::TO_NCLK
#            udev.conn TDCS${i}_${j}::CLK1 BCLKBRANCH${i}_<0:15>::TO_NCLK
#        }
#    }
#}

#for {set i 0} {$i < 8} {incr i} {
#    for {set j 0} {$j < 16} {incr j} {
#        udev.conn BCLKBRANCH${i}_${j}::CLKI TCLKBRANCH${i}_<0:15>::TO_NCLK
#        if {$j != 12 && $j != 13} {
#            udev.conn BDCC${i}_${j}::CLKI TCLKBRANCH${i}_<0:15>::TO_NCLK
#        } else {
#            udev.conn BDCS${i}_${j}::CLK0 TCLKBRANCH${i}_<0:15>::TO_NCLK
#            udev.conn BDCS${i}_${j}::CLK1 TCLKBRANCH${i}_<0:15>::TO_NCLK
#        }
#    }
#}


udev.fill

