Beispiel #1
0
    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 + "'")
Beispiel #2
0
	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+"'")
Beispiel #3
0
 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)))