tcl: add SPDX tag
[fw/openocd] / tcl / cpld / xilinx-xcu.cfg
1 # SPDX-License-Identifier: GPL-2.0-or-later
2
3 # Xilinx Ultrascale (Kintex, Virtex, Zynq)
4 # https://www.xilinx.com/support/documentation/user_guides/ug570-ultrascale-configuration.pdf
5
6 if { [info exists CHIPNAME] } {
7         set _CHIPNAME $CHIPNAME
8 } else {
9         set _CHIPNAME xcu
10 }
11
12 # The cvarious chips in the Ultrascale family have different IR length.
13 # Set $CHIP before including this file to determine the device.
14 array set _XCU_DATA {
15         XCKU025 {0x03824093 6}
16         XCKU035 {0x03823093 6}
17         XCKU040 {0x03822093 6}
18         XCKU060 {0x03919093 6}
19         XCKU095 {0x03844093 6}
20         XCKU3P {0x04A63093 6}
21         XCKU5P {0x04A62093 6}
22         XCKU9P {0x0484A093 6}
23         XCKU11P {0x04A4E093 6}
24         XCKU13P {0x04A52093 6}
25         XCKU15P {0x04A56093 6}
26         XCVU065 {0x03939093 6}
27         XCVU080 {0x03843093 6}
28         XCVU095 {0x03842093 6}
29         XCVU3P {0x04B39093 6}
30         XCKU085 {0x0380F093 12}
31         XCKU115 {0x0390D093 12}
32         XCVU125 {0x0392D093 12}
33         XCVU5P {0x04B2B093 12}
34         XCVU7P {0x04B29093 12}
35         XCVU160 {0x03933093 18}
36         XCVU190 {0x03931093 18}
37         XCVU440 {0x0396D093 18}
38         XCVU9P {0x04B31093 18}
39         XCVU11P {0x04B49093 18}
40         XCVU13P {0x04B51093 24}
41 }
42
43 if { ![info exists CHIP] } {
44         error "set CHIP to one of "[concat [array names _XCU_DATA]]
45 }
46
47 if { ![llength [array names _XCU_DATA $CHIP]] } {
48         error "unknown CHIP: "$CHIP
49 }
50
51 set _EXPID [lindex $_XCU_DATA($CHIP) 0]
52 set _IRLEN [lindex $_XCU_DATA($CHIP) 1]
53
54 # the 4 top bits (28:31) are the die stepping/revisions. ignore it.
55 jtag newtap $_CHIPNAME tap -irlen $_IRLEN -ignore-version -expected-id $_EXPID
56
57 pld device virtex2 $_CHIPNAME.tap 1
58
59 set XCU_JSHUTDOWN 0x0d
60 set XCU_JPROGRAM 0x0b
61 set XCU_JSTART 0x0c
62 set XCU_BYPASS 0x3f
63
64 proc xcu_program {tap} {
65         global XCU_JSHUTDOWN XCU_JPROGRAM XCU_JSTART XCU_BYPASS
66         irscan $tap $XCU_JSHUTDOWN
67         irscan $tap $XCU_JPROGRAM
68         runtest 60000
69         #JSTART prevents this from working...
70         #irscan $tap $XCU_JSTART
71         runtest 2000
72         irscan $tap $XCU_BYPASS
73         runtest 2000
74 }