Remove useless _blinky.build_and_program() function.
[nmigen-boards.git] / nmigen_boards / icestick.py
1 import os
2 import subprocess
3
4 from nmigen.build import *
5 from nmigen.vendor.lattice_ice40 import *
6 from .dev import *
7 from .dev.uart import IrDAResource
8
9
10 __all__ = ["ICEStickPlatform"]
11
12
13 class ICEStickPlatform(LatticeICE40Platform):
14 device = "iCE40HX1K"
15 package = "TQ144"
16 default_clk = "clk12"
17 resources = [
18 Resource("clk12", 0, Pins("21", dir="i"),
19 Clock(12e6), Attrs(GLOBAL="1", IO_STANDARD="SB_LVCMOS33")),
20
21 Resource("user_led", 0, Pins("99", dir="o"), Attrs(IO_STANDARD="SB_LVCMOS33")),
22 Resource("user_led", 1, Pins("98", dir="o"), Attrs(IO_STANDARD="SB_LVCMOS33")),
23 Resource("user_led", 2, Pins("97", dir="o"), Attrs(IO_STANDARD="SB_LVCMOS33")),
24 Resource("user_led", 3, Pins("96", dir="o"), Attrs(IO_STANDARD="SB_LVCMOS33")),
25 Resource("user_led", 4, Pins("95", dir="o"), Attrs(IO_STANDARD="SB_LVCMOS33")),
26
27 UARTResource(0,
28 rx="9", tx="8", rts="7", cts="4", dtr="3", dsr="2", dcd="1",
29 attrs=Attrs(IO_STANDARD="SB_LVTTL", PULLUP="1")
30 ),
31
32 IrDAResource(0,
33 rx="106", tx="105", sd="107",
34 attrs=Attrs(IO_STANDARD="SB_LVCMOS33")
35 ),
36
37 *SPIFlashResources(0,
38 cs="71", clk="70", mosi="67", miso="68",
39 attrs=Attrs(IO_STANDARD="SB_LVCMOS33")
40 ),
41 ]
42 connectors = [
43 Connector("pmod", 0, "78 79 80 81 - - 87 88 90 91 - -"), # J2
44
45 Connector("j", 1, "- - 112 113 114 115 116 117 118 119"), # J1
46 Connector("j", 3, "- - 62 61 60 56 48 47 45 44"), # J3
47 ]
48
49 def toolchain_program(self, products, name):
50 iceprog = os.environ.get("ICEPROG", "iceprog")
51 with products.extract("{}.bin".format(name)) as bitstream_filename:
52 subprocess.check_call([iceprog, bitstream_filename])
53
54
55 if __name__ == "__main__":
56 from ._blinky import Blinky
57 ICEStickPlatform().build(Blinky(), do_program=True)