From 4d9af62b05420ea83ef63ed45186eed83358f000 Mon Sep 17 00:00:00 2001 From: Yaman Umuroglu <maltanar@gmail.com> Date: Wed, 12 Aug 2020 01:09:33 +0200 Subject: [PATCH] [ZYNQ] build driver as part of ZynqBuild --- .../transformation/fpgadataflow/make_zynq_proj.py | 2 ++ tests/end2end/test_zynqbuild_end2end_cnv_w1a1.py | 11 +---------- tests/end2end/test_zynqbuild_end2end_tfc_w1a1.py | 11 +---------- tests/end2end/test_zynqbuild_end2end_tfc_w2a2.py | 11 +---------- tests/fpgadataflow/test_fpgadataflow_fifo.py | 2 +- tests/fpgadataflow/test_fpgadataflow_ipstitch.py | 5 ----- 6 files changed, 6 insertions(+), 36 deletions(-) diff --git a/src/finn/transformation/fpgadataflow/make_zynq_proj.py b/src/finn/transformation/fpgadataflow/make_zynq_proj.py index dfc076ba5..1558d7399 100644 --- a/src/finn/transformation/fpgadataflow/make_zynq_proj.py +++ b/src/finn/transformation/fpgadataflow/make_zynq_proj.py @@ -52,6 +52,7 @@ from finn.transformation.fpgadataflow.floorplan import Floorplan from finn.transformation.general import GiveReadableTensorNames, GiveUniqueNodeNames from finn.transformation.infer_data_layouts import InferDataLayouts from shutil import copy +from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver from . import templates @@ -280,6 +281,7 @@ class ZynqBuild(Transformation): model = model.transform(InferDataLayouts()) # prepare at global level, then break up into kernels prep_transforms = [ + MakePYNQDriver(platform="zynq-iodma"), InsertIODMA(64), InsertDWC(), Floorplan(), diff --git a/tests/end2end/test_zynqbuild_end2end_cnv_w1a1.py b/tests/end2end/test_zynqbuild_end2end_cnv_w1a1.py index 1a1b21afa..cefe4d038 100644 --- a/tests/end2end/test_zynqbuild_end2end_cnv_w1a1.py +++ b/tests/end2end/test_zynqbuild_end2end_cnv_w1a1.py @@ -44,7 +44,6 @@ from finn.transformation.fpgadataflow.create_dataflow_partition import ( CreateDataflowPartition, ) from finn.transformation.fpgadataflow.make_deployment import DeployToPYNQ -from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver from finn.transformation.general import ( RemoveUnusedTensors, RemoveStaticGraphInputs, @@ -168,19 +167,11 @@ def test_end2end_zynqbuild_cnv_w1a1_fold(): model.save(build_dir + "/end2end_zynqbuild_cnv_w1a1_folded.onnx") -def test_end2end_zynqbuild_cnv_w1a1_make_driver(): - model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_cnv_w1a1_folded.onnx" - ) - model = model.transform(MakePYNQDriver(platform="zynq-iodma")) - model.save(build_dir + "/end2end_zynqbuild_cnv_w1a1_pynq_driver.onnx") - - @pytest.mark.slow @pytest.mark.vivado def test_end2end_zynqbuild_cnv_w1a1_build(): model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_cnv_w1a1_pynq_driver.onnx" + build_dir + "/end2end_zynqbuild_cnv_w1a1_folded.onnx" ) model = model.transform(ZynqBuild(test_pynq_board, target_clk_ns)) model = model.transform(AnnotateResources("synth")) diff --git a/tests/end2end/test_zynqbuild_end2end_tfc_w1a1.py b/tests/end2end/test_zynqbuild_end2end_tfc_w1a1.py index 98ccc9318..f473b86bb 100644 --- a/tests/end2end/test_zynqbuild_end2end_tfc_w1a1.py +++ b/tests/end2end/test_zynqbuild_end2end_tfc_w1a1.py @@ -49,7 +49,6 @@ from finn.transformation.fpgadataflow.create_dataflow_partition import ( CreateDataflowPartition, ) from finn.transformation.fpgadataflow.make_deployment import DeployToPYNQ -from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver from finn.transformation.general import ( RemoveUnusedTensors, RemoveStaticGraphInputs, @@ -152,19 +151,11 @@ def test_end2end_zynqbuild_tfc_w1a1_fold(): model.save(build_dir + "/end2end_zynqbuild_tfc_w1a1_folded.onnx") -def test_end2end_zynqbuild_tfc_w1a1_make_driver(): - model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_tfc_w1a1_folded.onnx" - ) - model = model.transform(MakePYNQDriver(platform="zynq-iodma")) - model.save(build_dir + "/end2end_zynqbuild_tfc_w1a1_pynq_driver.onnx") - - @pytest.mark.slow @pytest.mark.vivado def test_end2end_zynqbuild_tfc_w1a1_build(): model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_tfc_w1a1_pynq_driver.onnx" + build_dir + "/end2end_zynqbuild_tfc_w1a1_folded.onnx" ) model = model.transform(ZynqBuild(test_pynq_board, target_clk_ns)) model = model.transform(AnnotateResources("synth")) diff --git a/tests/end2end/test_zynqbuild_end2end_tfc_w2a2.py b/tests/end2end/test_zynqbuild_end2end_tfc_w2a2.py index b8db8c1a4..7b2809085 100644 --- a/tests/end2end/test_zynqbuild_end2end_tfc_w2a2.py +++ b/tests/end2end/test_zynqbuild_end2end_tfc_w2a2.py @@ -45,7 +45,6 @@ from finn.transformation.fpgadataflow.create_dataflow_partition import ( CreateDataflowPartition, ) from finn.transformation.fpgadataflow.make_deployment import DeployToPYNQ -from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver from finn.transformation.general import ( RemoveUnusedTensors, RemoveStaticGraphInputs, @@ -142,19 +141,11 @@ def test_end2end_zynqbuild_tfc_w2a2_fold(): model.save(build_dir + "/end2end_zynqbuild_tfc_w2a2_folded.onnx") -def test_end2end_zynqbuild_tfc_w2a2_make_driver(): - model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_tfc_w2a2_folded.onnx" - ) - model = model.transform(MakePYNQDriver(platform="zynq-iodma")) - model.save(build_dir + "/end2end_zynqbuild_tfc_w2a2_pynq_driver.onnx") - - @pytest.mark.slow @pytest.mark.vivado def test_end2end_zynqbuild_tfc_w2a2_build(): model = load_test_checkpoint_or_skip( - build_dir + "/end2end_zynqbuild_tfc_w2a2_pynq_driver.onnx" + build_dir + "/end2end_zynqbuild_tfc_w2a2_folded.onnx" ) model = model.transform(ZynqBuild(test_pynq_board, target_clk_ns)) model = model.transform(AnnotateResources("synth")) diff --git a/tests/fpgadataflow/test_fpgadataflow_fifo.py b/tests/fpgadataflow/test_fpgadataflow_fifo.py index 5de3c7d6f..a0881e2c9 100644 --- a/tests/fpgadataflow/test_fpgadataflow_fifo.py +++ b/tests/fpgadataflow/test_fpgadataflow_fifo.py @@ -107,7 +107,7 @@ def test_fpgadataflow_fifo_rtlsim(Shape, folded_shape, depth, finn_dtype): model = model.transform(CreateStitchedIP(test_fpga_part, target_clk_ns)) model = model.transform(MakePYNQProject(test_pynq_board)) model = model.transform(SynthPYNQProject()) - model = model.transform(MakePYNQDriver(platform="zynq-iodma")) + model = model.transform(MakePYNQDriver(platform="zynq")) username = os.getenv("PYNQ_USERNAME", "xilinx") password = os.getenv("PYNQ_PASSWORD", "xilinx") port = os.getenv("PYNQ_PORT", 22) diff --git a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py index 380e9313a..66b0ef921 100644 --- a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py +++ b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py @@ -459,11 +459,6 @@ def test_fpgadataflow_ipstitch_zynqbuild(board): idt = model.get_tensor_datatype(iname) ishape = model.get_tensor_shape(iname) x = gen_finn_dt_tensor(idt, ishape) - # driver - model = model.transform(MakePYNQDriver(platorm="zynq-iodma")) - 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") -- GitLab