From: Florent Kermarrec Date: Mon, 24 Feb 2020 11:49:42 +0000 (+0100) Subject: tools/litex_gen: add bus parameter and AXI (Lite) support. X-Git-Tag: 24jan2021_ls180~640 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5aba1fe824992c01ba14441b78d9245ed9c97459;p=litex.git tools/litex_gen: add bus parameter and AXI (Lite) support. --- diff --git a/litex/tools/litex_gen.py b/litex/tools/litex_gen.py index abbbdd58..28fc9531 100755 --- a/litex/tools/litex_gen.py +++ b/litex/tools/litex_gen.py @@ -7,14 +7,16 @@ import argparse from migen import * +from litex.build.generic_platform import * + from litex.soc.integration.soc_core import * from litex.soc.integration.builder import * from litex.soc.interconnect import wishbone +from litex.soc.interconnect import axi from litex.soc.cores.pwm import PWM from litex.soc.cores.gpio import GPIOTristate from litex.soc.cores.spi import SPIMaster, SPISlave -from litex.build.generic_platform import * # Platform ----------------------------------------------------------------------------------------- @@ -84,9 +86,23 @@ class LiteXCore(SoCMini): self.add_csr("gpio") # Wishbone Master - self.wb_bus = wishbone.Interface() - self.bus.add_master(master=self.wb_bus) - self.wb_bus.connect_to_pads(self, platform, "wb", mode="slave") + if kwargs["bus"] == "wishbone": + wb_bus = wishbone.Interface() + self.bus.add_master(master=wb_bus) + platform.add_extension(wb_bus.get_ios("wb")) + wb_pads = platform.request("wb") + self.comb += wb_bus.connect_to_pads(wb_pads, mode="slave") + + # AXI-Lite Master + if kwargs["bus"] == "axi": + axi_bus = axi.AXILiteInterface(data_width=32, address_width=32) + wb_bus = wishbone.Interface() + axi2wb = axi.AXILite2Wishbone(axi_bus, wb_bus) + self.submodules += axi2wb + self.bus.add_master(master=wb_bus) + platform.add_extension(axi_bus.get_ios("axi")) + axi_pads = platform.request("axi") + self.comb += axi_bus.connect_to_pads(axi_pads, "axi", mode="slave") # IRQs for name, loc in sorted(self.irq.locs.items()): @@ -100,6 +116,7 @@ class LiteXCore(SoCMini): def soc_argdict(args): ret = {} for arg in [ + "bus", "with_pwm", "with_uart", "with_ctrl", @@ -119,6 +136,9 @@ def main(): parser = argparse.ArgumentParser(description="LiteX standalone core generator") builder_args(parser) + # Bus + parser.add_argument("--bus", default="wishbone", type=str, help="Type of Bus (wishbone, axi)") + # Cores parser.add_argument("--with-pwm", action="store_true", help="Add PWM core") parser.add_argument("--with-uart", action="store_true", help="Add UART core")