diff --git a/migen/fhdl/tools.py b/migen/fhdl/tools.py index 8be41e476..8ae03ced4 100644 --- a/migen/fhdl/tools.py +++ b/migen/fhdl/tools.py @@ -32,6 +32,17 @@ class _TargetLister(NodeVisitor): self.visit(choice) +class _InputLister(NodeVisitor): + def __init__(self): + self.output_list = set() + + def visit_Signal(self, node): + self.output_list.add(node) + + def visit_Assign(self, node): + self.visit(node.r) + + def list_signals(node): lister = _SignalLister() lister.visit(node) @@ -44,6 +55,12 @@ def list_targets(node): return lister.output_list +def list_inputs(node): + lister = _InputLister() + lister.visit(node) + return lister.output_list + + def _resort_statements(ol): return [statement for i, statement in sorted(ol, key=lambda x: x[0])]