soc_sdram: revert vivado l2 cache workaround (still seems to cause issues on some...
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 7 Sep 2018 09:51:17 +0000 (11:51 +0200)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 7 Sep 2018 09:51:17 +0000 (11:51 +0200)
litex/soc/integration/soc_sdram.py

index 5394326943369aa7080f3d9bc76dc5fe05ded156..238ede4c6bfc17ab771a2ea0b6982666edc4a303 100644 (file)
@@ -72,8 +72,15 @@ class SoCSDRAM(SoCCore):
 
         if self.l2_size:
             port = self.sdram.crossbar.get_port()
-            self.submodules.l2_cache = wishbone.Cache(
-                self.l2_size//4, self._wb_sdram, wishbone.Interface(port.data_width))
+            l2_cache = wishbone.Cache(self.l2_size//4, self._wb_sdram, wishbone.Interface(port.dw))
+            # XXX Vivado ->2018.2 workaround, Vivado is not able to map correctly our L2 cache.
+            # Issue is reported to Xilinx, Remove this if ever fixed by Xilinx...
+            from litex.build.xilinx.vivado import XilinxVivadoToolchain
+            if isinstance(self.platform.toolchain, XilinxVivadoToolchain):
+                from migen.fhdl.simplify import FullMemoryWE
+                self.submodules.l2_cache = FullMemoryWE()(l2_cache)
+            else:
+                self.submodules.l2_cache = l2_cache
             self.submodules.wishbone_bridge = LiteDRAMWishbone2Native(self.l2_cache.slave, port)
 
     def do_finalize(self):