xilinx-xcu: add Xilinx Ultrascale tap data
The Ultrascale series is a bit more complicated to handle since with the stacked and interconnected dies the IR gets longer. This adds support for all currently known chips from the Ultrascale family. Change-Id: Ibac325dd6fadc76f73cc682b1c62c1a5f39f0786 Signed-off-by: Robert Jordens <jordens@gmail.com> Reviewed-on: http://openocd.zylin.com/4188 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>riscv-compliance-dev
parent
2231da8ec4
commit
7944ebb694
|
@ -0,0 +1,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
|
||||||
|
}
|
Loading…
Reference in New Issue