byteman  1.3 (Build #225)
Bitstream relocation and manipulation tool
XUSP_Devices.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<iostream>
18 #include<algorithm> //transform
19 #include<string>
20 #include<stdexcept>
21 
22 #include "XilinxUltraScalePlus.h"
23 #include "XUSP_Devices.h"
24 #include "../../../Common/str.h"
25 
26 using namespace std;
27 
29 {
30  int deviceID = getDeviceByIDCODE(IDCODE);
31  if(deviceID == XUSP_DEVICE_NULL)
32  throw runtime_error(string("Unknown device with IDCODE = ").append(to_string(IDCODE)).append(" . Maybe the device is not Xilinx US+ device?"));
33  return deviceID;
34 }
35 
37 {
38  int deviceID = getDeviceByName(name);
39  if(deviceID == XUSP_DEVICE_NULL)
40  throw runtime_error(string("Unknown device: ").append(name).append(". Maybe the device is not Xilinx US+ device?"));
41  return deviceID;
42 }
43 
45  setDeviceByNameOrThrow(partName);
46 }
47 
49  int deviceID = getDeviceByNameOrThrow(name);
50  setDevice(deviceID, name);
51 }
52 
54  int deviceID = getDeviceByIDCODEorThrow(idcode);
55  setDevice(deviceID);
56 }
57 
59 {
60  //US+ Artix
61  #ifdef XUSPARTIX
62  if(IDCODE == XCAU10P_IDCODE)
63  return XUSP_DEVICE_XCAU10P;
64  if(IDCODE == XCAU15P_IDCODE)
65  return XUSP_DEVICE_XCAU15P;
66  if(IDCODE == XCAU20P_IDCODE)
67  return XUSP_DEVICE_XCAU20P;
68  if(IDCODE == XCAU25P_IDCODE)
69  return XUSP_DEVICE_XCAU25P;
70  #endif
71  //US+ Kintex
72  #ifdef XUSPKINTEX
73  if(IDCODE == XCKU3P_IDCODE)
74  return XUSP_DEVICE_XCKU3P;
75  if(IDCODE == XCKU5P_IDCODE)
76  return XUSP_DEVICE_XCKU5P;
77  if(IDCODE == XCKU9P_IDCODE)
78  return XUSP_DEVICE_XCKU9P;
79  if(IDCODE == XCKU11P_IDCODE)
80  return XUSP_DEVICE_XCKU11P;
81  if(IDCODE == XCKU13P_IDCODE)
82  return XUSP_DEVICE_XCKU13P;
83  if(IDCODE == XCKU15P_IDCODE)
84  return XUSP_DEVICE_XCKU15P;
85  if(IDCODE == XCKU19P_IDCODE)
86  return XUSP_DEVICE_XCKU19P;
87  #endif
88  //US+ Virtex
89  #ifdef XUSPVIRTEX
90  if(IDCODE == XCVU3P_IDCODE)
91  return XUSP_DEVICE_XCVU3P;
92  if(IDCODE == XCVU5P_IDCODE)
93  return XUSP_DEVICE_XCVU5P;
94  if(IDCODE == XCVU7P_IDCODE)
95  return XUSP_DEVICE_XCVU7P;
96  if(IDCODE == XCVU9P_IDCODE)
97  return XUSP_DEVICE_XCVU9P;
98  if(IDCODE == XCVU11P_IDCODE)
99  return XUSP_DEVICE_XCVU11P;
100  if(IDCODE == XCVU13P_IDCODE)
101  return XUSP_DEVICE_XCVU13P;
102  if(IDCODE == XCVU19P_IDCODE)
103  return XUSP_DEVICE_XCVU19P;
104  if(IDCODE == XCVU23P_IDCODE)
105  return XUSP_DEVICE_XCVU23P;
106  if(IDCODE == XCVU27P_IDCODE)
107  return XUSP_DEVICE_XCVU27P;
108  if(IDCODE == XCVU29P_IDCODE)
109  return XUSP_DEVICE_XCVU29P;
110  if(IDCODE == XCVU31P_IDCODE)
111  return XUSP_DEVICE_XCVU31P;
112  if(IDCODE == XCVU33P_IDCODE)
113  return XUSP_DEVICE_XCVU33P;
114  if(IDCODE == XCVU35P_IDCODE)
115  return XUSP_DEVICE_XCVU35P;
116  if(IDCODE == XCVU37P_IDCODE)
117  return XUSP_DEVICE_XCVU37P;
118  if(IDCODE == XCVU45P_IDCODE)
119  return XUSP_DEVICE_XCVU45P;
120  if(IDCODE == XCVU47P_IDCODE)
121  return XUSP_DEVICE_XCVU47P;
122  if(IDCODE == XCVU57P_IDCODE)
123  return XUSP_DEVICE_XCVU57P;
124  #endif
125  //US+ RFSoC
126  #ifdef XUSPZYNQRF
127  if(IDCODE == XCZU21DR_IDCODE)
128  return XUSP_DEVICE_XCZU21DR;
129  if(IDCODE == XCZU25DR_IDCODE)
130  return XUSP_DEVICE_XCZU25DR;
131  if(IDCODE == XCZU27DR_IDCODE)
132  return XUSP_DEVICE_XCZU27DR;
133  if(IDCODE == XCZU28DR_IDCODE)
134  return XUSP_DEVICE_XCZU28DR;
135  if(IDCODE == XCZU29DR_IDCODE)
136  return XUSP_DEVICE_XCZU29DR;
137  if(IDCODE == XCZU39DR_IDCODE)
138  return XUSP_DEVICE_XCZU39DR;
139  if(IDCODE == XCZU42DR_IDCODE)
140  return XUSP_DEVICE_XCZU42DR;
141  if(IDCODE == XCZU43DR_IDCODE)
142  return XUSP_DEVICE_XCZU43DR;
143  if(IDCODE == XCZU46DR_IDCODE)
144  return XUSP_DEVICE_XCZU46DR;
145  if(IDCODE == XCZU47DR_IDCODE)
146  return XUSP_DEVICE_XCZU47DR;
147  if(IDCODE == XCZU48DR_IDCODE)
148  return XUSP_DEVICE_XCZU48DR;
149  if(IDCODE == XCZU49DR_IDCODE)
150  return XUSP_DEVICE_XCZU49DR;
151  if(IDCODE == XCZU65DR_IDCODE)
152  return XUSP_DEVICE_XCZU65DR;
153  if(IDCODE == XCZU67DR_IDCODE)
154  return XUSP_DEVICE_XCZU67DR;
155  #endif
156  //US+ Zynq
157  #ifdef XUSPZYNQMP
158  if(IDCODE == XCZU1_IDCODE)
159  return XUSP_DEVICE_XCZU1;
160  if(IDCODE == XCZU2_IDCODE)
161  return XUSP_DEVICE_XCZU2;
162  if(IDCODE == XCZU3_IDCODE)
163  return XUSP_DEVICE_XCZU3;
164  if(IDCODE == XCZU4_IDCODE)
165  return XUSP_DEVICE_XCZU4;
166  if(IDCODE == XCZU5_IDCODE)
167  return XUSP_DEVICE_XCZU5;
168  if(IDCODE == XCZU6_IDCODE)
169  return XUSP_DEVICE_XCZU6;
170  if(IDCODE == XCZU7_IDCODE)
171  return XUSP_DEVICE_XCZU7;
172  if(IDCODE == XCZU9_IDCODE)
173  return XUSP_DEVICE_XCZU9;
174  if(IDCODE == XCZU11_IDCODE)
175  return XUSP_DEVICE_XCZU11;
176  if(IDCODE == XCZU15_IDCODE)
177  return XUSP_DEVICE_XCZU15;
178  if(IDCODE == XCZU17_IDCODE)
179  return XUSP_DEVICE_XCZU17;
180  if(IDCODE == XCZU19_IDCODE)
181  return XUSP_DEVICE_XCZU19;
182  #endif
183 
184 
185  //Alveo rebranding
186  #ifdef XUSPALVEO
187  if(IDCODE == XCU200_IDCODE)
188  return XUSP_DEVICE_XCU200;
189  if(IDCODE == XCU250_IDCODE)
190  return XUSP_DEVICE_XCU250;
191  if(IDCODE == XCU26_IDCODE)
192  return XUSP_DEVICE_XCU26;
193  if(IDCODE == XCUX35_IDCODE)
194  return XUSP_DEVICE_XCUX35;
195  if(IDCODE == XCU50_IDCODE)
196  return XUSP_DEVICE_XCU50;
197  if(IDCODE == XCU55N_IDCODE)
198  return XUSP_DEVICE_XCU55N;
199  if(IDCODE == XCU55C_IDCODE)
200  return XUSP_DEVICE_XCU55C;
201  if(IDCODE == XCU280_IDCODE)
202  return XUSP_DEVICE_XCU280;
203  if(IDCODE == XCU30_IDCODE)
204  return XUSP_DEVICE_XCU30;
205  if(IDCODE == XCU25_IDCODE)
206  return XUSP_DEVICE_XCU25;
207  //Kria
208  if(IDCODE == XCK26_IDCODE)
209  return XUSP_DEVICE_XCK26;
210  #endif
211  return XUSP_DEVICE_NULL;
212 }
214 {
215  name = str::removeSpaces(name);
216  name = str::stringToLower(name);
217 
218  //US+ Artix
219  #ifdef XUSPARTIX
221  return XUSP_DEVICE_XCAU10P;
223  return XUSP_DEVICE_XCAU15P;
225  return XUSP_DEVICE_XCAU20P;
227  return XUSP_DEVICE_XCAU25P;
228  #endif
229 
230  //US+ Kintex
231  #ifdef XUSPKINTEX
232  if(str::iff::stringContains(name, XCKU3P_NAME, "xqku3p"))
233  return XUSP_DEVICE_XCKU3P;
234  if(str::iff::stringContains(name, XCKU5P_NAME, "xqku5p"))
235  return XUSP_DEVICE_XCKU5P;
236  if(str::iff::stringContains(name, XCKU9P_NAME, "xqku9p"))
237  return XUSP_DEVICE_XCKU9P;
238  if(str::iff::stringContains(name, XCKU11P_NAME, "xqku11p"))
239  return XUSP_DEVICE_XCKU11P;
240  if(str::iff::stringContains(name, XCKU13P_NAME, "xqku13p"))
241  return XUSP_DEVICE_XCKU13P;
242  if(str::iff::stringContains(name, XCKU15P_NAME, "xqku15p"))
243  return XUSP_DEVICE_XCKU15P;
244  if(str::iff::stringContains(name, XCKU19P_NAME, "xqku19p"))
245  return XUSP_DEVICE_XCKU19P;
246  #endif
247 
248  //US+ Virtex
249  #ifdef XUSPVIRTEX
250  if(str::iff::stringContains(name, XCVU3P_NAME, "xqvu3p"))
251  return XUSP_DEVICE_XCVU3P;
252  if(str::iff::stringContains(name, XCVU5P_NAME, "xqvu5p"))
253  return XUSP_DEVICE_XCVU5P;
254  if(str::iff::stringContains(name, XCVU7P_NAME, "xqvu7p"))
255  return XUSP_DEVICE_XCVU7P;
256  if(str::iff::stringContains(name, XCVU9P_NAME, "xqvu9p"))
257  return XUSP_DEVICE_XCVU9P;
258  if(str::iff::stringContains(name, XCVU11P_NAME, "xqvu11p"))
259  return XUSP_DEVICE_XCVU11P;
260  if(str::iff::stringContains(name, XCVU13P_NAME, "xqvu13p"))
261  return XUSP_DEVICE_XCVU13P;
262  if(str::iff::stringContains(name, XCVU19P_NAME, "xqvu19p"))
263  return XUSP_DEVICE_XCVU19P;
264  if(str::iff::stringContains(name, XCVU23P_NAME, "xqvu23p"))
265  return XUSP_DEVICE_XCVU23P;
266  if(str::iff::stringContains(name, XCVU27P_NAME, "xqvu27p"))
267  return XUSP_DEVICE_XCVU27P;
268  if(str::iff::stringContains(name, XCVU29P_NAME, "xqvu29p"))
269  return XUSP_DEVICE_XCVU29P;
270  if(str::iff::stringContains(name, XCVU31P_NAME, "xqvu31p"))
271  return XUSP_DEVICE_XCVU31P;
272  if(str::iff::stringContains(name, XCVU33P_NAME, "xqvu33p"))
273  return XUSP_DEVICE_XCVU33P;
274  if(str::iff::stringContains(name, XCVU35P_NAME, "xqvu35p"))
275  return XUSP_DEVICE_XCVU35P;
276  if(str::iff::stringContains(name, XCVU37P_NAME, "xqvu37p"))
277  return XUSP_DEVICE_XCVU37P;
278  if(str::iff::stringContains(name, XCVU45P_NAME, "xqvu45p"))
279  return XUSP_DEVICE_XCVU45P;
280  if(str::iff::stringContains(name, XCVU47P_NAME, "xqvu47p"))
281  return XUSP_DEVICE_XCVU47P;
282  if(str::iff::stringContains(name, XCVU57P_NAME, "xqvu57p"))
283  return XUSP_DEVICE_XCVU57P;
284  #endif
285 
286  //US+ RFSoC (RFSOC BEFORE MPSOC, since names collide!)
287  #ifdef XUSPZYNQRF
288  if(str::iff::stringContains(name, XCZU21DR_NAME, "xqzu21dr"))
289  return XUSP_DEVICE_XCZU21DR;
291  return XUSP_DEVICE_XCZU25DR;
293  return XUSP_DEVICE_XCZU27DR;
294  if(str::iff::stringContains(name, XCZU28DR_NAME, "xqzu28dr"))
295  return XUSP_DEVICE_XCZU28DR;
296  if(str::iff::stringContains(name, XCZU29DR_NAME, "xqzu29dr"))
297  return XUSP_DEVICE_XCZU29DR;
299  return XUSP_DEVICE_XCZU39DR;
301  return XUSP_DEVICE_XCZU42DR;
303  return XUSP_DEVICE_XCZU43DR;
304  if(str::iff::stringContains(name, XCZU46DR_NAME, "xqzu48dr", "xqzu49dr"))
305  return XUSP_DEVICE_XCZU46DR; // Yes, this row is correct.
307  return XUSP_DEVICE_XCZU47DR;
309  return XUSP_DEVICE_XCZU48DR;
311  return XUSP_DEVICE_XCZU49DR;
313  return XUSP_DEVICE_XCZU65DR;
315  return XUSP_DEVICE_XCZU67DR;
316  #endif
317 
318  //US+ Zynq
319  #ifdef XUSPZYNQMP
320  if(str::iff::stringContains(name, XCZU2_NAME, "xazu2", "xqzu2"))
321  return XUSP_DEVICE_XCZU2;
322  if(str::iff::stringContains(name, XCZU3_NAME, "xazu3", "xqzu3"))
323  return XUSP_DEVICE_XCZU3;
324  if(str::iff::stringContains(name, XCZU4_NAME, "xazu4", "xqzu4"))
325  return XUSP_DEVICE_XCZU4;
326  if(str::iff::stringContains(name, XCZU5_NAME, "xazu5", "xqzu5"))
327  return XUSP_DEVICE_XCZU5;
328  if(str::iff::stringContains(name, XCZU6_NAME, "xazu6", "xqzu6"))
329  return XUSP_DEVICE_XCZU6;
330  if(str::iff::stringContains(name, XCZU7_NAME, "xazu7", "xqzu7"))
331  return XUSP_DEVICE_XCZU7;
332  if(str::iff::stringContains(name, XCZU9_NAME, "xazu9", "xqzu9"))
333  return XUSP_DEVICE_XCZU9;
334  if(str::iff::stringContains(name, XCZU11_NAME, "xazu11", "xqzu11"))
335  return XUSP_DEVICE_XCZU11;
336  if(str::iff::stringContains(name, XCZU15_NAME, "xazu15", "xqzu15"))
337  return XUSP_DEVICE_XCZU15;
338  if(str::iff::stringContains(name, XCZU17_NAME, "xazu17", "xqzu17"))
339  return XUSP_DEVICE_XCZU17;
340  if(str::iff::stringContains(name, XCZU19_NAME, "xazu19", "xqzu19"))
341  return XUSP_DEVICE_XCZU19;
342  if(str::iff::stringContains(name, XCZU1_NAME, "xazu1", "xqzu1"))
343  return XUSP_DEVICE_XCZU1;
344  #endif
345 
346  //Alveo rebranding
347  #ifdef XUSPALVEO
348  if(str::iff::stringContains(name, XCU200_NAME, "alveou200"))
349  return XUSP_DEVICE_XCU200;
350  if(str::iff::stringContains(name, XCU250_NAME, "alveou250"))
351  return XUSP_DEVICE_XCU250;
352  if(str::iff::stringContains(name, XCU26_NAME, "alveou26"))
353  return XUSP_DEVICE_XCU26;
354  if(str::iff::stringContains(name, XCUX35_NAME, "alveou35"))
355  return XUSP_DEVICE_XCUX35;
356  if(str::iff::stringContains(name, XCU50_NAME, "alveou50"))
357  return XUSP_DEVICE_XCU50;
358  if(str::iff::stringContains(name, XCU55N_NAME, "alveou55n"))
359  return XUSP_DEVICE_XCU55N;
360  if(str::iff::stringContains(name, XCU55C_NAME, "alveou55c"))
361  return XUSP_DEVICE_XCU55C;
362  if(str::iff::stringContains(name, XCU280_NAME, "alveou280"))
363  return XUSP_DEVICE_XCU280;
364  if(str::iff::stringContains(name, XCU30_NAME, "alveou30"))
365  return XUSP_DEVICE_XCU30;
366  if(str::iff::stringContains(name, XCU25_NAME, "alveou25"))
367  return XUSP_DEVICE_XCU25;
368  //Kria
370  return XUSP_DEVICE_XCK26;
371  if(str::iff::stringContains(name, "k26c", "kria26c"))
372  return XUSP_DEVICE_K26C;
373  if(str::iff::stringContains(name, "k26i", "kria26i"))
374  return XUSP_DEVICE_K26I;
375  if(str::iff::stringContains(name, "kv260"))
376  return XUSP_DEVICE_KV260;
377  #endif
378 
379  //Some boards for easier use
380  #ifdef XUSPBOARDS
381  if(str::iff::stringContains(name, "pynqzu", "pynq-zu"))
382  return XUSP_DEVICE_PYNQ_ZU;
383  if(str::iff::stringContains(name, "zcu102", "zu-gmsl2"))
384  return XUSP_DEVICE_ZCU102;
385  if(str::iff::stringContains(name, "zcu104"))
386  return XUSP_DEVICE_ZCU104;
387  if(str::iff::stringContains(name, "zcu106"))
388  return XUSP_DEVICE_ZCU106;
389  if(str::iff::stringContains(name, "axu15eg"))
390  return XUSP_DEVICE_AXU15EG;
391  if(str::iff::stringContains(name, "axu2cg"))
392  return XUSP_DEVICE_AXU2CG;
393  if(str::iff::stringContains(name, "axu3eg"))
394  return XUSP_DEVICE_AXU3EG;
395  if(str::iff::stringContains(name, "axu4ev"))
396  return XUSP_DEVICE_AXU4EV;
397  if(str::iff::stringContains(name, "axu5ev"))
398  return XUSP_DEVICE_AXU5EV;
399  if(str::iff::stringContains(name, "axu9eg"))
400  return XUSP_DEVICE_AXU9EG;
401  if(str::iff::stringContains(name, "ultrazed-ev"))
403  if(str::iff::stringContains(name, "champ-xd1s"))
404  return XUSP_DEVICE_CHAMP_XD1S;
405  if(str::iff::stringContains(name, "zu-3eg"))
406  return XUSP_DEVICE_ZU_3EG;
407  if(str::iff::stringContains(name, "zu-5ev"))
408  return XUSP_DEVICE_ZU_5EV;
409  if(str::iff::stringContains(name, "htg-z999-06"))
411  if(str::iff::stringContains(name, "htg-z999-09"))
413  if(str::iff::stringContains(name, "htg-z999-15"))
415  if(str::iff::stringContains(name, "htg-930-9-3"))
417  if(str::iff::stringContains(name, "htg-930-9"))
418  return XUSP_DEVICE_HTG_930_9;
419  if(str::iff::stringContains(name, "htg-930-13-3"))
421  if(str::iff::stringContains(name, "htg-930-13"))
422  return XUSP_DEVICE_HTG_930_13;
423  if(str::iff::stringContains(name, "htg-937-37p"))
425  if(str::iff::stringContains(name, "htg-937-47p"))
427  if(str::iff::stringContains(name, "htg-z922-11"))
429  if(str::iff::stringContains(name, "htg-z922-19-dg"))
431  if(str::iff::stringContains(name, "htg-z922-19"))
433  if(str::iff::stringContains(name, "czu3eg"))
434  return XUSP_DEVICE_CZU3EG;
435  if(str::iff::stringContains(name, "czu4ev"))
436  return XUSP_DEVICE_CZU4EV;
437  if(str::iff::stringContains(name, "te0802"))
438  return XUSP_DEVICE_TE0802;
439  if(str::iff::stringContains(name, "te0803-04-3be11"))
441  if(str::iff::stringContains(name, "te0807-03-7de21"))
443  if(str::iff::stringContains(name, "te0808-05-9be21"))
445  if(str::iff::stringContains(name, "te0808-05-9gi21"))
447  if(str::iff::stringContains(name, "te0808-05-bbe21"))
449  if(str::iff::stringContains(name, "te0812"))
450  return XUSP_DEVICE_TE0812;
451  if(str::iff::stringContains(name, "teb0911"))
452  return XUSP_DEVICE_TEB0911;
453  if(str::iff::stringContains(name, "teb0912"))
454  return XUSP_DEVICE_TEB0912;
455  if(str::iff::stringContains(name, "tysom-3-zu7ev"))
457  if(str::iff::stringContains(name, "xpedite2600"))
459  if(str::iff::stringContains(name, "amc574"))
460  return XUSP_DEVICE_AMC574;
461  if(str::iff::stringContains(name, "zcu208"))
462  return XUSP_DEVICE_ZCU208;
463  if(str::iff::stringContains(name, "zcu216"))
464  return XUSP_DEVICE_ZCU216;
465  if(str::iff::stringContains(name, "zcu670"))
466  return XUSP_DEVICE_ZCU670;
467  if(str::iff::stringContains(name, "ultra96"))
468  return XUSP_DEVICE_ULTRA96;
469  if(str::iff::stringContains(name, "amc584"))
470  return XUSP_DEVICE_AMC584;
471  if(str::iff::stringContains(name, "htg-960"))
472  return XUSP_DEVICE_HTG_960;
473  if(str::iff::stringContains(name, "vcu1525"))
474  return XUSP_DEVICE_VCU1525;
475  if(str::iff::stringContains(name, "vcu118"))
476  return XUSP_DEVICE_VCU118;
477  if(str::iff::stringContains(name, "vcu128"))
478  return XUSP_DEVICE_VCU128;
479  if(str::iff::stringContains(name, "vcu129"))
480  return XUSP_DEVICE_VCU129;
481  if(str::iff::stringContains(name, "htg-940-9-3"))
483  if(str::iff::stringContains(name, "htg-940-9"))
484  return XUSP_DEVICE_HTG_940_9;
485  if(str::iff::stringContains(name, "htg-940-13-3"))
487  if(str::iff::stringContains(name, "htg-940-13"))
488  return XUSP_DEVICE_HTG_940_13;
489  if(str::iff::stringContains(name, "htg-9200-5p"))
491  if(str::iff::stringContains(name, "htg-9200-9p"))
493  if(str::iff::stringContains(name, "htg-9200-13p"))
495  if(str::iff::stringContains(name, "htg-vup-pcie-hh-9p", "htg-910-9"))
497  if(str::iff::stringContains(name, "htg-vup-pcie-hh-13p", "htg-910-13"))
499  if(str::iff::stringContains(name, "htg-zrf-fmc-28"))
501  if(str::iff::stringContains(name, "htg-zrf-fmc-48"))
503  if(str::iff::stringContains(name, "htg-zrf16-29"))
505  if(str::iff::stringContains(name, "htg-zrf16-49"))
507  if(str::iff::stringContains(name, "htg-zrf-hh-28"))
509  if(str::iff::stringContains(name, "htg-zrf-hh-48"))
511  if(str::iff::stringContains(name, "htg-zusp-pcie-11-3"))
513  if(str::iff::stringContains(name, "htg-zusp-pcie-19-2"))
515  if(str::iff::stringContains(name, "htg-zrf8-r2-28", "htg-zrf8-28"))
517  if(str::iff::stringContains(name, "htg-zrf8-r2-48-I", "htg-zrf8-48-i"))
519  if(str::iff::stringContains(name, "htg-zrf8-r2-48", "htg-zrf8-48"))
521  if(str::iff::stringContains(name, "zuboard1cg"))
523  if(str::iff::stringContains(name, "kcu116"))
524  return XUSP_DEVICE_KCU116;
525  if(str::iff::stringContains(name, "vermeot1mp"))
527  if(str::iff::stringContains(name, "vermeot1rf"))
529  if(str::iff::stringContains(name, "zcu1275"))
530  return XUSP_DEVICE_ZCU1275;
531  if(str::iff::stringContains(name, "zcu1285"))
532  return XUSP_DEVICE_ZCU1285;
533  if(str::iff::stringContains(name, "zcu111"))
534  return XUSP_DEVICE_ZCU111;
535  if(str::iff::stringContains(name, "genesyszu-5ev", "genesyszu5ev", "genesys-5ev", "genesys5ev"))
537  if(str::iff::stringContains(name, "genesyszu-3eg", "genesyszu3eg", "genesys-3eg", "genesys3eg"))
539  #endif
540  return XUSP_DEVICE_NULL;
541 }
542 /************************************************************************** /**
543  * setPartName if available. Otherwise will put a default name.
544  *****************************************************************************/
545 void XilinxUltraScalePlus::setDevice(int deviceID, string customPartName)
546 {
548  bool customNameSet = false;
549  #define setCustomPartName(x) {customNameSet = true; partName = x;}
550  switch(deviceID){
551  //XUSP Artix
552  #ifdef XUSPARTIX
553  case XUSP_DEVICE_XCAU10P:
554  XCAU10P();
555  break;
556  case XUSP_DEVICE_XCAU15P:
557  XCAU15P();
558  break;
559  case XUSP_DEVICE_XCAU20P:
560  XCAU20P();
561  break;
562  case XUSP_DEVICE_XCAU25P:
563  XCAU25P();
564  break;
565  #endif
566 
567  //XUSP Kintex
568  #ifdef XUSPKINTEX
569  case XUSP_DEVICE_XCKU3P:
570  XCKU3P();
571  break;
572  case XUSP_DEVICE_XCKU5P:
573  XCKU5P();
574  break;
575  case XUSP_DEVICE_XCKU9P:
576  XCKU9P();
577  break;
578  case XUSP_DEVICE_XCKU11P:
579  XCKU11P();
580  break;
581  case XUSP_DEVICE_XCKU13P:
582  XCKU13P();
583  break;
584  case XUSP_DEVICE_XCKU15P:
585  XCKU15P();
586  break;
587  case XUSP_DEVICE_XCKU19P:
588  XCKU19P();
589  break;
590  #endif
591 
592  //XUSP Virtex
593  #ifdef XUSPVIRTEX
594  case XUSP_DEVICE_XCVU3P:
595  XCVU3P();
596  break;
597  case XUSP_DEVICE_XCVU5P:
598  XCVU5P();
599  break;
600  case XUSP_DEVICE_XCVU7P:
601  XCVU7P();
602  break;
603  case XUSP_DEVICE_XCVU9P:
604  XCVU9P();
605  break;
606  case XUSP_DEVICE_XCVU11P:
607  XCVU11P();
608  break;
609  case XUSP_DEVICE_XCVU13P:
610  XCVU13P();
611  break;
612  case XUSP_DEVICE_XCVU19P:
613  XCVU19P();
614  break;
615  case XUSP_DEVICE_XCVU23P:
616  XCVU23P();
617  break;
618  case XUSP_DEVICE_XCVU27P:
619  XCVU27P();
620  break;
621  case XUSP_DEVICE_XCVU29P:
622  XCVU29P();
623  break;
624  case XUSP_DEVICE_XCVU31P:
625  XCVU31P();
626  break;
627  case XUSP_DEVICE_XCVU33P:
628  XCVU33P();
629  break;
630  case XUSP_DEVICE_XCVU35P:
631  XCVU35P();
632  break;
633  case XUSP_DEVICE_XCVU37P:
634  XCVU37P();
635  break;
636  case XUSP_DEVICE_XCVU45P:
637  XCVU45P();
638  break;
639  case XUSP_DEVICE_XCVU47P:
640  XCVU47P();
641  break;
642  case XUSP_DEVICE_XCVU57P:
643  XCVU57P();
644  break;
645  #endif
646 
647  //XUSP RFSoC
648  #ifdef XUSPZYNQRF
650  XCZU21DR();
651  break;
653  XCZU25DR();
654  break;
656  XCZU27DR();
657  break;
659  XCZU28DR();
660  break;
662  XCZU29DR();
663  break;
665  XCZU39DR();
666  break;
668  XCZU42DR();
669  break;
671  XCZU43DR();
672  break;
674  XCZU46DR();
675  break;
677  XCZU47DR();
678  break;
680  XCZU48DR();
681  break;
683  XCZU49DR();
684  break;
686  XCZU65DR();
687  break;
689  XCZU67DR();
690  break;
691  #endif
692 
693  //XUSP MPSoC
694  #ifdef XUSPZYNQMP
695  case XUSP_DEVICE_XCZU1:
696  XCZU1();
697  break;
698  case XUSP_DEVICE_XCZU2:
699  XCZU2();
700  break;
701  case XUSP_DEVICE_XCZU3:
702  XCZU3();
703  break;
704  case XUSP_DEVICE_XCZU4:
705  XCZU4();
706  break;
707  case XUSP_DEVICE_XCZU5:
708  XCZU5();
709  break;
710  case XUSP_DEVICE_XCZU6:
711  XCZU6();
712  break;
713  case XUSP_DEVICE_XCZU7:
714  XCZU7();
715  break;
716  case XUSP_DEVICE_XCZU9:
717  XCZU9();
718  break;
719  case XUSP_DEVICE_XCZU11:
720  XCZU11();
721  break;
722  case XUSP_DEVICE_XCZU15:
723  XCZU15();
724  break;
725  case XUSP_DEVICE_XCZU17:
726  XCZU17();
727  break;
728  case XUSP_DEVICE_XCZU19:
729  XCZU19();
730  break;
731  #endif
732 
733  //XUSP Alveo
734  #ifdef XUSPALVEO
735  case XUSP_DEVICE_XCU200:
736  XCU200();
737  setCustomPartName("xcu200-fsgd2104-2-e");
738  break;
739  case XUSP_DEVICE_XCU250:
740  XCU250();
741  setCustomPartName("xcu250-figd2104-2l-e");
742  break;
743  case XUSP_DEVICE_XCU26:
744  XCU26();
745  setCustomPartName("xcu26-l2vsva1365e");
746  break;
747  case XUSP_DEVICE_XCUX35:
748  XCUX35();
749  break;
750  case XUSP_DEVICE_XCU50:
751  XCU50();
752  setCustomPartName("xcu50-fsvh2104-2lv-e");
753  break;
754  case XUSP_DEVICE_XCU55N:
755  XCU55N();
756  break;
757  case XUSP_DEVICE_XCU55C:
758  XCU55C();
759  setCustomPartName("xcu55c-l2fsvh2892e");
760  break;
761  case XUSP_DEVICE_XCU280:
762  XCU280();
763  break;
764  case XUSP_DEVICE_XCU30:
765  XCU30();
766  break;
767  case XUSP_DEVICE_XCU25:
768  XCU25();
769  break;
770  //Kria
771  case XUSP_DEVICE_XCK26:
772  XCK26();
773  break;
774  case XUSP_DEVICE_K26C:
775  XCK26();
776  setCustomPartName("xck26-sfvc784-2lv-c");
777  break;
778  case XUSP_DEVICE_K26I:
779  XCK26();
780  setCustomPartName("xck26-sfvc784-2lv-i");
781  break;
782  case XUSP_DEVICE_KV260:
783  XCK26();
784  setCustomPartName("xck26-sfvc784-2lv-c");
785  break;
786  #endif
787 
788  //XUSP Boards
789  #ifdef XUSPBOARDS
790  case XUSP_DEVICE_PYNQ_ZU:
791  XCZU5();
792  setCustomPartName("xczu5eg-1sfvc784");
793  break;
794  case XUSP_DEVICE_ZCU102:
795  XCZU9();
796  setCustomPartName("xczu9eg-2ffvb1156");
797  break;
798  case XUSP_DEVICE_ZCU104:
799  XCZU7();
800  setCustomPartName("xczu7ev-2ffvc1156");
801  break;
802  case XUSP_DEVICE_ZCU106:
803  XCZU7();
804  setCustomPartName("xczu7ev-2ffvc1156");
805  break;
806  case XUSP_DEVICE_AXU15EG:
807  XCZU15();
808  setCustomPartName("xczu15eg-2sffvb1156i");
809  break;
810  case XUSP_DEVICE_AXU2CG:
811  XCZU2();
812  setCustomPartName("xczu2cg-1sfvc784e");
813  break;
814  case XUSP_DEVICE_AXU3EG:
815  XCZU3();
816  setCustomPartName("xczu3eg-1sfvc784i");
817  break;
818  case XUSP_DEVICE_AXU4EV:
819  XCZU4();
820  setCustomPartName("xczu4ev-1sfvc784i");
821  break;
822  case XUSP_DEVICE_AXU5EV:
823  XCZU5();
824  setCustomPartName("xczu5ev-2sfvc784i");
825  break;
826  case XUSP_DEVICE_AXU9EG:
827  XCZU9();
828  setCustomPartName("xczu9eg-2ffvb1156i");
829  break;
831  XCZU7();
832  setCustomPartName("xczu7ev-fbvb900");
833  break;
835  XCZU4();
836  break;
837  case XUSP_DEVICE_ZU_3EG:
838  XCZU3();
839  setCustomPartName("xczu3eg-sfvc784-1-e");
840  break;
841  case XUSP_DEVICE_ZU_5EV:
842  XCZU5();
843  setCustomPartName("xczu5ev-sfvc784-1-e");
844  break;
846  XCZU6();
847  setCustomPartName("xczu6eg-2ffvb1156e");
848  break;
850  XCZU9();
851  setCustomPartName("xczu9eg-2ffvb1156e");
852  break;
854  XCZU15();
855  setCustomPartName("xczu15eg-2ffvb1156e");
856  break;
858  XCVU9P();
859  setCustomPartName("xcvu9p-3flgb2104e");
860  break;
862  XCVU9P();
863  setCustomPartName("xcvu9p-2flgb2104e");
864  break;
866  XCVU13P();
867  setCustomPartName("xcvu13p-3fhgb2104e");
868  break;
870  XCVU13P();
871  setCustomPartName("xcvu13p-2fhgb2104e");
872  break;
874  XCVU37P();
875  setCustomPartName("xcvu37p-2fsvh2892e4539");
876  break;
878  XCVU47P();
879  setCustomPartName("xcvu47p-2fsvh2892e4539");
880  break;
882  XCZU11();
883  setCustomPartName("xczu11eg-3ffvc1760e");
884  break;
886  XCZU19();
887  setCustomPartName("xqzu19eg-2ffvc1760e");
888  break;
890  XCZU19();
891  setCustomPartName("xczu19eg-2ffvc1760e");
892  break;
893  case XUSP_DEVICE_CZU3EG:
894  XCZU3();
895  setCustomPartName("xczu3eg-1sfvc784e");
896  break;
897  case XUSP_DEVICE_CZU4EV:
898  XCZU4();
899  setCustomPartName("xczu3eg-1sfvc784e");
900  break;
901  case XUSP_DEVICE_TE0802:
902  XCZU2();
903  setCustomPartName("xczu2cg-1sbva484e");
904  break;
906  XCZU3();
907  setCustomPartName("xczu3eg-1sfvc784e");
908  break;
910  XCZU7();
911  setCustomPartName("xczu7ev-1fbvb900e");
912  break;
914  XCZU9();
915  setCustomPartName("xczu9eg-1ffvc900e");
916  break;
918  XCZU9();
919  setCustomPartName("xczu9eg-2ffvc900i");
920  break;
922  XCZU15();
923  setCustomPartName("xczu15eg-1ffvc900e");
924  break;
925  case XUSP_DEVICE_TE0812:
926  XCZU6();
927  setCustomPartName("xczu6eg-1ffvc900i");
928  break;
929  case XUSP_DEVICE_TEB0911:
930  XCZU9();
931  setCustomPartName("xczu9eg-1ffvb1156e");
932  break;
933  case XUSP_DEVICE_TEB0912:
934  XCZU11();
935  setCustomPartName("xczu11eg-1ffvc1760i");
936  break;
938  XCZU7();
939  setCustomPartName("zu7ev-ffvc1156");
940  break;
942  XCZU11();
943  setCustomPartName("xczu11eg");
944  break;
945  case XUSP_DEVICE_AMC574:
946  XCZU29DR();
947  setCustomPartName("xczu29dr");
948  break;
949  case XUSP_DEVICE_ZCU208:
950  XCZU48DR();
951  setCustomPartName("xczu48dr-2fsvg1517e5184");
952  break;
953  case XUSP_DEVICE_ZCU216:
954  XCZU49DR();
955  setCustomPartName("xczu49dr-2ffvf1760");
956  break;
957  case XUSP_DEVICE_ZCU670:
958  XCZU67DR();
959  setCustomPartName("xczu67dr-2fsve1156i");
960  break;
961  case XUSP_DEVICE_ULTRA96:
962  XCZU3();
963  setCustomPartName("xczu3eg-sbva484-1-i");
964  break;
965  case XUSP_DEVICE_AMC584:
966  XCVU13P();
967  break;
968  case XUSP_DEVICE_HTG_960:
969  XCVU19P();
970  setCustomPartName("xcvu19p-2fsvb3824e");
971  break;
972  case XUSP_DEVICE_VCU1525:
973  XCVU9P();
974  setCustomPartName("xcvu9p-l2fsgd2104e");
975  break;
976  case XUSP_DEVICE_VCU118:
977  XCVU9P();
978  setCustomPartName("xcvu9p-lga2104e");
979  break;
980  case XUSP_DEVICE_VCU128:
981  XCVU37P();
982  setCustomPartName("xcvu37p-l2fsvh2892e");
983  break;
984  case XUSP_DEVICE_VCU129:
985  XCVU29P();
986  setCustomPartName("xcvu29p-l2fsga2577e");
987  break;
989  XCVU9P();
990  setCustomPartName("xcvu9p-3flgb2104e");
991  break;
993  XCVU9P();
994  setCustomPartName("xcvu9p-2flgb2104e");
995  break;
997  XCVU13P();
998  setCustomPartName("xcvu13p-3fhgb2104e");
999  break;
1001  XCVU13P();
1002  setCustomPartName("xcvu13p-2fhgb2104e");
1003  break;
1005  XCVU5P();
1006  setCustomPartName("xcvu5p-2flgb2104e");
1007  break;
1009  XCVU9P();
1010  setCustomPartName("xcvu9p-2flgb2104e");
1011  break;
1013  XCVU13P();
1014  setCustomPartName("xcvu13p-2fhgb2104e");
1015  break;
1017  XCVU9P();
1018  setCustomPartName("xcvu9p-2flgb2104e");
1019  break;
1021  XCVU13P();
1022  setCustomPartName("xcvu13p-2fhgb2104e");
1023  break;
1025  XCZU28DR();
1026  setCustomPartName("xczu28dr-2ffvg1517");
1027  break;
1029  XCZU48DR();
1030  setCustomPartName("xczu48dr-2ffvg1517");
1031  break;
1033  XCZU29DR();
1034  setCustomPartName("xczu29dr-2ffvf1760e");
1035  break;
1037  XCZU49DR();
1038  setCustomPartName("xczu49dr-2ffvf1760e");
1039  break;
1041  XCZU28DR();
1042  setCustomPartName("xczu28dr-2ffvg1517");
1043  break;
1045  XCZU48DR();
1046  setCustomPartName("xczu48dr-2ffvg1517");
1047  break;
1049  XCZU11();
1050  setCustomPartName("xczu11eg-3ffvc1760e");
1051  break;
1053  XCZU19();
1054  setCustomPartName("xczu19eg-2ffvc1760e");
1055  break;
1057  XCZU28DR();
1058  setCustomPartName("xczu28dr-2ffvg1517");
1059  break;
1061  XCZU48DR();
1062  setCustomPartName("xczu48dr-ffvg1517-2-i");
1063  break;
1065  XCZU48DR();
1066  setCustomPartName("xczu48dr-2ffvg1517");
1067  break;
1069  XCZU1();
1070 
1071  break;
1072  case XUSP_DEVICE_KCU116:
1073  XCKU5P();
1074  setCustomPartName("xcku5p-ffvb676-2-e");
1075  break;
1077  XCZU19();
1078  setCustomPartName("xczu19eg-ffvd1760-2L-e");
1079  break;
1081  XCZU21DR();
1082  setCustomPartName("xczu21dr-ffvd1156-2L-e");
1083  break;
1084  case XUSP_DEVICE_ZCU1275:
1085  XCZU29DR();
1086  setCustomPartName("xczu29dr-ffvf1760-2-e");
1087  break;
1088  case XUSP_DEVICE_ZCU1285:
1089  XCZU39DR();
1090  setCustomPartName("xczu39dr-ffvf1760-2-i");
1091  break;
1092  case XUSP_DEVICE_ZCU111:
1093  XCZU28DR();
1094  setCustomPartName("xczu28dr-ffvg1517-2-e");
1095  break;
1097  XCZU5();
1098  setCustomPartName("xczu5ev-sfvc784-1-e");
1099  break;
1101  XCZU3();
1102  setCustomPartName("xczu3eg-sfvc784-1-e");
1103  break;
1104  #endif
1105  default:throw runtime_error("Unknown device ID.");
1106  }
1107  #undef setCustomPartName
1108  if(!customNameSet) // if we didn't set already a good full name
1109  if(customPartName != "")// if not empty string
1110  partName = customPartName;
1111 
1112 
1113  log("Initialized device resource string for \"" + initializedResourceStringShortPartName + "\"");
1114 }
1116 {
1117  if(initializedResourceStringShortPartName == "") {//if no device is initialized
1118  cout << "A list of currently supported Xilinx UltraScale+ devices: " << endl;
1119  #ifdef XUSPARTIX
1120  cout << " UltraScale+ Artix: " << endl;
1121  cout << " XCAU10P, XCAU15P, XCAU20P, XCAU25P" << endl;
1122  #endif
1123  #ifdef XUSPKINTEX
1124  cout << " UltraScale+ Kintex: " << endl;
1125  cout << " XCKU3P, XQKU3P, XCKU5P, XQKU5P, XCKU9P, XQKU9P, XCKU11P, XQKU11P, XCKU13P, XQKU13P, XCKU15P, XQKU15P, XCKU19P, XQKU19P" << endl;
1126  #endif
1127  #ifdef XUSPVIRTEX
1128  cout << " UltraScale+ Virtex: " << endl;
1129  cout << " XCVU3P, XQVU3P, XCVU5P, XQVU5P, XCVU7P, XQVU7P, XCVU9P, XQVU9P, XCVU11P, XQVU11P, XCVU13P, XQVU13P, " << endl;
1130  cout << " XCVU19P, XQVU19P, XCVU23P, XQVU23P, XCVU27P, XQVU27P, XCVU29P, XQVU29P, XCVU31P, XQVU31P, XCVU33P, " << endl;
1131  cout << " XQVU33P, XCVU35P, XQVU35P, XCVU37P, XQVU37P, XCVU45P, XQVU45P, XCVU47P, XQVU47P, XCVU57P, XQVU57P" << endl;
1132  #endif
1133  #ifdef XUSPZYNQRF
1134  cout << " UltraScale+ Zynq RFSoC: " << endl;
1135  cout << " XCZU21DR, XQZU21DR, XCZU25DR, XCZU27DR, XCZU28DR, XQZU28DR, XCZU29DR, XQZU29DR, XCZU39DR, XCZU42DR, " << endl;
1136  cout << " XCZU43DR, XCZU46DR, XQZU48DR, XQZU49DR, XCZU47DR, XCZU48DR, XCZU49DR" << endl;
1137  #endif
1138  #ifdef XUSPZYNQMP
1139  cout << " UltraScale+ Zynq MPSoC: " << endl;
1140  cout << " XCZU1, XAZU1, XQZU1, XCZU2, XAZU2, XQZU2, XCZU3, XAZU3, XQZU3, XCZU4, XAZU4, XQZU4, " << endl;
1141  cout << " XCZU5, XAZU5, XQZU5, XCZU6, XAZU6, XQZU6, XCZU7, XAZU7, XQZU7, XCZU9, XAZU9, XQZU9, " << endl;
1142  cout << " XCZU11, XAZU11, XQZU11, XCZU15, XAZU15, XQZU15, XCZU17, XAZU17, XQZU17, XCZU19, XAZU19, XQZU19" << endl;
1143  #endif
1144  #ifdef XUSPALVEO
1145  cout << " UltraScale+ Alveo: " << endl;
1146  cout << " XCU200, Alveo U200, XCU250, Alveo U250, XCU26, Alveo U26, XCUX35, Alveo U35, XCU50, Alveo U50, " << endl;
1147  cout << " XCU55N, Alveo U55N, XCU55C, Alveo U55C, XCU280, Alveo U280, XCU30, Alveo U30, XCU25, Alveo U25" << endl;
1148  #endif
1149  #ifdef XUSPBOARDS
1150  cout << " Misc UltraScale+ Boards: " << endl;
1151  cout << " ZCU 102, ZU-GMSL2, ZCU104, ZCU106, AXU15EG, AXU2CG, AXU3EG, AXU4EV, AXU5EV, AXU9EG, ULTRAZED-EV, CHAMP-XD1S, ZU-3EG, " << endl;
1152  cout << " ZU-5EV, HTG-Z999-06, HTG-Z999-09, HTG-Z999-15, HTG-930-9-3, HTG-930-9, HTG-930-13-3, HTG-930-13, HTG-937-37P, HTG-937-47P, " << endl;
1153  cout << " HTG-Z922-11, HTG-Z922-19-DG, HTG-Z922-19, CZU3EG, CZU4EV, TE0802, TE0803-04-3BE11, TE0807-03-7DE21, TE0808-05-9BE21, " << endl;
1154  cout << " TE0808-05-9GI21, TE0808-05-BBE21, TE0812, TEB0911, TEB0912, TYSOM-3-ZU7EV, XPEDITE2600, AMC574, ZCU208, ZCU216, ZCU670, " << endl;
1155  cout << " Ultra96, K26C, K26I, KV260, AMC584, HTG-960, VCU1525, VCU118, VCU128, VCU129, HTG-940-9-3, HTG-940-9, HTG-940-13-3, " << endl;
1156  cout << " HTG-940-13, HTG-9200-5P, HTG-9200-9P, HTG-9200-13P, HTG-VUP-PCIE-HH-9P, HTG-910-9, HTG-VUP-PCIE-HH-13P, HTG-910-13, " << endl;
1157  cout << " HTG-ZRF-FMC-28, HTG-ZRF-FMC-48, HTG-ZRF16-29, HTG-ZRF16-49, HTG-ZRF-HH-28, HTG-ZRF-HH-48, HTG-ZUSP-PCIE-11-3, " << endl;
1158  cout << " HTG-ZUSP-PCIE-19-2, HTG-ZRF8-R2-28, HTG-ZRF8-28, HTG-ZRF8-R2-48-I, HTG-ZRF8-48-I, HTG-ZRF8-R2-48, HTG-ZRF8-48" << endl;
1159  cout << " ZUBoard 1CG, KCU 116, Vermeo T1 MPSoC, Vermeo T1 RFSoC, ZCU 1275, ZCU 1285, ZCU 111, PYNQ-ZU" << endl;
1160  #endif
1161  } else {
1163  }
1164 }
#define XCZU65DR()
#define XCZU48DR_IDCODE
#define XCZU65DR_IDCODE
#define XCZU4_IDCODE
Definition: XUSP_Devices.h:921
#define XCZU27DR_NAME
#define XCZU1_NAME
Definition: XUSP_Devices.h:880
#define XCZU28DR_NAME
#define XCU55N_NAME
#define XCZU49DR_IDCODE
#define XCKU15P_NAME
Definition: XUSP_Devices.h:361
#define XCK26()
#define XCVU3P_NAME
Definition: XUSP_Devices.h:404
#define XCAU15P_IDCODE
Definition: XUSP_Devices.h:247
#define XCZU29DR()
#define XCVU29P()
Definition: XUSP_Devices.h:705
#define XCU26()
#define XCZU15_NAME
#define XCZU17_IDCODE
#define XCAU15P_NAME
Definition: XUSP_Devices.h:244
#define XCKU5P_IDCODE
Definition: XUSP_Devices.h:302
#define XCVU5P()
Definition: XUSP_Devices.h:438
#define XCVU47P_NAME
Definition: XUSP_Devices.h:818
#define XCZU2()
Definition: XUSP_Devices.h:900
#define XCVU27P_IDCODE
Definition: XUSP_Devices.h:640
#define XCVU19P_IDCODE
Definition: XUSP_Devices.h:577
#define XCAU10P_NAME
Definition: XUSP_Devices.h:232
#define XCAU25P_NAME
Definition: XUSP_Devices.h:271
#define XCVU29P_IDCODE
Definition: XUSP_Devices.h:677
#define XCKU3P_NAME
Definition: XUSP_Devices.h:286
#define XCVU31P_IDCODE
Definition: XUSP_Devices.h:714
#define XCKU3P()
Definition: XUSP_Devices.h:294
#define XCZU48DR_NAME
#define XCZU27DR_IDCODE
#define XCZU3()
Definition: XUSP_Devices.h:912
#define XCZU42DR_NAME
#define XCVU19P_NAME
Definition: XUSP_Devices.h:574
#define XCKU19P_NAME
Definition: XUSP_Devices.h:383
#define XCZU42DR()
#define XCKU9P_IDCODE
Definition: XUSP_Devices.h:315
#define XCKU19P()
Definition: XUSP_Devices.h:398
#define XCKU13P_NAME
Definition: XUSP_Devices.h:345
#define XCZU29DR_IDCODE
@ XUSP_DEVICE_ZU_5EV
Definition: XUSP_Devices.h:113
@ XUSP_DEVICE_XCKU13P
Definition: XUSP_Devices.h:35
@ XUSP_DEVICE_HTG_940_13
Definition: XUSP_Devices.h:153
@ XUSP_DEVICE_XCKU11P
Definition: XUSP_Devices.h:34
@ XUSP_DEVICE_HTG_VUP_PCIE_HH_13P
Definition: XUSP_Devices.h:158
@ XUSP_DEVICE_ZCU208
Definition: XUSP_Devices.h:140
@ XUSP_DEVICE_ZU_3EG
Definition: XUSP_Devices.h:112
@ XUSP_DEVICE_XCZU67DR
Definition: XUSP_Devices.h:70
@ XUSP_DEVICE_HTG_960
Definition: XUSP_Devices.h:145
@ XUSP_DEVICE_ZCU670
Definition: XUSP_Devices.h:142
@ XUSP_DEVICE_HTG_Z999_15
Definition: XUSP_Devices.h:116
@ XUSP_DEVICE_XCZU49DR
Definition: XUSP_Devices.h:68
@ XUSP_DEVICE_K26C
Definition: XUSP_Devices.h:96
@ XUSP_DEVICE_XCVU9P
Definition: XUSP_Devices.h:42
@ XUSP_DEVICE_HTG_930_13
Definition: XUSP_Devices.h:120
@ XUSP_DEVICE_XCU55C
Definition: XUSP_Devices.h:91
@ XUSP_DEVICE_TEB0911
Definition: XUSP_Devices.h:135
@ XUSP_DEVICE_VCU128
Definition: XUSP_Devices.h:148
@ XUSP_DEVICE_XCAU25P
Definition: XUSP_Devices.h:29
@ XUSP_DEVICE_AMC574
Definition: XUSP_Devices.h:139
@ XUSP_DEVICE_AXU15EG
Definition: XUSP_Devices.h:104
@ XUSP_DEVICE_XCKU5P
Definition: XUSP_Devices.h:32
@ XUSP_DEVICE_XCU50
Definition: XUSP_Devices.h:89
@ XUSP_DEVICE_HTG_Z999_09
Definition: XUSP_Devices.h:115
@ XUSP_DEVICE_XCZU25DR
Definition: XUSP_Devices.h:58
@ XUSP_DEVICE_XCZU7
Definition: XUSP_Devices.h:78
@ XUSP_DEVICE_VERMEO_T1_MP
Definition: XUSP_Devices.h:172
@ XUSP_DEVICE_TE0808_05_9BE21
Definition: XUSP_Devices.h:131
@ XUSP_DEVICE_ZCU102
Definition: XUSP_Devices.h:101
@ XUSP_DEVICE_XCZU28DR
Definition: XUSP_Devices.h:60
@ XUSP_DEVICE_XCVU45P
Definition: XUSP_Devices.h:53
@ XUSP_DEVICE_NULL
Definition: XUSP_Devices.h:24
@ XUSP_DEVICE_XCVU47P
Definition: XUSP_Devices.h:54
@ XUSP_DEVICE_K26I
Definition: XUSP_Devices.h:97
@ XUSP_DEVICE_XCZU21DR
Definition: XUSP_Devices.h:57
@ XUSP_DEVICE_ZCU106
Definition: XUSP_Devices.h:103
@ XUSP_DEVICE_XCZU3
Definition: XUSP_Devices.h:74
@ XUSP_DEVICE_AXU5EV
Definition: XUSP_Devices.h:108
@ XUSP_DEVICE_HTG_9200_9P
Definition: XUSP_Devices.h:155
@ XUSP_DEVICE_VERMEO_T1_RF
Definition: XUSP_Devices.h:173
@ XUSP_DEVICE_HTG_ZRF8_R2_28
Definition: XUSP_Devices.h:167
@ XUSP_DEVICE_HTG_ZRF16_29
Definition: XUSP_Devices.h:161
@ XUSP_DEVICE_XCVU57P
Definition: XUSP_Devices.h:55
@ XUSP_DEVICE_AXU4EV
Definition: XUSP_Devices.h:107
@ XUSP_DEVICE_VCU118
Definition: XUSP_Devices.h:147
@ XUSP_DEVICE_XCZU47DR
Definition: XUSP_Devices.h:66
@ XUSP_DEVICE_XCZU4
Definition: XUSP_Devices.h:75
@ XUSP_DEVICE_HTG_Z922_11
Definition: XUSP_Devices.h:123
@ XUSP_DEVICE_HTG_9200_5P
Definition: XUSP_Devices.h:154
@ XUSP_DEVICE_AMC584
Definition: XUSP_Devices.h:144
@ XUSP_DEVICE_XCKU9P
Definition: XUSP_Devices.h:33
@ XUSP_DEVICE_XCVU13P
Definition: XUSP_Devices.h:44
@ XUSP_DEVICE_XCKU3P
Definition: XUSP_Devices.h:31
@ XUSP_DEVICE_KCU116
Definition: XUSP_Devices.h:171
@ XUSP_DEVICE_HTG_940_13_3
Definition: XUSP_Devices.h:152
@ XUSP_DEVICE_XCZU42DR
Definition: XUSP_Devices.h:63
@ XUSP_DEVICE_XCU200
Definition: XUSP_Devices.h:85
@ XUSP_DEVICE_XCU26
Definition: XUSP_Devices.h:87
@ XUSP_DEVICE_TYSOM_3_ZU7EV
Definition: XUSP_Devices.h:137
@ XUSP_DEVICE_XCKU15P
Definition: XUSP_Devices.h:36
@ XUSP_DEVICE_HTG_ZRF8_R2_48
Definition: XUSP_Devices.h:169
@ XUSP_DEVICE_XCVU33P
Definition: XUSP_Devices.h:50
@ XUSP_DEVICE_HTG_930_9_3
Definition: XUSP_Devices.h:117
@ XUSP_DEVICE_HTG_930_13_3
Definition: XUSP_Devices.h:119
@ XUSP_DEVICE_HTG_ZRF16_49
Definition: XUSP_Devices.h:162
@ XUSP_DEVICE_HTG_ZUSP_PCIE_11_3
Definition: XUSP_Devices.h:165
@ XUSP_DEVICE_GENESYS_3EG
Definition: XUSP_Devices.h:178
@ XUSP_DEVICE_XCVU7P
Definition: XUSP_Devices.h:41
@ XUSP_DEVICE_XCZU39DR
Definition: XUSP_Devices.h:62
@ XUSP_DEVICE_HTG_940_9_3
Definition: XUSP_Devices.h:150
@ XUSP_DEVICE_TE0808_05_9GI21
Definition: XUSP_Devices.h:132
@ XUSP_DEVICE_TE0802
Definition: XUSP_Devices.h:128
@ XUSP_DEVICE_XCU55N
Definition: XUSP_Devices.h:90
@ XUSP_DEVICE_HTG_ZRF_FMC_28
Definition: XUSP_Devices.h:159
@ XUSP_DEVICE_HTG_Z922_19_DG
Definition: XUSP_Devices.h:124
@ XUSP_DEVICE_TEB0912
Definition: XUSP_Devices.h:136
@ XUSP_DEVICE_XCVU3P
Definition: XUSP_Devices.h:39
@ XUSP_DEVICE_VCU1525
Definition: XUSP_Devices.h:146
@ XUSP_DEVICE_XCVU11P
Definition: XUSP_Devices.h:43
@ XUSP_DEVICE_XCU30
Definition: XUSP_Devices.h:93
@ XUSP_DEVICE_HTG_Z999_06
Definition: XUSP_Devices.h:114
@ XUSP_DEVICE_XCVU35P
Definition: XUSP_Devices.h:51
@ XUSP_DEVICE_ZCU111
Definition: XUSP_Devices.h:176
@ XUSP_DEVICE_HTG_9200_13P
Definition: XUSP_Devices.h:156
@ XUSP_DEVICE_XCZU65DR
Definition: XUSP_Devices.h:69
@ XUSP_DEVICE_XCVU37P
Definition: XUSP_Devices.h:52
@ XUSP_DEVICE_XCU280
Definition: XUSP_Devices.h:92
@ XUSP_DEVICE_ZCU104
Definition: XUSP_Devices.h:102
@ XUSP_DEVICE_XCUX35
Definition: XUSP_Devices.h:88
@ XUSP_DEVICE_HTG_VUP_PCIE_HH_9P
Definition: XUSP_Devices.h:157
@ XUSP_DEVICE_HTG_Z922_19
Definition: XUSP_Devices.h:125
@ XUSP_DEVICE_XCZU9
Definition: XUSP_Devices.h:79
@ XUSP_DEVICE_AXU2CG
Definition: XUSP_Devices.h:105
@ XUSP_DEVICE_CZU4EV
Definition: XUSP_Devices.h:127
@ XUSP_DEVICE_HTG_937_47P
Definition: XUSP_Devices.h:122
@ XUSP_DEVICE_XCVU27P
Definition: XUSP_Devices.h:47
@ XUSP_DEVICE_XCZU27DR
Definition: XUSP_Devices.h:59
@ XUSP_DEVICE_XCKU19P
Definition: XUSP_Devices.h:37
@ XUSP_DEVICE_VCU129
Definition: XUSP_Devices.h:149
@ XUSP_DEVICE_HTG_ZRF_HH_48
Definition: XUSP_Devices.h:164
@ XUSP_DEVICE_XCZU17
Definition: XUSP_Devices.h:82
@ XUSP_DEVICE_XCZU29DR
Definition: XUSP_Devices.h:61
@ XUSP_DEVICE_CZU3EG
Definition: XUSP_Devices.h:126
@ XUSP_DEVICE_XCZU2
Definition: XUSP_Devices.h:73
@ XUSP_DEVICE_XCAU10P
Definition: XUSP_Devices.h:26
@ XUSP_DEVICE_XCVU5P
Definition: XUSP_Devices.h:40
@ XUSP_DEVICE_ULTRAZED_EV
Definition: XUSP_Devices.h:110
@ XUSP_DEVICE_TE0812
Definition: XUSP_Devices.h:134
@ XUSP_DEVICE_ZUBOARD_1CG
Definition: XUSP_Devices.h:170
@ XUSP_DEVICE_XCZU5
Definition: XUSP_Devices.h:76
@ XUSP_DEVICE_XCZU19
Definition: XUSP_Devices.h:83
@ XUSP_DEVICE_XCVU19P
Definition: XUSP_Devices.h:45
@ XUSP_DEVICE_AXU9EG
Definition: XUSP_Devices.h:109
@ XUSP_DEVICE_XCU25
Definition: XUSP_Devices.h:94
@ XUSP_DEVICE_XCAU15P
Definition: XUSP_Devices.h:27
@ XUSP_DEVICE_TE0808_05_BBE21
Definition: XUSP_Devices.h:133
@ XUSP_DEVICE_HTG_937_37P
Definition: XUSP_Devices.h:121
@ XUSP_DEVICE_TE0803_04_3BE11
Definition: XUSP_Devices.h:129
@ XUSP_DEVICE_XCAU20P
Definition: XUSP_Devices.h:28
@ XUSP_DEVICE_PYNQ_ZU
Definition: XUSP_Devices.h:100
@ XUSP_DEVICE_XCZU15
Definition: XUSP_Devices.h:81
@ XUSP_DEVICE_XCZU11
Definition: XUSP_Devices.h:80
@ XUSP_DEVICE_XPEDITE2600
Definition: XUSP_Devices.h:138
@ XUSP_DEVICE_XCZU43DR
Definition: XUSP_Devices.h:64
@ XUSP_DEVICE_GENESYS_5EV
Definition: XUSP_Devices.h:177
@ XUSP_DEVICE_HTG_930_9
Definition: XUSP_Devices.h:118
@ XUSP_DEVICE_XCZU6
Definition: XUSP_Devices.h:77
@ XUSP_DEVICE_ZCU216
Definition: XUSP_Devices.h:141
@ XUSP_DEVICE_KV260
Definition: XUSP_Devices.h:98
@ XUSP_DEVICE_XCVU31P
Definition: XUSP_Devices.h:49
@ XUSP_DEVICE_XCZU46DR
Definition: XUSP_Devices.h:65
@ XUSP_DEVICE_AXU3EG
Definition: XUSP_Devices.h:106
@ XUSP_DEVICE_HTG_ZRF_FMC_48
Definition: XUSP_Devices.h:160
@ XUSP_DEVICE_HTG_ZRF8_R2_48_I
Definition: XUSP_Devices.h:168
@ XUSP_DEVICE_XCZU1
Definition: XUSP_Devices.h:72
@ XUSP_DEVICE_XCVU29P
Definition: XUSP_Devices.h:48
@ XUSP_DEVICE_XCK26
Definition: XUSP_Devices.h:95
@ XUSP_DEVICE_ZCU1285
Definition: XUSP_Devices.h:175
@ XUSP_DEVICE_HTG_ZUSP_PCIE_19_2
Definition: XUSP_Devices.h:166
@ XUSP_DEVICE_HTG_940_9
Definition: XUSP_Devices.h:151
@ XUSP_DEVICE_XCU250
Definition: XUSP_Devices.h:86
@ XUSP_DEVICE_TE0807_03_7DE21
Definition: XUSP_Devices.h:130
@ XUSP_DEVICE_CHAMP_XD1S
Definition: XUSP_Devices.h:111
@ XUSP_DEVICE_ZCU1275
Definition: XUSP_Devices.h:174
@ XUSP_DEVICE_XCZU48DR
Definition: XUSP_Devices.h:67
@ XUSP_DEVICE_XCVU23P
Definition: XUSP_Devices.h:46
@ XUSP_DEVICE_HTG_ZRF_HH_28
Definition: XUSP_Devices.h:163
@ XUSP_DEVICE_ULTRA96
Definition: XUSP_Devices.h:143
#define XCU55C_NAME
#define XCVU35P()
Definition: XUSP_Devices.h:756
#define XCZU4_NAME
Definition: XUSP_Devices.h:918
#define XCU25_NAME
#define XCU55N()
#define XCVU57P_IDCODE
Definition: XUSP_Devices.h:852
#define XCZU25DR_NAME
#define XCVU11P()
Definition: XUSP_Devices.h:529
#define XCZU67DR_NAME
#define XCVU9P_IDCODE
Definition: XUSP_Devices.h:474
#define XCVU33P()
Definition: XUSP_Devices.h:733
#define XCU25()
#define XCZU11_NAME
Definition: XUSP_Devices.h:994
#define XCU55C_IDCODE
#define XCU55C()
#define XCVU47P_IDCODE
Definition: XUSP_Devices.h:821
#define XCK26_IDCODE
#define XCZU19_IDCODE
#define XCVU45P_IDCODE
Definition: XUSP_Devices.h:797
#define XCAU10P()
Definition: XUSP_Devices.h:239
#define XCVU13P_NAME
Definition: XUSP_Devices.h:536
#define XCVU45P_NAME
Definition: XUSP_Devices.h:794
#define XCKU11P_IDCODE
Definition: XUSP_Devices.h:331
#define XCZU67DR_IDCODE
#define XCZU21DR_IDCODE
#define XCVU13P()
Definition: XUSP_Devices.h:567
#define XCZU17()
#define XCAU25P()
Definition: XUSP_Devices.h:279
#define XCZU43DR()
#define XCKU15P_IDCODE
Definition: XUSP_Devices.h:364
#define XCZU1_IDCODE
Definition: XUSP_Devices.h:883
#define XCKU13P()
Definition: XUSP_Devices.h:356
#define XCZU11_IDCODE
Definition: XUSP_Devices.h:997
#define XCVU11P_NAME
Definition: XUSP_Devices.h:505
#define XCZU39DR_IDCODE
#define XCUX35_NAME
#define XCVU47P()
Definition: XUSP_Devices.h:842
#define XCZU5_NAME
Definition: XUSP_Devices.h:931
#define XCZU19()
#define XCZU21DR()
#define XCVU5P_IDCODE
Definition: XUSP_Devices.h:422
#define XCVU37P()
Definition: XUSP_Devices.h:787
#define XCVU7P_NAME
Definition: XUSP_Devices.h:445
#define XCU250()
#define XCUX35()
#define XCZU42DR_IDCODE
#define XCU250_NAME
#define XCZU9_IDCODE
Definition: XUSP_Devices.h:980
#define XCZU65DR_NAME
#define XCAU20P_NAME
Definition: XUSP_Devices.h:257
#define XCZU21DR_NAME
#define XCKU13P_IDCODE
Definition: XUSP_Devices.h:348
#define XCVU3P()
Definition: XUSP_Devices.h:413
#define XCZU6_NAME
Definition: XUSP_Devices.h:945
#define XCUX35_IDCODE
#define XCVU23P()
Definition: XUSP_Devices.h:630
#define XCKU9P_NAME
Definition: XUSP_Devices.h:312
#define XCVU3P_IDCODE
Definition: XUSP_Devices.h:407
#define XCZU3_NAME
Definition: XUSP_Devices.h:905
#define XCVU31P()
Definition: XUSP_Devices.h:719
#define XCAU25P_IDCODE
Definition: XUSP_Devices.h:274
#define XCZU2_IDCODE
Definition: XUSP_Devices.h:896
#define XCVU23P_IDCODE
Definition: XUSP_Devices.h:618
#define XCVU5P_NAME
Definition: XUSP_Devices.h:419
#define XCZU27DR()
#define XCZU43DR_IDCODE
#define XCAU20P_IDCODE
Definition: XUSP_Devices.h:260
#define XCVU9P()
Definition: XUSP_Devices.h:498
#define XCZU46DR_IDCODE
#define XCU30_IDCODE
#define XCZU47DR_IDCODE
#define XCZU46DR_NAME
#define XCKU11P_NAME
Definition: XUSP_Devices.h:328
#define XCZU2_NAME
Definition: XUSP_Devices.h:893
#define XCZU7_NAME
Definition: XUSP_Devices.h:961
#define XCKU15P()
Definition: XUSP_Devices.h:376
#define XCAU10P_IDCODE
Definition: XUSP_Devices.h:235
#define XCZU5_IDCODE
Definition: XUSP_Devices.h:934
#define XCZU7()
Definition: XUSP_Devices.h:971
#define XCVU37P_NAME
Definition: XUSP_Devices.h:763
#define XCZU67DR()
#define XCU250_IDCODE
#define XCU50_IDCODE
#define XCU26_NAME
#define XCZU25DR()
#define XCKU11P()
Definition: XUSP_Devices.h:340
#define XCZU15_IDCODE
#define XCU50_NAME
#define XCU26_IDCODE
#define XCVU19P()
Definition: XUSP_Devices.h:609
#define XCZU15()
#define XCU50()
#define XCU30_NAME
#define XCZU6_IDCODE
Definition: XUSP_Devices.h:948
#define XCZU47DR_NAME
#define XCZU43DR_NAME
#define XCU280_NAME
#define XCZU49DR()
#define XCZU7_IDCODE
Definition: XUSP_Devices.h:964
#define XCZU6()
Definition: XUSP_Devices.h:956
#define XCVU33P_IDCODE
Definition: XUSP_Devices.h:728
#define XCZU9()
Definition: XUSP_Devices.h:988
#define XCZU25DR_IDCODE
#define XCVU7P_IDCODE
Definition: XUSP_Devices.h:448
#define XCZU9_NAME
Definition: XUSP_Devices.h:977
#define XCVU31P_NAME
Definition: XUSP_Devices.h:711
#define XCU200_NAME
#define XCU25_IDCODE
#define XCAU15P()
Definition: XUSP_Devices.h:251
#define XCU280_IDCODE
#define XCU200_IDCODE
#define XCAU20P()
Definition: XUSP_Devices.h:265
#define XCU55N_IDCODE
#define XCVU37P_IDCODE
Definition: XUSP_Devices.h:766
#define XCVU45P()
Definition: XUSP_Devices.h:811
#define XCU280()
#define XCVU9P_NAME
Definition: XUSP_Devices.h:471
#define XCZU28DR_IDCODE
#define XCZU11()
#define XCZU19_NAME
#define XCKU5P()
Definition: XUSP_Devices.h:307
#define XCVU57P()
Definition: XUSP_Devices.h:873
#define XCVU35P_IDCODE
Definition: XUSP_Devices.h:742
#define XCZU46DR()
#define XCKU3P_IDCODE
Definition: XUSP_Devices.h:289
#define XCZU17_NAME
#define XCZU47DR()
#define XCVU7P()
Definition: XUSP_Devices.h:464
#define XCVU13P_IDCODE
Definition: XUSP_Devices.h:539
#define XCVU23P_NAME
Definition: XUSP_Devices.h:615
#define XCZU4()
Definition: XUSP_Devices.h:926
#define XCKU9P()
Definition: XUSP_Devices.h:323
#define XCVU29P_NAME
Definition: XUSP_Devices.h:674
#define XCVU27P_NAME
Definition: XUSP_Devices.h:637
#define XCVU27P()
Definition: XUSP_Devices.h:668
#define XCVU33P_NAME
Definition: XUSP_Devices.h:725
#define XCKU5P_NAME
Definition: XUSP_Devices.h:299
#define XCZU39DR_NAME
#define XCZU1()
Definition: XUSP_Devices.h:887
#define XCVU11P_IDCODE
Definition: XUSP_Devices.h:508
#define XCK26_NAME
#define XCZU3_IDCODE
Definition: XUSP_Devices.h:908
#define XCZU49DR_NAME
#define XCVU35P_NAME
Definition: XUSP_Devices.h:739
#define XCZU28DR()
#define XCU200()
#define XCU30()
#define XCZU48DR()
#define XCKU19P_IDCODE
Definition: XUSP_Devices.h:386
#define XCZU5()
Definition: XUSP_Devices.h:939
#define XCVU57P_NAME
Definition: XUSP_Devices.h:849
#define XCZU29DR_NAME
#define XCZU39DR()
int getDeviceByNameOrThrow(std::string) override
int getDeviceByIDCODE(int) override
void setDeviceByNameOrThrow(std::string) override
void setDevice(int, std::string="") override
void setDeviceByPartNameOrThrow() override
int getDeviceByIDCODEorThrow(int) override
void setDeviceByIDCODEOrThrow(int) override
int getDeviceByName(std::string) override
void clearResourceStringArrays()
Definition: inlineBlank.h:17
void printResourceStringInfo()
std::string to_string(Endianness e)
Definition: Endianness.h:56
bool stringContains(std::string checkedString)
Returns false. End of recursion for template.
Definition: iff.h:57
std::string stringToLower(std::string str)
Replaces all uppercase characters in str with lowercase and returns the resulting string.
Definition: str.h:59
std::string removeSpaces(std::string str)
Removes all space chars of str returns the resulting string.
Definition: str.h:47