fhdl/module: avoid flushing self._submodules and create do_exit.
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 9 Mar 2015 16:17:21 +0000 (17:17 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 9 Mar 2015 16:17:21 +0000 (17:17 +0100)
migen/fhdl/module.py

index e3d6f9fd807a90bd389b8c57f2e7b64769614aa2..4d91693d09cef6e5e59041fee2ac66993d091b23 100644 (file)
@@ -142,8 +142,10 @@ class Module:
                        object.__setattr__(self, name, value)
 
        def _collect_submodules(self):
-               r = [(name, submodule.get_fragment()) for name, submodule in self._submodules]
-               self._submodules = []
+               r = []
+               for name, submodule in self._submodules:
+                       if not submodule._get_fragment_called:
+                               r += [(name, submodule.get_fragment())]
                return r
 
        def finalize(self, *args, **kwargs):
@@ -176,3 +178,7 @@ class Module:
 
        def do_finalize(self):
                pass
+
+       def do_exit(self, *args, **kwargs):
+               for name, submodule in self._submodules:
+                       submodule.do_exit(*args, **kwargs)