core_graph.py
1 #!/usr/bin/env python3 2 3 import pathlib 4 import sys 5 from argparse import ArgumentParser, FileType 6 7 par = ArgumentParser() 8 par.add_argument("-p", "--prune", action="store_true", help="ignore disconnected nodes") 9 par.add_argument("-f", "--format", default="elk", nargs="?") 10 par.add_argument("ofile", type=FileType("w")) 11 12 arg = par.parse_args() 13 14 sys.path.insert(0, str(pathlib.Path(__file__).parent.parent)) 15 16 from coreblocks.params.genparams import GenParams # noqa: E402 17 from transactron.graph import TracingFragment # noqa: E402 18 from test.test_core import CoreTestElaboratable # noqa: E402 19 from coreblocks.params.configurations import basic_core_config # noqa: E402 20 from transactron.core import TransactronContextElaboratable # noqa: E402 21 from transactron.core.keys import TransactionManagerKey # noqa: E402 22 from transactron.utils import DependencyManager, DependencyContext # noqa: E402 23 24 with DependencyContext(DependencyManager()): 25 gp = GenParams(basic_core_config.replace(debug_signals=False)) 26 elaboratable = CoreTestElaboratable(gp) 27 tm = TransactronContextElaboratable(elaboratable) 28 fragment = TracingFragment.get(tm, platform=None).prepare() 29 30 core = fragment 31 while not hasattr(core, "manager"): 32 core = core._tracing_original # type: ignore 33 34 mgr = core.manager.get_dependency(TransactionManagerKey()) # type: ignore 35 36 with arg.ofile as fp: 37 graph = mgr.visual_graph(fragment) 38 if arg.prune: 39 graph.prune() 40 graph.dump(fp, arg.format)