summaryrefslogtreecommitdiff
path: root/platform_alchitry_pt.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2025-08-29 19:54:33 +0200
committerYuval Adam <_@yuv.al>2025-08-29 19:54:33 +0200
commit4f9dc0d6456ff9da22b44ff46d4ac52500fbeb27 (patch)
tree648f9b7e93507e92c00cc729932cbee3d458e47d /platform_alchitry_pt.py
parentdb54a0f41681cf5af4a98bbe9ceb0e25bc992562 (diff)
Update board definition
Diffstat (limited to 'platform_alchitry_pt.py')
-rw-r--r--platform_alchitry_pt.py135
1 files changed, 63 insertions, 72 deletions
diff --git a/platform_alchitry_pt.py b/platform_alchitry_pt.py
index 9964ecc..8a2c895 100644
--- a/platform_alchitry_pt.py
+++ b/platform_alchitry_pt.py
@@ -12,86 +12,71 @@ class AlchitryPtPlatform(XilinxPlatform):
default_clk = "clk100"
resources = [
- Resource("clk100", 0, Pins("N14", dir="i"),
+ # 100MHz clock - using official pin from Alchitry Labs
+ Resource("clk100", 0, Pins("W19", dir="i"),
Clock(100e6), Attrs(IOSTANDARD="LVCMOS33")),
- # LEDs
- Resource("led", 0, Pins("K13", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 1, Pins("K16", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 2, Pins("L15", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 3, Pins("L14", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 4, Pins("M16", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 5, Pins("M14", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 6, Pins("M12", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("led", 7, Pins("N16", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ # LEDs - official pins from Alchitry Labs
+ Resource("led", 0, Pins("P19", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 1, Pins("P20", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 2, Pins("T21", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 3, Pins("R19", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 4, Pins("V22", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 5, Pins("U21", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 6, Pins("T20", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
+ Resource("led", 7, Pins("W20", dir="o"), Attrs(IOSTANDARD="LVCMOS33")),
- # Reset button
- Resource("rst_n", 0, Pins("P6", dir="i"), Attrs(IOSTANDARD="LVCMOS33")),
+ # Reset button - official pin from Alchitry Labs
+ Resource("rst_n", 0, Pins("N15", dir="i"), Attrs(IOSTANDARD="LVCMOS33")),
- # IO pins
- Resource("io", 0, Pins("A1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 1, Pins("A2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 2, Pins("A3", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 3, Pins("A4", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 4, Pins("A5", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 5, Pins("A7", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 6, Pins("A8", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 7, Pins("A9", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 8, Pins("A10", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 9, Pins("A11", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 10, Pins("A13", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 11, Pins("A14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 12, Pins("A15", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 13, Pins("A16", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 14, Pins("A17", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 15, Pins("A18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 16, Pins("B1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 17, Pins("B2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 18, Pins("B4", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 19, Pins("B5", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 20, Pins("B6", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 21, Pins("B7", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 22, Pins("B8", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 23, Pins("B10", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 24, Pins("B11", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 25, Pins("B12", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 26, Pins("B14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 27, Pins("B15", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 28, Pins("B16", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 29, Pins("B17", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 30, Pins("B18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 31, Pins("C1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 32, Pins("C2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 33, Pins("C4", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 34, Pins("C5", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 35, Pins("C6", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 36, Pins("C7", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 37, Pins("C8", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 38, Pins("C9", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 39, Pins("C10", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 40, Pins("C11", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 41, Pins("C13", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 42, Pins("C14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 43, Pins("C16", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 44, Pins("C17", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 45, Pins("C18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 46, Pins("D3", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
- Resource("io", 47, Pins("D4", dir="io"), Attrs(IOSTANDARD="LVCMOS33")),
+ # A-Bank IO pins - official pins from Alchitry Labs (subset for convenience)
+ Resource("io", 0, Pins("AB22", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A3
+ Resource("io", 1, Pins("AB21", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A5
+ Resource("io", 2, Pins("E3", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A9
+ Resource("io", 3, Pins("F3", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A11
+ Resource("io", 4, Pins("M2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A15
+ Resource("io", 5, Pins("M3", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A17
+ Resource("io", 6, Pins("J6", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A21
+ Resource("io", 7, Pins("K6", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A23
+ Resource("io", 8, Pins("AB18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A4
+ Resource("io", 9, Pins("AA18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A6
+ Resource("io", 10, Pins("N2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A10
+ Resource("io", 11, Pins("P2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A12
+ Resource("io", 12, Pins("L1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A16
+ Resource("io", 13, Pins("M1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A18
+ Resource("io", 14, Pins("D2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A22
+ Resource("io", 15, Pins("E2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # A24
+
+ # B-Bank IO pins - official pins from Alchitry Labs (subset)
+ Resource("io", 16, Pins("AB13", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B3
+ Resource("io", 17, Pins("AA13", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B5
+ Resource("io", 18, Pins("AB12", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B9
+ Resource("io", 19, Pins("AB11", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B11
+ Resource("io", 20, Pins("AA11", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B4
+ Resource("io", 21, Pins("AA10", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B6
+ Resource("io", 22, Pins("Y14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B10
+ Resource("io", 23, Pins("W14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # B12
+
+ # C-Bank IO pins - official pins from Alchitry Labs
+ Resource("io", 24, Pins("U18", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C29
+ Resource("io", 25, Pins("U17", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C31
+ Resource("io", 26, Pins("V2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C33
+ Resource("io", 27, Pins("U2", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C35
+ Resource("io", 28, Pins("Y1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C30
+ Resource("io", 29, Pins("W1", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C32
+ Resource("io", 30, Pins("R14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C34
+ Resource("io", 31, Pins("P14", dir="io"), Attrs(IOSTANDARD="LVCMOS33")), # C36
]
connectors = []
def toolchain_program(self, products, name, **kwargs):
- vivado = self.toolchain.sh_command("vivado")
+ import subprocess
+ import os
+
with products.extract("{}.bit".format(name)) as bitstream_filename:
- self.toolchain.run([
- vivado, "-mode", "batch", "-source", self._create_tcl_script(bitstream_filename)
- ], root="build")
-
- def _create_tcl_script(self, bitstream_filename):
- tcl_script = "program_fpga.tcl"
- with open(tcl_script, "w") as f:
- f.write(f"""
+ # Create TCL script for programming
+ tcl_content = f"""
open_hw_manager
connect_hw_server
open_hw_target
@@ -102,5 +87,11 @@ current_hw_device [get_hw_devices xc7a100t_0]
program_hw_devices [get_hw_devices xc7a100t_0]
close_hw_manager
exit
-""")
- return tcl_script \ No newline at end of file
+"""
+ tcl_script = os.path.join("build", "program_fpga.tcl")
+ with open(tcl_script, "w") as f:
+ f.write(tcl_content)
+
+ # Run vivado to program the FPGA
+ subprocess.run(["vivado", "-mode", "batch", "-source", tcl_script],
+ cwd="build", check=True) \ No newline at end of file