Example #1
0
    def getBindSubset(self, termname, visited_sources=set()):
        term = self.getTerm(termname)
        if term is None: raise verror.DefinitionError('No such signal')
        bindlist = self.getBindlist(termname)
        nextsources = visited_sources.copy()
        ret_binds = collections.OrderedDict()
        for bind in bindlist:
            if not termname in ret_binds:
                ret_binds[termname] = []
            ret_binds[termname].append(bind)
            if bind.isClockEdge():
                clock_name = bind.getClockName()
                if clock_name != util.toTermname(
                    (self.topmodule, self.clock_name)):
                    r_binds, r_sources = self.getBindSubset(
                        clock_name, nextsources)
                    nextsources |= r_sources
                    ret_binds = util.dictlistmerge(ret_binds, r_binds)

        sources = self.getBindSources(termname)
        for source in sources:
            if source in visited_sources: continue
            nextsources.add(source)
            r_binds, r_sources = self.getBindSubset(source, nextsources)
            ret_binds = util.dictlistmerge(ret_binds, r_binds)
            nextsources |= r_sources
        return ret_binds, nextsources
Example #2
0
    def getBindSubset(self, termname, visited_sources=set()):
        term = self.getTerm(termname)
        if term is None: raise verror.DefinitionError('No such signal')
        bindlist = self.getBindlist(termname)
        nextsources = visited_sources.copy()
        ret_binds = collections.OrderedDict()
        for bind in bindlist:
            if not termname in ret_binds:
                ret_binds[termname] = []
            ret_binds[termname].append(bind)
            if bind.isClockEdge():
                clock_name = bind.getClockName()
                if clock_name != util.toTermname((self.topmodule, self.clock_name)):
                    r_binds, r_sources = self.getBindSubset(clock_name, nextsources)
                    nextsources |= r_sources
                    ret_binds = util.dictlistmerge(ret_binds, r_binds)

        sources = self.getBindSources(termname)
        for source in sources:
            if source in visited_sources: continue
            nextsources.add(source)
            r_binds, r_sources = self.getBindSubset(source, nextsources)
            ret_binds = util.dictlistmerge(ret_binds, r_binds)
            nextsources |= r_sources
        return ret_binds, nextsources
Example #3
0
 def getBindSourceSubset(self, targets):
     visited_binddict = collections.OrderedDict()
     visited_sources = set()
     for target in targets:
         termname = util.toTermname(target)
         r_binds, r_sources = self.getBindSubset(termname, visited_sources)
         visited_sources |= r_sources
         visited_binddict = util.dictlistmerge(visited_binddict, r_binds)
     return visited_binddict, visited_sources
Example #4
0
 def getBindSourceSubset(self, targets):
     visited_binddict = collections.OrderedDict()
     visited_sources = set()
     for target in targets:
         termname = util.toTermname(target)
         r_binds, r_sources = self.getBindSubset(termname, visited_sources)
         visited_sources |= r_sources
         visited_binddict = util.dictlistmerge(visited_binddict, r_binds)
     return visited_binddict, visited_sources