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