set_global_assignment -name FAMILY "Cyclone IV GX"
set_global_assignment -name DEVICE EP4CGX150DF31C7
set_global_assignment -name TOP_LEVEL_ENTITY "top"
set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK2_50
set_instance_assignment -name IO_STANDARD "2.5 V" -to CLOCK3_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50
#============================================================
# DRAM
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_ADDR[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_BA[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CAS_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CKE
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_CS_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[26]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[27]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[28]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[29]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[30]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQ[31]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_DQM[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_RAS_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to DRAM_WE_N
#============================================================
# EEP
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EEP_I2C_SCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EEP_I2C_SDAT
#============================================================
# ENET
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_GTX_CLK
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_INT_N
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_LINK100
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_MDC
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_MDIO
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RST_N
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_CLK
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_COL
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_CRS
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_DATA[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_DATA[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_DATA[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_DATA[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_DV
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_RX_ER
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_CLK
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_DATA[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_DATA[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_DATA[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_DATA[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_EN
set_instance_assignment -name IO_STANDARD "2.5 V" -to ENET_TX_ER
#============================================================
# FAN
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to FAN_CTRL
#============================================================
# FLASH
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_RESET_N
#============================================================
# FS
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_ADDR[26]
#============================================================
# FL
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_CE_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_OE_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_RY
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_WE_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FL_WP_N
#============================================================
# FS
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[26]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[27]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[28]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[29]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[30]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to FS_DQ[31]
#============================================================
# GPIO
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[26]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[27]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[28]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[29]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[30]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[31]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[32]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[33]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[34]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[35]
#============================================================
# G
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to G_SENSOR_INT1
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to G_SENSOR_SCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to G_SENSOR_SDAT
#============================================================
# HEX0
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX0[6]
#============================================================
# HEX1
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX1[6]
#============================================================
# HEX2
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX2[6]
#============================================================
# HEX3
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX3[6]
#============================================================
# HEX4
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX4[6]
#============================================================
# HEX5
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX5[6]
#============================================================
# HEX6
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX6[6]
#============================================================
# HEX7
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HEX7[6]
#============================================================
# HSMC
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKIN0
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKIN_N1
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKIN_N2
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKIN_P1
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKIN_P2
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT0
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT_N1
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT_N2
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT_P1
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_CLKOUT_P2
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_D[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_I2C_SCLK
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_I2C_SDAT
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_N[16]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_RX_D_P[16]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_N[16]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to HSMC_TX_D_P[16]
#============================================================
# I2C
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SDAT
#============================================================
# IRDA
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to IRDA_RXD
#============================================================
# KEY
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to KEY[3]
#============================================================
# LCD
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_DATA[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_EN
set_instance_assignment -name IO_STANDARD "2.5 V" -to LCD_ON
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_RS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LCD_RW
#============================================================
# LEDG
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDG[8]
#============================================================
# LEDR
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[16]
set_instance_assignment -name IO_STANDARD "2.5 V" -to LEDR[17]
#============================================================
# PCIE
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to PCIE_PERST_N
set_instance_assignment -name IO_STANDARD HCSL -to PCIE_REFCLK_P
set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to PCIE_RX_P[0]
set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to PCIE_RX_P[1]
set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to PCIE_TX_P[0]
set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to PCIE_TX_P[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to PCIE_WAKE_N
#============================================================
# SD
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CMD
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DAT[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_WP_N
#============================================================
# SMA
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SMA_CLKIN
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SMA_CLKOUT
#============================================================
# SSRAM0
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM0_CE_N
#============================================================
# SSRAM1
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM1_CE_N
#============================================================
# SSRAM
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_ADSC_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_ADSP_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_ADV_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_BE[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_BE[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_BE[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_BE[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_GW_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_OE_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SSRAM_WE_N
#============================================================
# SW
#============================================================
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[0]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[1]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[2]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[3]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[4]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[5]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[6]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[7]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[8]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[9]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[10]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[11]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[12]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[13]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[14]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[15]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[16]
set_instance_assignment -name IO_STANDARD "2.5 V" -to SW[17]
#============================================================
# TD
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_CLK27
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_DATA[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_HS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_RESET_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TD_VS
#============================================================
# UART
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_CTS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RTS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RXD
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_TXD
#============================================================
# VGA
#============================================================
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_BLANK_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_SYNC_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS
#============================================================
# End of pin assignments by Terasic System Builder
#============================================================
set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_location_assignment PIN_A15 -to CLOCK2_50
set_location_assignment PIN_V11 -to CLOCK3_50
set_location_assignment PIN_AJ16 -to CLOCK_50
set_location_assignment PIN_AG7 -to DRAM_ADDR[0]
set_location_assignment PIN_AJ7 -to DRAM_ADDR[1]
set_location_assignment PIN_AG8 -to DRAM_ADDR[2]
set_location_assignment PIN_AH8 -to DRAM_ADDR[3]
set_location_assignment PIN_AE16 -to DRAM_ADDR[4]
set_location_assignment PIN_AF16 -to DRAM_ADDR[5]
set_location_assignment PIN_AE14 -to DRAM_ADDR[6]
set_location_assignment PIN_AE15 -to DRAM_ADDR[7]
set_location_assignment PIN_AE13 -to DRAM_ADDR[8]
set_location_assignment PIN_AE12 -to DRAM_ADDR[9]
set_location_assignment PIN_AH6 -to DRAM_ADDR[10]
set_location_assignment PIN_AE11 -to DRAM_ADDR[11]
set_location_assignment PIN_AE10 -to DRAM_ADDR[12]
set_location_assignment PIN_AH5 -to DRAM_BA[0]
set_location_assignment PIN_AG6 -to DRAM_BA[1]
set_location_assignment PIN_AJ4 -to DRAM_CAS_N
set_location_assignment PIN_AD6 -to DRAM_CKE
set_location_assignment PIN_AE6 -to DRAM_CLK
set_location_assignment PIN_AG5 -to DRAM_CS_N
set_location_assignment PIN_AD10 -to DRAM_DQ[0]
set_location_assignment PIN_AD9 -to DRAM_DQ[1]
set_location_assignment PIN_AE9 -to DRAM_DQ[2]
set_location_assignment PIN_AE8 -to DRAM_DQ[3]
set_location_assignment PIN_AE7 -to DRAM_DQ[4]
set_location_assignment PIN_AF7 -to DRAM_DQ[5]
set_location_assignment PIN_AF6 -to DRAM_DQ[6]
set_location_assignment PIN_AF9 -to DRAM_DQ[7]
set_location_assignment PIN_AB13 -to DRAM_DQ[8]
set_location_assignment PIN_AF13 -to DRAM_DQ[9]
set_location_assignment PIN_AF12 -to DRAM_DQ[10]
set_location_assignment PIN_AG9 -to DRAM_DQ[11]
set_location_assignment PIN_AA13 -to DRAM_DQ[12]
set_location_assignment PIN_AB11 -to DRAM_DQ[13]
set_location_assignment PIN_AA12 -to DRAM_DQ[14]
set_location_assignment PIN_AA15 -to DRAM_DQ[15]
set_location_assignment PIN_AH11 -to DRAM_DQ[16]
set_location_assignment PIN_AG11 -to DRAM_DQ[17]
set_location_assignment PIN_AH12 -to DRAM_DQ[18]
set_location_assignment PIN_AG12 -to DRAM_DQ[19]
set_location_assignment PIN_AH13 -to DRAM_DQ[20]
set_location_assignment PIN_AG13 -to DRAM_DQ[21]
set_location_assignment PIN_AG14 -to DRAM_DQ[22]
set_location_assignment PIN_AH14 -to DRAM_DQ[23]
set_location_assignment PIN_AH9 -to DRAM_DQ[24]
set_location_assignment PIN_AK8 -to DRAM_DQ[25]
set_location_assignment PIN_AG10 -to DRAM_DQ[26]
set_location_assignment PIN_AK7 -to DRAM_DQ[27]
set_location_assignment PIN_AH7 -to DRAM_DQ[28]
set_location_assignment PIN_AK6 -to DRAM_DQ[29]
set_location_assignment PIN_AJ6 -to DRAM_DQ[30]
set_location_assignment PIN_AK5 -to DRAM_DQ[31]
set_location_assignment PIN_AF10 -to DRAM_DQM[0]
set_location_assignment PIN_AB14 -to DRAM_DQM[1]
set_location_assignment PIN_AH15 -to DRAM_DQM[2]
set_location_assignment PIN_AH10 -to DRAM_DQM[3]
set_location_assignment PIN_AK4 -to DRAM_RAS_N
set_location_assignment PIN_AK3 -to DRAM_WE_N
set_location_assignment PIN_AG27 -to EEP_I2C_SCLK
set_location_assignment PIN_AG25 -to EEP_I2C_SDAT
set_location_assignment PIN_A12 -to ENET_GTX_CLK
set_location_assignment PIN_E16 -to ENET_INT_N
set_location_assignment PIN_F5 -to ENET_LINK100
set_location_assignment PIN_C16 -to ENET_MDC
set_location_assignment PIN_C15 -to ENET_MDIO
set_location_assignment PIN_C14 -to ENET_RST_N
set_location_assignment PIN_L15 -to ENET_RX_CLK
set_location_assignment PIN_G15 -to ENET_RX_COL
set_location_assignment PIN_D6 -to ENET_RX_CRS
set_location_assignment PIN_F15 -to ENET_RX_DATA[0]
set_location_assignment PIN_E13 -to ENET_RX_DATA[1]
set_location_assignment PIN_A5 -to ENET_RX_DATA[2]
set_location_assignment PIN_B7 -to ENET_RX_DATA[3]
set_location_assignment PIN_A8 -to ENET_RX_DV
set_location_assignment PIN_D11 -to ENET_RX_ER
set_location_assignment PIN_F13 -to ENET_TX_CLK
set_location_assignment PIN_B12 -to ENET_TX_DATA[0]
set_location_assignment PIN_E7 -to ENET_TX_DATA[1]
set_location_assignment PIN_C13 -to ENET_TX_DATA[2]
set_location_assignment PIN_D15 -to ENET_TX_DATA[3]
set_location_assignment PIN_D14 -to ENET_TX_EN
set_location_assignment PIN_D13 -to ENET_TX_ER
set_location_assignment PIN_AF28 -to FAN_CTRL
set_location_assignment PIN_AG18 -to FL_RESET_N
set_location_assignment PIN_AB22 -to FS_ADDR[1]
set_location_assignment PIN_AH19 -to FS_ADDR[2]
set_location_assignment PIN_AK19 -to FS_ADDR[3]
set_location_assignment PIN_AJ18 -to FS_ADDR[4]
set_location_assignment PIN_AA18 -to FS_ADDR[5]
set_location_assignment PIN_AH18 -to FS_ADDR[6]
set_location_assignment PIN_AK17 -to FS_ADDR[7]
set_location_assignment PIN_Y20 -to FS_ADDR[8]
set_location_assignment PIN_AK21 -to FS_ADDR[9]
set_location_assignment PIN_AH21 -to FS_ADDR[10]
set_location_assignment PIN_AG21 -to FS_ADDR[11]
set_location_assignment PIN_AG22 -to FS_ADDR[12]
set_location_assignment PIN_AD22 -to FS_ADDR[13]
set_location_assignment PIN_AE24 -to FS_ADDR[14]
set_location_assignment PIN_AD23 -to FS_ADDR[15]
set_location_assignment PIN_AB21 -to FS_ADDR[16]
set_location_assignment PIN_AH17 -to FS_ADDR[17]
set_location_assignment PIN_AE17 -to FS_ADDR[18]
set_location_assignment PIN_AG20 -to FS_ADDR[19]
set_location_assignment PIN_AK20 -to FS_ADDR[20]
set_location_assignment PIN_AE19 -to FS_ADDR[21]
set_location_assignment PIN_AA16 -to FS_ADDR[22]
set_location_assignment PIN_AF15 -to FS_ADDR[23]
set_location_assignment PIN_AG15 -to FS_ADDR[24]
set_location_assignment PIN_Y17 -to FS_ADDR[25]
set_location_assignment PIN_AB16 -to FS_ADDR[26]
set_location_assignment PIN_AG19 -to FL_CE_N
set_location_assignment PIN_AJ19 -to FL_OE_N
set_location_assignment PIN_AF19 -to FL_RY
set_location_assignment PIN_AG17 -to FL_WE_N
set_location_assignment PIN_AK18 -to FL_WP_N
set_location_assignment PIN_AK29 -to FS_DQ[0]
set_location_assignment PIN_AE23 -to FS_DQ[1]
set_location_assignment PIN_AH24 -to FS_DQ[2]
set_location_assignment PIN_AH23 -to FS_DQ[3]
set_location_assignment PIN_AA21 -to FS_DQ[4]
set_location_assignment PIN_AE20 -to FS_DQ[5]
set_location_assignment PIN_Y19 -to FS_DQ[6]
set_location_assignment PIN_AA17 -to FS_DQ[7]
set_location_assignment PIN_AB17 -to FS_DQ[8]
set_location_assignment PIN_Y18 -to FS_DQ[9]
set_location_assignment PIN_AA20 -to FS_DQ[10]
set_location_assignment PIN_AE21 -to FS_DQ[11]
set_location_assignment PIN_AH22 -to FS_DQ[12]
set_location_assignment PIN_AJ24 -to FS_DQ[13]
set_location_assignment PIN_AE22 -to FS_DQ[14]
set_location_assignment PIN_AK28 -to FS_DQ[15]
set_location_assignment PIN_AK9 -to FS_DQ[16]
set_location_assignment PIN_AJ10 -to FS_DQ[17]
set_location_assignment PIN_AK11 -to FS_DQ[18]
set_location_assignment PIN_AK12 -to FS_DQ[19]
set_location_assignment PIN_AJ13 -to FS_DQ[20]
set_location_assignment PIN_AK15 -to FS_DQ[21]
set_location_assignment PIN_AC16 -to FS_DQ[22]
set_location_assignment PIN_AH16 -to FS_DQ[23]
set_location_assignment PIN_AG16 -to FS_DQ[24]
set_location_assignment PIN_AD16 -to FS_DQ[25]
set_location_assignment PIN_AJ15 -to FS_DQ[26]
set_location_assignment PIN_AK14 -to FS_DQ[27]
set_location_assignment PIN_AK13 -to FS_DQ[28]
set_location_assignment PIN_AJ12 -to FS_DQ[29]
set_location_assignment PIN_AK10 -to FS_DQ[30]
set_location_assignment PIN_AJ9 -to FS_DQ[31]
set_location_assignment PIN_G16 -to GPIO[0]
set_location_assignment PIN_F17 -to GPIO[1]
set_location_assignment PIN_D18 -to GPIO[2]
set_location_assignment PIN_F18 -to GPIO[3]
set_location_assignment PIN_D19 -to GPIO[4]
set_location_assignment PIN_K21 -to GPIO[5]
set_location_assignment PIN_F19 -to GPIO[6]
set_location_assignment PIN_K22 -to GPIO[7]
set_location_assignment PIN_B21 -to GPIO[8]
set_location_assignment PIN_C21 -to GPIO[9]
set_location_assignment PIN_D22 -to GPIO[10]
set_location_assignment PIN_D21 -to GPIO[11]
set_location_assignment PIN_D23 -to GPIO[12]
set_location_assignment PIN_D24 -to GPIO[13]
set_location_assignment PIN_B28 -to GPIO[14]
set_location_assignment PIN_C25 -to GPIO[15]
set_location_assignment PIN_C26 -to GPIO[16]
set_location_assignment PIN_D28 -to GPIO[17]
set_location_assignment PIN_D25 -to GPIO[18]
set_location_assignment PIN_F20 -to GPIO[19]
set_location_assignment PIN_E21 -to GPIO[20]
set_location_assignment PIN_F23 -to GPIO[21]
set_location_assignment PIN_G20 -to GPIO[22]
set_location_assignment PIN_F22 -to GPIO[23]
set_location_assignment PIN_G22 -to GPIO[24]
set_location_assignment PIN_G24 -to GPIO[25]
set_location_assignment PIN_G23 -to GPIO[26]
set_location_assignment PIN_A25 -to GPIO[27]
set_location_assignment PIN_A26 -to GPIO[28]
set_location_assignment PIN_A19 -to GPIO[29]
set_location_assignment PIN_A28 -to GPIO[30]
set_location_assignment PIN_A27 -to GPIO[31]
set_location_assignment PIN_B30 -to GPIO[32]
set_location_assignment PIN_AG28 -to GPIO[33]
set_location_assignment PIN_AG26 -to GPIO[34]
set_location_assignment PIN_Y21 -to GPIO[35]
set_location_assignment PIN_AC30 -to G_SENSOR_INT1
set_location_assignment PIN_AK27 -to G_SENSOR_SCLK
set_location_assignment PIN_AK26 -to G_SENSOR_SDAT
set_location_assignment PIN_E15 -to HEX0[0]
set_location_assignment PIN_E12 -to HEX0[1]
set_location_assignment PIN_G11 -to HEX0[2]
set_location_assignment PIN_F11 -to HEX0[3]
set_location_assignment PIN_F16 -to HEX0[4]
set_location_assignment PIN_D16 -to HEX0[5]
set_location_assignment PIN_F14 -to HEX0[6]
set_location_assignment PIN_G14 -to HEX1[0]
set_location_assignment PIN_B13 -to HEX1[1]
set_location_assignment PIN_G13 -to HEX1[2]
set_location_assignment PIN_F12 -to HEX1[3]
set_location_assignment PIN_G12 -to HEX1[4]
set_location_assignment PIN_J9 -to HEX1[5]
set_location_assignment PIN_G10 -to HEX1[6]
set_location_assignment PIN_G8 -to HEX2[0]
set_location_assignment PIN_G7 -to HEX2[1]
set_location_assignment PIN_F7 -to HEX2[2]
set_location_assignment PIN_AG30 -to HEX2[3]
set_location_assignment PIN_F6 -to HEX2[4]
set_location_assignment PIN_F4 -to HEX2[5]
set_location_assignment PIN_F10 -to HEX2[6]
set_location_assignment PIN_D10 -to HEX3[0]
set_location_assignment PIN_D7 -to HEX3[1]
set_location_assignment PIN_E6 -to HEX3[2]
set_location_assignment PIN_E4 -to HEX3[3]
set_location_assignment PIN_E3 -to HEX3[4]
set_location_assignment PIN_D5 -to HEX3[5]
set_location_assignment PIN_D4 -to HEX3[6]
set_location_assignment PIN_A14 -to HEX4[0]
set_location_assignment PIN_A13 -to HEX4[1]
set_location_assignment PIN_C7 -to HEX4[2]
set_location_assignment PIN_C6 -to HEX4[3]
set_location_assignment PIN_C5 -to HEX4[4]
set_location_assignment PIN_C4 -to HEX4[5]
set_location_assignment PIN_C3 -to HEX4[6]
set_location_assignment PIN_D3 -to HEX5[0]
set_location_assignment PIN_A10 -to HEX5[1]
set_location_assignment PIN_A9 -to HEX5[2]
set_location_assignment PIN_A7 -to HEX5[3]
set_location_assignment PIN_A6 -to HEX5[4]
set_location_assignment PIN_A11 -to HEX5[5]
set_location_assignment PIN_B6 -to HEX5[6]
set_location_assignment PIN_B9 -to HEX6[0]
set_location_assignment PIN_B10 -to HEX6[1]
set_location_assignment PIN_C8 -to HEX6[2]
set_location_assignment PIN_C9 -to HEX6[3]
set_location_assignment PIN_D8 -to HEX6[4]
set_location_assignment PIN_D9 -to HEX6[5]
set_location_assignment PIN_E9 -to HEX6[6]
set_location_assignment PIN_E10 -to HEX7[0]
set_location_assignment PIN_F8 -to HEX7[1]
set_location_assignment PIN_F9 -to HEX7[2]
set_location_assignment PIN_C10 -to HEX7[3]
set_location_assignment PIN_C11 -to HEX7[4]
set_location_assignment PIN_C12 -to HEX7[5]
set_location_assignment PIN_D12 -to HEX7[6]
set_location_assignment PIN_K15 -to HSMC_CLKIN0
set_location_assignment PIN_V30 -to HSMC_CLKIN_N1
set_location_assignment PIN_T30 -to HSMC_CLKIN_N2
set_location_assignment PIN_V29 -to HSMC_CLKIN_P1
set_location_assignment PIN_T29 -to HSMC_CLKIN_P2
set_location_assignment PIN_G6 -to HSMC_CLKOUT0
set_location_assignment PIN_AB28 -to HSMC_CLKOUT_N1
set_location_assignment PIN_Y28 -to HSMC_CLKOUT_N2
set_location_assignment PIN_AB27 -to HSMC_CLKOUT_P1
set_location_assignment PIN_AA28 -to HSMC_CLKOUT_P2
set_location_assignment PIN_AC25 -to HSMC_D[0]
set_location_assignment PIN_E27 -to HSMC_D[1]
set_location_assignment PIN_AB26 -to HSMC_D[2]
set_location_assignment PIN_E28 -to HSMC_D[3]
set_location_assignment PIN_AD26 -to HSMC_I2C_SCLK
set_location_assignment PIN_AD25 -to HSMC_I2C_SDAT
set_location_assignment PIN_G27 -to HSMC_RX_D_N[0]
set_location_assignment PIN_G29 -to HSMC_RX_D_N[1]
set_location_assignment PIN_H27 -to HSMC_RX_D_N[2]
set_location_assignment PIN_K29 -to HSMC_RX_D_N[3]
set_location_assignment PIN_L28 -to HSMC_RX_D_N[4]
set_location_assignment PIN_M28 -to HSMC_RX_D_N[5]
set_location_assignment PIN_N30 -to HSMC_RX_D_N[6]
set_location_assignment PIN_P28 -to HSMC_RX_D_N[7]
set_location_assignment PIN_R28 -to HSMC_RX_D_N[8]
set_location_assignment PIN_U28 -to HSMC_RX_D_N[9]
set_location_assignment PIN_W28 -to HSMC_RX_D_N[10]
set_location_assignment PIN_W30 -to HSMC_RX_D_N[11]
set_location_assignment PIN_M30 -to HSMC_RX_D_N[12]
set_location_assignment PIN_Y27 -to HSMC_RX_D_N[13]
set_location_assignment PIN_AA29 -to HSMC_RX_D_N[14]
set_location_assignment PIN_AD28 -to HSMC_RX_D_N[15]
set_location_assignment PIN_AE28 -to HSMC_RX_D_N[16]
set_location_assignment PIN_G26 -to HSMC_RX_D_P[0]
set_location_assignment PIN_G28 -to HSMC_RX_D_P[1]
set_location_assignment PIN_J27 -to HSMC_RX_D_P[2]
set_location_assignment PIN_K28 -to HSMC_RX_D_P[3]
set_location_assignment PIN_L27 -to HSMC_RX_D_P[4]
set_location_assignment PIN_M27 -to HSMC_RX_D_P[5]
set_location_assignment PIN_N29 -to HSMC_RX_D_P[6]
set_location_assignment PIN_P27 -to HSMC_RX_D_P[7]
set_location_assignment PIN_R27 -to HSMC_RX_D_P[8]
set_location_assignment PIN_U27 -to HSMC_RX_D_P[9]
set_location_assignment PIN_W27 -to HSMC_RX_D_P[10]
set_location_assignment PIN_W29 -to HSMC_RX_D_P[11]
set_location_assignment PIN_M29 -to HSMC_RX_D_P[12]
set_location_assignment PIN_AA27 -to HSMC_RX_D_P[13]
set_location_assignment PIN_AB29 -to HSMC_RX_D_P[14]
set_location_assignment PIN_AD27 -to HSMC_RX_D_P[15]
set_location_assignment PIN_AE27 -to HSMC_RX_D_P[16]
set_location_assignment PIN_H28 -to HSMC_TX_D_N[0]
set_location_assignment PIN_F29 -to HSMC_TX_D_N[1]
set_location_assignment PIN_D30 -to HSMC_TX_D_N[2]
set_location_assignment PIN_E30 -to HSMC_TX_D_N[3]
set_location_assignment PIN_G30 -to HSMC_TX_D_N[4]
set_location_assignment PIN_J30 -to HSMC_TX_D_N[5]
set_location_assignment PIN_K27 -to HSMC_TX_D_N[6]
set_location_assignment PIN_K30 -to HSMC_TX_D_N[7]
set_location_assignment PIN_T25 -to HSMC_TX_D_N[8]
set_location_assignment PIN_N28 -to HSMC_TX_D_N[9]
set_location_assignment PIN_V26 -to HSMC_TX_D_N[10]
set_location_assignment PIN_Y30 -to HSMC_TX_D_N[11]
set_location_assignment PIN_AC28 -to HSMC_TX_D_N[12]
set_location_assignment PIN_AD30 -to HSMC_TX_D_N[13]
set_location_assignment PIN_AE30 -to HSMC_TX_D_N[14]
set_location_assignment PIN_AH30 -to HSMC_TX_D_N[15]
set_location_assignment PIN_AG29 -to HSMC_TX_D_N[16]
set_location_assignment PIN_J28 -to HSMC_TX_D_P[0]
set_location_assignment PIN_F28 -to HSMC_TX_D_P[1]
set_location_assignment PIN_D29 -to HSMC_TX_D_P[2]
set_location_assignment PIN_F30 -to HSMC_TX_D_P[3]
set_location_assignment PIN_H30 -to HSMC_TX_D_P[4]
set_location_assignment PIN_J29 -to HSMC_TX_D_P[5]
set_location_assignment PIN_K26 -to HSMC_TX_D_P[6]
set_location_assignment PIN_L30 -to HSMC_TX_D_P[7]
set_location_assignment PIN_U25 -to HSMC_TX_D_P[8]
set_location_assignment PIN_N27 -to HSMC_TX_D_P[9]
set_location_assignment PIN_V25 -to HSMC_TX_D_P[10]
set_location_assignment PIN_AA30 -to HSMC_TX_D_P[11]
set_location_assignment PIN_AC27 -to HSMC_TX_D_P[12]
set_location_assignment PIN_AD29 -to HSMC_TX_D_P[13]
set_location_assignment PIN_AE29 -to HSMC_TX_D_P[14]
set_location_assignment PIN_AJ30 -to HSMC_TX_D_P[15]
set_location_assignment PIN_AH29 -to HSMC_TX_D_P[16]
set_location_assignment PIN_C27 -to I2C_SCLK
set_location_assignment PIN_G21 -to I2C_SDAT
set_location_assignment PIN_AH28 -to IRDA_RXD
set_location_assignment PIN_AA26 -to KEY[0]
set_location_assignment PIN_AE25 -to KEY[1]
set_location_assignment PIN_AF30 -to KEY[2]
set_location_assignment PIN_AE26 -to KEY[3]
set_location_assignment PIN_AG4 -to LCD_DATA[0]
set_location_assignment PIN_AF3 -to LCD_DATA[1]
set_location_assignment PIN_AH3 -to LCD_DATA[2]
set_location_assignment PIN_AE5 -to LCD_DATA[3]
set_location_assignment PIN_AH2 -to LCD_DATA[4]
set_location_assignment PIN_AE3 -to LCD_DATA[5]
set_location_assignment PIN_AH4 -to LCD_DATA[6]
set_location_assignment PIN_AE4 -to LCD_DATA[7]
set_location_assignment PIN_AF4 -to LCD_EN
set_location_assignment PIN_AF27 -to LCD_ON
set_location_assignment PIN_AG3 -to LCD_RS
set_location_assignment PIN_AJ3 -to LCD_RW
set_location_assignment PIN_AA25 -to LEDG[0]
set_location_assignment PIN_AB25 -to LEDG[1]
set_location_assignment PIN_F27 -to LEDG[2]
set_location_assignment PIN_F26 -to LEDG[3]
set_location_assignment PIN_W26 -to LEDG[4]
set_location_assignment PIN_Y22 -to LEDG[5]
set_location_assignment PIN_Y25 -to LEDG[6]
set_location_assignment PIN_AA22 -to LEDG[7]
set_location_assignment PIN_J25 -to LEDG[8]
set_location_assignment PIN_T23 -to LEDR[0]
set_location_assignment PIN_T24 -to LEDR[1]
set_location_assignment PIN_V27 -to LEDR[2]
set_location_assignment PIN_W25 -to LEDR[3]
set_location_assignment PIN_T21 -to LEDR[4]
set_location_assignment PIN_T26 -to LEDR[5]
set_location_assignment PIN_R25 -to LEDR[6]
set_location_assignment PIN_T27 -to LEDR[7]
set_location_assignment PIN_P25 -to LEDR[8]
set_location_assignment PIN_R24 -to LEDR[9]
set_location_assignment PIN_P21 -to LEDR[10]
set_location_assignment PIN_N24 -to LEDR[11]
set_location_assignment PIN_N21 -to LEDR[12]
set_location_assignment PIN_M25 -to LEDR[13]
set_location_assignment PIN_K24 -to LEDR[14]
set_location_assignment PIN_L25 -to LEDR[15]
set_location_assignment PIN_M21 -to LEDR[16]
set_location_assignment PIN_M22 -to LEDR[17]
set_location_assignment PIN_A4 -to PCIE_PERST_N
set_location_assignment PIN_V15 -to PCIE_REFCLK_P
set_location_assignment PIN_AC2 -to PCIE_RX_P[0]
set_location_assignment PIN_AA2 -to PCIE_RX_P[1]
set_location_assignment PIN_AB4 -to PCIE_TX_P[0]
set_location_assignment PIN_Y4 -to PCIE_TX_P[1]
set_location_assignment PIN_C29 -to PCIE_WAKE_N
set_location_assignment PIN_AH25 -to SD_CLK
set_location_assignment PIN_AF18 -to SD_CMD
set_location_assignment PIN_AH27 -to SD_DAT[0]
set_location_assignment PIN_AJ28 -to SD_DAT[1]
set_location_assignment PIN_AD24 -to SD_DAT[2]
set_location_assignment PIN_AE18 -to SD_DAT[3]
set_location_assignment PIN_AJ27 -to SD_WP_N
set_location_assignment PIN_AK16 -to SMA_CLKIN
set_location_assignment PIN_AF25 -to SMA_CLKOUT
set_location_assignment PIN_AJ21 -to SSRAM0_CE_N
set_location_assignment PIN_AG23 -to SSRAM1_CE_N
set_location_assignment PIN_AK25 -to SSRAM_ADSC_N
set_location_assignment PIN_AJ25 -to SSRAM_ADSP_N
set_location_assignment PIN_AH26 -to SSRAM_ADV_N
set_location_assignment PIN_AF22 -to SSRAM_BE[0]
set_location_assignment PIN_AK22 -to SSRAM_BE[1]
set_location_assignment PIN_AJ22 -to SSRAM_BE[2]
set_location_assignment PIN_AF21 -to SSRAM_BE[3]
set_location_assignment PIN_AF24 -to SSRAM_CLK
set_location_assignment PIN_AK23 -to SSRAM_GW_N
set_location_assignment PIN_AG24 -to SSRAM_OE_N
set_location_assignment PIN_AK24 -to SSRAM_WE_N
set_location_assignment PIN_V28 -to SW[0]
set_location_assignment PIN_U30 -to SW[1]
set_location_assignment PIN_V21 -to SW[2]
set_location_assignment PIN_C2 -to SW[3]
set_location_assignment PIN_AB30 -to SW[4]
set_location_assignment PIN_U21 -to SW[5]
set_location_assignment PIN_T28 -to SW[6]
set_location_assignment PIN_R30 -to SW[7]
set_location_assignment PIN_P30 -to SW[8]
set_location_assignment PIN_R29 -to SW[9]
set_location_assignment PIN_R26 -to SW[10]
set_location_assignment PIN_N26 -to SW[11]
set_location_assignment PIN_M26 -to SW[12]
set_location_assignment PIN_N25 -to SW[13]
set_location_assignment PIN_J26 -to SW[14]
set_location_assignment PIN_K25 -to SW[15]
set_location_assignment PIN_C30 -to SW[16]
set_location_assignment PIN_H25 -to SW[17]
set_location_assignment PIN_B15 -to TD_CLK27
set_location_assignment PIN_C17 -to TD_DATA[0]
set_location_assignment PIN_D17 -to TD_DATA[1]
set_location_assignment PIN_A16 -to TD_DATA[2]
set_location_assignment PIN_B16 -to TD_DATA[3]
set_location_assignment PIN_G18 -to TD_DATA[4]
set_location_assignment PIN_G17 -to TD_DATA[5]
set_location_assignment PIN_K18 -to TD_DATA[6]
set_location_assignment PIN_K17 -to TD_DATA[7]
set_location_assignment PIN_C28 -to TD_HS
set_location_assignment PIN_E25 -to TD_RESET_N
set_location_assignment PIN_E22 -to TD_VS
set_location_assignment PIN_D26 -to UART_CTS
set_location_assignment PIN_A29 -to UART_RTS
set_location_assignment PIN_B27 -to UART_RXD
set_location_assignment PIN_H24 -to UART_TXD
set_location_assignment PIN_E24 -to VGA_B[0]
set_location_assignment PIN_C24 -to VGA_B[1]
set_location_assignment PIN_B25 -to VGA_B[2]
set_location_assignment PIN_C23 -to VGA_B[3]
set_location_assignment PIN_F24 -to VGA_B[4]
set_location_assignment PIN_A23 -to VGA_B[5]
set_location_assignment PIN_G25 -to VGA_B[6]
set_location_assignment PIN_C22 -to VGA_B[7]
set_location_assignment PIN_F25 -to VGA_BLANK_N
set_location_assignment PIN_D27 -to VGA_CLK
set_location_assignment PIN_D20 -to VGA_G[0]
set_location_assignment PIN_C20 -to VGA_G[1]
set_location_assignment PIN_A20 -to VGA_G[2]
set_location_assignment PIN_K19 -to VGA_G[3]
set_location_assignment PIN_A21 -to VGA_G[4]
set_location_assignment PIN_F21 -to VGA_G[5]
set_location_assignment PIN_A22 -to VGA_G[6]
set_location_assignment PIN_B22 -to VGA_G[7]
set_location_assignment PIN_B24 -to VGA_HS
set_location_assignment PIN_A17 -to VGA_R[0]
set_location_assignment PIN_C18 -to VGA_R[1]
set_location_assignment PIN_B18 -to VGA_R[2]
set_location_assignment PIN_A18 -to VGA_R[3]
set_location_assignment PIN_E18 -to VGA_R[4]
set_location_assignment PIN_E19 -to VGA_R[5]
set_location_assignment PIN_B19 -to VGA_R[6]
set_location_assignment PIN_C19 -to VGA_R[7]
set_location_assignment PIN_AH20 -to VGA_SYNC_N
set_location_assignment PIN_A24 -to VGA_VS
set_instance_assignment -name VIRTUAL_PIN ON -to FS_ADDR[0]
#============================================================
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V"
set_global_assignment -name VQM_FILE ../top.vqm
set_global_assignment -name SDC_FILE de2i_150_golden_top.sdc
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Tops="mi">0; i < nNodes; i++ )
Abc_MffcRef_rec( pNodes[i] );
}
/**Function*************************************************************
Synopsis [Collects leaves of the MFFC.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_MffcCollectLeaves( Vec_Ptr_t * vNodes, Vec_Ptr_t * vLeaves )
{
Abc_Obj_t * pNode, * pFanin;
int i, k;
assert( Vec_PtrSize(vNodes) > 0 );
pNode = (Abc_Obj_t *)Vec_PtrEntry( vNodes, 0 );
// label them
Abc_NtkIncrementTravId( pNode->pNtk );
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pNode, i )
Abc_NodeSetTravIdCurrent( pNode );
// collect non-labeled fanins
Vec_PtrClear( vLeaves );
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pNode, i )
Abc_ObjForEachFanin( pNode, pFanin, k )
{
if ( Abc_NodeIsTravIdCurrent(pFanin) )
continue;
Abc_NodeSetTravIdCurrent( pFanin );
Vec_PtrPush( vLeaves, pFanin );
}
}
/**Function*************************************************************
Synopsis [Collects internal nodes that are roots of MFFCs.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NktMffcMarkRoots( Abc_Ntk_t * pNtk, int fSkipPis )
{
Vec_Ptr_t * vRoots, * vNodes, * vLeaves;
Abc_Obj_t * pObj, * pLeaf;
int i, k;
Abc_NtkCleanMarkA( pNtk );
// mark the drivers of combinational outputs
vRoots = Vec_PtrAlloc( 1000 );
Abc_NtkForEachCo( pNtk, pObj, i )
{
pObj = Abc_ObjFanin0( pObj );
// if ( Abc_ObjIsCi(pObj) || Abc_ObjFaninNum(pObj) == 0 || pObj->fMarkA )
if ( Abc_ObjIsCi(pObj) || pObj->fMarkA )
continue;
pObj->fMarkA = 1;
Vec_PtrPush( vRoots, pObj );
}
// explore starting from the drivers
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
if ( Abc_ObjIsCi(pObj) )
continue;
// collect internal nodes
Abc_MffcCollectNodes( &pObj, 1, vNodes );
// collect leaves
Abc_MffcCollectLeaves( vNodes, vLeaves );
// add non-PI leaves
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pLeaf, k )
{
if ( (fSkipPis && Abc_ObjIsCi(pLeaf)) || pLeaf->fMarkA )
continue;
pLeaf->fMarkA = 1;
Vec_PtrPush( vRoots, pLeaf );
}
}
Vec_PtrFree( vLeaves );
Vec_PtrFree( vNodes );
Abc_NtkCleanMarkA( pNtk );
return vRoots;
}
/**Function*************************************************************
Synopsis [Collect fanout reachable root nodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcCollectFanout_rec( Abc_Obj_t * pObj, Vec_Ptr_t * vFanouts )
{
Abc_Obj_t * pFanout;
int i;
if ( Abc_ObjIsCo(pObj) )
return;
if ( Abc_ObjFanoutNum(pObj) > 64 )
return;
if ( Abc_NodeIsTravIdCurrent(pObj) )
return;
Abc_NodeSetTravIdCurrent(pObj);
if ( pObj->fMarkA )
{
if ( pObj->vFanouts.nSize > 0 )
Vec_PtrPush( vFanouts, pObj );
return;
}
Abc_ObjForEachFanout( pObj, pFanout, i )
Abc_NktMffcCollectFanout_rec( pFanout, vFanouts );
}
/**Function*************************************************************
Synopsis [Collect fanout reachable root nodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcCollectFanout( Abc_Obj_t ** pNodes, int nNodes, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vFanouts )
{
Abc_Obj_t * pFanin, * pFanout;
int i, k;
// dereference nodes
for ( i = 0; i < nNodes; i++ )
Abc_MffcDeref_rec( pNodes[i], NULL );
// collect fanouts
Vec_PtrClear( vFanouts );
pFanin = (Abc_Obj_t *)Vec_PtrEntry( vLeaves, 0 );
Abc_NtkIncrementTravId( pFanin->pNtk );
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pFanin, i )
Abc_ObjForEachFanout( pFanin, pFanout, k )
Abc_NktMffcCollectFanout_rec( pFanout, vFanouts );
// reference nodes
for ( i = 0; i < nNodes; i++ )
Abc_MffcRef_rec( pNodes[i] );
}
/**Function*************************************************************
Synopsis [Grow one node.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Abc_Obj_t * Abc_NktMffcGrowOne( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppObjs, int nObjs, Vec_Ptr_t * vNodes, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vFanouts )
{
Abc_Obj_t * pFanout, * pFanoutBest = NULL;
double CostBest = 0.0;
int i, k;
Abc_MffcCollectNodes( ppObjs, nObjs, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
// collect fanouts of all fanins
Abc_NktMffcCollectFanout( ppObjs, nObjs, vLeaves, vFanouts );
// try different fanouts
Vec_PtrForEachEntry( Abc_Obj_t *, vFanouts, pFanout, i )
{
for ( k = 0; k < nObjs; k++ )
if ( pFanout == ppObjs[k] )
break;
if ( k < nObjs )
continue;
ppObjs[nObjs] = pFanout;
Abc_MffcCollectNodes( ppObjs, nObjs+1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
if ( pFanoutBest == NULL || CostBest < 1.0 * Vec_PtrSize(vNodes)/Vec_PtrSize(vLeaves) )
{
CostBest = 1.0 * Vec_PtrSize(vNodes)/Vec_PtrSize(vLeaves);
pFanoutBest = pFanout;
}
}
return pFanoutBest;
}
/**Function*************************************************************
Synopsis [Procedure to increase MFF size by pairing nodes.]
Description [For each node in the array vRoots, find a matching node,
so that the ratio of nodes inside to the leaf nodes is maximized.]
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NktMffcGrowRoots( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots )
{
Vec_Ptr_t * vRoots1, * vNodes, * vLeaves, * vFanouts;
Abc_Obj_t * pObj, * pRoot2, * pNodes[2];
int i;
Abc_NtkCleanMarkA( pNtk );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
pObj->fMarkA = 1;
vRoots1 = Vec_PtrAlloc( 100 );
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
vFanouts = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
pNodes[0] = pObj;
pRoot2 = Abc_NktMffcGrowOne( pNtk, pNodes, 1, vNodes, vLeaves, vFanouts );
Vec_PtrPush( vRoots1, pRoot2 );
}
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
Vec_PtrFree( vFanouts );
Abc_NtkCleanMarkA( pNtk );
return vRoots1;
}
/**Function*************************************************************
Synopsis [Procedure to increase MFF size by pairing nodes.]
Description [For each node in the array vRoots, find a matching node,
so that the ratio of nodes inside to the leaf nodes is maximized.]
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NktMffcGrowRootsAgain( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, Vec_Ptr_t * vRoots1 )
{
Vec_Ptr_t * vRoots2, * vNodes, * vLeaves, * vFanouts;
Abc_Obj_t * pObj, * pRoot2, * ppObjs[3];
int i;
Abc_NtkCleanMarkA( pNtk );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
pObj->fMarkA = 1;
vRoots2 = Vec_PtrAlloc( 100 );
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
vFanouts = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
ppObjs[0] = pObj;
ppObjs[1] = (Abc_Obj_t *)Vec_PtrEntry( vRoots1, i );
if ( ppObjs[1] == NULL )
{
Vec_PtrPush( vRoots2, NULL );
continue;
}
pRoot2 = Abc_NktMffcGrowOne( pNtk, ppObjs, 2, vNodes, vLeaves, vFanouts );
Vec_PtrPush( vRoots2, pRoot2 );
}
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
Vec_PtrFree( vFanouts );
Abc_NtkCleanMarkA( pNtk );
assert( Vec_PtrSize(vRoots) == Vec_PtrSize(vRoots2) );
return vRoots2;
}
/**Function*************************************************************
Synopsis [Testbench.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcPrint( char * pFileName, Abc_Obj_t ** pNodes, int nNodes, Vec_Ptr_t * vNodes, Vec_Ptr_t * vLeaves )
{
FILE * pFile;
Abc_Obj_t * pObj, * pFanin;
int i, k;
// convert the network
Abc_NtkToSop( pNodes[0]->pNtk, -1, ABC_INFINITY );
// write the file
pFile = fopen( pFileName, "wb" );
fprintf( pFile, ".model %s_part\n", pNodes[0]->pNtk->pName );
fprintf( pFile, ".inputs" );
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pObj, i )
fprintf( pFile, " %s", Abc_ObjName(pObj) );
fprintf( pFile, "\n" );
fprintf( pFile, ".outputs" );
for ( i = 0; i < nNodes; i++ )
fprintf( pFile, " %s", Abc_ObjName(pNodes[i]) );
fprintf( pFile, "\n" );
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
{
fprintf( pFile, ".names" );
Abc_ObjForEachFanin( pObj, pFanin, k )
fprintf( pFile, " %s", Abc_ObjName(pFanin) );
fprintf( pFile, " %s", Abc_ObjName(pObj) );
fprintf( pFile, "\n%s", (char *)pObj->pData );
}
fprintf( pFile, ".end\n" );
fclose( pFile );
}
/**Function*************************************************************
Synopsis [Testbench.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcPrintInt( char * pFileName, Abc_Ntk_t * pNtk, Vec_Int_t * vRoots, Vec_Int_t * vNodes, Vec_Int_t * vLeaves )
{
FILE * pFile;
Abc_Obj_t * pObj, * pFanin;
int i, k;
// convert the network
Abc_NtkToSop( pNtk, -1, ABC_INFINITY );
// write the file
pFile = fopen( pFileName, "wb" );
fprintf( pFile, ".model %s_part\n", pNtk->pName );
fprintf( pFile, ".inputs" );
Abc_NtkForEachObjVec( vLeaves, pNtk, pObj, i )
fprintf( pFile, " %s", Abc_ObjName(pObj) );
fprintf( pFile, "\n" );
fprintf( pFile, ".outputs" );
Abc_NtkForEachObjVec( vRoots, pNtk, pObj, i )
fprintf( pFile, " %s", Abc_ObjName(pObj) );
fprintf( pFile, "\n" );
Abc_NtkForEachObjVec( vNodes, pNtk, pObj, i )
{
fprintf( pFile, ".names" );
Abc_ObjForEachFanin( pObj, pFanin, k )
fprintf( pFile, " %s", Abc_ObjName(pFanin) );
fprintf( pFile, " %s", Abc_ObjName(pObj) );
fprintf( pFile, "\n%s", (char *)pObj->pData );
}
fprintf( pFile, ".end\n" );
fclose( pFile );
}
/**Function*************************************************************
Synopsis [Testbench.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcTest( Abc_Ntk_t * pNtk )
{
char pFileName[1000];
Vec_Ptr_t * vRoots, * vRoots1, * vRoots2, * vNodes, * vLeaves;
Abc_Obj_t * pNodes[3], * pObj;
int i, nNodes = 0, nNodes2 = 0;
vRoots = Abc_NktMffcMarkRoots( pNtk, 1 );
vRoots1 = Abc_NktMffcGrowRoots( pNtk, vRoots );
vRoots2 = Abc_NktMffcGrowRootsAgain( pNtk, vRoots, vRoots1 );
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
printf( "%6d : ", i );
Abc_MffcCollectNodes( &pObj, 1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
nNodes += Vec_PtrSize(vNodes);
printf( "%6d ", Abc_ObjId(pObj) );
printf( "Vol =%3d ", Vec_PtrSize(vNodes) );
printf( "Cut =%3d ", Vec_PtrSize(vLeaves) );
if ( Vec_PtrSize(vLeaves) < 2 )
{
printf( "\n" );
continue;
}
pNodes[0] = pObj;
pNodes[1] = (Abc_Obj_t *)Vec_PtrEntry( vRoots1, i );
pNodes[2] = (Abc_Obj_t *)Vec_PtrEntry( vRoots2, i );
if ( pNodes[1] == NULL || pNodes[2] == NULL )
{
printf( "\n" );
continue;
}
Abc_MffcCollectNodes( pNodes, 3, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
nNodes2 += Vec_PtrSize(vNodes);
printf( "%6d ", Abc_ObjId(pNodes[1]) );
printf( "%6d ", Abc_ObjId(pNodes[2]) );
printf( "Vol =%3d ", Vec_PtrSize(vNodes) );
printf( "Cut =%3d ", Vec_PtrSize(vLeaves) );
printf( "%4.2f ", 1.0 * Vec_PtrSize(vNodes)/Vec_PtrSize(vLeaves) );
printf( "\n" );
// generate file
if ( Vec_PtrSize(vNodes) < 10 )
continue;
sprintf( pFileName, "%s_mffc%04d_%02d.blif", Abc_NtkName(pNtk), Abc_ObjId(pObj), Vec_PtrSize(vNodes) );
Abc_NktMffcPrint( pFileName, pNodes, 3, vNodes, vLeaves );
}
printf( "Total nodes = %d. Root nodes = %d. Mffc nodes = %d. Mffc nodes2 = %d.\n",
Abc_NtkNodeNum(pNtk), Vec_PtrSize(vRoots), nNodes, nNodes2 );
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
Vec_PtrFree( vRoots );
Vec_PtrFree( vRoots1 );
Vec_PtrFree( vRoots2 );
}
/**Function*************************************************************
Synopsis [Create the network of supernodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcTestSuper( Abc_Ntk_t * pNtk )
{
Vec_Ptr_t * vRoots, * vFanins, * vFanouts, * vNodes, * vLeaves;
Abc_Obj_t * pObj, * pFanin;
Vec_Int_t * vCounts, * vNumbers, * vSizes, * vMarks;
Vec_Int_t * vNode1, * vNode2;
int i, k, Entry, nSizes;
abctime clk = Abc_Clock();
vRoots = Abc_NktMffcMarkRoots( pNtk, 1 );
vFanins = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
vFanouts = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
vCounts = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
vNode1 = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
vNode2 = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
vSizes = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
vMarks = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
// create fanins/fanouts
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Vec_PtrWriteEntry( vFanins, Abc_ObjId(pObj), Vec_IntAlloc(8) );
Vec_PtrWriteEntry( vFanouts, Abc_ObjId(pObj), Vec_IntAlloc(8) );
}
// add fanins/fanouts
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Abc_MffcCollectNodes( &pObj, 1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pFanin, k )
{
if ( !Abc_ObjIsNode(pFanin) )
continue;
Vec_IntPush( (Vec_Int_t *)Vec_PtrEntry(vFanins, Abc_ObjId(pObj)), Abc_ObjId(pFanin) );
Vec_IntPush( (Vec_Int_t *)Vec_PtrEntry(vFanouts, Abc_ObjId(pFanin)), Abc_ObjId(pObj) );
// count how many times each object is a fanin
Vec_IntAddToEntry( vCounts, Abc_ObjId(pFanin), 1 );
}
Vec_IntWriteEntry( vSizes, Abc_ObjId(pObj), Vec_PtrSize(vNodes) );
}
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Abc_MffcCollectNodes( &pObj, 1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pFanin, k )
{
if ( !Abc_ObjIsNode(pFanin) )
continue;
if ( Vec_IntEntry(vCounts, Abc_ObjId(pFanin)) != 2 )
continue;
if ( Vec_IntEntry(vNode1, Abc_ObjId(pFanin)) == 0 )
Vec_IntWriteEntry( vNode1, Abc_ObjId(pFanin), Abc_ObjId(pObj) );
else //if ( Vec_IntEntry(vNode2, Abc_ObjId(pFanin)) == 0 )
Vec_IntWriteEntry( vNode2, Abc_ObjId(pFanin), Abc_ObjId(pObj) );
Vec_IntWriteEntry( vMarks, Abc_ObjId(pFanin), 1 );
Vec_IntWriteEntry( vMarks, Abc_ObjId(pObj), 1 );
}
}
// count sizes
nSizes = 0;
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
if ( Vec_IntEntry( vMarks, Abc_ObjId(pObj) ) )
nSizes += Vec_IntEntry( vSizes, Abc_ObjId(pObj) );
}
printf( "Included = %6d. Total = %6d. (%6.2f %%)\n",
nSizes, Abc_NtkNodeNum(pNtk), 100.0 * nSizes / Abc_NtkNodeNum(pNtk) );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
if ( Vec_IntEntry(vCounts, Abc_ObjId(pObj)) != 2 )
continue;
printf( "%d ", Vec_IntEntry( vSizes, Abc_ObjId(pObj) ) +
Vec_IntEntry( vSizes, Vec_IntEntry(vNode1, Abc_ObjId(pObj)) ) +
Vec_IntEntry( vSizes, Vec_IntEntry(vNode2, Abc_ObjId(pObj)) ) );
}
printf( "\n" );
// print how many times they appear
vNumbers = Vec_IntStart( 32 );
Vec_IntForEachEntry( vCounts, Entry, i )
{
/*
if ( Entry == 2 )
{
pObj = Abc_NtkObj( pNtk, i );
Abc_MffcCollectNodes( &pObj, 1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
printf( "%d(%d) ", Vec_PtrSize(vNodes), Vec_PtrSize(vLeaves) );
}
*/
if ( Entry == 0 )
continue;
if ( Entry <= 10 )
Vec_IntAddToEntry( vNumbers, Entry, 1 );
else if ( Entry <= 100 )
Vec_IntAddToEntry( vNumbers, 10 + Entry/10, 1 );
else if ( Entry < 1000 )
Vec_IntAddToEntry( vNumbers, 20 + Entry/100, 1 );
else
Vec_IntAddToEntry( vNumbers, 30, 1 );
}
for ( i = 1; i <= 10; i++ )
if ( Vec_IntEntry(vNumbers,i) )
printf( " n = %4d %6d\n", i, Vec_IntEntry(vNumbers,i) );
for ( i = 11; i <= 20; i++ )
if ( Vec_IntEntry(vNumbers,i) )
printf( "%4d < n <= %4d %6d\n", 10*(i-10), 10*(i-9), Vec_IntEntry(vNumbers,i) );
for ( i = 21; i < 30; i++ )
if ( Vec_IntEntry(vNumbers,i) )
printf( "%4d < n <= %4d %6d\n", 100*(i-20), 100*(i-19), Vec_IntEntry(vNumbers,i) );
if ( Vec_IntEntry(vNumbers,31) )
printf( " n > 1000 %6d\n", Vec_IntEntry(vNumbers,30) );
printf( "Total MFFCs = %d. ", Vec_PtrSize(vRoots) );
Abc_PrintTime( 1, "Time", Abc_Clock() - clk );
Vec_IntFree( vNumbers );
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
// delete fanins/fanouts
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Vec_IntFree( (Vec_Int_t *)Vec_PtrEntry(vFanins, Abc_ObjId(pObj)) );
Vec_IntFree( (Vec_Int_t *)Vec_PtrEntry(vFanouts, Abc_ObjId(pObj)) );
}
Vec_IntFree( vCounts );
Vec_PtrFree( vFanouts );
Vec_PtrFree( vFanins );
Vec_PtrFree( vRoots );
}
/**Function*************************************************************
Synopsis [Collects the leaves and the roots of the window.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffCollectLeafRoot( Abc_Ntk_t * pNtk, Vec_Ptr_t * vNodes, Vec_Ptr_t * vLeaves, Vec_Ptr_t * vRoots )
{
Abc_Obj_t * pObj, * pNext;
int i, k;
// mark
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
pObj->fMarkA = 1;
// collect leaves
Vec_PtrClear( vLeaves );
Abc_NtkIncrementTravId( pNtk );
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
Abc_ObjForEachFanin( pObj, pNext, k )
{
if ( pNext->fMarkA || Abc_NodeIsTravIdCurrent(pNext) )
continue;
Abc_NodeSetTravIdCurrent(pNext);
Vec_PtrPush( vLeaves, pNext );
}
// collect roots
Vec_PtrClear( vRoots );
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
{
Abc_ObjForEachFanout( pObj, pNext, k )
if ( !pNext->fMarkA )
{
Vec_PtrPush( vRoots, pObj );
break;
}
}
// unmark
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
pObj->fMarkA = 0;
}
/**Function*************************************************************
Synopsis [Collects the leaves and the roots of the window.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffCollectLeafRootInt( Abc_Ntk_t * pNtk, Vec_Int_t * vNodes, Vec_Int_t * vLeaves, Vec_Int_t * vRoots )
{
Abc_Obj_t * pObj, * pNext;
int i, k;
// mark
Abc_NtkForEachObjVec( vNodes, pNtk, pObj, i )
pObj->fMarkA = 1;
// collect leaves
Vec_IntClear( vLeaves );
Abc_NtkIncrementTravId( pNtk );
Abc_NtkForEachObjVec( vNodes, pNtk, pObj, i )
Abc_ObjForEachFanin( pObj, pNext, k )
{
if ( pNext->fMarkA || Abc_NodeIsTravIdCurrent(pNext) )
continue;
Abc_NodeSetTravIdCurrent(pNext);
Vec_IntPush( vLeaves, Abc_ObjId(pNext) );
}
// collect roots
if ( vRoots )
{
Vec_IntClear( vRoots );
Abc_NtkForEachObjVec( vNodes, pNtk, pObj, i )
{
Abc_ObjForEachFanout( pObj, pNext, k )
if ( !pNext->fMarkA )
{
Vec_IntPush( vRoots, Abc_ObjId(pObj) );
break;
}
}
}
// unmark
Abc_NtkForEachObjVec( vNodes, pNtk, pObj, i )
pObj->fMarkA = 0;
}
/**Function*************************************************************
Synopsis [Create the network of supernodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcTestIdeaOne( Abc_Ntk_t * pNtk, Abc_Obj_t * pObj )
{
Vec_Ptr_t * vNodes, * vLeaves, * vRoots, * vVolume;
Vec_Ptr_t * vLeaves2, * vRoots2, * vVolume2;
Abc_Obj_t * pNode, * pNodeBest = pObj;
double Cost, CostBest = 0.0;
int i, k;
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
vRoots = Vec_PtrAlloc( 100 );
vVolume = Vec_PtrAlloc( 100 );
vLeaves2 = Vec_PtrAlloc( 100 );
vRoots2 = Vec_PtrAlloc( 100 );
vVolume2 = Vec_PtrAlloc( 100 );
printf( "\n" );
for ( i = 1; i <= 16; i++ )
{
Vec_PtrPush( vNodes, pNodeBest );
Abc_NktMffCollectLeafRoot( pNtk, vNodes, vLeaves, vRoots );
Abc_MffcCollectNodes( (Abc_Obj_t **)Vec_PtrArray(vRoots), Vec_PtrSize(vRoots), vVolume );
printf( "%2d : Node =%6d (%2d%3d) Cost =%6.2f ", i, Abc_ObjId(pNodeBest),
Abc_ObjFaninNum(pNodeBest), Abc_ObjFanoutNum(pNodeBest), CostBest );
printf( "Leaf =%2d Root =%2d Vol =%2d\n", Vec_PtrSize(vLeaves), Vec_PtrSize(vRoots), Vec_PtrSize(vVolume) );
// try including different nodes
pNodeBest = NULL;
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pNode, k )
{
if ( !Abc_ObjIsNode(pNode) )
continue;
Vec_PtrPush( vNodes, pNode );
Abc_NktMffCollectLeafRoot( pNtk, vNodes, vLeaves2, vRoots2 );
Abc_MffcCollectNodes( (Abc_Obj_t **)Vec_PtrArray(vRoots2), Vec_PtrSize(vRoots2), vVolume2 );
Cost = 1.0 * Vec_PtrSize(vVolume2) / (Vec_PtrSize(vLeaves2) + 3 * Vec_PtrSize(vRoots2));
if ( pNodeBest == NULL || CostBest < Cost )
{
pNodeBest = pNode;
CostBest = Cost;
}
Vec_PtrPop( vNodes );
}
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pNode, k )
{
if ( Vec_PtrFind(vNodes, pNode) >= 0 )
continue;
if ( !Abc_ObjIsNode(pNode) )
continue;
Vec_PtrPush( vNodes, pNode );
Abc_NktMffCollectLeafRoot( pNtk, vNodes, vLeaves2, vRoots2 );
Abc_MffcCollectNodes( (Abc_Obj_t **)Vec_PtrArray(vRoots2), Vec_PtrSize(vRoots2), vVolume2 );
Cost = 1.0 * Vec_PtrSize(vVolume2) / (Vec_PtrSize(vLeaves2) + 3 * Vec_PtrSize(vRoots2));
if ( pNodeBest == NULL || CostBest < Cost )
{
pNodeBest = pNode;
CostBest = Cost;
}
Vec_PtrPop( vNodes );
}
if ( pNodeBest == NULL )
break;
}
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
Vec_PtrFree( vRoots );
Vec_PtrFree( vVolume );
Vec_PtrFree( vLeaves2 );
Vec_PtrFree( vRoots2 );
Vec_PtrFree( vVolume2 );
}
/**Function*************************************************************
Synopsis [Create the network of supernodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcTestIdea( Abc_Ntk_t * pNtk )
{
Abc_Obj_t * pObj;
int i;
Abc_NtkForEachNode( pNtk, pObj, i )
if ( Abc_ObjIsNode(pObj) && Abc_ObjId(pObj) % 100 == 0 )
Abc_NktMffcTestIdeaOne( pNtk, pObj );
}
/**Function*************************************************************
Synopsis [Creates MFFCs and their fanins/fanouts/volumes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NktMffcDerive( Abc_Ntk_t * pNtk, Vec_Ptr_t ** pvFanins, Vec_Ptr_t ** pvFanouts, Vec_Ptr_t ** pvVolumes )
{
Vec_Ptr_t * vRoots, * vFanins, * vFanouts, * vVolumes, * vNodes, * vLeaves;
Abc_Obj_t * pObj, * pFanin;
int i, k;
abctime clk = Abc_Clock();
// create roots
vRoots = Abc_NktMffcMarkRoots( pNtk, 0 );
// create fanins/fanouts/volumes
vFanins = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
vFanouts = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
vVolumes = Vec_PtrStart( Abc_NtkObjNumMax(pNtk) );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Vec_PtrWriteEntry( vFanins, Abc_ObjId(pObj), Vec_IntAlloc(8) );
Vec_PtrWriteEntry( vFanouts, Abc_ObjId(pObj), Vec_IntAlloc(8) );
Vec_PtrWriteEntry( vVolumes, Abc_ObjId(pObj), Vec_IntAlloc(8) );
}
// add fanins/fanouts
vNodes = Vec_PtrAlloc( 100 );
vLeaves = Vec_PtrAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
if ( Abc_ObjIsCi(pObj) )
continue;
Abc_MffcCollectNodes( &pObj, 1, vNodes );
Abc_MffcCollectLeaves( vNodes, vLeaves );
Vec_PtrForEachEntry( Abc_Obj_t *, vLeaves, pFanin, k )
{
Vec_IntPush( (Vec_Int_t *)Vec_PtrEntry(vFanins, Abc_ObjId(pObj)), Abc_ObjId(pFanin) );
Vec_IntPush( (Vec_Int_t *)Vec_PtrEntry(vFanouts, Abc_ObjId(pFanin)), Abc_ObjId(pObj) );
}
Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pFanin, k )
Vec_IntPush( (Vec_Int_t *)Vec_PtrEntry(vVolumes, Abc_ObjId(pObj)), Abc_ObjId(pFanin) );
}
Vec_PtrFree( vNodes );
Vec_PtrFree( vLeaves );
// sort
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Vec_IntSort( (Vec_Int_t *)Vec_PtrEntry(vFanins, Abc_ObjId(pObj)), 0 );
Vec_IntSort( (Vec_Int_t *)Vec_PtrEntry(vFanouts, Abc_ObjId(pObj)), 0 );
}
// return
*pvFanins = vFanins;
*pvFanouts = vFanouts;
*pvVolumes = vVolumes;
return vRoots;
}
/**Function*************************************************************
Synopsis [Frees MFFCs and their fanins/fanouts.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcFree( Vec_Ptr_t * vRoots, Vec_Ptr_t * vFanins, Vec_Ptr_t * vFanouts, Vec_Ptr_t * vVolumes )
{
Abc_Obj_t * pObj;
int i;
Vec_PtrForEachEntry( Abc_Obj_t *, vRoots, pObj, i )
{
Vec_IntFree( (Vec_Int_t *)Vec_PtrEntry(vFanins, Abc_ObjId(pObj)) );
Vec_IntFree( (Vec_Int_t *)Vec_PtrEntry(vFanouts, Abc_ObjId(pObj)) );
Vec_IntFree( (Vec_Int_t *)Vec_PtrEntry(vVolumes, Abc_ObjId(pObj)) );
}
Vec_PtrFree( vVolumes );
Vec_PtrFree( vFanouts );
Vec_PtrFree( vFanins );
Vec_PtrFree( vRoots );
}
/**Function*************************************************************
Synopsis [Returns the cost of two supports.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
double Abc_NktMffcCostTwo( Vec_Int_t * vSupp1, Vec_Int_t * vSupp2, int Volume, int Limit )
{
int nCommon = Vec_IntTwoCountCommon( vSupp1, vSupp2 );
//printf( "s1=%2d s2=%2d c=%2d v=%2d ", Vec_IntSize(vSupp1), Vec_IntSize(vSupp2), nCommon, Volume );
if ( Vec_IntSize(vSupp1) + Vec_IntSize(vSupp2) - nCommon > Limit )
return (double)-ABC_INFINITY;
return 0.6 * nCommon - 1.2 * Vec_IntSize(vSupp2) + 0.8 * Volume;
}
/**Function*************************************************************
Synopsis [Returns support of the group.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Int_t * Abc_NktMffcSupport( Vec_Ptr_t * vThis, Vec_Ptr_t * vFanins )
{
Vec_Int_t * vIns, * vIns2, * vTemp;
Abc_Obj_t * pObj;
int i;
vIns = Vec_IntAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vThis, pObj, i )
{
vIns2 = (Vec_Int_t *)Vec_PtrEntry( vFanins, Abc_ObjId(pObj) );
vIns = Vec_IntTwoMerge( vTemp = vIns, vIns2 );
Vec_IntFree( vTemp );
}
return vIns;
}
/**Function*************************************************************
Synopsis [Returns the best merger for the cluster of given node (pPivot).]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Abc_Obj_t * Abc_NktMffcFindBest( Abc_Ntk_t * pNtk, Vec_Int_t * vMarks, Vec_Int_t * vIns, Vec_Ptr_t * vFanins, Vec_Ptr_t * vFanouts, Vec_Ptr_t * vVolumes, int Limit )
{
Vec_Int_t * vIns2, * vOuts, * vOuts2, * vTemp;
Abc_Obj_t * pPivot2, * pObj, * pObjBest = NULL;
double Cost, CostBest = (double)-ABC_INFINITY;
int i, Volume;
// collect the fanouts of the fanins
vOuts = Vec_IntAlloc( 100 );
Abc_NtkForEachObjVec( vIns, pNtk, pObj, i )
{
vOuts2 = (Vec_Int_t *)Vec_PtrEntry( vFanouts, Abc_ObjId(pObj) );
if ( Vec_IntSize(vOuts2) > 16 )
continue;
vOuts = Vec_IntTwoMerge( vTemp = vOuts, vOuts2 );
Vec_IntFree( vTemp );
}
// check the pairs
Abc_NtkForEachObjVec( vOuts, pNtk, pPivot2, i )
{
if ( Vec_IntEntry(vMarks, Abc_ObjId(pPivot2)) == 0 )
continue;
vIns2 = (Vec_Int_t *)Vec_PtrEntry( vFanins, Abc_ObjId(pPivot2) );
Volume = Vec_IntSize((Vec_Int_t *)Vec_PtrEntry(vVolumes, Abc_ObjId(pPivot2)));
Cost = Abc_NktMffcCostTwo( vIns, vIns2, Volume, Limit );
//printf( "%5d %2d\n", Abc_ObjId(pPivot2), Cost );
if ( Cost == (double)-ABC_INFINITY )
continue;
if ( pObjBest == NULL || CostBest < Cost )
{
pObjBest = pPivot2;
CostBest = Cost;
}
}
//printf( "Choosing %d\n", pObjBest->Id );
Vec_IntFree( vOuts );
return pObjBest;
}
/**Function*************************************************************
Synopsis [Processes one cluster.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Int_t * Abc_NktMffcSaveOne( Vec_Ptr_t * vThis, Vec_Ptr_t * vVolumes )
{
Vec_Int_t * vVolume, * vResult;
Abc_Obj_t * pObj;
int i, k, Entry;
vResult = Vec_IntAlloc( 100 );
Vec_PtrForEachEntry( Abc_Obj_t *, vThis, pObj, i )
{
vVolume = (Vec_Int_t *)Vec_PtrEntry( vVolumes, Abc_ObjId(pObj) );
Vec_IntForEachEntry( vVolume, Entry, k )
Vec_IntPush( vResult, Entry );
}
return vResult;
}
/**Function*************************************************************
Synopsis [Procedure used for sorting the nodes in decreasing order of levels.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int Abc_NodeCompareVolumeDecrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 )
{
int Diff = Abc_ObjRegular(*pp1)->iTemp - Abc_ObjRegular(*pp2)->iTemp;
if ( Diff > 0 )
return -1;
if ( Diff < 0 )
return 1;
Diff = Abc_ObjRegular(*pp1)->Id - Abc_ObjRegular(*pp2)->Id;
if ( Diff > 0 )
return -1;
if ( Diff < 0 )
return 1;
return 0;
}
/**Function*************************************************************
Synopsis [Create the network of supernodes.]
Description [Returns array of interger arrays of IDs of nodes
included in a disjoint structural decomposition of the network.]
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NktMffcServer( Abc_Ntk_t * pNtk, int nInMax, int nOutMax )
{
Vec_Ptr_t * vResult, * vThis;
Vec_Ptr_t * vPivots, * vFanins, * vFanouts, * vVolumes;
Vec_Int_t * vLeaves, * vMarks;
Abc_Obj_t * pObj, * pObj2;
int i, k;
assert( nOutMax >= 1 && nOutMax <= 32 );
vResult = Vec_PtrAlloc( 100 );
// create fanins/fanouts
vPivots = Abc_NktMffcDerive( pNtk, &vFanins, &vFanouts, &vVolumes );
// sort by their MFFC size
Vec_PtrForEachEntry( Abc_Obj_t *, vPivots, pObj, i )
pObj->iTemp = Vec_IntSize((Vec_Int_t *)Vec_PtrEntry(vVolumes, Abc_ObjId(pObj)));
Vec_PtrSort( vPivots, (int (*)(void))Abc_NodeCompareVolumeDecrease );
// create marks
vMarks = Vec_IntStart( Abc_NtkObjNumMax(pNtk) );
Vec_PtrForEachEntry( Abc_Obj_t *, vPivots, pObj, i )
if ( Abc_ObjIsNode(pObj) && Vec_IntSize((Vec_Int_t *)Vec_PtrEntry(vVolumes, Abc_ObjId(pObj))) > 1 )
Vec_IntWriteEntry( vMarks, Abc_ObjId(pObj), 1 );
// consider nodes in the order of the marks
vThis = Vec_PtrAlloc( 10 );
// while ( 1 )
Vec_PtrForEachEntry( Abc_Obj_t *, vPivots, pObj, i )
{
// pObj = Abc_NtkObj( pNtk, 589 );
if ( Vec_IntEntry(vMarks, Abc_ObjId(pObj)) == 0 )
continue;
// start the set
Vec_PtrClear( vThis );
Vec_PtrPush( vThis, pObj );
Vec_IntWriteEntry( vMarks, Abc_ObjId(pObj), 0 );
// quit if exceeded the limit
vLeaves = (Vec_Int_t *)Vec_PtrEntry( vFanins, Abc_ObjId(pObj) );
if ( Vec_IntSize(vLeaves) > nInMax )
{
Vec_PtrPush( vResult, Abc_NktMffcSaveOne(vThis, vVolumes) );
continue;
}
// try adding one node at a time
for ( k = 1; k < nOutMax; k++ )
{
// quit if exceeded the limit
vLeaves = Abc_NktMffcSupport( vThis, vFanins );
assert( Vec_IntSize(vLeaves) <= nInMax );
pObj2 = Abc_NktMffcFindBest( pNtk, vMarks, vLeaves, vFanins, vFanouts, vVolumes, nInMax );
Vec_IntFree( vLeaves );
// quit if there is no extension
if ( pObj2 == NULL )
break;
Vec_PtrPush( vThis, pObj2 );
Vec_IntWriteEntry( vMarks, Abc_ObjId(pObj2), 0 );
}
Vec_PtrPush( vResult, Abc_NktMffcSaveOne(vThis, vVolumes) );
// break;
}
Vec_PtrFree( vThis );
Vec_IntFree( vMarks );
// delele fanins/outputs
Abc_NktMffcFree( vPivots, vFanins, vFanouts, vVolumes );
return vResult;
}
/**Function*************************************************************
Synopsis [Testbench.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NktMffcServerTest( Abc_Ntk_t * pNtk )
{
char pFileName[1000];
Vec_Ptr_t * vGlobs;
Vec_Int_t * vGlob, * vLeaves, * vRoots;
double Cost, CostAll = 0.0;
int i, k, Entry, nNodes = 0;
abctime clk = Abc_Clock();
vGlobs = Abc_NktMffcServer( pNtk, 18, 3 );
vLeaves = Vec_IntAlloc( 100 );
vRoots = Vec_IntAlloc( 100 );
Vec_PtrForEachEntry( Vec_Int_t *, vGlobs, vGlob, i )
{
nNodes += Vec_IntSize(vGlob);
Abc_NktMffCollectLeafRootInt( pNtk, vGlob, vLeaves, vRoots );
if ( Vec_IntSize(vGlob) <= Vec_IntSize(vRoots) )
continue;
Cost = 1.0 * Vec_IntSize(vGlob)/(Vec_IntSize(vLeaves) + Vec_IntSize(vRoots));
CostAll += Cost;
if ( Cost < 0.5 )
continue;
printf( "%6d : Root =%3d. Leaf =%3d. Node =%4d. ",
i, Vec_IntSize(vRoots), Vec_IntSize(vLeaves), Vec_IntSize(vGlob) );
printf( "Cost =%6.2f ", Cost );
Vec_IntForEachEntry( vRoots, Entry, k )
printf( "%d ", Entry );
printf( "\n" );
sprintf( pFileName, "%sc%04di%02dn%02d.blif", Abc_NtkName(pNtk), i, Vec_IntSize(vLeaves), Vec_IntSize(vGlob) );
Abc_NktMffcPrintInt( pFileName, pNtk, vRoots, vGlob, vLeaves );
}
Vec_IntFree( vLeaves );
Vec_IntFree( vRoots );
Vec_PtrForEachEntry( Vec_Int_t *, vGlobs, vGlob, i )
Vec_IntFree( vGlob );
Vec_PtrFree( vGlobs );
printf( "Total = %6d. Nodes = %6d. ", Abc_NtkNodeNum(pNtk), nNodes );
printf( "Cost = %6.2f ", CostAll );
Abc_PrintTime( 1, "Time", Abc_Clock() - clk );
}
ABC_NAMESPACE_IMPL_END
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////