byteman  1.3 (Build #225)
Bitstream relocation and manipulation tool
XUS_Devices.h
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 #ifndef XILINXULTRASCALEDEVICES_H
18 #define XILINXULTRASCALEDEVICES_H
19 
20 #include<cstring>//strcpy
21 
23 {
25  //XUS Kintex
33  //XUS Virtex
41 
43 };
44 
45 #define TODO 0
46 //Functions how to build devices
47 #define XUS_PARTNAME(value) {initializedResourceStringShortPartName = partName = value;}
48 #define XUS_SLRFROMROW(slrID, value) {SLRinfo[slrID].fromRow = value;}
49 #define XUS_SLRTOROW(slrID, value) {SLRinfo[slrID].toRow = value;}
50 #define XUS_ROWNUM(value) {numberOfRows = value;}
51 #define XUS_SLRNUM(value) {numberOfSLRs = value;}
52 #define XUS_IDCODE(slrID, value) {SLRinfo[slrID].IDCODE = value;}
53 #define XUS_STRING(rowID, value) {strcpy(resourceString[rowID], value);}
54 #define XUS_STRING_CAT(x, y) {XUS_STRING(y, x##STRING##y);}
55 #define XUS_STRING_CAT_2(x) {XUS_STRING_CAT(x, 0); XUS_STRING_CAT(x, 1);}
56 #define XUS_STRING_CAT_3(x) {XUS_STRING_CAT_2(x); XUS_STRING_CAT(x, 2);}
57 #define XUS_STRING_CAT_4(x) {XUS_STRING_CAT_3(x); XUS_STRING_CAT(x, 3);}
58 #define XUS_STRING_CAT_5(x) {XUS_STRING_CAT_4(x); XUS_STRING_CAT(x, 4);}
59 #define XUS_STRING_CAT_6(x) {XUS_STRING_CAT_5(x); XUS_STRING_CAT(x, 5);}
60 #define XUS_STRING_CAT_7(x) {XUS_STRING_CAT_6(x); XUS_STRING_CAT(x, 6);}
61 #define XUS_STRING_CAT_8(x) {XUS_STRING_CAT_7(x); XUS_STRING_CAT(x, 7);}
62 #define XUS_STRING_CAT_9(x) {XUS_STRING_CAT_8(x); XUS_STRING_CAT(x, 8);}
63 #define XUS_STRING_CAT_10(x) {XUS_STRING_CAT_9(x); XUS_STRING_CAT(x, 9);}
64 #define XUS_STRING_CAT_11(x) {XUS_STRING_CAT_10(x); XUS_STRING_CAT(x, 10);}
65 #define XUS_STRING_CAT_12(x) {XUS_STRING_CAT_11(x); XUS_STRING_CAT(x, 11);}
66 #define XUS_STRING_CAT_13(x) {XUS_STRING_CAT_12(x); XUS_STRING_CAT(x, 12);}
67 #define XUS_STRING_CAT_14(x) {XUS_STRING_CAT_13(x); XUS_STRING_CAT(x, 13);}
68 #define XUS_STRING_CAT_15(x) {XUS_STRING_CAT_14(x); XUS_STRING_CAT(x, 14);}
69 
70 #define XUS_SETUP_SLR_EXPANDED(slrID, idcodeVal, fromRowVal, toRowVal) {XUS_IDCODE(slrID, idcodeVal);XUS_SLRFROMROW(slrID, fromRowVal);XUS_SLRTOROW(slrID, toRowVal);}
71 #define XUS_SETUP_SLR0(prefix) {XUS_SETUP_SLR_EXPANDED(0, prefix##IDCODE, prefix##SLR0_START, prefix##SLR0_END);}
72 #define XUS_SETUP_SLR(slrID, prefix) {XUS_SETUP_SLR_EXPANDED(slrID, prefix##IDCODE##slrID, prefix##SLR##slrID##_START, prefix##SLR##slrID##_END);}
73 #define XUS_SETUP_SLRs_2(prefix) {XUS_SETUP_SLR0(prefix); XUS_SETUP_SLR(1, prefix);}
74 #define XUS_SETUP_SLRs_3(prefix) {XUS_SETUP_SLRs_2(prefix); XUS_SETUP_SLR(2, prefix);}
75 #define XUS_SETUP_DEVICE(prefix) { \
76  XUS_PARTNAME(prefix##NAME); \
77  XUS_SLRNUM(prefix##SLRNUM); \
78  XUS_ROWNUM(prefix##ROWNUM); \
79  XUS_SLRFROMROW(0, 0); \
80  XUS_SLRTOROW(0, prefix##ROWNUM-1); \
81  XUS_IDCODE(0, prefix##IDCODE); \
82 }
83 
84 
85 //Xilinx UltraScale Kintex
86 
87  //XCKU025 is weird, vivado shows it as 3 rows, but the bitstreams have 5 rows! So we add 4th and 5th rows full of unused resources?
88  #define XCKU025_NAME "xcku025"
89  #define XCKU025_SLRNUM 1
90  #define XCKU025_ROWNUM 5
91  #define XCKU025_IDCODE 0x3824093
92  #define XCKU025_STRING0 "abGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFcbGIMGIMGEMGIMGIMGEMGIAGIMGENGIMGIMGEMGIMGIMGEMGIBGIMGFMGIMGEMGIMGEMGILGICGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
93  #define XCKU025_STRING1 "abGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFcbGIMGIMGEMGIMGIMGEMGIAGIMGENGIMGIMGEMGIMGIMGEMGIBGIMGFMGIMGEMGIMGEMGILGICGILGdgHJKHJDHJKHJOHJKHJKHJOHf\x01"
94  #define XCKU025_STRING2 "abGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIMGEMGIMGIMGEMGIAGIMGENGIMGIMGEMGIMGIMGEMGIBGIMGFMGIMGEMGIMGEMGILGICGILGdhHJKHJDHJKHJOHJKHJKHJOHf\x01"
95  #define XCKU025_STRING3 "05644642644674644642644674644644644674644642644634644642644674644642644674644644644674644642644630564464467464464467464264467464464467464464467464264463464467464467464464264463164464264464464464464464\x01"
96  #define XCKU025_STRING4 XCKU025_STRING3
97  #define XCKU025() { \
98  XUS_SETUP_DEVICE(XCKU025_); \
99  XUS_STRING_CAT_5(XCKU025_); \
100  }
101 
102  //XCKU035 is a software-limitted version of XCKU040
103  #define XCKU035_NAME "xcku035"
104  #define XCKU035_SLRNUM 1
105  #define XCKU035_ROWNUM 5
106  #define XCKU035_IDCODE 0x3823093
107  #define XCKU035_STRING0 XCKU025_STRING0
108  #define XCKU035_STRING1 XCKU025_STRING1
109  #define XCKU035_STRING2 XCKU025_STRING2
110  #define XCKU035_STRING3 "abGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIMGEMGIMGIMGEMGIAGIMGENGIMGIMGEMGIMGIMGEMGIBGIMGFMGIMGEMGIMGEMGILGICGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
111  #define XCKU035_STRING4 XCKU035_STRING3
112  #define XCKU035() { \
113  XUS_SETUP_DEVICE(XCKU035_); \
114  XUS_STRING_CAT_5(XCKU035_); \
115  }
116 
117  #define XCKU040_NAME "xcku040"
118  #define XCKU040_SLRNUM 1
119  #define XCKU040_ROWNUM 5
120  #define XCKU040_IDCODE 0x3822093
121  #define XCKU040_STRING0 XCKU035_STRING0
122  #define XCKU040_STRING1 XCKU035_STRING1
123  #define XCKU040_STRING2 XCKU035_STRING2
124  #define XCKU040_STRING3 XCKU035_STRING3
125  #define XCKU040_STRING4 XCKU035_STRING4
126  #define XCKU040() { \
127  XUS_SETUP_DEVICE(XCKU040_); \
128  XUS_STRING_CAT_5(XCKU040_); \
129  }
130 
131  #define XCKU060_NAME "xcku060"
132  #define XCKU060_SLRNUM 1
133  #define XCKU060_ROWNUM 5
134  #define XCKU060_IDCODE 0x3919093
135  #define XCKU060_STRING0 "abGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGIMGIAGIMGEMGIPGIBGIMGENGIMGIMGIMGEMGIPGICGIMGFabGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGIMGIAGIMGEMGIPGIBGIMGENGIMGIMGIMGEMGIPGICGIMGFcbGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
136  #define XCKU060_STRING1 "abGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFcbGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGILGILGIBGIMGIAGILGdgHJKHJDHJKHJOHJKHJKHJOHf\x01"
137  #define XCKU060_STRING2 "0iGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGILGILGIBGIMGIAGILGdhHJKHJDHJKHJOHJKHJKHJOHf\x01"
138  #define XCKU060_STRING3 "0iGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGIMGIAGIMGEMGIMGIBGIMGENGIMGIMGIMGEMGIMGICGIMGFabGIMGIAGIMGEMGIMGIBGIMGENGIMGEMGIMGEMGIMGICGIMGFMGILGILGIBGIMGIAGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
139  #define XCKU060_STRING4 "0iGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGIMGIAGIMGEMGIPGIBGIMGENGIMGIMGIMGEMGIPGICGIMGFabGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGIMGIAGIMGEMGIPGIBGIMGENGIMGIMGIMGEMGIPGICGIMGFabGIMGIAGIMGEMGIPGIBGIMGENGIMGEMGIMGEMGIPGICGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
140  #define XCKU060() { \
141  XUS_SETUP_DEVICE(XCKU060_); \
142  XUS_STRING_CAT_5(XCKU060_); \
143  }
144 
145  //XCKU085 is a software-limitted version of XCKU115 with one die missing a row
146  //it has 9 actual rows, but 10 rows in the bitstream, yeah, Xilinx..
147  #define XCKU085_NAME "xcku085"
148  #define XCKU085_SLRNUM 2
149  #define XCKU085_ROWNUM 10
150  #define XCKU085_IDCODE 0x380F093
151  #define XCKU085_IDCODE1 0x3802093
152  #define XCKU085_SLR0_START 0
153  #define XCKU085_STRING0 XCKU060_STRING0
154  #define XCKU085_STRING1 XCKU060_STRING1
155  #define XCKU085_STRING2 XCKU060_STRING2
156  #define XCKU085_STRING3 XCKU060_STRING3
157  #define XCKU085_STRING4 XCKU060_STRING4
158  #define XCKU085_SLR0_END 4
159  #define XCKU085_SLR1_START 5
160  #define XCKU085_STRING5 XCKU085_STRING0
161  #define XCKU085_STRING6 XCKU085_STRING1
162  #define XCKU085_STRING7 XCKU085_STRING2
163  #define XCKU085_STRING8 XCKU085_STRING3
164  #define XCKU085_STRING9 "056446426446746446426446746446746446746446426446346446426446746446426446746446446446746446426446305644642644674644642644674644674644674644642644634644642644674644642644674644644644674644642644630564464264467464464264467464467464467464464264463464464464264464264463164464264464464464464464\x01"
165  #define XCKU085_SLR1_END 9
166  #define XCKU085() { \
167  XUS_SETUP_DEVICE(XCKU085_); \
168  XUS_SETUP_SLRs_2(XCKU085_); \
169  XUS_STRING_CAT_10(XCKU085_); \
170  }
171 
172  //XCKU095 is a software-limitted version of XCVU095
173  #define XCKU095_NAME "xcku095"
174  #define XCKU095_SLRNUM 1
175  #define XCKU095_ROWNUM 8
176  #define XCKU095_IDCODE 0x3844093
177  #define XCKU095_STRING0 "jGIMGILGILGILGIMGICGILGdkGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFcbGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
178  #define XCKU095_STRING1 "jGIMGILGILGILGIMGICGILGdlGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdgHJKHJDHJKHJOHJKHJKHJOHf\x01"
179  #define XCKU095_STRING2 "jGIMGILGILGILGIMGICGILGdkGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdhHJKHJDHJKHJOHJKHJKHJOHf\x01"
180  #define XCKU095_STRING3 "jGIMGILGILGILGIMGICGILGdlGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdkHJKHJDHJKHJOHJKHJKHJOHf\x01"
181  #define XCKU095_STRING4 "jGIMGILGILGILGIMGICGILGdkGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
182  #define XCKU095_STRING5 "jGIMGILGILGILGIMGICGILGdlGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdeHJKHJDHJKHJOHJKHJKHJOHf\x01"
183  #define XCKU095_STRING6 "jGIMGILGILGILGIMGICGILGdkGILGILGIAGILGILGIBGIMGFMGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFabGILGIAGILGIMGILGILGIBGILGINGILGICGILGILGIMGILGIAGIMGFMGILGILGIBGIMGIAGILGdkHJKHJDHJKHJOHJKHJKHJOHf\x01"
184  #define XCKU095_STRING7 XCKU095_STRING5
185  #define XCKU095() { \
186  XUS_SETUP_DEVICE(XCKU095_); \
187  XUS_STRING_CAT_8(XCKU095_); \
188  }
189 
190  //made of 2 XCKU060 dies
191  #define XCKU115_NAME "xcku115"
192  #define XCKU115_SLRNUM 2
193  #define XCKU115_ROWNUM 10
194  #define XCKU115_IDCODE 0x390D093
195  #define XCKU115_IDCODE1 0x3902093
196  #define XCKU115_SLR0_START 0
197  #define XCKU115_STRING0 XCKU060_STRING0
198  #define XCKU115_STRING1 XCKU060_STRING1
199  #define XCKU115_STRING2 XCKU060_STRING2
200  #define XCKU115_STRING3 XCKU060_STRING3
201  #define XCKU115_STRING4 XCKU060_STRING4
202  #define XCKU115_SLR0_END 4
203  #define XCKU115_SLR1_START 5
204  #define XCKU115_STRING5 XCKU060_STRING0
205  #define XCKU115_STRING6 XCKU060_STRING1
206  #define XCKU115_STRING7 XCKU060_STRING2
207  #define XCKU115_STRING8 XCKU060_STRING3
208  #define XCKU115_STRING9 XCKU060_STRING4
209  #define XCKU115_SLR1_END 9
210  #define XCKU115() { \
211  XUS_SETUP_DEVICE(XCKU115_); \
212  XUS_SETUP_SLRs_2(XCKU115_); \
213  XUS_STRING_CAT_10(XCKU115_); \
214  }
215 
216 
217 //Xilinx UltraScale Virtex
218  #define XCVU065_NAME "xcvu065"
219  #define XCVU065_SLRNUM 1
220  #define XCVU065_ROWNUM 5
221  #define XCVU065_IDCODE 0x3939093
222  #define XCVU065_STRING0 "jGIMGILGILGILGIPGICGILGdkGIMGIMGIMGIPGICGIMGFMGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFabGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFMGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFcbGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
223  #define XCVU065_STRING1 "jGIMGILGILGILGIMGICGILGdlGIMGIMGIMGIMGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGILGIBGIMGIAGILGdgHJKHJDHJKHJOHJKHJKHJOHf\x01"
224  #define XCVU065_STRING2 "jGIMGILGILGILGIMGICGILGdkGIMGIMGIMGIMGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGILGIBGIMGIAGILGdhHJKHJDHJKHJOHJKHJKHJOHf\x01"
225  #define XCVU065_STRING3 "jGIMGILGILGILGIMGICGILGdlGIMGIMGIMGIMGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFabGILGICGILGIMGILGIAGIMGINGIMGIBGILGIMGILGICGIMGFMGILGILGIBGIMGIAGILGdkHJKHJDHJKHJOHJKHJKHJOHf\x01"
226  #define XCVU065_STRING4 "jGIMGILGILGILGIPGICGILGdlGIMGIMGIMGIPGICGIMGFMGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFabGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFMGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFabGILGICGILGIPGILGIAGIMGINGIMGIBGILGIPGILGICGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
227  #define XCVU065() { \
228  XUS_SETUP_DEVICE(XCVU065_); \
229  XUS_STRING_CAT_5(XCVU065_); \
230  }
231 
232  //XCVU080 is a software-limitted version of XCVU095
233  #define XCVU080_NAME "xcvu080"
234  #define XCVU080_SLRNUM 1
235  #define XCVU080_ROWNUM 8
236  #define XCVU080_IDCODE 0x3843093
237  #define XCVU080_STRING0 XCKU095_STRING0
238  #define XCVU080_STRING1 XCKU095_STRING1
239  #define XCVU080_STRING2 XCKU095_STRING2
240  #define XCVU080_STRING3 XCKU095_STRING3
241  #define XCVU080_STRING4 XCKU095_STRING4
242  #define XCVU080_STRING5 XCKU095_STRING5
243  #define XCVU080_STRING6 XCKU095_STRING6
244  #define XCVU080_STRING7 XCKU095_STRING7
245  #define XCVU080() { \
246  XUS_SETUP_DEVICE(XCVU080_); \
247  XUS_STRING_CAT_8(XCVU080_); \
248  }
249 
250  #define XCVU095_NAME "xcvu095"
251  #define XCVU095_SLRNUM 1
252  #define XCVU095_ROWNUM 8
253  #define XCVU095_IDCODE 0x3842093
254  #define XCVU095_STRING0 XCKU095_STRING0
255  #define XCVU095_STRING1 XCKU095_STRING1
256  #define XCVU095_STRING2 XCKU095_STRING2
257  #define XCVU095_STRING3 XCKU095_STRING3
258  #define XCVU095_STRING4 XCKU095_STRING4
259  #define XCVU095_STRING5 XCKU095_STRING5
260  #define XCVU095_STRING6 XCKU095_STRING6
261  #define XCVU095_STRING7 XCKU095_STRING7
262  #define XCVU095() { \
263  XUS_SETUP_DEVICE(XCVU095_); \
264  XUS_STRING_CAT_8(XCVU095_); \
265  }
266 
267  //Made of 2 XCVU065 dies
268  #define XCVU125_NAME "xcvu125"
269  #define XCVU125_SLRNUM 2
270  #define XCVU125_ROWNUM 10
271  #define XCVU125_IDCODE 0x392D093
272  #define XCVU125_IDCODE1 0x3922093
273  #define XCVU125_SLR0_START 0
274  #define XCVU125_STRING0 XCVU065_STRING0
275  #define XCVU125_STRING1 XCVU065_STRING1
276  #define XCVU125_STRING2 XCVU065_STRING2
277  #define XCVU125_STRING3 XCVU065_STRING3
278  #define XCVU125_STRING4 XCVU065_STRING4
279  #define XCVU125_SLR0_END 4
280  #define XCVU125_SLR1_START 5
281  #define XCVU125_STRING5 XCVU065_STRING0
282  #define XCVU125_STRING6 XCVU065_STRING1
283  #define XCVU125_STRING7 XCVU065_STRING2
284  #define XCVU125_STRING8 XCVU065_STRING3
285  #define XCVU125_STRING9 XCVU065_STRING4
286  #define XCVU125_SLR1_END 9
287  #define XCVU125() { \
288  XUS_SETUP_DEVICE(XCVU125_); \
289  XUS_SETUP_SLRs_2(XCVU125_); \
290  XUS_STRING_CAT_10(XCVU125_); \
291  }
292 
293  //XCVU160 is a software-limitted version of XCVU190 with one die missing a row
294  //Has 0th disabled row that is present in the bitstream itself. quite annoying as it shifts the coordinate systems
295  #define XCVU160_NAME "xcvu160"
296  #define XCVU160_SLRNUM 3
297  #define XCVU160_ROWNUM 15
298  #define XCVU160_IDCODE 0x3933093
299  #define XCVU160_IDCODE1 0x3922093
300  #define XCVU160_IDCODE2 0x3924093
301  #define XCVU160_SLR1_START 0
302  #define XCVU160_STRING0 "46446446446446446426446316446446446446426446346446426446446446426446446446426446446446426446305644642644644644642644644644642644644644642644634644642644644644642644644644642644644644642644630564464264464464464264464464464264464464464264463464464464264464264463164464264464464464464464\x01"
303  #define XCVU160_STRING1 XCVU065_STRING1
304  #define XCVU160_STRING2 XCVU065_STRING2
305  #define XCVU160_STRING3 XCVU065_STRING3
306  #define XCVU160_STRING4 XCVU065_STRING4
307  #define XCVU160_SLR1_END 4
308  #define XCVU160_SLR0_START 5
309  #define XCVU160_STRING5 XCVU065_STRING0
310  #define XCVU160_STRING6 XCVU065_STRING1
311  #define XCVU160_STRING7 XCVU065_STRING2
312  #define XCVU160_STRING8 XCVU065_STRING3
313  #define XCVU160_STRING9 XCVU065_STRING4
314  #define XCVU160_SLR0_END 9
315  #define XCVU160_SLR2_START 10
316  #define XCVU160_STRING10 XCVU065_STRING0
317  #define XCVU160_STRING11 XCVU065_STRING1
318  #define XCVU160_STRING12 XCVU065_STRING2
319  #define XCVU160_STRING13 XCVU065_STRING3
320  #define XCVU160_STRING14 XCVU065_STRING4
321  #define XCVU160_SLR2_END 14
322  #define XCVU160() { \
323  XUS_SETUP_DEVICE(XCVU160_); \
324  XUS_SETUP_SLRs_3(XCVU160_); \
325  XUS_STRING_CAT_15(XCVU160_); \
326  }
327 
328  //Made of 3 XCVU065 dies
329  #define XCVU190_NAME "xcvu190"
330  #define XCVU190_SLRNUM 3
331  #define XCVU190_ROWNUM 15
332  #define XCVU190_IDCODE 0x3931093
333  #define XCVU190_IDCODE1 0x3922093
334  #define XCVU190_IDCODE2 0x3924093
335  #define XCVU190_SLR1_START 0
336  #define XCVU190_STRING0 XCVU065_STRING0
337  #define XCVU190_STRING1 XCVU065_STRING1
338  #define XCVU190_STRING2 XCVU065_STRING2
339  #define XCVU190_STRING3 XCVU065_STRING3
340  #define XCVU190_STRING4 XCVU065_STRING4
341  #define XCVU190_SLR1_END 4
342  #define XCVU190_SLR0_START 5
343  #define XCVU190_STRING5 XCVU065_STRING0
344  #define XCVU190_STRING6 XCVU065_STRING1
345  #define XCVU190_STRING7 XCVU065_STRING2
346  #define XCVU190_STRING8 XCVU065_STRING3
347  #define XCVU190_STRING9 XCVU065_STRING4
348  #define XCVU190_SLR0_END 9
349  #define XCVU190_SLR2_START 10
350  #define XCVU190_STRING10 XCVU065_STRING0
351  #define XCVU190_STRING11 XCVU065_STRING1
352  #define XCVU190_STRING12 XCVU065_STRING2
353  #define XCVU190_STRING13 XCVU065_STRING3
354  #define XCVU190_STRING14 XCVU065_STRING4
355  #define XCVU190_SLR2_END 14
356  #define XCVU190() { \
357  XUS_SETUP_DEVICE(XCVU190_); \
358  XUS_SETUP_SLRs_3(XCVU190_); \
359  XUS_STRING_CAT_15(XCVU190_); \
360  }
361 
362  #define XCVU440_NAME "xcvu440"
363  #define XCVU440_SLRNUM 3
364  #define XCVU440_ROWNUM 15
365  #define XCVU440_IDCODE 0x396D093
366  #define XCVU440_IDCODE1 0x3962093
367  #define XCVU440_IDCODE2 0x3964093
368  #define XCVU440_SLR1_START 0
369  #define XCVU440_STRING0 "abGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFcbGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
370  #define XCVU440_STRING1 "abGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFabGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGILGILGIBGIMGIAGILGdgHJKHJDHJKHJOHJKHJKHJOHf\x01"
371  #define XCVU440_STRING2 "abGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFabGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGILGILGIBGIMGIAGILGdhHJKHJDHJKHJOHJKHJKHJOHf\x01"
372  #define XCVU440_STRING3 "abGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFMGIMGILGICGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIMGILGILGIMGFabGIMGILGIAGIMGILGILGIMGILGILGINGILGILGIMGILGILGIMGILGILGIBGIMGFMGILGILGIBGIMGIAGILGdlHJKHJDHJKHJOHJKHJKHJOHf\x01"
373  #define XCVU440_STRING4 "abGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFMGIMGILGICGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIMGILGILGIMGFabGIMGILGIAGIPGILGILGIMGILGILGINGILGILGIMGILGILGIPGILGILGIBGIMGFMGILGILGICGIPGICGILGdeHJKHJDHJKHJQHJKHJKHJOHf\x01"
374  #define XCVU440_SLR1_END 4
375  #define XCVU440_SLR0_START 5
376  #define XCVU440_STRING5 XCVU440_STRING0
377  #define XCVU440_STRING6 XCVU440_STRING1
378  #define XCVU440_STRING7 XCVU440_STRING2
379  #define XCVU440_STRING8 XCVU440_STRING3
380  #define XCVU440_STRING9 XCVU440_STRING4
381  #define XCVU440_SLR0_END 9
382  #define XCVU440_SLR2_START 10
383  #define XCVU440_STRING10 XCVU440_STRING0
384  #define XCVU440_STRING11 XCVU440_STRING1
385  #define XCVU440_STRING12 XCVU440_STRING2
386  #define XCVU440_STRING13 XCVU440_STRING3
387  #define XCVU440_STRING14 XCVU440_STRING4
388  #define XCVU440_SLR2_END 14
389  #define XCVU440() { \
390  XUS_SETUP_DEVICE(XCVU440_); \
391  XUS_SETUP_SLRs_3(XCVU440_); \
392  XUS_STRING_CAT_15(XCVU440_); \
393  }
394 
395 #endif // XILINXULTRASCALEDEVICES_H
XUS_DEVICE_ENUM
< Enumeration of recognized Xilinx UltraScale devices and boards.
Definition: XUS_Devices.h:23
@ XUS_DEVICE_NULL
Definition: XUS_Devices.h:24
@ XUS_DEVICE_XCVU080
Definition: XUS_Devices.h:35
@ XUS_DEVICE_XCVU190
Definition: XUS_Devices.h:39
@ XUS_DEVICE_XCVU065
Definition: XUS_Devices.h:34
@ XUS_DEVICE_XCKU035
Definition: XUS_Devices.h:27
@ XUS_DEVICE_XCKU040
Definition: XUS_Devices.h:28
@ XUS_DEVICE_XCKU060
Definition: XUS_Devices.h:29
@ XUS_DEVICE_XCVU440
Definition: XUS_Devices.h:40
@ XUS_DEVICE_XCKU115
Definition: XUS_Devices.h:32
@ XUS_DEVICE_XCVU125
Definition: XUS_Devices.h:37
@ XUS_DEVICE_XCVU095
Definition: XUS_Devices.h:36
@ XUS_DEVICE_XCKU085
Definition: XUS_Devices.h:30
@ XUS_DEVICE_XCVU160
Definition: XUS_Devices.h:38
@ XUS_DEVICE_MAX
Definition: XUS_Devices.h:42
@ XUS_DEVICE_XCKU095
Definition: XUS_Devices.h:31
@ XUS_DEVICE_XCKU025
Definition: XUS_Devices.h:26