示例#1
0
文件: tools.py 项目: jix/migen
def group_by_targets(sl):
    groups = []
    seen = set()
    for order, stmt in enumerate(flat_iteration(sl)):
        targets = set(list_targets(stmt))
        group = [(order, stmt)]
        disjoint = targets.isdisjoint(seen)
        seen |= targets
        if not disjoint:
            groups, old_groups = [], groups
            for old_targets, old_group in old_groups:
                if targets.isdisjoint(old_targets):
                    groups.append((old_targets, old_group))
                else:
                    targets |= old_targets
                    group += old_group
        groups.append((targets, group))
    return [(targets, _resort_statements(stmts)) for targets, stmts in groups]
示例#2
0
文件: tools.py 项目: m-labs/migen
def group_by_targets(sl):
    groups = []
    seen = set()
    for order, stmt in enumerate(flat_iteration(sl)):
        targets = set(list_targets(stmt))
        group = [(order, stmt)]
        disjoint = targets.isdisjoint(seen)
        seen |= targets
        if not disjoint:
            groups, old_groups = [], groups
            for old_targets, old_group in old_groups:
                if targets.isdisjoint(old_targets):
                    groups.append((old_targets, old_group))
                else:
                    targets |= old_targets
                    group += old_group
        groups.append((targets, group))
    return [(targets, _resort_statements(stmts))
        for targets, stmts in groups]
示例#3
0
文件: module.py 项目: jix/migen
def _flat_list(e):
	if isinstance(e, collections.Iterable):
		return flat_iteration(e)
	else:
		return [e]
示例#4
0
文件: structure.py 项目: RP7/migen
	def __init__(self, *args):
		Value.__init__(self)
		self.l = list(flat_iteration(args))
示例#5
0
文件: module.py 项目: xobs/migen
def _flat_list(e):
    if isinstance(e, collections.Iterable):
        return flat_iteration(e)
    else:
        return [e]
示例#6
0
 def __init__(self, *args):
     Value.__init__(self)
     self.l = list(flat_iteration(args))