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"))
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
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))