diff --git a/notebooks/end2end_example/cnv_end2end_example.ipynb b/notebooks/end2end_example/cnv_end2end_example.ipynb
index ce8c9decf4aaa6b7be2e556b6053abf380d0d373..74efa67d16616f64b21d84a8ef328ceaf2f3ce09 100644
--- a/notebooks/end2end_example/cnv_end2end_example.ipynb
+++ b/notebooks/end2end_example/cnv_end2end_example.ipynb
@@ -574,7 +574,7 @@
     "target_dir = os.getenv(\"PYNQ_TARGET_DIR\", \"/home/xilinx/finn\")\n",
     "\n",
     "model = ModelWrapper(build_dir + \"/end2end_cnv_w1a1_synth.onnx\")\n",
-    "model = model.transform(MakePYNQDriver())\n",
+    "model = model.transform(MakePYNQDriver(platform="zynq"))\n",
     "model = model.transform(DeployToPYNQ(ip, port, username, password, target_dir))\n",
     "model.save(build_dir + \"/end2end_cnv_w1a1_pynq_deploy.onnx\")"
    ]
diff --git a/notebooks/end2end_example/tfc_end2end_example.ipynb b/notebooks/end2end_example/tfc_end2end_example.ipynb
index c84efc964b1f57b7ed385521fc5214fdc2396590..fd272d7bf1138981f9651e4c2551fa040af17c19 100644
--- a/notebooks/end2end_example/tfc_end2end_example.ipynb
+++ b/notebooks/end2end_example/tfc_end2end_example.ipynb
@@ -1422,7 +1422,7 @@
    "source": [
     "from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver\n",
     "model = ModelWrapper(build_dir + \"/tfc_w1_a1_post_synthesis.onnx\")\n",
-    "model = model.transform(MakePYNQDriver())"
+    "model = model.transform(MakePYNQDriver(platform="zynq"))"
    ]
   },
   {
diff --git a/src/finn/transformation/fpgadataflow/make_pynq_driver.py b/src/finn/transformation/fpgadataflow/make_pynq_driver.py
index a7bf9e6e6279923764009a00e2f805be1b1fa9c0..fc326b4a25a9784f3919b4246ec2b8f54fb881f4 100644
--- a/src/finn/transformation/fpgadataflow/make_pynq_driver.py
+++ b/src/finn/transformation/fpgadataflow/make_pynq_driver.py
@@ -41,6 +41,8 @@ class MakePYNQDriver(Transformation):
     accelerator, including data packing/unpacking. The MakePYNQProject
     transformation must have been already applied.
 
+    platform: one of ["zynq", "zynq-iodma", "alveo"]
+
     Outcome if successful: sets the pynq_driver_dir attribute in the ONNX
     ModelProto's metadata_props field, with the created driver dir as the
     value.
diff --git a/src/finn/transformation/fpgadataflow/vitis_build.py b/src/finn/transformation/fpgadataflow/vitis_build.py
index 0fb85f25e4f8d652a87f1e832c6b41fd67a7406e..2df58c537250c102ee85a685fc32904ee879e38f 100644
--- a/src/finn/transformation/fpgadataflow/vitis_build.py
+++ b/src/finn/transformation/fpgadataflow/vitis_build.py
@@ -246,7 +246,8 @@ class VitisLink(Transformation):
             f.write("cd {}\n".format(link_dir))
             f.write(
                 "v++ -t hw --platform %s --link %s"
-                " --kernel_frequency %d --config config.txt --optimize 2 --save-temps -R2\n"
+                " --kernel_frequency %d --config config.txt --optimize 2"
+                " --save-temps -R2\n"
                 % (self.platform, " ".join(object_files), self.f_mhz)
             )
             f.write("cd {}\n".format(working_dir))
@@ -277,7 +278,7 @@ class VitisBuild(Transformation):
         model = model.transform(InferDataLayouts())
         # prepare at global level, then break up into kernels
         prep_transforms = [
-            MakePYNQDriver(),
+            MakePYNQDriver(platform="alveo"),
             InsertIODMA(512),
             InsertDWC(),
             Floorplan(),
diff --git a/tests/end2end/test_end2end_cnv_w1a1.py b/tests/end2end/test_end2end_cnv_w1a1.py
index a2cfcd3a864c12788c2ac73271b5782ddfa336c1..ebca224389550929cebd542cf4201cf62481a169 100644
--- a/tests/end2end/test_end2end_cnv_w1a1.py
+++ b/tests/end2end/test_end2end_cnv_w1a1.py
@@ -322,7 +322,7 @@ def test_end2end_cnv_w1a1_synth_pynq_project():
 
 def test_end2end_cnv_w1a1_make_driver():
     model = load_test_checkpoint_or_skip(build_dir + "/end2end_cnv_w1a1_synth.onnx")
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     model.save(build_dir + "/end2end_cnv_w1a1_pynq_driver.onnx")
 
 
diff --git a/tests/end2end/test_end2end_cnv_w2a2.py b/tests/end2end/test_end2end_cnv_w2a2.py
index f45b0a3eccd2f52ea144405865a1df06315952d9..2e34990007677ce1b8e0a9ae4a1781d4527ee040 100644
--- a/tests/end2end/test_end2end_cnv_w2a2.py
+++ b/tests/end2end/test_end2end_cnv_w2a2.py
@@ -320,7 +320,7 @@ def test_end2end_cnv_w2a2_synth_pynq_project():
 
 def test_end2end_cnv_w2a2_make_driver():
     model = load_test_checkpoint_or_skip(build_dir + "/end2end_cnv_w2a2_synth.onnx")
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     model.save(build_dir + "/end2end_cnv_w2a2_pynq_driver.onnx")
 
 
diff --git a/tests/end2end/test_end2end_tfc_w1a1.py b/tests/end2end/test_end2end_tfc_w1a1.py
index 31659df631e8ab489cb63dbef51200f313bca6b3..b827cbb1c31cc84de9fa5d4df4d6b23e02a02a5f 100644
--- a/tests/end2end/test_end2end_tfc_w1a1.py
+++ b/tests/end2end/test_end2end_tfc_w1a1.py
@@ -319,7 +319,7 @@ def test_end2end_tfc_w1a1_synth_pynq_project():
 
 def test_end2end_tfc_w1a1_make_driver():
     model = load_test_checkpoint_or_skip(build_dir + "/end2end_tfc_w1a1_synth.onnx")
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     model.save(build_dir + "/end2end_tfc_w1a1_pynq_driver.onnx")
 
 
diff --git a/tests/end2end/test_end2end_tfc_w1a2.py b/tests/end2end/test_end2end_tfc_w1a2.py
index d5579f625a20ae26e18bcdcba0cfaa3042a71b9a..755650e3d4da6947a93495fd5bbe0464cf485193 100644
--- a/tests/end2end/test_end2end_tfc_w1a2.py
+++ b/tests/end2end/test_end2end_tfc_w1a2.py
@@ -275,7 +275,7 @@ def test_end2end_tfc_w1a2_synth_pynq_project():
 
 def test_end2end_tfc_w1a2_make_driver():
     model = load_test_checkpoint_or_skip(build_dir + "/end2end_tfc_w1a2_synth.onnx")
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     model.save(build_dir + "/end2end_tfc_w1a2_pynq_driver.onnx")
 
 
diff --git a/tests/end2end/test_end2end_tfc_w2a2.py b/tests/end2end/test_end2end_tfc_w2a2.py
index 470119f3444987f0156caff81bf556bf4f2f2cbb..4b2dd9ef01850897d95ede1214f87e9aa5b79f63 100644
--- a/tests/end2end/test_end2end_tfc_w2a2.py
+++ b/tests/end2end/test_end2end_tfc_w2a2.py
@@ -275,7 +275,7 @@ def test_end2end_tfc_w2a2_synth_pynq_project():
 
 def test_end2end_tfc_w2a2_make_driver():
     model = load_test_checkpoint_or_skip(build_dir + "/end2end_tfc_w2a2_synth.onnx")
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     model.save(build_dir + "/end2end_tfc_w2a2_pynq_driver.onnx")
 
 
diff --git a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py
index 40f29b0c7df025df09137f124d66ea33236e18e4..380e9313ae28637c81c0e0a28b0e07ce37d2d650 100644
--- a/tests/fpgadataflow/test_fpgadataflow_ipstitch.py
+++ b/tests/fpgadataflow/test_fpgadataflow_ipstitch.py
@@ -343,7 +343,7 @@ def test_fpgadataflow_ipstitch_pynq_driver():
     model = load_test_checkpoint_or_skip(
         ip_stitch_model_dir + "/test_fpgadataflow_ipstitch_pynq_synth.onnx"
     )
-    model = model.transform(MakePYNQDriver())
+    model = model.transform(MakePYNQDriver(platform="zynq"))
     driver_dir = model.get_metadata_prop("pynq_driver_dir")
     assert driver_dir is not None
     assert os.path.isdir(driver_dir)
@@ -460,7 +460,7 @@ def test_fpgadataflow_ipstitch_zynqbuild(board):
     ishape = model.get_tensor_shape(iname)
     x = gen_finn_dt_tensor(idt, ishape)
     # driver
-    model = model.transform(MakePYNQDriver())
+    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)
diff --git a/tests/pynq/test_pynq_performance_fifo.py b/tests/pynq/test_pynq_performance_fifo.py
index 1d4542473c4b58d3baa62f4123fd0f2f76954d95..1a438f79e09925cab57866c83a3cc9c8a1896351 100644
--- a/tests/pynq/test_pynq_performance_fifo.py
+++ b/tests/pynq/test_pynq_performance_fifo.py
@@ -81,7 +81,7 @@ def test_pynq_performance_fifo():
         model = model.transform(CreateStitchedIP(fpga_part, clk_ns))
         model = model.transform(MakePYNQProject(board))
         model = model.transform(SynthPYNQProject())
-        model = model.transform(MakePYNQDriver())
+        model = model.transform(MakePYNQDriver(platform="zynq"))
         model = model.transform(DeployToPYNQ(ip, port, username, password, target_dir))
 
         ret = dict()