Improve the error message on memory region conflict.
authorTim 'mithro' Ansell <me@mith.ro>
Thu, 31 Oct 2019 02:32:20 +0000 (19:32 -0700)
committerTim 'mithro' Ansell <me@mith.ro>
Thu, 31 Oct 2019 02:32:20 +0000 (19:32 -0700)
Before;
```
ValueError: Memory region conflict between rom and main_ram
```

After;
```
ValueError: Memory region conflict between rom (<SoCMemRegion 0x10000000 0x10000 cached>) and main_ram (<SoCMemRegion 0x0 0x20000000 cached>)
```

Fixes #296.

litex/soc/integration/common.py
litex/soc/integration/soc_core.py

index 3a56ffa7ef827bd23aebe534e52d0ab6964a03df..695e56090ff893a41619491edb1838408390c921 100644 (file)
@@ -83,6 +83,11 @@ class SoCMemRegion:
         self.length = length
         self.type   = type
 
+    def __str__(self):
+        return "<SoCMemRegion 0x{:x} 0x{:x} {}>".format(
+            self.origin, self.length, self.type)
+
+
 class SoCCSRRegion:
     def __init__(self, origin, busword, obj):
         self.origin  = origin
index b9e7b7bc87a2c671a78c373d834479335f9aac43..346175f0cfd86a126f3009fbc81149e39e58d975 100644 (file)
@@ -401,7 +401,11 @@ class SoCCore(Module):
         self.mem_regions[name] = SoCMemRegion(origin, length, type)
         overlap = self.check_regions_overlap(self.mem_regions)
         if overlap is not None:
-            raise ValueError("Memory region conflict between {} and {}".format(overlap[0], overlap[1]))
+            o0, o1 = overlap[0], overlap[1]
+            raise ValueError("Memory region conflict between {} ({}) and {} ({})".format(
+                o0, self.mem_regions[o0],
+                o1, self.mem_regions[o1],
+            ))
 
     def register_mem(self, name, address, interface, size=0x10000000):
         self.add_wb_slave(address, interface, size)