litesata: create specialized kc705 platform to avoid duplicating things already in mibuild

This commit is contained in:
Florent Kermarrec 2015-03-01 11:03:15 +01:00
parent 32fce11edf
commit 7b464b2b1c
2 changed files with 13 additions and 59 deletions

View File

@ -1,41 +1,7 @@
from mibuild.generic_platform import * from mibuild.generic_platform import *
from mibuild.crg import SimpleCRG from mibuild.platforms import kc705
from mibuild.xilinx.common import CRG_DS
from mibuild.xilinx.ise import XilinxISEPlatform
from mibuild.xilinx.vivado import XilinxVivadoPlatform
from mibuild.xilinx.programmer import *
_io = [
("user_led", 0, Pins("AB8"), IOStandard("LVCMOS15")),
("user_led", 1, Pins("AA8"), IOStandard("LVCMOS15")),
("user_led", 2, Pins("AC9"), IOStandard("LVCMOS15")),
("user_led", 3, Pins("AB9"), IOStandard("LVCMOS15")),
("user_led", 4, Pins("AE26"), IOStandard("LVCMOS25")),
("user_led", 5, Pins("G19"), IOStandard("LVCMOS25")),
("user_led", 6, Pins("E18"), IOStandard("LVCMOS25")),
("user_led", 7, Pins("F16"), IOStandard("LVCMOS25")),
("cpu_reset", 0, Pins("AB7"), IOStandard("LVCMOS15")),
("clk200", 0,
Subsignal("p", Pins("AD12"), IOStandard("LVDS")),
Subsignal("n", Pins("AD11"), IOStandard("LVDS"))
),
("clk156", 0,
Subsignal("p", Pins("K28"), IOStandard("LVDS_25")),
Subsignal("n", Pins("K29"), IOStandard("LVDS_25"))
),
("serial", 0,
Subsignal("cts", Pins("L27")),
Subsignal("rts", Pins("K23")),
Subsignal("tx", Pins("K24")),
Subsignal("rx", Pins("M19")),
IOStandard("LVCMOS25")
),
_sata_io = [
("sata", 0, ("sata", 0,
Subsignal("refclk_p", Pins("C8")), Subsignal("refclk_p", Pins("C8")),
Subsignal("refclk_n", Pins("C7")), Subsignal("refclk_n", Pins("C7")),
@ -43,32 +9,22 @@ _io = [
Subsignal("txn", Pins("D1")), Subsignal("txn", Pins("D1")),
Subsignal("rxp", Pins("E4")), Subsignal("rxp", Pins("E4")),
Subsignal("rxn", Pins("E3")), Subsignal("rxn", Pins("E3")),
), )
] ]
def Platform(*args, toolchain="vivado", programmer="xc3sprog", **kwargs): class SpecializedPlatform:
if toolchain == "ise": def __init__(self, platform):
xilinx_platform = XilinxISEPlatform self._platform = platform
elif toolchain == "vivado":
xilinx_platform = XilinxVivadoPlatform
else:
raise ValueError
class RealPlatform(xilinx_platform): def __getattr__(self, name):
bitgen_opt = "-g LCK_cycle:6 -g Binary:Yes -w -g ConfigRate:12 -g SPI_buswidth:4" return getattr(self._platform, name)
def __init__(self, crg_factory=lambda p: CRG_DS(p, "clk200", "cpu_reset")): class Platform(SpecializedPlatform):
xilinx_platform.__init__(self, "xc7k325t-ffg900-2", _io, crg_factory) def __init__(self, *args, **kwargs):
SpecializedPlatform.__init__(self, kc705.Platform(*args, **kwargs))
self.add_extension(_sata_io)
def create_programmer(self): def do_finalize(self, fragment):
if programmer == "xc3sprog":
return XC3SProg("jtaghs1_fast", "bscan_spi_kc705.bit")
elif programmer == "vivado":
return VivadoProgrammer()
else:
raise ValueError
def do_finalize(self, fragment):
try: try:
self.add_period_constraint(self.lookup_request("clk156").p, 6.4) self.add_period_constraint(self.lookup_request("clk156").p, 6.4)
except ConstraintError: except ConstraintError:
@ -94,5 +50,3 @@ set_false_path -from [get_clocks sata_tx_clk] -to [get_clocks sys_clk]
set_property CFGBVS VCCO [current_design] set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 2.5 [current_design] set_property CONFIG_VOLTAGE 2.5 [current_design]
""") """)
return RealPlatform(*args, **kwargs)

View File