1
0
mirror of https://git.code.sf.net/p/openocd/code synced 2024-11-24 19:56:23 +00:00
openocd/tcl/cpld/xilinx-xcu.cfg
Adam Novak 324469da57 cpld: update warning to suggest virtex2 refresh
virtex2 refresh replaced virtex2 program, but the even older programming
commands like xc6s_program still suggest the old, now-removed program
command. This changes the warnings to suggest the command that is still
there, and also adds some indication that you will need to use the .pld
name instead of the .tap name.

Change-Id: I292da62a95a9b414c69cdb1bba8a28dfd16a7336
Signed-off-by: Adam Novak <interfect@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8468
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Daniel Anselmi <danselmi@gmx.ch>
2024-09-07 11:39:22 +00:00

123 lines
4.0 KiB
INI

# SPDX-License-Identifier: GPL-2.0-or-later
# 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 various 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}
XCKU060_CIV {0x0381b093 6}
XCKU095 {0x03844093 6}
XCKU095_CIV {0x03845093 6}
XCKU3P {0x04A63093 6}
XCKU5P {0x04A62093 6}
XCKU9P {0x0484A093 6}
XCKU11P {0x04A4E093 6}
XCKU11P_CIV {0x04A51093 6}
XCKU13P {0x04A52093 6}
XCKU15P {0x04A56093 6}
XCKU15P_CIV {0x04A59093 6}
XCVU065 {0x03939093 6}
XCVU065_CIV {0x0393b093 6}
XCVU080 {0x03843093 6}
XCVU080_CIV {0x03845093 6}
XCVU095 {0x03842093 6}
XCVU2P {0x04aea093 6}
XCVU3P {0x04B39093 6}
XCVU3P_CIV {0x04b3d093 6}
XCAU10P {0x04AC4033 6}
XCAU10P_FFVB676 {0x04AC4093 6}
XCAU15P {0x04AC2033 6}
XCAU15P_FFVB676 {0x04AC2093 6}
XCAU20P {0x04A65093 6}
XCAU25P {0x04A64093 6}
XCKU5P_CIV {0x04A64093 6}
XCKU19P {0x04ACF093 6}
XCKU19P_CIV {0x04AD3093 6}
XCKU085 {0x0380F093 12}
XCKU115 {0x0390D093 12}
XCVU125 {0x0392D093 12}
XCVU125_CIV {0x0392f093 12}
XCVU5P {0x04B2B093 12}
XCVU5P_CIV {0x04b2f093 12}
XCVU7P {0x04B29093 12}
XCVU7P_CIV {0x04b2d093 12}
XCVU160 {0x03933093 18}
XCVU190 {0x03931093 18}
XCVU440 {0x0396D093 18}
XCVU440_CIV {0x0396f093 18}
XCVU9P {0x04B31093 18}
XCVU9P_CIV {0x04b35093 18}
XCVU11P {0x04B49093 18}
XCVU11P_CIV {0x04b4f093 18}
XCU200_FSGD2104 {0x04b37093 18}
XCU250 {0x04b57093 24}
XCVU13P {0x04B51093 24}
XCVU13P_CIV {0x04b55093 24}
XCVU15P {0x04ba3093 24}
XCVU19P {0x04ba1093 24}
XCVU19P_CIV {0x04ba5093 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 create $_CHIPNAME.pld virtex2 -chain-position $_CHIPNAME.tap -no_jstart
# set the correct instruction codes for jtag hub and
# at least the right code for jprogb, jstart and jshutdown for SSI devices
if { $_IRLEN == 6 } {
virtex2 set_user_codes $_CHIPNAME.pld 0x2 0x3 0x22 0x23
} elseif {$_IRLEN == 12 } {
puts "loading bitstream through jtag will not work, but reprogram (refresh)"
virtex2 set_instr_codes $_CHIPNAME.pld 0x905 0x904 0x2cb 0x30c 0x34d
virtex2 set_user_codes $_CHIPNAME.pld 0x0a4 0x0e4 0x8a4 0x8e4
} elseif {$_IRLEN == 18 } {
puts "loading bitstream through jtag will not work, but reprogram (refresh)"
virtex2 set_instr_codes $_CHIPNAME.pld 0x24905 0x24904 0x0b2cb 0x0c30c 0x0d34d
virtex2 set_user_codes $_CHIPNAME.pld 0x000a4 0x000e4 0x008a4 0x008e4
} else {
puts "loading bitstream through jtag will not work, but reprogram (refresh)"
virtex2 set_instr_codes $_CHIPNAME.pld 0x924905 0x924904 0x2cb2cb 0x30c30c 0x34d34d
virtex2 set_user_codes $_CHIPNAME.pld 0x0a4924 0x0e4924 0x8a4924 0x8e4924
}
set XCU_JSHUTDOWN 0x0d
set XCU_JPROGRAM 0x0b
set XCU_JSTART 0x0c
set XCU_BYPASS 0x3f
proc xcu_program {tap} {
echo "DEPRECATED! use 'virtex2 refresh XXXX.pld' not 'xcu_program'"
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
}