From 9aa0e72afb4e1fbf24bb93ab9829c4c10af4790d Mon Sep 17 00:00:00 2001 From: nulltek Date: Fri, 7 Apr 2023 15:28:29 +1200 Subject: [PATCH] Add Support for Xilinx Artix-7 a25t (xc7a25t) --- doc/FPGAs.yml | 1 + spiOverJtag/Makefile | 1 + spiOverJtag/build.py | 2 ++ spiOverJtag/constr_xc7a_cpg238.xdc | 11 +++++++++++ spiOverJtag/constr_xc7a_csg325.xdc | 11 +++++++++++ spiOverJtag/spiOverJtag_xc7a25tcpg238.bit.gz | Bin 0 -> 9756 bytes spiOverJtag/spiOverJtag_xc7a25tcsg325.bit.gz | Bin 0 -> 9755 bytes spiOverJtag/xilinx_spiOverJtag.tcl | 4 ++++ src/part.hpp | 1 + 9 files changed, 31 insertions(+) create mode 100644 spiOverJtag/constr_xc7a_cpg238.xdc create mode 100644 spiOverJtag/constr_xc7a_csg325.xdc create mode 100644 spiOverJtag/spiOverJtag_xc7a25tcpg238.bit.gz create mode 100644 spiOverJtag/spiOverJtag_xc7a25tcsg325.bit.gz diff --git a/doc/FPGAs.yml b/doc/FPGAs.yml index 3cf4671..0f97f9e 100644 --- a/doc/FPGAs.yml +++ b/doc/FPGAs.yml @@ -182,6 +182,7 @@ Xilinx: - Description: Artix 7 Model: + - xc7a25t - xc7a35ti - xc7a50t - xc7a75t diff --git a/spiOverJtag/Makefile b/spiOverJtag/Makefile index 050faaf..7093016 100644 --- a/spiOverJtag/Makefile +++ b/spiOverJtag/Makefile @@ -1,5 +1,6 @@ XILINX_PARTS := xc3s500evq100 xc6slx9tqg144 xc6slx16ftg256 xc6slx16csg324 xc6slx45csg324 xc6slx100fgg484 \ xc6slx150tfgg484 xc6slx150tcsg484 \ + xc7a25tcpg238 xc7a25tcsg325 \ xc7a35tcpg236 xc7a35tcsg324 xc7a35tftg256 \ xc7a50tcsg324 xc7a50tcpg236 xc7a75tfgg484 \ xc7a100tcsg324 xc7a100tfgg484 xc7a100tfgg676\ diff --git a/spiOverJtag/build.py b/spiOverJtag/build.py index 214ac36..5c22cac 100755 --- a/spiOverJtag/build.py +++ b/spiOverJtag/build.py @@ -72,6 +72,8 @@ if tool in ["ise", "vivado"]: "xc6slx100fgg484" : "xc6s_fgg484", "xc6slx150tcsg484" : "xc6s_csg484", "xc6slx150tfgg484" : "xc6s_fgg484", + "xc7a25tcpg238" : "xc7a_cpg238", + "xc7a25tcsg325" : "xc7a_csg325", "xc7a35tcpg236" : "xc7a_cpg236", "xc7a35tcsg324" : "xc7a_csg324", "xc7a35tftg256" : "xc7a_ftg256", diff --git a/spiOverJtag/constr_xc7a_cpg238.xdc b/spiOverJtag/constr_xc7a_cpg238.xdc new file mode 100644 index 0000000..9665243 --- /dev/null +++ b/spiOverJtag/constr_xc7a_cpg238.xdc @@ -0,0 +1,11 @@ +set_property CFGBVS VCCO [current_design] +set_property CONFIG_VOLTAGE 3.3 [current_design] +set_property BITSTREAM.CONFIG.SPI_BUSWIDTH {4} [current_design] +set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] + +set_property -dict {PACKAGE_PIN G19 IOSTANDARD LVCMOS33} [get_ports {csn}]; +set_property -dict {PACKAGE_PIN D18 IOSTANDARD LVCMOS33} [get_ports {sdi_dq0}]; +set_property -dict {PACKAGE_PIN D19 IOSTANDARD LVCMOS33} [get_ports {sdo_dq1}]; +set_property -dict {PACKAGE_PIN E19 IOSTANDARD LVCMOS33} [get_ports {wpn_dq2}]; +set_property -dict {PACKAGE_PIN F19 IOSTANDARD LVCMOS33} [get_ports {hldn_dq3}]; + diff --git a/spiOverJtag/constr_xc7a_csg325.xdc b/spiOverJtag/constr_xc7a_csg325.xdc new file mode 100644 index 0000000..714880a --- /dev/null +++ b/spiOverJtag/constr_xc7a_csg325.xdc @@ -0,0 +1,11 @@ +set_property CFGBVS VCCO [current_design] +set_property CONFIG_VOLTAGE 3.3 [current_design] +set_property BITSTREAM.CONFIG.SPI_BUSWIDTH {4} [current_design] +set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] + +set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS33} [get_ports {csn}]; +set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS33} [get_ports {sdi_dq0}]; +set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports {sdo_dq1}]; +set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports {wpn_dq2}]; +set_property -dict {PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports {hldn_dq3}]; + diff --git a/spiOverJtag/spiOverJtag_xc7a25tcpg238.bit.gz b/spiOverJtag/spiOverJtag_xc7a25tcpg238.bit.gz new file mode 100644 index 0000000000000000000000000000000000000000..a77fb2a783bb8642175d4975610fc2e30b5877a2 GIT binary patch literal 9756 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 fpga_list = { {0x0a014c35, {"anlogic", "eagle s20", "EG4S20BG256", 8}}, {0x00004c37, {"anlogic", "elf2", "EF2M45", 8}}, + {0x037c2093, {"xilinx", "artix a7 25t", "xc7a25", 6}}, {0x0362D093, {"xilinx", "artix a7 35t", "xc7a35", 6}}, {0x0362c093, {"xilinx", "artix a7 50t", "xc7a50t", 6}}, {0x03632093, {"xilinx", "artix a7 75t", "xc7a75t", 6}},