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

from typing import List

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_cut_off_drivers_of_list(sig: RtlSignalBase, statements: ListOfHdlStatement, keep_mask: List[bool], new_statements: ListOfHdlStatement) -> bool: """ Cut all logic from statements which drives signal sig. :param sig: signal which drivers should be removed :param statements: list of statements to filter :param keep_mask: list of flags if True statements was driver only of sig :param new_statements: output list of filtered statements :return: True if all input statements were reduced """ all_cut_off = True for stm in statements: if sig in stm._outputs: newStm = stm._cut_off_drivers_of(sig) keep = True if newStm is None: # statement is des not have drivers of sig all_cut_off = False elif newStm is stm: # statement drives only sig keep = False new_statements.append(newStm) else: # statement was splited on multiple statements all_cut_off = False new_statements.append(newStm) else: all_cut_off = False keep = True keep_mask.append(keep) return all_cut_off