hwt.serializer.combLoopAnalyzer package

class hwt.serializer.combLoopAnalyzer.CombLoopAnalyzer[source]

Bases: object

Visitor which can walk synthetized hwt hwt.synthesizer.unit.Unit instances and detect clusters connected by combinational logic

__init__()[source]

Initialize self. See help(type(self)) for accurate signature.

report()[source]
visit_HdlCompInst(o: hdlConvertorAst.hdlAst._structural.HdlCompInst) → None[source]
visit_HdlModuleDef(m: hdlConvertorAst.hdlAst._structural.HdlModuleDef) → None[source]
visit_HdlStmCodeBlockContainer(proc: hwt.hdl.statements.codeBlockContainer.HdlStmCodeBlockContainer) → None[source]
visit_Unit(u: hwt.synthesizer.unit.Unit)[source]
hwt.serializer.combLoopAnalyzer.collect_comb_drivers(path_prefix: Tuple[hwt.synthesizer.unit.Unit, ...], stm: hdlConvertorAst.hdlAst._bases.iHdlStatement, comb_connection_matrix: dict, comb_inputs: tuple)[source]
hwt.serializer.combLoopAnalyzer.collect_comb_inputs(ctx, seen, input_signal, comb_inputs)[source]

Submodules

hwt.serializer.combLoopAnalyzer.tarjan module

class hwt.serializer.combLoopAnalyzer.tarjan.StronglyConnectedComponentSearchTarjan(g: dict)[source]

Bases: object

Tarjan’s strongly connected component search graph algorithm for DAGs

based on https://github.com/bwesterb/py-tarjan

__init__(g: dict)[source]
Parameters:g – graph represented as a dictionary { <vertex> : <successors of vertex> }.
Note:vertex type does not matter but it has to be hashable (implement __eq__ and __hash__)
search_strongly_connected_components() → Generator[T_co, T_contra, V_co][source]

yields the strongly connected components of the graph in a topological order.

hwt.serializer.combLoopAnalyzer.tarjan._tarjan_head(index, lowlink, S, S_set, T, g, v)[source]