From 7478e2804b47a680e926f9ab426f5493e5da3087 Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Mon, 8 Jun 2026 12:24:02 -0700 Subject: [PATCH] Add support for alibaba cloud xcku3p card --- doc/boards.yml | 7 + spiOverJtag/Makefile | 1 + spiOverJtag/build.py | 231 +++++++++--------- spiOverJtag/constr_xcku3p_ffvb676.xdc | 7 + spiOverJtag/spiOverJtag_xcku3p-ffvb676.bit.gz | Bin 0 -> 139098 bytes spiOverJtag/xilinx_spiOverJtag.v | 4 +- src/board.hpp | 1 + 7 files changed, 140 insertions(+), 111 deletions(-) create mode 100644 spiOverJtag/constr_xcku3p_ffvb676.xdc create mode 100644 spiOverJtag/spiOverJtag_xcku3p-ffvb676.bit.gz diff --git a/doc/boards.yml b/doc/boards.yml index e77df37..ac59047 100644 --- a/doc/boards.yml +++ b/doc/boards.yml @@ -13,6 +13,13 @@ Memory: OK Flash: OK +- ID: alibaba_u3p + Description: AS02MC04 (Alibaba Cloud) Kintex UltraScale+ NIC + URL: https://www.controlpaths.com/2026/01/18/as02mc04-kintex-ultrascale-plus/ + FPGA: Kintex UltraScale+ xcku3p-ffvb676 + Memory: OK + Flash: OK + - ID: alinx_ax7201 Description: AX7201 FPGA Dev Board & Kit with AMD Artix 7 URL: https://www.en.alinx.com/Product/FPGA-Development-Boards/Artix-7/AX7201.html diff --git a/spiOverJtag/Makefile b/spiOverJtag/Makefile index 0a5bf15..7ac1da4 100644 --- a/spiOverJtag/Makefile +++ b/spiOverJtag/Makefile @@ -10,6 +10,7 @@ XILINX_PARTS := xc3s500evq100 \ xc7k325tfbg900 xc7k325tffg676 xc7k325tffg900 \ xc7k420tffg901 \ xcku3p-ffva676 \ + xcku3p-ffvb676 \ xc7vx330tffg1157 \ xcku040-ffva1156 xcku060-ffva1156 \ xcku5p-ffvb676 \ diff --git a/spiOverJtag/build.py b/spiOverJtag/build.py index 595df7f..a1d1163 100755 --- a/spiOverJtag/build.py +++ b/spiOverJtag/build.py @@ -37,7 +37,7 @@ packages = { }, } -if len(os.sys.argv) != 3 : +if len(os.sys.argv) != 3: print("missing board flash type params") os.sys.exit() part = os.sys.argv[1] @@ -46,16 +46,16 @@ flash_type = os.sys.argv[2] # Check file type keyword assert flash_type in ["spi", "bpi"] -build_dir="tmp_" + part +build_dir = "tmp_" + part if not os.path.isdir(build_dir): try: os.mkdir(build_dir) except OSError: - print ("Creation of the directory %s failed" % build_dir) + print("Creation of the directory %s failed" % build_dir) else: - print ("Successfully created the directory %s " % build_dir) + print("Successfully created the directory %s " % build_dir) -currDir = os.path.abspath(os.path.curdir) + '/' +currDir = os.path.abspath(os.path.curdir) + "/" files = [] parameters = {} pkg_name = None @@ -63,22 +63,22 @@ pkg = None model = "" subpart = part[0:4].lower() -if subpart == '10cl': +if subpart == "10cl": family = "Cyclone 10 LP" tool = "quartus" -elif subpart == 'ep4c': +elif subpart == "ep4c": family = "Cyclone IV E" tool = "quartus" -elif subpart[0:2] == '5c': +elif subpart[0:2] == "5c": family = "Cyclone V" tool = "quartus" - files.append({'name': currDir + 'constr_cycloneV.tcl', - 'file_type': 'tclSource'}) -elif subpart[0:2] == '5s': + files.append({"name": currDir + "constr_cycloneV.tcl", + "file_type": "tclSource"}) +elif subpart[0:2] == "5s": family = "Stratix V" tool = "quartus" - files.append({'name': currDir + 'constr_cycloneV.tcl', - 'file_type': 'tclSource'}) + files.append({"name": currDir + "constr_cycloneV.tcl", + "file_type": "tclSource"}) elif subpart == "xc7a": family = "Artix" tool = "vivado" @@ -87,7 +87,7 @@ elif subpart == "xc7v": family = "Virtex 7" tool = "vivado" elif subpart == "xc7k": - device_size = int(part.split('k')[1].split('t')[0]) + device_size = int(part.split("k")[1].split("t")[0]) if flash_type == "bpi" or device_size <= 160: family = "Kintex 7" tool = "vivado" @@ -137,8 +137,8 @@ if model in ["xc7a", "xc7s"]: os.sys.exit() pkg_name = f"{model}_{pkg}" if model in ["xc7k"]: - m = re.match(r"(xc7k\d+t)(\w+)", part) - pkg = m.group(2) + m = re.match(r"(xc7k\d+t)(\w+)", part) + pkg = m.group(2) pkg_name = f"{model}_{pkg}" if tool == "ise": model = m.group(1) @@ -164,125 +164,136 @@ if tool in ["ise", "vivado"]: "xcvu9p-flga2104" : "xcvu9p_flga2104", "xcvu37p-fsvh2892" : "xcvu37p_fsvh2892", "xcku3p-ffva676" : "xcku3p_ffva676", + "xcku3p-ffvb676" : "xcku3p_ffvb676", "xcku5p-ffvb676" : "xcku5p_ffvb676", "xcau10p-ffvb676" : "xcau10p_ffvb676", "xcau15p-ffvb676" : "xcau15p_ffvb676", }.get(part, pkg_name) if tool == "ise": cst_type = "UCF" - tool_options = {'family': family, - 'device': { - "xc3s500evq100": "xc3s500e", - "xc6slx9tqg144": "xc6slx9", - "xc6slx9csg324": "xc6slx9", - "xc6slx16ftg256": "xc6slx16", - "xc6slx16csg324": "xc6slx16", - "xc6slx25csg324": "xc6slx25", - "xc6slx25tcsg324": "xc6slx25t", - "xc6slx45csg324": "xc6slx45", - "xc6slx45tfgg484": "xc6slx45t", - "xc6slx100fgg484": "xc6slx100", - "xc6slx150tcsg484": "xc6slx150t", - "xc6slx150tfgg484": "xc6slx150t", - "xc6vlx130tff784": "xc6vlx130t", - }.get(part, model), - 'package': { - "xc3s500evq100": "vq100", - "xc6slx9tqg144": "tqg144", - "xc6slx9csg324": "csg324", - "xc6slx16ftg256": "ftg256", - "xc6slx16csg324": "csg324", - "xc6slx25csg324": "csg324", - "xc6slx25tcsg324": "csg324", - "xc6slx45csg324": "csg324", - "xc6slx45tfgg484": "fgg484", - "xc6slx100fgg484": "fgg484", - "xc6slx150tcsg484": "csg484", - "xc6slx150tfgg484": "fgg484", - "xc6vlx130tff784": "ff784", - }.get(part, pkg), - 'speed' : speed - } + tool_options = { + "family": family, + "device": { + "xc3s500evq100" : "xc3s500e", + "xc6slx9tqg144" : "xc6slx9", + "xc6slx9csg324" : "xc6slx9", + "xc6slx16ftg256" : "xc6slx16", + "xc6slx16csg324" : "xc6slx16", + "xc6slx25csg324" : "xc6slx25", + "xc6slx25tcsg324" : "xc6slx25t", + "xc6slx45csg324" : "xc6slx45", + "xc6slx45tfgg484" : "xc6slx45t", + "xc6slx100fgg484" : "xc6slx100", + "xc6slx150tcsg484" : "xc6slx150t", + "xc6slx150tfgg484" : "xc6slx150t", + "xc6vlx130tff784" : "xc6vlx130t", + }.get(part, model), + "package": { + "xc3s500evq100" : "vq100", + "xc6slx9tqg144" : "tqg144", + "xc6slx9csg324" : "csg324", + "xc6slx16ftg256" : "ftg256", + "xc6slx16csg324" : "csg324", + "xc6slx25csg324" : "csg324", + "xc6slx25tcsg324" : "csg324", + "xc6slx45csg324" : "csg324", + "xc6slx45tfgg484" : "fgg484", + "xc6slx100fgg484" : "fgg484", + "xc6slx150tcsg484" : "csg484", + "xc6slx150tfgg484" : "fgg484", + "xc6vlx130tff784" : "ff784", + }.get(part, pkg), + "speed" : speed, + } else: cst_type = "xdc" # Artix/Spartan 7 Specific use case: if family in ["Artix", "Spartan 7"]: - tool_options = {'part': f"{device}{pkg}-1"} + tool_options = {"part": f"{device}{pkg}-1"} elif family == "Xilinx UltraScale": if part in ["xcvu9p-flga2104", "xcku5p-ffvb676"]: - tool_options = {'part': part + '-1-e'} - parameters["secondaryflash"]= { - 'datatype': 'int', - 'paramtype': 'vlogdefine', - 'description': 'secondary flash', - 'default': 1} + tool_options = {"part": part + "-1-e"} + parameters["secondaryflash"] = { + "datatype": "int", + "paramtype": "vlogdefine", + "description": "secondary flash", + "default": 1, + } elif part == "xcku3p-ffva676": - tool_options = {'part': part + '-2-e'} + tool_options = {"part": part + "-2-e"} + elif part == "xcku3p-ffvb676": + tool_options = {"part": part + "-2-e"} elif part == "xcvu37p-fsvh2892": - tool_options = {'part': part + '-2L-e'} + tool_options = {"part": part + "-2L-e"} elif part in ["xcku040-ffva1156", "xcku060-ffva1156"]: - tool_options = {'part': part + '-2-e'} - parameters["secondaryflash"]= { - 'datatype': 'int', - 'paramtype': 'vlogdefine', - 'description': 'secondary flash', - 'default': 1} + tool_options = {"part": part + "-2-e"} + parameters["secondaryflash"] = { + "datatype" : "int", + "paramtype" : "vlogdefine", + "description" : "secondary flash", + "default" : 1, + } elif part == "xcau10p-ffvb676": - tool_options = {'part': part + '-1-e'} + tool_options = {"part": part + "-1-e"} elif part == "xcau15p-ffvb676": - tool_options = {'part': part + '-2-e'} + tool_options = {"part": part + "-2-e"} else: - tool_options = {'part': part + '-1'} + tool_options = {"part": part + "-1"} cst_file = currDir + "constr_" + pkg_name + "." + cst_type.lower() - files.append({'name': os.path.join(currDir, f"xilinx_{flash_type}OverJtag.v"), - 'file_type': 'verilogSource'}) - files.append({'name': cst_file, 'file_type': cst_type}) + files.append({"name": os.path.join(currDir, f"xilinx_{flash_type}OverJtag.v"), + "file_type": "verilogSource"}) + files.append({"name": cst_file, "file_type": cst_type}) else: # Altera only support SPI mode. assert flash_type in ["spi"] full_part = { - "10cl016484" : "10CL016YU484C8G", - "10cl025256" : "10CL025YU256C8G", - "10cl055484" : "10CL055YU484C8G", - "10cl006144" : "10CL006YE144C8G", - "ep4cgx15027": "EP4CGX150DF27I7", - "ep4ce11523" : "EP4CE115F23C7", - "ep4ce2217" : "EP4CE22F17C6", - "ep4ce1523" : "EP4CE15F23C8", - "ep4ce1017" : "EP4CE10F17C8", - "ep4ce622" : "EP4CE6E22C8", - "5ce215" : "5CEBA2U15C8", - "5ce223" : "5CEFA2F23I7", - "5ce523" : "5CEFA5F23I7", - "5ce423" : "5CEBA4F23C8", - "5ce927" : "5CEBA9F27C7", - "5cse423" : "5CSEMA4U23C6", - "5cse623" : "5CSEBA6U23I7", - "5sgsd5" : "5SGSMD5K2F40I3"}[part] - files.append({'name': currDir + 'altera_spiOverJtag.v', - 'file_type': 'verilogSource'}) - files.append({'name': currDir + 'altclkctrl_inst.v', - 'file_type': 'verilogSource'}) - files.append({'name': currDir + 'altera_spiOverJtag.sdc', - 'file_type': 'SDC'}) - tool_options = {'device': full_part, 'family':family} + "10cl016484" : "10CL016YU484C8G", + "10cl025256" : "10CL025YU256C8G", + "10cl055484" : "10CL055YU484C8G", + "10cl006144" : "10CL006YE144C8G", + "ep4cgx15027" : "EP4CGX150DF27I7", + "ep4ce11523" : "EP4CE115F23C7", + "ep4ce2217" : "EP4CE22F17C6", + "ep4ce1523" : "EP4CE15F23C8", + "ep4ce1017" : "EP4CE10F17C8", + "ep4ce622" : "EP4CE6E22C8", + "5ce215" : "5CEBA2U15C8", + "5ce223" : "5CEFA2F23I7", + "5ce523" : "5CEFA5F23I7", + "5ce423" : "5CEBA4F23C8", + "5ce927" : "5CEBA9F27C7", + "5cse423" : "5CSEMA4U23C6", + "5cse623" : "5CSEBA6U23I7", + "5sgsd5" : "5SGSMD5K2F40I3", + }[part] + files.append({"name": currDir + "altera_spiOverJtag.v", + "file_type": "verilogSource"}) + files.append({"name": currDir + "altclkctrl_inst.v", + "file_type": "verilogSource"}) + files.append({"name": currDir + "altera_spiOverJtag.sdc", + "file_type": "SDC"}) + tool_options = {"device": full_part, "family": family} -files.append({'name': os.path.join(currDir, f"{flash_type}OverJtag_core.v"), - 'file_type': 'verilogSource'}) +files.append({ + "name" : os.path.join(currDir, f"{flash_type}OverJtag_core.v"), + "file_type" : "verilogSource", +}) -parameters[family.lower().replace(' ', '')]= { - 'datatype': 'int', - 'paramtype': 'vlogdefine', - 'description': 'fpga family', - 'default': 1} +parameters[family.lower().replace(" ", "")] = { + "datatype": "int", + "paramtype": "vlogdefine", + "description": "fpga family", + "default": 1 +} -edam = {'name' : f"{flash_type}OverJtag", - 'files': files, - 'tool_options': {tool: tool_options}, - 'parameters': parameters, - 'toplevel' : f"{flash_type}OverJtag", +edam = { + "name" : f"{flash_type}OverJtag", + "files" : files, + "tool_options" : {tool: tool_options}, + "parameters" : parameters, + "toplevel" : f"{flash_type}OverJtag", } backend = get_edatool(tool)(edam=edam, work_root=build_dir) @@ -290,13 +301,13 @@ backend.configure() backend.build() if tool in ["vivado", "ise"]: + import gzip import shutil import subprocess - import gzip # Compress bitstream. - with open(f"tmp_{part}/{flash_type}OverJtag.bit", 'rb') as bit: - with gzip.open(f"{flash_type}OverJtag_{part}.bit.gz", 'wb', compresslevel=9) as bit_gz: + with open(f"tmp_{part}/{flash_type}OverJtag.bit", "rb") as bit: + with gzip.open(f"{flash_type}OverJtag_{part}.bit.gz", "wb", compresslevel=9) as bit_gz: shutil.copyfileobj(bit, bit_gz) # Create Symbolic links for all supported packages — only when building diff --git a/spiOverJtag/constr_xcku3p_ffvb676.xdc b/spiOverJtag/constr_xcku3p_ffvb676.xdc new file mode 100644 index 0000000..bc4bb4a --- /dev/null +++ b/spiOverJtag/constr_xcku3p_ffvb676.xdc @@ -0,0 +1,7 @@ +set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] +set_property CONFIG_VOLTAGE 1.8 [current_design] +# Table 1-2 from UG570 +set_property CFGBVS GND [current_design] + +# Primary QSPI flash +# Connection done through the STARTUPE3 block diff --git a/spiOverJtag/spiOverJtag_xcku3p-ffvb676.bit.gz b/spiOverJtag/spiOverJtag_xcku3p-ffvb676.bit.gz new file mode 100644 index 0000000000000000000000000000000000000000..db2f2d7d444f361980dae8617a4e27e202b00041 GIT binary patch literal 139098 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%0DD8%@zjIO?O>q&%F$d^D|M16TTVB|QZb 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 lsOA@k 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 literal 0 HcmV?d00001 diff --git a/spiOverJtag/xilinx_spiOverJtag.v b/spiOverJtag/xilinx_spiOverJtag.v index 4406029..a3e0dd8 100644 --- a/spiOverJtag/xilinx_spiOverJtag.v +++ b/spiOverJtag/xilinx_spiOverJtag.v @@ -73,11 +73,13 @@ module spiOverJtag `ifdef spartan3e assign sck = drck; `else // !spartan6 && !spartan3e + `ifdef xilinxultrascale assign sck = drck; wire [3:0] di; assign sdo_dq1 = di[1]; - wire [3:0] do = {hldn_dq3, wpn_dq2, 1'b0, sdi_dq0}; + + wire [3:0] do = {hldn_dq3, wpn_dq2, 1'b0, sdi_dq0}; wire [3:0] dts = 4'b0010; // secondary BSCANE3 signals wire sel_sec, spi_clk_sec; diff --git a/src/board.hpp b/src/board.hpp index 9584ee0..6d56bb6 100644 --- a/src/board.hpp +++ b/src/board.hpp @@ -118,6 +118,7 @@ static std::map board_list = { JTAG_BOARD("litex-acorn-baseboard-mini", "xc7a200tsbg484", "", SPI_FLASH, 0, 0, CABLE_DEFAULT), JTAG_BOARD("alchitry_au", "xc7a35tftg256", "ft2232", SPI_FLASH, 0, 0, CABLE_DEFAULT), JTAG_BOARD("alchitry_au_plus","xc7a100tftg256", "ft2232", SPI_FLASH, 0, 0, CABLE_DEFAULT), + JTAG_BOARD("alibaba_u3p", "xcku3p-ffvb676", "", SPI_FLASH, 0, 0, CABLE_DEFAULT), JTAG_BOARD("alinx_ax516", "xc6slx16csg324", "", SPI_FLASH, 0, 0, CABLE_DEFAULT), JTAG_BOARD("alinx_ax7101", "xc7a100tfgg484", "", SPI_FLASH, 0, 0, CABLE_DEFAULT), JTAG_BOARD("alinx_ax7102", "xc7a100tfgg484", "", SPI_FLASH, 0, 0, CABLE_DEFAULT),