add readonly option to TestMemory
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 28 Jun 2020 19:19:14 +0000 (20:19 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 28 Jun 2020 19:19:14 +0000 (20:19 +0100)
src/soc/experiment/testmem.py

index 02000d89e375f830a1760c13ef818f68cfc1287d..bf7c7e3b599ed01b6d734e6c1bfa1d31b230b97e 100644 (file)
@@ -2,7 +2,9 @@ from nmigen import Module, Elaboratable, Memory
 
 
 class TestMemory(Elaboratable):
-    def __init__(self, regwid, addrw, granularity=None, init=True):
+    def __init__(self, regwid, addrw, granularity=None, init=True,
+                                      readonly=False):
+        self.readonly = readonly
         self.ddepth = 1 # regwid //8
         depth = (1<<addrw) // self.ddepth
         self.depth = depth
@@ -14,11 +16,15 @@ class TestMemory(Elaboratable):
             init = None
         self.mem = Memory(width=regwid, depth=depth, init=init)
         self.rdport = self.mem.read_port() # not now transparent=False)
+        if self.readonly:
+            return
         self.wrport = self.mem.write_port(granularity=granularity)
 
     def elaborate(self, platform):
         m = Module()
         m.submodules.rdport = self.rdport
+        if self.readonly:
+            return m
         m.submodules.wrport = self.wrport
         return m
 
@@ -26,6 +32,8 @@ class TestMemory(Elaboratable):
         yield self.rdport.addr
         yield self.rdport.data
         #yield self.rdport.en
+        if self.readonly:
+            return
         yield self.wrport.addr
         yield self.wrport.data
         yield self.wrport.en