From 0d57b58c26725fca4ffa863cb2fdeb1eecc5a05a Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Sun, 11 Jul 2021 08:57:46 +0200 Subject: [PATCH] spiOverJtag: use build.py for all devices, add xc6slx45 --- spiOverJtag/Makefile | 25 +++++++++++++++----- spiOverJtag/build.py | 26 +++++++++++++++++---- spiOverJtag/spiOverJtag_xc6slx45csg324.bit | Bin 0 -> 1484501 bytes 3 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 spiOverJtag/spiOverJtag_xc6slx45csg324.bit diff --git a/spiOverJtag/Makefile b/spiOverJtag/Makefile index 581f1a6..ebc0544 100644 --- a/spiOverJtag/Makefile +++ b/spiOverJtag/Makefile @@ -1,13 +1,26 @@ -VIVADO := vivado -nolog -nojournal -mode batch -source -PARTS := xc7a35tcpg236 xc7a35tcsg324 xc7a35tftg256 xc7a50tcpg236 xc7a75tfgg484 xc7a100tfgg484 xc7a200tsbg484 xc7s50csga324 -BIT_FILES := $(addsuffix .bit,$(addprefix spiOverJtag_, $(PARTS))) +XILINX_PARTS := xc6slx45csg324 xc6slx100fgg484 \ + xc7a35tcpg236 xc7a35tcsg324 xc7a35tftg256 \ + xc7a50tcpg236 xc7a75tfgg484 xc7a100tfgg484 xc7a200tsbg484 \ + xc7s50csga324 +XILINX_BIT_FILES := $(addsuffix .bit,$(addprefix spiOverJtag_, $(XILINX_PARTS))) + +ALTERA_PARTS := 10cl025256 ep4ce2217 5ce223 +ALTERA_BIT_FILES := $(addsuffix .rbf, $(addprefix spiOverJtag_, $(ALTERA_PARTS))) + +BIT_FILES := $(ALTERA_BIT_FILES) $(XILINX_BIT_FILES) all: $(BIT_FILES) -$(BIT_FILES) : spiOverJtag_%.bit : tmp_%/spiOverJtag.runs/impl_1/xilinx_spiOverJtag.bit +$(XILINX_BIT_FILES) : spiOverJtag_%.bit : tmp_%/spiOverJtag.bit cp $< $@ -tmp_%/spiOverJtag.runs/impl_1/xilinx_spiOverJtag.bit : xilinx_spiOverJtag.vhd - $(VIVADO) xilinx_spiOverJtag.tcl -tclargs $* +tmp_%/spiOverJtag.bit : xilinx_spiOverJtag.v + ./build.py $* + +$(ALTERA_BIT_FILES): spiOverJtag_%.rbf: tmp_%/spiOverJtag.sof + quartus_cpf --option=bitstream_compression=off -c $< $@ + +tmp_%/spiOverJtag.sof: altera_spiOverJtag.v + ./build.py $* clean: -rm -rf tmp_* *.jou *.log .Xil diff --git a/spiOverJtag/build.py b/spiOverJtag/build.py index e761cf7..78855dc 100755 --- a/spiOverJtag/build.py +++ b/spiOverJtag/build.py @@ -39,7 +39,7 @@ elif subpart == "xc7s": family = "Spartan 7" tool = "vivado" elif subpart == "xc6s": - family = "Spartan 6" + family = "Spartan6" tool = "ise" else: print("Error: unknown device") @@ -47,6 +47,8 @@ else: if tool in ["ise", "vivado"]: pkg_name = { + "xc6slx45csg324" : "xc6s_csg324", + "xc6slx100fgg484" : "xc6s_fgg484", "xc7a35tcpg236" : "xc7a_cpg236", "xc7a35tcsg324" : "xc7a_csg324", "xc7a35tftg256" : "xc7a_ftg256", @@ -59,18 +61,29 @@ if tool in ["ise", "vivado"]: }[part] if tool == "ise": cst_type = "UCF" + tool_options = {'family': family, + 'device': { + "xc6slx45csg324": "xc6slx45", + "xc6slx100fgg484": "xc6slx100"}[part], + 'package': { + "xc6slx45csg324": "csg324", + "xc6slx100fgg484": "fgg384"}[part], + 'speed' : -3 + } else: cst_type = "xdc" - cst_file = currDir + "constr_" + pkg_name + "." + cst_type + tool_options = {'part': part+ '-1'} + cst_file = currDir + "constr_" + pkg_name + "." + cst_type.lower() files.append({'name': currDir + 'xilinx_spiOverJtag.v', 'file_type': 'verilogSource'}) files.append({'name': cst_file, 'file_type': cst_type}) - tool_options = {'part': part+ '-1'} else: full_part = { "10cl025256": "10CL025YU256C8G", "ep4ce2217" : "EP4CE22F17C6", - "5ce223" : "5CEFA2F23I7"}[part] + "5ce223" : "5CEFA2F23I7", + "5cse423" : "5CSEMA4U23C6", + "5cse623" : "5CSEBA6U23I7"}[part] files.append({'name': currDir + 'altera_spiOverJtag.v', 'file_type': 'verilogSource'}) files.append({'name': currDir + 'test_jtag.sdc', @@ -93,3 +106,8 @@ edam = {'name' : "spiOverJtag", backend = get_edatool(tool)(edam=edam, work_root=build_dir) backend.configure() backend.build() + +if tool == "vivado": + import shutil + shutil.copy("tmp_" + part + "/spiOverJtag.runs/impl_1/spiOverJtag.bit", + "tmp_" + part); diff --git a/spiOverJtag/spiOverJtag_xc6slx45csg324.bit b/spiOverJtag/spiOverJtag_xc6slx45csg324.bit new file mode 100644 index 0000000000000000000000000000000000000000..acaaec88ee556d0c1a879e0bb47059466c03332f GIT binary patch literal 1484501 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