byteman  1.3 (Build #225)
Bitstream relocation and manipulation tool
XUS_Fabric.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2022 Kristiyan Manev, Joseph Powell (University of Manchester)
3  *
4  * Licensed under the Apache License, Version 2.0(the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #include<cstdint> //uint
18 #include<string>
19 
20 #include "XilinxUltraScale.h"
21 
23  setFabricChar(char(0), 0, "EndedLine", true);
24  setFabricChar(char(1), XUS_EXTRA_FRAMES_PER_ROW, "EndOfLine", true);
25  //The Xilinx US fabric in byteman is encoded in the following letters:
26 
27  //A-D are brams
28  setFabricChar('A', 4, "BRAM/RCLK_RCLK_BRAM_L_BRAMCLMP_FT"); //"BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL/RCLK_RCLK_BR
29  setFabricChar('B', 4, "BRAM/RCLK_RCLK_BRAM_L_AUXCLMP_FT"); //"BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL/RCLK_RCLK_BR
30  setFabricChar('C', 4, "BRAM/RCLK_BRAM_L"); //"BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL/RCLK_BRAM_L"
31  setFabricChar('D', 4, "BRAM/RCLK_BRAM_R"); //"BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL + BRAM + NULL + NULL + NULL + NULL/RCLK_BRAM_R"
32 
33  //E-F, R are DSPs
34  setFabricChar('E', 4, "DSP/RCLK_DSP_L"); //"DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL/RCLK_DSP_L"
35  setFabricChar('F', 6, "DSP/RCLK_DSP_CLKBUF_L"); //"DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL + DSP + NULL + NULL + NULL + NULL/RCLK_DSP_CLKBUF_L"
36 
37  //G-H are interconnect cols with different clock resources
38  setFabricChar('G', 58, "INT/RCLK_INT_L"); //"INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT/RCLK_INT_L"
39  setFabricChar('H', 58, "INT/RCLK_INT_R"); //"INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT + INT/RCLK_INT_R"
40 
41  //I-J are CLEL_R tiles with different clock resources
42  setFabricChar('I', 12, "CLEL_R/RCLK_CLEL_R_L"); //"CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R/RCLK_CLEL_R_L"
43  setFabricChar('J', 12, "CLEL_R/RCLK_CLEL_R_R"); //"CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R + CLEL_R/RCLK_CLEL_R_R"
44 
45  //K-L are CLEL_L tiles with different clock resources
46  setFabricChar('K', 12, "CLEL_L/RCLK_CLEL_R"); //"CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L/RCLK_CLEL_R"
47  setFabricChar('L', 12, "CLEL_L/RCLK_CLEL_L"); //"CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L + CLEL_L/RCLK_CLEL_L"
48 
49  //M-N are CLE_M tiles with different clock resources
50  setFabricChar('M', 12, "CLE_M/RCLK_CLE_M_L"); //"CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M/RCLK_CLE_M_L"
51  setFabricChar('N', 12, "CLE_M/RCLK_CLEM_CLKBUF_L"); //"CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M + CLE_M/RCLK_CLEM_CLKBUF_L"
52 
53  //O = CLE_M_R
54  setFabricChar('O', 12, "CLE_M_R"); //"CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R + CLE_M_R/RCLK_CLE_M_R"
55 
56  //P-Q are laguna tiles with different clock resources
57  setFabricChar('P', 12, "LAGUNA_TILE/RCLK_RCLK_LAGUNA_L_FT"); //"LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE/RCLK_RCLK_LAGUNA_L_FT"
58  setFabricChar('Q', 12, "LAGUNA_TILE/RCLK_RCLK_LAGUNA_R_FT"); //"LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE + LAGUNA_TILE/RCLK_RCLK_LAGUNA_R_FT"
59 
60  //a-l are I/O and misc
61  setFabricChar('a', 10, "HPIO_L"); //"HPIO_L + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + HPIO_L + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/RCLK_HPIO_L"
62  setFabricChar('b', 16, "XIPHY_L"); //"XIPHY_L + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
63  setFabricChar('c', 10, "HRIO_L"); //"HRIO_L + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + HRIO_L + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/RCLK_HRIO_L"
64  setFabricChar('d', 6, "INT_INTERFACE_PCIE_R"); //"INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R + INT_INTERFACE_PCIE_R/RCLK_INTF_PCIE_R_L"
65  setFabricChar('e', 2, "PCIE"); //"PCIE + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
66  setFabricChar('f', 12, "GTH_R"); //"GTH_R + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
67  setFabricChar('g', 2, "CFG_CFG"); //"CFG_CFG + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
68  setFabricChar('h', 2, "CFGIO_IOB"); //"CFGIO_IOB + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + AMS + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/RCLK_AMS_CFGIO"
69  setFabricChar('i', 16, "GTH_QUAD_LEFT_FT"); //"GTH_QUAD_LEFT_FT + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
70  setFabricChar('j', 12, "GTY_QUAD_LEFT_FT"); //"GTY_QUAD_LEFT_FT + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
71  setFabricChar('k', 2, "ILMAC_ILMAC_FT"); //"ILMAC_ILMAC_FT + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
72  setFabricChar('l', 2, "CMAC_CMAC_FT"); //"CMAC_CMAC_FT + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL + NULL/NULL"
73 
74  //Also in the fabric exist frames that are mapped in bitstreams, but do not physically exist on the device. We encode these as follows:
75  setFabricChar('0', 10, "EMPTY10", true);
76  setFabricChar('1', 2, "EMPTY2", true);
77  setFabricChar('2', 4, "EMPTY4/BRAM", true);
78  setFabricChar('3', 6, "EMPTY6", true);
79  setFabricChar('4', 12, "EMPTY12", true);
80  setFabricChar('5', 16, "EMPTY16", true);
81  setFabricChar('6', 58, "EMPTY58", true);
82  setFabricChar('7', 4, "EMPTY4", true);
83 }
#define XUS_EXTRA_FRAMES_PER_ROW
Definition: XUS_Fabric.h:45
void setFabricChar(char character, int frameNumber, std::string tileName, bool isUnused=false)