byteman  1.3 (Build #225)
Bitstream relocation and manipulation tool
XS7_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 "XilinxSeries7.h"
23 #include "XS7_Devices.h"
24 #include "../../../Common/str.h"
25 
26 using namespace std;
27 
29 {
30  int deviceID = getDeviceByIDCODE(IDCODE);
31  if(deviceID == XS7_DEVICE_NULL)
32  throw runtime_error(string("Unknown device with IDCODE = ").append(to_string(IDCODE)).append(" . Maybe the device is not Xilinx Series 7 device?"));
33  return deviceID;
34 }
35 
37 {
38  int deviceID = getDeviceByName(name);
39  if(deviceID == XS7_DEVICE_NULL)
40  throw runtime_error(string("Unknown device: ").append(name).append(". Maybe the device is not Xilinx Series 7 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  //Series 7 Spartan
61  #ifdef XS7SPARTAN
62  if(IDCODE == XC7S6_IDCODE)
63  return XS7_DEVICE_XC7S6;
64  if(IDCODE == XC7S15_IDCODE)
65  return XS7_DEVICE_XC7S15;
66  if(IDCODE == XC7S25_IDCODE)
67  return XS7_DEVICE_XC7S25;
68  if(IDCODE == XC7S50_IDCODE)
69  return XS7_DEVICE_XC7S50;
70  if(IDCODE == XC7S75_IDCODE)
71  return XS7_DEVICE_XC7S75;
72  if(IDCODE == XC7S100_IDCODE)
73  return XS7_DEVICE_XC7S100;
74  #endif
75  //Series 7 Artix
76  #ifdef XS7ARTIX
77  if(IDCODE == XC7A12_IDCODE)
78  return XS7_DEVICE_XC7A12;
79  if(IDCODE == XC7A15_IDCODE)
80  return XS7_DEVICE_XC7A15;
81  if(IDCODE == XC7A25_IDCODE)
82  return XS7_DEVICE_XC7A25;
83  if(IDCODE == XC7A35_IDCODE)
84  return XS7_DEVICE_XC7A35;
85  if(IDCODE == XC7A50_IDCODE)
86  return XS7_DEVICE_XC7A50;
87  if(IDCODE == XC7A75_IDCODE)
88  return XS7_DEVICE_XC7A75;
89  if(IDCODE == XC7A100_IDCODE)
90  return XS7_DEVICE_XC7A100;
91  if(IDCODE == XC7A200_IDCODE)
92  return XS7_DEVICE_XC7A200;
93  #endif
94  //Series 7 Zynq
95  #ifdef XS7ZYNQ
96  if(IDCODE == XC7Z007_IDCODE)
97  return XS7_DEVICE_XC7Z007;
98  if(IDCODE == XC7Z010_IDCODE)
99  return XS7_DEVICE_XC7Z010;
100  if(IDCODE == XC7Z012_IDCODE)
101  return XS7_DEVICE_XC7Z012;
102  if(IDCODE == XC7Z014_IDCODE)
103  return XS7_DEVICE_XC7Z014;
104  if(IDCODE == XC7Z015_IDCODE)
105  return XS7_DEVICE_XC7Z015;
106  if(IDCODE == XC7Z020_IDCODE)
107  return XS7_DEVICE_XC7Z020;
108  if(IDCODE == XC7Z030_IDCODE)
109  return XS7_DEVICE_XC7Z030;
110  if(IDCODE == XC7Z035_IDCODE)
111  return XS7_DEVICE_XC7Z035;
112  if(IDCODE == XC7Z045_IDCODE)
113  return XS7_DEVICE_XC7Z045;
114  if(IDCODE == XC7Z100_IDCODE)
115  return XS7_DEVICE_XC7Z100;
116  #endif
117  //Series 7 Kintex
118  #ifdef XS7KINTEX
119  if(IDCODE == XC7K70_IDCODE)
120  return XS7_DEVICE_XC7K70;
121  if(IDCODE == XC7K160_IDCODE)
122  return XS7_DEVICE_XC7K160;
123  if(IDCODE == XC7K325_IDCODE)
124  return XS7_DEVICE_XC7K325;
125  if(IDCODE == XC7K355_IDCODE)
126  return XS7_DEVICE_XC7K355;
127  if(IDCODE == XC7K410_IDCODE)
128  return XS7_DEVICE_XC7K410;
129  if(IDCODE == XC7K420_IDCODE)
130  return XS7_DEVICE_XC7K420;
131  if(IDCODE == XC7K480_IDCODE)
132  return XS7_DEVICE_XC7K480;
133  #endif
134  //Series 7 Virtex
135  #ifdef XS7VIRTEX
136  if(IDCODE == XC7V585_IDCODE)
137  return XS7_DEVICE_XC7V585;
138  if(IDCODE == XC7V2000_IDCODE)
139  return XS7_DEVICE_XC7V2000;
140  if(IDCODE == XC7VH580_IDCODE)
141  return XS7_DEVICE_XC7VH580;
142  if(IDCODE == XC7VH870_IDCODE)
143  return XS7_DEVICE_XC7VH870;
144  if(IDCODE == XC7VX330_IDCODE)
145  return XS7_DEVICE_XC7VX330;
146  if(IDCODE == XC7VX415_IDCODE)
147  return XS7_DEVICE_XC7VX415;
148  if(IDCODE == XC7VX485_IDCODE)
149  return XS7_DEVICE_XC7VX485;
150  if(IDCODE == XC7VX550_IDCODE)
151  return XS7_DEVICE_XC7VX550;
152  if(IDCODE == XC7VX690_IDCODE)
153  return XS7_DEVICE_XC7VX690;
154  if(IDCODE == XC7VX980_IDCODE)
155  return XS7_DEVICE_XC7VX980;
156  if(IDCODE == XC7VX1140_IDCODE)
157  return XS7_DEVICE_XC7VX1140;
158  #endif
159 
160  return XS7_DEVICE_NULL;
161 }
163 {
164  name = str::removeSpaces(name);
165  name = str::stringToLower(name);
166 
167  //Series 7 Spartan
168  #ifdef XS7SPARTAN
170  return XS7_DEVICE_XC7S6;
172  return XS7_DEVICE_XC7S15;
174  return XS7_DEVICE_XC7S25;
176  return XS7_DEVICE_XC7S50;
178  return XS7_DEVICE_XC7S75;
180  return XS7_DEVICE_XC7S100;
181  #endif
182  //Series 7 Artix
183  #ifdef XS7ARTIX
185  return XS7_DEVICE_XC7A12;
187  return XS7_DEVICE_XC7A15;
189  return XS7_DEVICE_XC7A25;
191  return XS7_DEVICE_XC7A35;
193  return XS7_DEVICE_XC7A50;
195  return XS7_DEVICE_XC7A75;
197  return XS7_DEVICE_XC7A100;
199  return XS7_DEVICE_XC7A200;
200  #endif
201  //Series 7 Zynq
202  #ifdef XS7ZYNQ
204  return XS7_DEVICE_XC7Z007;
206  return XS7_DEVICE_XC7Z010;
208  return XS7_DEVICE_XC7Z012;
210  return XS7_DEVICE_XC7Z014;
212  return XS7_DEVICE_XC7Z015;
214  return XS7_DEVICE_XC7Z020;
216  return XS7_DEVICE_XC7Z030;
218  return XS7_DEVICE_XC7Z035;
220  return XS7_DEVICE_XC7Z045;
222  return XS7_DEVICE_XC7Z100;
223  #endif
224  //Series 7 Kintex
225  #ifdef XS7KINTEX
227  return XS7_DEVICE_XC7K70;
229  return XS7_DEVICE_XC7K160;
231  return XS7_DEVICE_XC7K325;
233  return XS7_DEVICE_XC7K355;
235  return XS7_DEVICE_XC7K410;
237  return XS7_DEVICE_XC7K420;
239  return XS7_DEVICE_XC7K480;
240  #endif
241  //Series 7 Virtex
242  #ifdef XS7VIRTEX
244  return XS7_DEVICE_XC7V585;
246  return XS7_DEVICE_XC7V2000;
248  return XS7_DEVICE_XC7VH580;
250  return XS7_DEVICE_XC7VH870;
252  return XS7_DEVICE_XC7VX330;
254  return XS7_DEVICE_XC7VX415;
256  return XS7_DEVICE_XC7VX485;
258  return XS7_DEVICE_XC7VX550;
260  return XS7_DEVICE_XC7VX690;
262  return XS7_DEVICE_XC7VX980;
264  return XS7_DEVICE_XC7VX1140;
265  #endif
266  //Series 7 Boards
267  #ifdef XS7BOARDS
268  if(str::iff::stringContains(name, "wizarde"))
269  return XS7_DEVICE_WIZARDE;
270  if(str::iff::stringContains(name, "kintex-7connectivity", "kintex7connectivity"))
272  if(str::iff::stringContains(name, "kc705", "kintex-7evaluation", "kintex7evaluation", "kintex-7embedded", "kintex7embedded"))
273  return XS7_DEVICE_KC705;
274  if(str::iff::stringContains(name, "kc724", "kintex-7characterization", "kintex7characterization"))
275  return XS7_DEVICE_KC724;
276  if(str::iff::stringContains(name, "sp701"))
277  return XS7_DEVICE_SP701;
278  if(str::iff::stringContains(name, "ac701"))
279  return XS7_DEVICE_AC701;
280  if(str::iff::stringContains(name, "artya7-35", "artya735", "arty35"))
281  return XS7_DEVICE_ARTY_A35;
282  if(str::iff::stringContains(name, "artya7-100", "artya7100", "arty100"))
283  return XS7_DEVICE_ARTY_A100;
284  if(str::iff::stringContains(name, "artyz7-10", "artyz710", "arty10"))
285  return XS7_DEVICE_ARTY_Z10;
286  if(str::iff::stringContains(name, "artyz7-20", "artyz720", "arty20"))
287  return XS7_DEVICE_ARTY_Z20;
288  if(str::iff::stringContains(name, "artys7-25", "artys725", "arty25"))
289  return XS7_DEVICE_ARTY_S25;
290  if(str::iff::stringContains(name, "artys7-50", "artys750", "arty50"))
291  return XS7_DEVICE_ARTY_S50;
292  if(str::iff::stringContains(name, "basys3"))
293  return XS7_DEVICE_BASYS3;
294  if(str::iff::stringContains(name, "pynq-z1", "pynqz1"))
295  return XS7_DEVICE_PYNQ_Z1;
296  if(str::iff::stringContains(name, "pynq-z2", "pynqz2"))
297  return XS7_DEVICE_PYNQ_Z2;
298  if(str::iff::stringContains(name, "nexysa7-50", "nexysa750", "nexys50"))
299  return XS7_DEVICE_NEXYS_A50;
300  if(str::iff::stringContains(name, "nexysa7-100", "nexysa7100", "nexys100"))
301  return XS7_DEVICE_NEXYS_A100;
302  if(str::iff::stringContains(name, "zyboz7-10", "zyboz710", "zybo10"))
303  return XS7_DEVICE_ZYBO_Z10;
304  if(str::iff::stringContains(name, "zyboz7-20", "zyboz720", "zybo20"))
305  return XS7_DEVICE_ZYBO_Z20;
306  if(str::iff::stringContains(name, "cmoda7-15", "cmoda715", "cmod15"))
307  return XS7_DEVICE_CMOD_A15;
308  if(str::iff::stringContains(name, "cmoda7-35", "cmoda735", "cmod35"))
309  return XS7_DEVICE_CMOD_A35;
310  if(str::iff::stringContains(name, "cmods7-25", "cmods725", "cmod25", "cmods"))
311  return XS7_DEVICE_CMOD_S25;
312  if(str::iff::stringContains(name, "zedboard"))
313  return XS7_DEVICE_ZEDBOARD;
314  if(str::iff::stringContains(name, "coraz7-07", "coraz707", "cora07", "cora7"))
315  return XS7_DEVICE_CORA_Z7;
316  if(str::iff::stringContains(name, "coraz7-10", "coraz710", "cora10"))
317  return XS7_DEVICE_CORA_Z10;
318  if(str::iff::stringContains(name, "nexysvideo"))
319  return XS7_DEVICE_NEXYS_VIDEO;
320  if(str::iff::stringContains(name, "genesys2"))
322  if(str::iff::stringContains(name, "eclypsez7"))
323  return XS7_DEVICE_ECLYPSE_Z7;
324  if(str::iff::stringContains(name, "usb104"))
325  return XS7_DEVICE_USB104;
326  if(str::iff::stringContains(name, "netfpga-sume", "netfpgasume"))
328  if(str::iff::stringContains(name, "vc707"))
329  return XS7_DEVICE_VC707;
330  if(str::iff::stringContains(name, "vc709"))
331  return XS7_DEVICE_VC709;
332  if(str::iff::stringContains(name, "vc7215"))
333  return XS7_DEVICE_VC7215;
334  if(str::iff::stringContains(name, "vc7203"))
335  return XS7_DEVICE_VC7203;
336  if(str::iff::stringContains(name, "vc7222"))
337  return XS7_DEVICE_VC7222;
338  if(str::iff::stringContains(name, "zc702"))
339  return XS7_DEVICE_ZC702;
340  if(str::iff::stringContains(name, "zc706"))
341  return XS7_DEVICE_ZC706;
342 
343 
344  #endif
345  return XS7_DEVICE_NULL;
346 }
347 
348 /************************************************************************** /**
349  * setPartName if available. Otherwise will put a default name.
350  *****************************************************************************/
351 void XilinxSeries7::setDevice(int deviceID, string customPartName)
352 {
354  bool customNameSet = false;
355  #define setCustomPartName(x) {customNameSet = true; partName = x;}
356  switch(deviceID){
357  //Series 7 Spartan
358  #ifdef XS7SPARTAN
359  case XS7_DEVICE_XC7S6:
360  XC7S6();
361  break;
362  case XS7_DEVICE_XC7S15:
363  XC7S15();
364  break;
365  case XS7_DEVICE_XC7S25:
366  XC7S25();
367  break;
368  case XS7_DEVICE_XC7S50:
369  XC7S50();
370  break;
371  case XS7_DEVICE_XC7S75:
372  XC7S75();
373  break;
374  case XS7_DEVICE_XC7S100:
375  XC7S100();
376  break;
377  #endif
378  //Series 7 Artix
379  #ifdef XS7ARTIX
380  case XS7_DEVICE_XC7A12:
381  XC7A12();
382  break;
383  case XS7_DEVICE_XC7A15:
384  XC7A15();
385  break;
386  case XS7_DEVICE_XC7A25:
387  XC7A25();
388  break;
389  case XS7_DEVICE_XC7A35:
390  XC7A35();
391  break;
392  case XS7_DEVICE_XC7A50:
393  XC7A50();
394  break;
395  case XS7_DEVICE_XC7A75:
396  XC7A75();
397  break;
398  case XS7_DEVICE_XC7A100:
399  XC7A100();
400  break;
401  case XS7_DEVICE_XC7A200:
402  XC7A200();
403  break;
404  #endif
405  //Series 7 Zynq
406  #ifdef XS7ZYNQ
407  case XS7_DEVICE_XC7Z007:
408  XC7Z007();
409  break;
410  case XS7_DEVICE_XC7Z010:
411  XC7Z010();
412  break;
413  case XS7_DEVICE_XC7Z012:
414  XC7Z012();
415  break;
416  case XS7_DEVICE_XC7Z014:
417  XC7Z014();
418  break;
419  case XS7_DEVICE_XC7Z015:
420  XC7Z015();
421  break;
422  case XS7_DEVICE_XC7Z020:
423  XC7Z020();
424  break;
425  case XS7_DEVICE_XC7Z030:
426  XC7Z030();
427  break;
428  case XS7_DEVICE_XC7Z035:
429  XC7Z035();
430  break;
431  case XS7_DEVICE_XC7Z045:
432  XC7Z045();
433  break;
434  case XS7_DEVICE_XC7Z100:
435  XC7Z100();
436  break;
437  #endif
438  //Series 7 Kintex
439  #ifdef XS7KINTEX
440  case XS7_DEVICE_XC7K70:
441  XC7K70();
442  break;
443  case XS7_DEVICE_XC7K160:
444  XC7K160();
445  break;
446  case XS7_DEVICE_XC7K325:
447  XC7K325();
448  break;
449  case XS7_DEVICE_XC7K355:
450  XC7K355();
451  break;
452  case XS7_DEVICE_XC7K410:
453  XC7K410();
454  break;
455  case XS7_DEVICE_XC7K420:
456  XC7K420();
457  break;
458  case XS7_DEVICE_XC7K480:
459  XC7K480();
460  break;
461  #endif
462  //Series 7 Virtex
463  #ifdef XS7VIRTEX
464  case XS7_DEVICE_XC7V585:
465  XC7V585();
466  break;
467  case XS7_DEVICE_XC7V2000:
468  XC7V2000();
469  break;
470  case XS7_DEVICE_XC7VH580:
471  throw runtime_error("XC7VH580 needs special handling for GTZ SLRs, which is not yet implemented.");
472  XC7VH580();
473  break;
474  case XS7_DEVICE_XC7VH870:
475  throw runtime_error("XCV7VH870 needs special handling for GTZ SLRs, which is not yet implemented.");
476  XC7VH870();
477  break;
478  case XS7_DEVICE_XC7VX330:
479  XC7VX330();
480  break;
481  case XS7_DEVICE_XC7VX415:
482  XC7VX415();
483  break;
484  case XS7_DEVICE_XC7VX485:
485  XC7VX485();
486  break;
487  case XS7_DEVICE_XC7VX550:
488  XC7VX550();
489  break;
490  case XS7_DEVICE_XC7VX690:
491  XC7VX690();
492  break;
493  case XS7_DEVICE_XC7VX980:
494  XC7VX980();
495  break;
497  XC7VX1140();
498  break;
499  #endif
500  //Series 7 Boards
501  #ifdef XS7BOARDS
502  case XS7_DEVICE_WIZARDE:
503  XC7Z045();
504  setCustomPartName("xc7z045ffg900-2");
505  break;
507  XC7K325();
508  setCustomPartName("xc7k325t-2ffg900c");
509  break;
510  case XS7_DEVICE_KC705:
511  XC7K325();
512  setCustomPartName("xc7k325t-2ffg900c");
513  break;
514  case XS7_DEVICE_KC724:
515  XC7K325();
516  setCustomPartName("xc7k325t-3ffg900e");
517  break;
518  case XS7_DEVICE_SP701:
519  XC7S100();
520  setCustomPartName("xc7s100-2fgga676c");
521  break;
522  case XS7_DEVICE_AC701:
523  XC7A200();
524  setCustomPartName("xc7a200t-2fbg676c");
525  break;
526  case XS7_DEVICE_ARTY_A35:
527  XC7A35();
528  setCustomPartName("xc7a35ticsg324-1l");
529  break;
531  XC7A100();
532  setCustomPartName("xc7a100tcsg324-1");
533  break;
534  case XS7_DEVICE_ARTY_Z10:
535  XC7Z010();
536  setCustomPartName("xc7z010-1clg400c");
537  break;
538  case XS7_DEVICE_ARTY_Z20:
539  XC7Z020();
540  setCustomPartName("xc7z020-1clg400c");
541  break;
542  case XS7_DEVICE_ARTY_S25:
543  XC7S25();
544  setCustomPartName("xc7s25-csga324");
545  break;
546  case XS7_DEVICE_ARTY_S50:
547  XC7S50();
548  setCustomPartName("xc7s50-csga324");
549  break;
550  case XS7_DEVICE_BASYS3:
551  XC7A35();
552  setCustomPartName("xc7a35t-1cpg236c");
553  break;
554  case XS7_DEVICE_PYNQ_Z1:
555  XC7Z020();
556  setCustomPartName("xc7z020-1clg400c");
557  break;
558  case XS7_DEVICE_PYNQ_Z2:
559  XC7Z020();
560  setCustomPartName("xc7z020-1clg400c");
561  break;
563  XC7A50();
564  setCustomPartName("xc7a50t-1csg324c");
565  break;
567  XC7A100();
568  setCustomPartName("xc7a100t-1csg324c");
569  break;
570  case XS7_DEVICE_ZYBO_Z10:
571  XC7Z010();
572  setCustomPartName("xc7z010-1clg400c");
573  break;
574  case XS7_DEVICE_ZYBO_Z20:
575  XC7Z020();
576  setCustomPartName("xc7z020-1clg400c");
577  break;
578  case XS7_DEVICE_CMOD_A15:
579  XC7A15();
580  setCustomPartName("xc7a15t-1cpg236c");
581  break;
582  case XS7_DEVICE_CMOD_A35:
583  XC7A35();
584  setCustomPartName("xc7a35t-1cpg236c");
585  break;
586  case XS7_DEVICE_CMOD_S25:
587  XC7S25();
588  setCustomPartName("xc7s25-1csga225c");
589  break;
590  case XS7_DEVICE_ZEDBOARD:
591  XC7Z020();
592  setCustomPartName("xc7z020-clg484");
593  break;
594  case XS7_DEVICE_CORA_Z7:
595  XC7Z007();
596  setCustomPartName("xc7z007s-1clg400c");
597  break;
598  case XS7_DEVICE_CORA_Z10:
599  XC7Z010();
600  setCustomPartName("xc7z010-1clg400c");
601  break;
603  XC7A200();
604  setCustomPartName("xc7a200t-1sbg484c");
605  break;
607  XC7K325();
608  setCustomPartName("xc7k325t-2ffg900c");
609  break;
611  XC7Z020();
612  setCustomPartName("xc7z020-1clg484c");
613  break;
614  case XS7_DEVICE_USB104:
615  XC7A100();
616  setCustomPartName("xc7a100t-1csg324i");
617  break;
619  XC7VX690();
620  setCustomPartName("xc7vx690t-3ffg1761c");
621  break;
622  case XS7_DEVICE_VC707:
623  XC7VX485();
624  setCustomPartName("xc7vx485t-2ffg1761");
625  break;
626  case XS7_DEVICE_VC709:
627  XC7VX690();
628  setCustomPartName("xc7vx690t-2ffg1761c");
629  break;
630  case XS7_DEVICE_VC7215:
631  XC7VX690();
632  setCustomPartName("xc7vx690t-3ffg1927e");
633  break;
634  case XS7_DEVICE_VC7203:
635  XC7VX485();
636  setCustomPartName("xc7vx485t-3ffg1761e");
637  break;
638  case XS7_DEVICE_VC7222:
639  XC7VH580();
640  setCustomPartName("xc7vh580t-g2hcg1155e");
641  break;
642  case XS7_DEVICE_ZC702:
643  XC7Z020();
644  setCustomPartName("xc7z020-clg484-1");
645  break;
646  case XS7_DEVICE_ZC706:
647  XC7Z045();
648  setCustomPartName("xc7z045-2ffg900c");
649  break;
650  #endif
651  default:throw runtime_error("Unknown device ID.");
652  }
653  #undef setCustomPartName
654  if(!customNameSet) // if we didn't set already a good full name
655  if(customPartName != "")// if not empty string
656  partName = customPartName;
657 
658  log("Initialized device resource string for \"" + initializedResourceStringShortPartName + "\"");
659 }
660 
662 {
663  if(initializedResourceStringShortPartName == "") {//if no device is initialized
664  cout << "A list of currently supported Xilinx Series 7 devices: " << endl;
665  #ifdef XS7SPARTAN
666  cout << " Series 7 Spartan: " << endl;
667  cout << " XC7S6, XA7S6, XC7S15, XA7S15, XC7S25, XA7S25, XC7S50, XA7S50, XC7S75, XA7S75, XC7S100, XA7S100" << endl;
668  #endif
669  #ifdef XS7ARTIX
670  cout << " Series 7 Artix: " << endl;
671  cout << " XC7A12, XA7A12, XC7A15, XA7A15, XC7A25, XA7A25, XC7A35, XA7A35, XC7A50, XQ7A50, XA7A50, " << endl;
672  cout << " XC7A75, XA7A75, XC7A100, XQ7A100, XA7A100, XC7A200, XQ7A200" << endl;
673  #endif
674  #ifdef XS7ZYNQ
675  cout << " Series 7 Zynq: " << endl;
676  cout << " XC7Z007, XC7Z010, XA7Z010, XC7Z012, XC7Z014, XC7Z015, XC7Z020, XQ7Z020, XA7Z020, " << endl;
677  cout << " XC7Z030, XQ7Z030, XA7Z030, XC7Z035, XC7Z045, XQ7Z045, XC7Z100, XQ7Z100" << endl;
678  #endif
679  #ifdef XS7KINTEX
680  cout << " Series 7 Kintex: " << endl;
681  cout << " XC7K70, XC7K160, XA7K160, XC7K325, XQ7K325, XC7K355, XC7K410, XQ7K410, XC7K420, XC7K480" << endl;
682  #endif
683  #ifdef XS7VIRTEX
684  cout << " Series 7 Virtex: " << endl;
685  cout << " XC7V585, XQ7V585, XC7V2000, XC7VX330, XQ7VX330, XC7VX415, XC7VX485, XQ7VX485, XC7VX550, " << endl;
686  cout << " XC7VX690, XQ7VX690, XC7VX980, XQ7VX980, XC7VX1140" << endl;
687  #endif
688  #ifdef XS7BOARDS
689  cout << " Series 7 Boards: " << endl;
690  cout << " Wizarde, Kintex-7 Connectivity Kit, KC705, KC724, SP701, AC701, Arty A7-35, Arty A7-100, Arty Z7-10, Arty Z7-20, " << endl;
691  cout << " Arty S7-25, Arty S7-50, Basys 3, Pynq Z1, Pynq Z2, Nexys A7-50, Nexys A7-100, Zybo Z7-10, Zybo Z7-20, Cmod A7-15, " << endl;
692  cout << " Cmod A7-35, Cmod S7, ZedBoard, Cora Z7-07, Cora Z7-10, Nexys Video, Genesys 2, Eclypse Z7, USB104, NetFPGA-SUME, " << endl;
693  cout << " VC707, VC709, VC7203, VC7215, VC7222, ZC702, ZC706" << endl;
694  #endif
695  } else {
697  }
698 }
#define XC7VX330_IDCODE
Definition: XS7_Devices.h:760
#define XC7VH580_IDCODE
Definition: XS7_Devices.h:705
#define XC7Z035()
Definition: XS7_Devices.h:479
#define XC7VX980_IDCODE
Definition: XS7_Devices.h:856
#define XC7S100_NAME
Definition: XS7_Devices.h:230
#define XC7A75_IDCODE
Definition: XS7_Devices.h:321
#define XC7VX690_NAME
Definition: XS7_Devices.h:832
#define XC7A200_NAME
Definition: XS7_Devices.h:348
#define XC7S6_NAME
Definition: XS7_Devices.h:161
#define XC7S75_IDCODE
Definition: XS7_Devices.h:218
#define XC7S6()
Definition: XS7_Devices.h:168
#define XC7VX415_IDCODE
Definition: XS7_Devices.h:778
#define XC7V585()
Definition: XS7_Devices.h:660
#define XC7A12_IDCODE
Definition: XS7_Devices.h:250
#define XC7Z020_NAME
Definition: XS7_Devices.h:436
#define XC7Z007_IDCODE
Definition: XS7_Devices.h:369
#define XC7K420()
Definition: XS7_Devices.h:620
#define XC7S6_IDCODE
Definition: XS7_Devices.h:164
#define XC7VX485_IDCODE
Definition: XS7_Devices.h:795
#define XC7VX485_NAME
Definition: XS7_Devices.h:792
#define XC7A25_NAME
Definition: XS7_Devices.h:275
#define XC7VX550()
Definition: XS7_Devices.h:827
#define XC7A25()
Definition: XS7_Devices.h:283
#define XC7Z100_NAME
Definition: XS7_Devices.h:502
#define XC7A35_IDCODE
Definition: XS7_Devices.h:292
#define XC7V585_NAME
Definition: XS7_Devices.h:645
#define XC7K420_NAME
Definition: XS7_Devices.h:606
#define XC7K480_NAME
Definition: XS7_Devices.h:625
#define XC7Z030_NAME
Definition: XS7_Devices.h:450
#define XC7VX550_NAME
Definition: XS7_Devices.h:811
#define XC7S25()
Definition: XS7_Devices.h:194
#define XC7S50()
Definition: XS7_Devices.h:209
#define XC7S75_NAME
Definition: XS7_Devices.h:215
#define XC7K410_IDCODE
Definition: XS7_Devices.h:590
#define XC7Z012_NAME
Definition: XS7_Devices.h:393
#define XC7S50_IDCODE
Definition: XS7_Devices.h:203
#define XC7K355_IDCODE
Definition: XS7_Devices.h:573
#define XC7Z045()
Definition: XS7_Devices.h:497
#define XC7Z035_NAME
Definition: XS7_Devices.h:466
#define XC7Z015_IDCODE
Definition: XS7_Devices.h:425
#define XC7K355_NAME
Definition: XS7_Devices.h:570
#define XC7A15()
Definition: XS7_Devices.h:270
#define XC7Z030()
Definition: XS7_Devices.h:460
#define XC7VX980_NAME
Definition: XS7_Devices.h:853
#define XC7K410()
Definition: XS7_Devices.h:600
#define XC7A50()
Definition: XS7_Devices.h:312
#define XC7K410_NAME
Definition: XS7_Devices.h:587
#define XC7K160()
Definition: XS7_Devices.h:547
#define XC7Z007_NAME
Definition: XS7_Devices.h:366
#define XC7Z014_IDCODE
Definition: XS7_Devices.h:411
#define XC7Z030_IDCODE
Definition: XS7_Devices.h:453
#define XC7VX330_NAME
Definition: XS7_Devices.h:757
#define XC7A200()
Definition: XS7_Devices.h:359
#define XC7S15()
Definition: XS7_Devices.h:180
#define XC7Z012_IDCODE
Definition: XS7_Devices.h:396
#define XC7K325_NAME
Definition: XS7_Devices.h:552
#define XC7A100_NAME
Definition: XS7_Devices.h:333
#define XC7S15_IDCODE
Definition: XS7_Devices.h:176
@ XS7_DEVICE_XC7V2000
Definition: XS7_Devices.h:62
@ XS7_DEVICE_CMOD_A15
Definition: XS7_Devices.h:92
@ XS7_DEVICE_ZEDBOARD
Definition: XS7_Devices.h:95
@ XS7_DEVICE_XC7A100
Definition: XS7_Devices.h:39
@ XS7_DEVICE_VC7215
Definition: XS7_Devices.h:105
@ XS7_DEVICE_XC7A15
Definition: XS7_Devices.h:34
@ XS7_DEVICE_KC705
Definition: XS7_Devices.h:75
@ XS7_DEVICE_XC7K70
Definition: XS7_Devices.h:53
@ XS7_DEVICE_XC7K325
Definition: XS7_Devices.h:55
@ XS7_DEVICE_CORA_Z10
Definition: XS7_Devices.h:97
@ XS7_DEVICE_XC7K480
Definition: XS7_Devices.h:59
@ XS7_DEVICE_BASYS3
Definition: XS7_Devices.h:85
@ XS7_DEVICE_SP701
Definition: XS7_Devices.h:77
@ XS7_DEVICE_ARTY_A35
Definition: XS7_Devices.h:79
@ XS7_DEVICE_ARTY_S25
Definition: XS7_Devices.h:83
@ XS7_DEVICE_ARTY_Z10
Definition: XS7_Devices.h:81
@ XS7_DEVICE_ZYBO_Z10
Definition: XS7_Devices.h:90
@ XS7_DEVICE_XC7K420
Definition: XS7_Devices.h:58
@ XS7_DEVICE_XC7Z045
Definition: XS7_Devices.h:50
@ XS7_DEVICE_XC7A12
Definition: XS7_Devices.h:33
@ XS7_DEVICE_XC7A200
Definition: XS7_Devices.h:40
@ XS7_DEVICE_NEXYS_A100
Definition: XS7_Devices.h:89
@ XS7_DEVICE_USB104
Definition: XS7_Devices.h:101
@ XS7_DEVICE_ARTY_S50
Definition: XS7_Devices.h:84
@ XS7_DEVICE_XC7Z030
Definition: XS7_Devices.h:48
@ XS7_DEVICE_XC7Z014
Definition: XS7_Devices.h:45
@ XS7_DEVICE_XC7A35
Definition: XS7_Devices.h:36
@ XS7_DEVICE_XC7K410
Definition: XS7_Devices.h:57
@ XS7_DEVICE_XC7K355
Definition: XS7_Devices.h:56
@ XS7_DEVICE_ZYBO_Z20
Definition: XS7_Devices.h:91
@ XS7_DEVICE_ARTY_Z20
Definition: XS7_Devices.h:82
@ XS7_DEVICE_XC7S75
Definition: XS7_Devices.h:30
@ XS7_DEVICE_VC7203
Definition: XS7_Devices.h:106
@ XS7_DEVICE_KINTEX7CONNECTIVITY
Definition: XS7_Devices.h:74
@ XS7_DEVICE_XC7S15
Definition: XS7_Devices.h:27
@ XS7_DEVICE_XC7VX1140
Definition: XS7_Devices.h:71
@ XS7_DEVICE_NETFPGA_SUME
Definition: XS7_Devices.h:102
@ XS7_DEVICE_ZC702
Definition: XS7_Devices.h:108
@ XS7_DEVICE_XC7VX690
Definition: XS7_Devices.h:69
@ XS7_DEVICE_KC724
Definition: XS7_Devices.h:76
@ XS7_DEVICE_XC7A75
Definition: XS7_Devices.h:38
@ XS7_DEVICE_XC7V585
Definition: XS7_Devices.h:61
@ XS7_DEVICE_XC7VH870
Definition: XS7_Devices.h:64
@ XS7_DEVICE_XC7Z100
Definition: XS7_Devices.h:51
@ XS7_DEVICE_XC7S50
Definition: XS7_Devices.h:29
@ XS7_DEVICE_ARTY_GENESYS2
Definition: XS7_Devices.h:99
@ XS7_DEVICE_NEXYS_A50
Definition: XS7_Devices.h:88
@ XS7_DEVICE_XC7Z012
Definition: XS7_Devices.h:44
@ XS7_DEVICE_ZC706
Definition: XS7_Devices.h:109
@ XS7_DEVICE_XC7Z035
Definition: XS7_Devices.h:49
@ XS7_DEVICE_VC707
Definition: XS7_Devices.h:103
@ XS7_DEVICE_XC7K160
Definition: XS7_Devices.h:54
@ XS7_DEVICE_XC7Z015
Definition: XS7_Devices.h:46
@ XS7_DEVICE_CORA_Z7
Definition: XS7_Devices.h:96
@ XS7_DEVICE_XC7A25
Definition: XS7_Devices.h:35
@ XS7_DEVICE_WIZARDE
Definition: XS7_Devices.h:73
@ XS7_DEVICE_NULL
Definition: XS7_Devices.h:24
@ XS7_DEVICE_VC709
Definition: XS7_Devices.h:104
@ XS7_DEVICE_XC7S6
Definition: XS7_Devices.h:26
@ XS7_DEVICE_XC7S100
Definition: XS7_Devices.h:31
@ XS7_DEVICE_XC7Z010
Definition: XS7_Devices.h:43
@ XS7_DEVICE_PYNQ_Z1
Definition: XS7_Devices.h:86
@ XS7_DEVICE_VC7222
Definition: XS7_Devices.h:107
@ XS7_DEVICE_PYNQ_Z2
Definition: XS7_Devices.h:87
@ XS7_DEVICE_XC7Z007
Definition: XS7_Devices.h:42
@ XS7_DEVICE_XC7S25
Definition: XS7_Devices.h:28
@ XS7_DEVICE_XC7VX330
Definition: XS7_Devices.h:65
@ XS7_DEVICE_AC701
Definition: XS7_Devices.h:78
@ XS7_DEVICE_XC7A50
Definition: XS7_Devices.h:37
@ XS7_DEVICE_XC7VX980
Definition: XS7_Devices.h:70
@ XS7_DEVICE_CMOD_A35
Definition: XS7_Devices.h:93
@ XS7_DEVICE_ECLYPSE_Z7
Definition: XS7_Devices.h:100
@ XS7_DEVICE_XC7VX550
Definition: XS7_Devices.h:68
@ XS7_DEVICE_ARTY_A100
Definition: XS7_Devices.h:80
@ XS7_DEVICE_NEXYS_VIDEO
Definition: XS7_Devices.h:98
@ XS7_DEVICE_XC7Z020
Definition: XS7_Devices.h:47
@ XS7_DEVICE_XC7VX485
Definition: XS7_Devices.h:67
@ XS7_DEVICE_XC7VX415
Definition: XS7_Devices.h:66
@ XS7_DEVICE_CMOD_S25
Definition: XS7_Devices.h:94
@ XS7_DEVICE_XC7VH580
Definition: XS7_Devices.h:63
#define XC7S100_IDCODE
Definition: XS7_Devices.h:233
#define XC7VX980()
Definition: XS7_Devices.h:868
#define XC7VX1140()
Definition: XS7_Devices.h:902
#define XC7A15_IDCODE
Definition: XS7_Devices.h:264
#define XC7K70_NAME
Definition: XS7_Devices.h:521
#define XC7K420_IDCODE
Definition: XS7_Devices.h:609
#define XC7K325_IDCODE
Definition: XS7_Devices.h:555
#define XC7VX1140_IDCODE
Definition: XS7_Devices.h:876
#define XC7Z020_IDCODE
Definition: XS7_Devices.h:439
#define XC7VH870()
Definition: XS7_Devices.h:751
#define XC7A50_IDCODE
Definition: XS7_Devices.h:306
#define XC7VH870_NAME
Definition: XS7_Devices.h:726
#define XC7K70()
Definition: XS7_Devices.h:531
#define XC7Z010_NAME
Definition: XS7_Devices.h:379
#define XC7VH580()
Definition: XS7_Devices.h:719
#define XC7Z007()
Definition: XS7_Devices.h:374
#define XC7K480()
Definition: XS7_Devices.h:639
#define XC7Z045_NAME
Definition: XS7_Devices.h:484
#define XC7V2000_NAME
Definition: XS7_Devices.h:665
#define XC7A50_NAME
Definition: XS7_Devices.h:303
#define XC7Z020()
Definition: XS7_Devices.h:445
#define XC7VX415()
Definition: XS7_Devices.h:787
#define XC7Z010_IDCODE
Definition: XS7_Devices.h:382
#define XC7S15_NAME
Definition: XS7_Devices.h:173
#define XC7VX1140_NAME
Definition: XS7_Devices.h:873
#define XC7A100()
Definition: XS7_Devices.h:343
#define XC7VX415_NAME
Definition: XS7_Devices.h:775
#define XC7A100_IDCODE
Definition: XS7_Devices.h:336
#define XC7Z014_NAME
Definition: XS7_Devices.h:408
#define XC7Z012()
Definition: XS7_Devices.h:402
#define XC7A200_IDCODE
Definition: XS7_Devices.h:351
#define XC7A35()
Definition: XS7_Devices.h:298
#define XC7S100()
Definition: XS7_Devices.h:240
#define XC7S75()
Definition: XS7_Devices.h:225
#define XC7VX550_IDCODE
Definition: XS7_Devices.h:814
#define XC7Z100()
Definition: XS7_Devices.h:515
#define XC7Z045_IDCODE
Definition: XS7_Devices.h:487
#define XC7V2000()
Definition: XS7_Devices.h:694
#define XC7Z010()
Definition: XS7_Devices.h:387
#define XC7A12_NAME
Definition: XS7_Devices.h:247
#define XC7Z035_IDCODE
Definition: XS7_Devices.h:469
#define XC7S50_NAME
Definition: XS7_Devices.h:200
#define XC7VH580_NAME
Definition: XS7_Devices.h:702
#define XC7VX330()
Definition: XS7_Devices.h:770
#define XC7A15_NAME
Definition: XS7_Devices.h:261
#define XC7K355()
Definition: XS7_Devices.h:582
#define XC7A75_NAME
Definition: XS7_Devices.h:318
#define XC7V2000_IDCODE
Definition: XS7_Devices.h:668
#define XC7S25_IDCODE
Definition: XS7_Devices.h:189
#define XC7K70_IDCODE
Definition: XS7_Devices.h:524
#define XC7K160_IDCODE
Definition: XS7_Devices.h:539
#define XC7Z100_IDCODE
Definition: XS7_Devices.h:505
#define XC7V585_IDCODE
Definition: XS7_Devices.h:648
#define XC7A12()
Definition: XS7_Devices.h:255
#define XC7VH870_IDCODE
Definition: XS7_Devices.h:729
#define XC7VX690_IDCODE
Definition: XS7_Devices.h:835
#define XC7A75()
Definition: XS7_Devices.h:328
#define XC7Z015_NAME
Definition: XS7_Devices.h:422
#define XC7VX690()
Definition: XS7_Devices.h:848
#define XC7A35_NAME
Definition: XS7_Devices.h:289
#define XC7S25_NAME
Definition: XS7_Devices.h:186
#define XC7K325()
Definition: XS7_Devices.h:565
#define XC7A25_IDCODE
Definition: XS7_Devices.h:278
#define XC7Z014()
Definition: XS7_Devices.h:417
#define XC7VX485()
Definition: XS7_Devices.h:805
#define XC7K160_NAME
Definition: XS7_Devices.h:536
#define XC7Z015()
Definition: XS7_Devices.h:431
#define XC7K480_IDCODE
Definition: XS7_Devices.h:628
void setDeviceByPartNameOrThrow() override
Definition: XS7_Devices.cpp:44
int getDeviceByIDCODEorThrow(int) override
Definition: XS7_Devices.cpp:28
int getDeviceByNameOrThrow(std::string) override
Definition: XS7_Devices.cpp:36
int getDeviceByName(std::string) override
int getDeviceByIDCODE(int) override
Definition: XS7_Devices.cpp:58
void setDevice(int, std::string="") override
void setDeviceByNameOrThrow(std::string) override
Definition: XS7_Devices.cpp:48
void setDeviceByIDCODEOrThrow(int) override
Definition: XS7_Devices.cpp:53
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