Source code for hwt.hdl.statements.utils.ioDiscovery

from typing import List, Set

from hwt.doc_markers import internal
from hwt.hdl.statements.utils.listOfHdlStatements import ListOfHdlStatement
from hwt.synthesizer.rtlLevel.mainBases import RtlSignalBase


[docs]@internal def HdlStatement_discover_enclosure_for_statements( statements: ListOfHdlStatement, outputs: List[RtlSignalBase]) -> Set[RtlSignalBase]: """ Discover enclosure for list of statements :param statements: list of statements in one code branch :param outputs: list of outputs which should be driven from this statement list :return: set of signals for which this statement list have always some driver (is enclosed) """ result = set() if not statements: return result for stm in statements: stm._discover_enclosure() for o in outputs: has_driver = False for stm in statements.iterStatementsWithOutput(o): assert not has_driver has_driver = False result.update(stm._enclosed_for) return result