soc/get_mem_data: add direct support for regions
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 3 May 2019 11:24:06 +0000 (13:24 +0200)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Fri, 3 May 2019 11:24:06 +0000 (13:24 +0200)
We now support passing filename (offset=0), json file and regions

litex/soc/integration/soc_core.py

index 33623733088c95fe37d5701da4e60787f030a81b..6a69bd30131299a0f024042af1b51f4df9aa44b3 100644 (file)
@@ -77,15 +77,19 @@ def mem_decoder(address, start=26, end=29):
     return lambda a: a[start:end] == ((address >> (start+2)) & (2**(end-start))-1)
 
 
-def get_mem_data(filename, endianness="big", mem_size=None):
+def get_mem_data(filename_or_regions, endianness="big", mem_size=None):
     # create memory regions
-    _, ext = os.path.splitext(filename)
-    if ext == ".json":
-        f = open(filename, "r")
-        regions = json.load(f)
-        f.close()
+    if isinstance(filename_or_regions, dict):
+        regions = filename_or_regions
     else:
-        regions = {filename: "0x00000000"}
+        filename = filename_or_regions
+        _, ext = os.path.splitext(filename)
+        if ext == ".json":
+            f = open(filename, "r")
+            regions = json.load(f)
+            f.close()
+        else:
+            regions = {filename: "0x00000000"}
 
     # determine data_size
     data_size = 0