soc/integration: update add_adapter to convert between AXILite/Wishbone
authorJędrzej Boczar <jboczar@antmicro.com>
Tue, 14 Jul 2020 12:44:28 +0000 (14:44 +0200)
committerJędrzej Boczar <jboczar@antmicro.com>
Tue, 14 Jul 2020 14:31:46 +0000 (16:31 +0200)
litex/soc/integration/soc.py

index 8980ea4c7a76f53ca2ac1bc365f366503d0f3e30..7111921cdee8d6f928a3782373e9fbf143b31230 100644 (file)
@@ -280,6 +280,21 @@ class SoCBusHandler(Module):
     # Add Master/Slave -----------------------------------------------------------------------------
     def add_adapter(self, name, interface, direction="m2s"):
         assert direction in ["m2s", "s2m"]
+
+        if isinstance(interface, axi.AXILiteInterface):
+            self.logger.info("{} Bus {} from {} to {}.".format(
+                colorer(name),
+                colorer("converted", color="cyan"),
+                colorer("AXILite"),
+                colorer("Wishbone")))
+            new_interface = wishbone.Interface(data_width=interface.data_width)
+            if direction == "m2s":
+                converter = axi.AXILite2Wishbone(axi_lite=interface, wishbone=new_interface)
+            elif direction == "s2m":
+                converter = axi.Wishbone2AXILite(wishbone=new_interface, axi_lite=interface)
+            self.submodules += converter
+            interface = new_interface
+
         if interface.data_width != self.data_width:
             self.logger.info("{} Bus {} from {}-bit to {}-bit.".format(
                 colorer(name),