38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
import os
|
||
|
import subprocess
|
||
|
|
||
|
from amaranth.build import *
|
||
|
from amaranth.vendor.xilinx_ultrascale import *
|
||
|
from .resources import *
|
||
|
|
||
|
|
||
|
__all__ = ["KCU105Platform"]
|
||
|
|
||
|
|
||
|
class KCU105Platform(XilinxUltraScalePlatform):
|
||
|
device = "xcku040"
|
||
|
package = "ffva1156"
|
||
|
speed = "2-e"
|
||
|
default_clk = "clk125"
|
||
|
resources = [
|
||
|
Resource("clk125", 0, DiffPairs("G10", "F10", dir="i"),
|
||
|
Clock(125e6), Attrs(IOSTANDARD="LVDS")),
|
||
|
|
||
|
*LEDResources(pins="AP8 H23 P20 P21 N22 M22 R23 P23",
|
||
|
attrs=Attrs(IOSTANDARD="LVCMOS18")),
|
||
|
]
|
||
|
connectors = []
|
||
|
|
||
|
def toolchain_program(self, products, name):
|
||
|
openocd = os.environ.get("OPENOCD", "openocd")
|
||
|
with products.extract("{}.bit".format(name)) as bitstream_filename:
|
||
|
subprocess.check_call([openocd,
|
||
|
"-c", "source [find board/kcu105.cfg]; init; pld load 0 {}; exit"
|
||
|
.format(bitstream_filename)
|
||
|
])
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
from .test.blinky import *
|
||
|
KCU105Platform().build(Blinky(), do_program=True)
|