class _CompatModuleSpecials(_CompatModuleProxy):
@deprecated("instead of `self.specials.<name> =`, use `m.submodules.<name> =`")
def __setattr__(self, name, value):
- self._cm._specials.append((name, value))
+ self._cm._submodules.append((name, value))
setattr(self._cm, name, value)
@deprecated("instead of `self.specials +=`, use `m.submodules +=`")
def __iadd__(self, other):
- self._cm._specials += [(None, e) for e in _flat_list(other)]
+ self._cm._submodules += [(None, e) for e in _flat_list(other)]
return self
raise AttributeError("'{}' object has no attribute '{}'"
.format(type(self).__name__, name))
- def _finalize_specials(self):
- for name, special in self._specials:
- self._module._add_submodule(special, name)
-
def _finalize_submodules(self):
for name, submodule in self._submodules:
- if not submodule.get_fragment_called:
- self._module._add_submodule(submodule.get_fragment(), name)
+ if hasattr(submodule, "get_fragment_called"):
+ # Compat submodule
+ if not submodule.get_fragment_called:
+ self._module._add_submodule(submodule.get_fragment(), name)
+ else:
+ # Native submodule
+ self._module._add_submodule(submodule, name)
def finalize(self, *args, **kwargs):
if not self.finalized:
-from ...genlib.io import TSTriple as NewTSTriple
+from ...genlib.io import TSTriple as NativeTSTriple
__all__ = ["TSTriple"]
-class CompatTSTriple(NewTSTriple):
+class CompatTSTriple(NativeTSTriple):
def __init__(self, bits_sign=None, min=None, max=None, reset_o=0, reset_oe=0, reset_i=0,
name=None):
super().__init__(shape=bits_sign, min=min, max=max,
from .cd import ClockDomain
from .ast import Value, Const, Mux, Cat, Repl, Signal, ClockSignal, ResetSignal
+from .ir import Fragment
from .dsl import Module
from .xfrm import ResetInserter, CEInserter