def __getattr__(self, name): if name == "comb": return _ModuleComb(self) elif name == "sync": return _ModuleSync(self) elif name == "specials": return _ModuleSpecials(self) elif name == "submodules": return _ModuleSubmodules(self) elif name == "clock_domains": return _ModuleClockDomains(self) # hack to have initialized regular attributes without using __init__ # (which would require derived classes to call it) elif name == "finalized": self.finalized = False return self.finalized elif name == "_fragment": simf = None try: simf = self.do_simulation except AttributeError: try: simg = self.gen_simulation except AttributeError: pass else: simf = gen_sim(simg) if simf is not None: simf = proxy_sim(self, simf) sim = [] if simf is None else [simf] self._fragment = _Fragment(sim=sim) return self._fragment elif name == "_submodules": self._submodules = [] return self._submodules elif name == "_clock_domains": self._clock_domains = [] return self._clock_domains elif name == "_get_fragment_called": self._get_fragment_called = False return self._get_fragment_called else: raise AttributeError("'" + self.__class__.__name__ + "' object has no attribute '" + name + "'")
def __getattr__(self, name): if name == "comb": return _ModuleComb(self) elif name == "sync": return _ModuleSync(self) elif name == "specials": return _ModuleSpecials(self) elif name == "submodules": return _ModuleSubmodules(self) elif name == "clock_domains": return _ModuleClockDomains(self) # hack to have initialized regular attributes without using __init__ # (which would require derived classes to call it) elif name == "finalized": self.finalized = False return self.finalized elif name == "_fragment": simf = None try: simf = self.do_simulation except AttributeError: try: simg = self.gen_simulation except AttributeError: pass else: simf = gen_sim(simg) if simf is not None: simf = proxy_sim(self, simf) sim = [] if simf is None else [simf] self._fragment = _Fragment(sim=sim) return self._fragment elif name == "_submodules": self._submodules = [] return self._submodules elif name == "_clock_domains": self._clock_domains = [] return self._clock_domains elif name == "_get_fragment_called": self._get_fragment_called = False return self._get_fragment_called else: raise AttributeError("'"+self.__class__.__name__+"' object has no attribute '"+name+"'")
def wrapper(self, *args, **kwds): self.finalize() self._fragment.sim.append(proxy_sim(self, gen_sim( lambda tb_values: f(self, tb_values, *args, **kwds)))) run_simulation(self, keep_files=bool(os.getenv('MIGEN_KEEP_FILES', False)))