From 4c0f683f9fa768063461ad800a551c1a7bdd9ff8 Mon Sep 17 00:00:00 2001 From: Hans Baier Date: Sat, 14 May 2022 09:38:58 +0700 Subject: [PATCH] spiOverJtag: support xc7k420tffg901 --- spiOverJtag/Makefile | 3 +- spiOverJtag/build.py | 43 ++++++++++++------ spiOverJtag/constr_xc7k_ffg676.ucf | 6 +++ spiOverJtag/constr_xc7k_ffg900.ucf | 6 +++ spiOverJtag/constr_xc7k_ffg901.ucf | 6 +++ spiOverJtag/spiOverJtag_xc7k420tffg901.bit.gz | Bin 0 -> 19571 bytes 6 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 spiOverJtag/constr_xc7k_ffg676.ucf create mode 100644 spiOverJtag/constr_xc7k_ffg900.ucf create mode 100644 spiOverJtag/constr_xc7k_ffg901.ucf create mode 100644 spiOverJtag/spiOverJtag_xc7k420tffg901.bit.gz diff --git a/spiOverJtag/Makefile b/spiOverJtag/Makefile index f4201ca..7f86a61 100644 --- a/spiOverJtag/Makefile +++ b/spiOverJtag/Makefile @@ -5,7 +5,8 @@ XILINX_PARTS := xc3s500evq100 xc6slx16ftg256 xc6slx16csg324 xc6slx45csg324 xc6sl xc7a100tcsg324 xc7a100tfgg484 xc7a100tfgg676\ xc7a200tsbg484 \ xc7s25csga324 xc7s50csga324 \ - xc7k325tffg676 xc7k325tffg900 + xc7k325tffg676 xc7k325tffg900 \ + xc7k420tffg901 XILINX_BIT_FILES := $(addsuffix .bit.gz,$(addprefix spiOverJtag_, $(XILINX_PARTS))) ALTERA_PARTS := 10cl025256 ep4ce2217 ep4ce1523 5ce223 5ce423 5ce523 5ce927 diff --git a/spiOverJtag/build.py b/spiOverJtag/build.py index 86b495a..770229e 100755 --- a/spiOverJtag/build.py +++ b/spiOverJtag/build.py @@ -36,8 +36,14 @@ elif subpart == "xc7a": family = "Artix" tool = "vivado" elif subpart == "xc7k": - family = "Kintex 7" - tool = "vivado" + device_size = int(part.split('k')[1].split('t')[0]) + if device_size <= 160: + family = "Kintex 7" + tool = "vivado" + else: + family = "Kintex7" + tool = "ise" + speed = -2 elif subpart == "xc7s": family = "Spartan 7" tool = "vivado" @@ -73,6 +79,7 @@ if tool in ["ise", "vivado"]: "xc7a200tfbg484" : "xc7a_fbg484", "xc7k325tffg676" : "xc7k_ffg676", "xc7k325tffg900" : "xc7k_ffg900", + "xc7k420tffg901" : "xc7k_ffg901", "xc7s25csga324" : "xc7s_csga324", "xc7s50csga324" : "xc7s_csga324" }[part] @@ -80,19 +87,27 @@ if tool in ["ise", "vivado"]: cst_type = "UCF" tool_options = {'family': family, 'device': { - "xc3s500evq100": "xc3s500e", - "xc6slx16ftg256": "xc6slx16", - "xc6slx16csg324": "xc6slx16", - "xc6slx45csg324": "xc6slx45", - "xc6slx100fgg484": "xc6slx100", - "xc6slx150tfgg484": "xc6slx150t"}[part], + "xc3s500evq100": "xc3s500e", + "xc6slx16ftg256": "xc6slx16", + "xc6slx16csg324": "xc6slx16", + "xc6slx45csg324": "xc6slx45", + "xc6slx100fgg484": "xc6slx100", + "xc6slx150tfgg484": "xc6slx150t", + "xc7k325tffg676": "xc7k325t", + "xc7k325tffg900": "xc7k325t", + "xc7k420tffg901": "xc7k420t", + }[part], 'package': { - "xc3s500evq100": "vq100", - "xc6slx16ftg256": "ftg256", - "xc6slx16csg324": "csg324", - "xc6slx45csg324": "csg324", - "xc6slx100fgg484": "fgg384", - "xc6slx150tfgg484": "fgg484"}[part], + "xc3s500evq100": "vq100", + "xc6slx16ftg256": "ftg256", + "xc6slx16csg324": "csg324", + "xc6slx45csg324": "csg324", + "xc6slx100fgg484": "fgg384", + "xc6slx150tfgg484": "fgg484", + "xc7k325tffg676": "ffg676", + "xc7k325tffg900": "ffg900", + "xc7k420tffg901": "ffg901", + }[part], 'speed' : speed } else: diff --git a/spiOverJtag/constr_xc7k_ffg676.ucf b/spiOverJtag/constr_xc7k_ffg676.ucf new file mode 100644 index 0000000..09592cc --- /dev/null +++ b/spiOverJtag/constr_xc7k_ffg676.ucf @@ -0,0 +1,6 @@ +NET "csn" LOC = C23 | IOSTANDARD = LVCMOS33; +NET "sdi_dq0" LOC = B24 | IOSTANDARD = LVCMOS33; +NET "sdo_dq1" LOC = A25 | IOSTANDARD = LVCMOS33; +NET "wpn_dq2" LOC = B22 | IOSTANDARD = LVCMOS33; +NET "hldn_dq3" LOC = A22 | IOSTANDARD = LVCMOS33; + diff --git a/spiOverJtag/constr_xc7k_ffg900.ucf b/spiOverJtag/constr_xc7k_ffg900.ucf new file mode 100644 index 0000000..a89e557 --- /dev/null +++ b/spiOverJtag/constr_xc7k_ffg900.ucf @@ -0,0 +1,6 @@ +NET "csn" LOC = U19 | IOSTANDARD = LVCMOS33; +NET "sdi_dq0" LOC = P24 | IOSTANDARD = LVCMOS33; +NET "sdo_dq1" LOC = R25 | IOSTANDARD = LVCMOS33; +NET "wpn_dq2" LOC = R20 | IOSTANDARD = LVCMOS33; +NET "hldn_dq3" LOC = R21 | IOSTANDARD = LVCMOS33; + diff --git a/spiOverJtag/constr_xc7k_ffg901.ucf b/spiOverJtag/constr_xc7k_ffg901.ucf new file mode 100644 index 0000000..de2dfbe --- /dev/null +++ b/spiOverJtag/constr_xc7k_ffg901.ucf @@ -0,0 +1,6 @@ +NET "csn" LOC = V26 | IOSTANDARD = LVCMOS33; +NET "sdi_dq0" LOC = R30 | IOSTANDARD = LVCMOS33; +NET "sdo_dq1" LOC = T30 | IOSTANDARD = LVCMOS33; +NET "wpn_dq2" LOC = R28 | IOSTANDARD = LVCMOS33; +NET "hldn_dq3" LOC = T28 | IOSTANDARD = LVCMOS33; + diff --git a/spiOverJtag/spiOverJtag_xc7k420tffg901.bit.gz b/spiOverJtag/spiOverJtag_xc7k420tffg901.bit.gz new file mode 100644 index 0000000000000000000000000000000000000000..f8833b087aa441f15c4390be226be3976933192b GIT binary patch literal 19571 zcmeI&X;hQP8UWxR6;mi+8z726z=c?rfTB?E=%n~++eh-m^%D3Gve2?-b$Sz=I@^qza_xoywAKl{Ub=Kb@{`<-vznR&i* z=Fbe`3KTl>adPlF)pId8EHR95G&bmKR4^_UGBwP>`*|8bo}Y_0jm)(T=cnE*K}Qwo zz&%TGMx!CI!)|C-6MXsK%a(s>X5ao%&+i>b!J&O6ssGEc_rX#QmA zj1id|ntKZ!#e3Aos*jsl@JnJBkY;XmIt0atS$U2o+mTNe55Rfs#Sx*KRU2uZ`uXTV zvSh-1meCrU_#mD>{ zq_$DQe9zq&+gnTH0_97nNuteu!|>?tAAP`?f$@M_2aAn}OfW_yo|y-B|F_ zps?mzRA^jabazyD={fVk?Wc1ueH}&5#WzT#v^I_~z2PCkPZ)>uH~Ex8>A)q|?qf z00e*l5C8%|;Qv-2vbxcMkkXy8&&f`I-$;U#adb-##(%2O9i?qCY(@O$xNG#`oyGT8 zW-sVFm5P>qi&NEuhhIIAJ)^^Sv1cqQhZK<)UDW2Iv9(b%cNm!-San~|*{@`pY@?RL zN^XjQXsJ6m&x5x-eT_*bg)QYYj)zq^uQKd)>+0`a5agI@wOe8_w|EHpr_-PuA zbx*Ea$B?1>C87Pl-jo;bL^`2L0;t5vXR-wvQ`t_4-|dAC(=BvvQBGzt7Ws-P(|fHO z5|+Gq=xI@=U4mI~5art0uUMg6da;`?z3WC1aZG@jYT++b&16I*K?+N5leWIb<`Qm3 zCUpvX0+|C!VaIay8Wq8sp1ytA+q-#VN&YDQ{F_4si!*B+D}g3L`!9dLP)c244Bq`N ziT-RwpF>&|RuoyCC2z(%RG7N&nAk`|j1$XJN>1%bz^E3I6Qaz@kbmj^r(}!gQv5>a z7h8nJTzS3wt!*Xcu#eTzKdQO*R*~A7d)Lw+Du4R=Z_PN(*(-j9Il7Zhu+!pong;*l zRL`M&;Hk|jygg&&;aDdZQDmI;CZMGjN-2Kah{SASx4jAZ2pYn4Ma7D7aq^vJCz$?d zYds9C1Vt3%@VEaq<{xR{6Y>0`w=UMuquG}fM^HU9Ns7U-&>W3DT1OeSNyeLg$Y4H{ zF00v^U4cPFu>W2IGVuWkQO)Ki+KlbqT>6b5lbW@!4|#l%{*v=$pz7G2P`8k)`pK~z zkHCtbjPz*4x@nP``9OF>28qogwm(2U6EzjCdQ-;nTjstsiDscT^)s_ukJ@+=oQk%L((otJfRh*$i5;OtO90 z6nR2()!z|GNoCaMuO)XFN8G7N(YM};B&6cuy@DU&QW`Q&4sJ%kRrfg`7k>bOh#vQJ z?e$vH(U^I4`vBy^7YhG#_^MY$FvXAW7M$Q+*4j9+yf9tL&ZEr2l={SDc1>wWkwAm# z#oeL}n{XP_wrxtA)e@v-B0P9E%q5cbP(97+Q@SfCXvAw1j_l_bqV?~pwc9NE$a8B8 zoxXJ__q0sx*D}NOox%40hxhy-&qpJ@;tn+`5eAu1uN1|PChaFkdg1{>;ltUk0bs(Wm-z#@&RoE&@Ko?{w=@O1_I~eFLHT;28Ngz8?8H zX_4I4_tU~}JCKmQEZ+yBrC%H=YG;x=Uaobi?84cRc>Mtd>KM*Pf00e*l5C8%|00;m9 zAOHk_01yBIKmZ5;0U!VbfB+Bx0zlw>7vLKi=37G#t88jZAArupZ2Rn5i1(GEf#TTp zU8vLTHYcFCvuTNll}B-z)D7?5O$RVxAOHk_01yBI@4tYe_j?^#Peaqx8*;(DED4^) ti+g)Dn^f*d%8nS8*4bAUxh?E+e?*^~TfoSa=v<}