Permalink
Find file Copy path
0c5d42c Nov 8, 2018
2 contributors

Users who have contributed to this file

@cr1901 @sbourdeauducq
35 lines (28 sloc) 1.4 KB
from migen.build.generic_platform import GenericPlatform
from migen.build.lattice import common, diamond, icestorm, trellis
class LatticePlatform(GenericPlatform):
bitstream_ext = ".bit"
def __init__(self, *args, toolchain="diamond", **kwargs):
GenericPlatform.__init__(self, *args, **kwargs)
if toolchain == "diamond":
self.toolchain = diamond.LatticeDiamondToolchain()
elif toolchain == "trellis":
self.toolchain = trellis.LatticeTrellisToolchain()
elif toolchain == "icestorm":
self.bitstream_ext = ".bin"
self.toolchain = icestorm.LatticeIceStormToolchain()
else:
raise ValueError("Unknown toolchain")
def get_verilog(self, *args, special_overrides=dict(), **kwargs):
so = dict() # No common overrides between ECP and ice40.
so.update(self.toolchain.special_overrides)
so.update(special_overrides)
return GenericPlatform.get_verilog(self, *args, special_overrides=so,
attr_translate=self.toolchain.attr_translate,
**kwargs)
def build(self, *args, **kwargs):
return self.toolchain.build(self, *args, **kwargs)
def add_period_constraint(self, clk, period):
if hasattr(clk, "p"):
clk = clk.p
self.toolchain.add_period_constraint(self, clk, period)