b705ea1fd1c606a4cad4064441ce53653630bd42
[fw/openocd] / tcl / cpld / xilinx-xc6s.cfg
1 # xilinx spartan6
2 # http://www.xilinx.com/support/documentation/user_guides/ug380.pdf
3
4 if { [info exists CHIPNAME] } {
5         set _CHIPNAME $CHIPNAME
6 } else {
7         set _CHIPNAME xc6s
8 }
9
10 # the 4 top bits (28:31) are the die stepping. ignore it.
11 jtag newtap $_CHIPNAME tap -irlen 6 -ignore-version \
12         -expected-id 0x04000093 \
13         -expected-id 0x04001093 \
14         -expected-id 0x04002093 \
15         -expected-id 0x04004093 \
16         -expected-id 0x04024093 \
17         -expected-id 0x04008093 \
18         -expected-id 0x04028093 \
19         -expected-id 0x0400E093 \
20         -expected-id 0x0402E093 \
21         -expected-id 0x04011093 \
22         -expected-id 0x04031093 \
23         -expected-id 0x0401D093 \
24         -expected-id 0x0403D093
25
26 pld device virtex2 $_CHIPNAME.tap
27
28 set XC6S_CFG_IN 0x05
29 set XC6S_JSHUTDOWN 0x0d
30 set XC6S_JPROGRAM 0x0b
31 set XC6S_JSTART 0x0c
32 set XC6S_BYPASS 0x3f
33
34 proc xc6s_program {tap} {
35         global XC6S_JSHUTDOWN XC6S_JPROGRAM XC6S_JSTART XC6S_BYPASS
36         irscan $tap $XC6S_JSHUTDOWN
37         irscan $tap $XC6S_JPROGRAM
38         irscan $tap $XC6S_JSTART
39         irscan $tap $XC6S_BYPASS
40 }
41
42 #xtp038 and xc3sprog approach
43 proc xc6s_program_iprog {tap} {
44         global XC6S_JSHUTDOWN XC6S_JSTART XC6S_BYPASS XC6S_CFG_IN
45         irscan $tap $XC6S_JSHUTDOWN
46         runtest 16
47         irscan $tap $XC6S_CFG_IN
48         # xtp038 IPROG 16bit flipped
49         drscan $tap 16 0xffff 16 0x9955 16 0x66aa 16 0x850c 16 0x7000 16 0x0004
50         irscan $tap $XC6S_JSTART
51         runtest 32
52         irscan $tap $XC6S_BYPASS
53         runtest 1
54 }