def test_selection_exclusion_preference(self):
        @DeltaBlock(template=self.test_template,
                    allow_const=False,
                    tags=["func_4", "excluded, preferred"])
        def func_4(a: int, b: int) -> Void:
            print("func_4")
            raise DeltaRuntimeExit

        with DeltaGraph() as graph:
            n = self.test_template.call(1, 2)

        # start on a body different form the desired
        n.select_body(preferred=["func_4"])

        _, self.program = serialize_graph(graph)

        node_bodies, _, _ = generate_wiring(self.program,
                                            excluded_body_tags=["excluded"])

        self.assertEqual(len(node_bodies), 1)
        asyncio.run(self.assert_tag_from_py_script(node_bodies[0], "func_1"))

        node_bodies, _, _ = generate_wiring(self.program,
                                            excluded_body_tags=["excluded"],
                                            preferred_body_tags=["preferred"])

        self.assertEqual(len(node_bodies), 1)
        asyncio.run(self.assert_tag_from_py_script(node_bodies[0], "func_2"))
    def test_all_body_exclusion_error(self):

        with DeltaGraph() as graph:
            n = self.test_template.call(1, 2)

        _, self.program = serialize_graph(graph)

        with self.assertRaises(AttributeError):
            node_bodies, _, _ = generate_wiring(
                self.program,
                excluded_body_tags=["func_1", "func_2", "func_3"])
    def test_no_select_excluded_node_body(self):

        with DeltaGraph() as graph:
            n = self.test_template.call(1, 2)

        # start on a body different form the desired
        n.select_body(preferred=["excluded"])

        _, self.program = serialize_graph(graph)

        node_bodies, _, _ = generate_wiring(self.program,
                                            excluded_body_tags=["excluded"])

        self.assertEqual(len(node_bodies), 1)
        asyncio.run(self.assert_tag_from_py_script(node_bodies[0], "func_1"))
示例#4
0
        shutil.copy("/workdir/demos/deltaflow_on_artiq/" + sc_hal_hpp_file,
                    build_repo + "/" + sc_hal_hpp_file)

        shutil.copy(
            "/workdir/demos/deltaflow_on_artiq/" + projectq_hal_hpp_file,
            build_repo + "/" + projectq_hal_hpp_file)

        shutil.copy("/workdir/demos/deltaflow_on_artiq/" + hal_py_file,
                    build_repo + "/" + hal_py_file)
    except FileExistsError:
        pass

    graph, _ = rabi_demo.get_graph()
    dotdf_bytes, program = serialize_graph(graph, name=program_name)

    node_bodies, node_inits, wiring = generate_wiring(program)

    # write artifacts to build repository
    for build_artifact_name, build_artifact_data in wiring.items():
        print(f"writing: {build_artifact_name} into {build_repo}")
        with open(build_repo + f"/{build_artifact_name}", "wb") as f:
            write(build_artifact_data, f)

    # write python bodies to build repository
    for py_build_artifact in node_bodies:
        print(f"py_build_artifact: {py_build_artifact}")
        print(f"py_build_artifact: {type(py_build_artifact)}")
        with open(build_repo + f"/{py_build_artifact.name}", "wb") as f:
            write(py_build_artifact, f)

    # write init roms to build repository
示例#5
0
 def check_build(self, test_graph):
     """Build SystemC program and run tests."""
     _, program = serialize_graph(test_graph)
     _, _, wiring = generate_wiring(program)
     asyncio.run(self.assert_build_correct(wiring, test_graph.name))