Distinguish unset submodule placement.
authorJock Tanner <tanner.of.kha@gmail.com>
Mon, 6 Apr 2020 04:50:57 +0000 (04:50 +0000)
committerJock Tanner <tanner.of.kha@gmail.com>
Mon, 6 Apr 2020 04:50:57 +0000 (04:50 +0000)
experiments7/utils.py

index 3ec61559833fb29aaffdf8ac268676a7e8db1c97..62ba52822df58da982d3e925efc96f298b7d7a7a 100644 (file)
@@ -44,7 +44,7 @@ class Module(object):
         :param height: module height,
         :param submodules: submodules (Module objects)
           or tuples of (submodule, x, y), where (x, y) is a submodule's
-          placement point (in lambdas, defaults to (0.0, 0.0)),
+          placement point in lambdas,
         :param pin_width: default pin width,
         :param pin_height: default pin height,
         :param pin_suffix: default pin suffix,
@@ -88,7 +88,7 @@ class Module(object):
         if submodules is not None:
             for submodule in submodules:
                 self._submodules.append(
-                    (submodule, 0.0, 0.0) if isinstance(submodule, Module)
+                    (submodule, None, None) if isinstance(submodule, Module)
                     else submodule
                 )
 
@@ -353,10 +353,16 @@ class Module(object):
     def place_submodules(self):
         """
         Places the submodules in the current module using their initial
-        placement points.
+        placement points, if set.
         """
         for submodule, x, y in self._submodules:
-            self.place_submodule(submodule, x, y)
+            if x is not None and y is not None:
+                self.place_submodule(submodule, x, y)
+            else:
+                raise Warning((
+                    '{}: cannot place {}, because its '
+                    'initial placement point is not set.'
+                ).format(self.name, submodule.name))
 
     def save(self):
         """ Saves cell. """