Commit a4d05522 authored by Florent Kermarrec's avatar Florent Kermarrec

platforms/ice40/ecp5: add toolchain parameter with default to trellis (ECP5) or icestorm (iCE40).

Required to simplify simple.py target and use trellis/icestorm as default toolchain.
parent 5cf7731f
...@@ -65,8 +65,8 @@ class Platform(LatticePlatform): ...@@ -65,8 +65,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk27" default_clk_name = "clk27"
default_clk_period = 1e9/27e6 default_clk_period = 1e9/27e6
def __init__(self, **kwargs): def __init__(self, toolchain="trellis", **kwargs):
LatticePlatform.__init__(self, "LFE5U-25F-8BG381C", _io, **kwargs) LatticePlatform.__init__(self, "LFE5U-25F-8BG381C", _io, toolchain=toolchain, **kwargs)
def do_finalize(self, fragment): def do_finalize(self, fragment):
LatticePlatform.do_finalize(self, fragment) LatticePlatform.do_finalize(self, fragment)
......
...@@ -215,13 +215,13 @@ class Platform(LatticePlatform): ...@@ -215,13 +215,13 @@ class Platform(LatticePlatform):
default_clk_name = "clk25" default_clk_name = "clk25"
default_clk_period = 1e9/25e6 default_clk_period = 1e9/25e6
def __init__(self, revision="7.0"): def __init__(self, revision="7.0", toolchain="trellis"):
assert revision in ["6.1", "7.0"] assert revision in ["6.1", "7.0"]
self.revision = revision self.revision = revision
device = {"6.1": "LFE5U-25F-6BG381C", "7.0": "LFE5U-25F-6BG256C"}[revision] device = {"6.1": "LFE5U-25F-6BG381C", "7.0": "LFE5U-25F-6BG256C"}[revision]
io = {"6.1": _io_v6_1, "7.0": _io_v7_0}[revision] io = {"6.1": _io_v6_1, "7.0": _io_v7_0}[revision]
connectors = {"6.1": _connectors_v6_1, "7.0": _connectors_v7_0}[revision] connectors = {"6.1": _connectors_v6_1, "7.0": _connectors_v7_0}[revision]
LatticePlatform.__init__(self, device, io, connectors=connectors, toolchain="trellis") LatticePlatform.__init__(self, device, io, connectors=connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return OpenOCDJTAGProgrammer("openocd_colorlight_5a_75b.cfg") return OpenOCDJTAGProgrammer("openocd_colorlight_5a_75b.cfg")
......
...@@ -222,13 +222,13 @@ class Platform(LatticePlatform): ...@@ -222,13 +222,13 @@ class Platform(LatticePlatform):
default_clk_name = "clk25" default_clk_name = "clk25"
default_clk_period = 1e9/25e6 default_clk_period = 1e9/25e6
def __init__(self, revision="7.1"): def __init__(self, revision="7.1", toolchain="trellis"):
assert revision in ["6.0", "7.1"] assert revision in ["6.0", "7.1"]
self.revision = revision self.revision = revision
device = {"6.0": "LFE5U-25F-6BG256C", "7.1": "LFE5U-25F-6BG256C"}[revision] device = {"6.0": "LFE5U-25F-6BG256C", "7.1": "LFE5U-25F-6BG256C"}[revision]
io = {"6.0": _io_v6_0, "7.1": _io_v7_1}[revision] io = {"6.0": _io_v6_0, "7.1": _io_v7_1}[revision]
connectors = {"6.0": _connectors_v6_0, "7.1": _connectors_v7_1}[revision] connectors = {"6.0": _connectors_v6_0, "7.1": _connectors_v7_1}[revision]
LatticePlatform.__init__(self, device, io, connectors=connectors, toolchain="trellis") LatticePlatform.__init__(self, device, io, connectors=connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return OpenOCDJTAGProgrammer("openocd_colorlight_5a_75b.cfg") return OpenOCDJTAGProgrammer("openocd_colorlight_5a_75b.cfg")
......
...@@ -136,8 +136,8 @@ class Platform(LatticePlatform): ...@@ -136,8 +136,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk12" default_clk_name = "clk12"
default_clk_period = 1e9/12e6 default_clk_period = 1e9/12e6
def __init__(self, **kwargs): def __init__(self, toolchain="trellis", **kwargs):
LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG381", _io, _connectors, **kwargs) LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG381", _io, _connectors, toolchain=toolchain, **kwargs)
def request(self, *args, **kwargs): def request(self, *args, **kwargs):
import time import time
......
...@@ -111,8 +111,8 @@ class Platform(LatticePlatform): ...@@ -111,8 +111,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk100" default_clk_name = "clk100"
default_clk_period = 1e9/100e6 default_clk_period = 1e9/100e6
def __init__(self, **kwargs): def __init__(self, toolchain="trellis", **kwargs):
LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG554I", _io, _connectors, **kwargs) LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG554I", _io, _connectors, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return OpenOCDJTAGProgrammer("openocd_ecpix5.cfg") return OpenOCDJTAGProgrammer("openocd_ecpix5.cfg")
......
...@@ -86,8 +86,8 @@ class Platform(LatticePlatform): ...@@ -86,8 +86,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk48" default_clk_name = "clk48"
default_clk_period = 1e9/48e6 default_clk_period = 1e9/48e6
def __init__(self): def __init__(self, toolchain="icestorm"):
LatticePlatform.__init__(self, "ice40-up5k-sg48", _io, _connectors, toolchain="icestorm") LatticePlatform.__init__(self, "ice40-up5k-sg48", _io, _connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return IceStormProgrammer() return IceStormProgrammer()
......
...@@ -66,8 +66,8 @@ class Platform(LatticePlatform): ...@@ -66,8 +66,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk48" default_clk_name = "clk48"
default_clk_period = 1e9/48e6 default_clk_period = 1e9/48e6
def __init__(self): def __init__(self, toolchain="icestorm"):
LatticePlatform.__init__(self, "ice40-up5k-uwg30", _io, _connectors, toolchain="icestorm") LatticePlatform.__init__(self, "ice40-up5k-uwg30", _io, _connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return IceStormProgrammer() return IceStormProgrammer()
......
...@@ -69,8 +69,8 @@ class Platform(LatticePlatform): ...@@ -69,8 +69,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk48" default_clk_name = "clk48"
default_clk_period = 1e9/48e6 default_clk_period = 1e9/48e6
def __init__(self): def __init__(self, toolchain="icestorm"):
LatticePlatform.__init__(self, "ice40-up5k-uwg30", _io, _connectors, toolchain="icestorm") LatticePlatform.__init__(self, "ice40-up5k-uwg30", _io, _connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return IceStormProgrammer() return IceStormProgrammer()
......
...@@ -89,8 +89,8 @@ class Platform(LatticePlatform): ...@@ -89,8 +89,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk12" default_clk_name = "clk12"
default_clk_period = 1e9/12e6 default_clk_period = 1e9/12e6
def __init__(self): def __init__(self, toolchain="icestorm"):
LatticePlatform.__init__(self, "ice40-up5k-sg48", _io, _connectors, toolchain="icestorm") LatticePlatform.__init__(self, "ice40-up5k-sg48", _io, _connectors, toolchain=toolchain)
def create_programmer(self): def create_programmer(self):
return IceStormProgrammer() return IceStormProgrammer()
......
...@@ -192,12 +192,12 @@ class Platform(LatticePlatform): ...@@ -192,12 +192,12 @@ class Platform(LatticePlatform):
default_clk_name = "clk25" default_clk_name = "clk25"
default_clk_period = 1e9/25e6 default_clk_period = 1e9/25e6
def __init__(self, revision="rev0", device="45F", **kwargs): def __init__(self, revision="rev0", device="45F", toolchain="trellis", **kwargs):
assert revision in ["rev0"] assert revision in ["rev0"]
self.revision = revision self.revision = revision
io = {"rev0": _io_rev0 }[revision] io = {"rev0": _io_rev0 }[revision]
connectors = {"rev0": _connectors_rev0 }[revision] connectors = {"rev0": _connectors_rev0 }[revision]
LatticePlatform.__init__(self, f"LFE5UM5G-{device}-8BG381C", io, connectors, **kwargs) LatticePlatform.__init__(self, f"LFE5UM5G-{device}-8BG381C", io, connectors, toolchain="trellis", **kwargs)
def create_programmer(self): def create_programmer(self):
return DFUProg(vid="1d50", pid="6130") return DFUProg(vid="1d50", pid="6130")
......
...@@ -220,12 +220,12 @@ class Platform(LatticePlatform): ...@@ -220,12 +220,12 @@ class Platform(LatticePlatform):
default_clk_name = "clk48" default_clk_name = "clk48"
default_clk_period = 1e9/48e6 default_clk_period = 1e9/48e6
def __init__(self, revision="0.2", device="25F", **kwargs): def __init__(self, revision="0.2", device="25F", toolchain="trellis", **kwargs):
assert revision in ["0.1", "0.2"] assert revision in ["0.1", "0.2"]
self.revision = revision self.revision = revision
io = {"0.1": _io_r0_1, "0.2": _io_r0_2 }[revision] io = {"0.1": _io_r0_1, "0.2": _io_r0_2 }[revision]
connectors = {"0.1": _connectors_r0_1, "0.2": _connectors_r0_2}[revision] connectors = {"0.1": _connectors_r0_1, "0.2": _connectors_r0_2}[revision]
LatticePlatform.__init__(self, f"LFE5U-{device}-8MG285C", io, connectors, **kwargs) LatticePlatform.__init__(self, f"LFE5U-{device}-8MG285C", io, connectors, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return DFUProg(vid="1209", pid="5af0") return DFUProg(vid="1209", pid="5af0")
......
...@@ -67,8 +67,8 @@ class Platform(LatticePlatform): ...@@ -67,8 +67,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk16" default_clk_name = "clk16"
default_clk_period = 1e9/16e6 default_clk_period = 1e9/16e6
def __init__(self): def __init__(self, toolchain="icestorm"):
LatticePlatform.__init__(self, "ice40-lp8k-cm81", _io, _connectors, toolchain="icestorm") LatticePlatform.__init__(self, "ice40-lp8k-cm81", _io, _connectors, toolchain=toolchain)
self.add_extension(serial) self.add_extension(serial)
def create_programmer(self): def create_programmer(self):
......
...@@ -259,8 +259,8 @@ class Platform(LatticePlatform): ...@@ -259,8 +259,8 @@ class Platform(LatticePlatform):
default_clk_name = "clk12" default_clk_name = "clk12"
default_clk_period = 1e9/12e6 default_clk_period = 1e9/12e6
def __init__(self, **kwargs): def __init__(self, toolchain="trellis", **kwargs):
LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG756C", _io, _connectors, **kwargs) LatticePlatform.__init__(self, "LFE5UM5G-85F-8BG756C", _io, _connectors, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return OpenOCDJTAGProgrammer("openocd_trellisboard.cfg") return OpenOCDJTAGProgrammer("openocd_trellisboard.cfg")
......
...@@ -146,11 +146,11 @@ class Platform(LatticePlatform): ...@@ -146,11 +146,11 @@ class Platform(LatticePlatform):
default_clk_name = "clk25" default_clk_name = "clk25"
default_clk_period = 1e9/25e6 default_clk_period = 1e9/25e6
def __init__(self, device="LFE5U-45F", revision="2.0", **kwargs): def __init__(self, device="LFE5U-45F", revision="2.0", toolchain="trellis", **kwargs):
assert device in ["LFE5U-12F", "LFE5U-25F", "LFE5U-45F", "LFE5U-85F"] assert device in ["LFE5U-12F", "LFE5U-25F", "LFE5U-45F", "LFE5U-85F"]
assert revision in ["1.7", "2.0"] assert revision in ["1.7", "2.0"]
_io = _io_common + {"1.7": _io_1_7, "2.0": _io_2_0}[revision] _io = _io_common + {"1.7": _io_1_7, "2.0": _io_2_0}[revision]
LatticePlatform.__init__(self, device + "-6BG381C", _io, **kwargs) LatticePlatform.__init__(self, device + "-6BG381C", _io, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return UJProg() return UJProg()
......
...@@ -235,9 +235,9 @@ class Platform(LatticePlatform): ...@@ -235,9 +235,9 @@ class Platform(LatticePlatform):
default_clk_name = "clk100" default_clk_name = "clk100"
default_clk_period = 1e9/100e6 default_clk_period = 1e9/100e6
def __init__(self, device="LFE5UM5G", **kwargs): def __init__(self, device="LFE5UM5G", toolchain="trellis", **kwargs):
assert device in ["LFE5UM5G", "LFE5UM"] assert device in ["LFE5UM5G", "LFE5UM"]
LatticePlatform.__init__(self, device + "-45F-8BG381C", _io, _connectors, **kwargs) LatticePlatform.__init__(self, device + "-45F-8BG381C", _io, _connectors, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return OpenOCDJTAGProgrammer("openocd_versa_ecp5.cfg") return OpenOCDJTAGProgrammer("openocd_versa_ecp5.cfg")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment