diff --git a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py index 88d9dd4d4e4122a4824afce30e5bed46cfbb21b7..fc2f4eee246f004f440bad45fc0d18aad67d68fe 100644 --- a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py +++ b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py @@ -454,7 +454,38 @@ def test_fpgadataflow_ipstitch_zynqbuild(board): assert sdp_node.__class__.__name__ == "StreamingDataflowPartition" assert os.path.isfile(sdp_node.get_nodeattr("model")) model = load_test_checkpoint_or_skip(sdp_node.get_nodeattr("model")) - model.transform(ZynqBuild(board, 10)) + # generate inputs for remote exec + iname = "inp" + idt = model.get_tensor_datatype(iname) + ishape = model.get_tensor_shape(iname) + # driver + model = model.transform(MakePYNQDriver()) + driver_dir = model.get_metadata_prop("pynq_driver_dir") + assert driver_dir is not None + assert os.path.isdir(driver_dir) + # bitfile using ZynqBuild + model = model.transform(ZynqBuild(board, 10)) model.save(ip_stitch_model_dir + "/test_fpgadataflow_ipstitch_customzynq.onnx") bitfile_name = model.get_metadata_prop("vivado_pynq_bitfile") + assert bitfile_name is not None assert os.path.isfile(bitfile_name) + # deployment + try: + ip = os.environ["PYNQ_IP"] # no default for this one; skip if not defined + if ip == "": + pytest.skip("PYNQ board IP address not specified") + username = os.getenv("PYNQ_USERNAME", "xilinx") + password = os.getenv("PYNQ_PASSWORD", "xilinx") + port = os.getenv("PYNQ_PORT", 22) + target_dir = os.getenv("PYNQ_TARGET_DIR", "/home/xilinx/finn") + model = model.transform(DeployToPYNQ(ip, port, username, password, target_dir)) + deployment_dir = model.get_metadata_prop("pynq_deploy_dir") + assert deployment_dir is not None + assert os.path.isdir(deployment_dir) + # remote exec + x = gen_finn_dt_tensor(idt, ishape) + input_dict = {"inp": x} + outp = execute_onnx(model, input_dict) + assert np.isclose(outp["outp"], x).all() + except KeyError: + pytest.skip("PYNQ board IP address not specified")