diff --git a/src/finn/transformation/fpgadataflow/templates.py b/src/finn/transformation/fpgadataflow/templates.py
index 2eb7380234348f23d2fc0314b9b454a23a65243b..5a4ee2c7db6382dd032aa4f1e52a16cbcf421ecb 100644
--- a/src/finn/transformation/fpgadataflow/templates.py
+++ b/src/finn/transformation/fpgadataflow/templates.py
@@ -150,8 +150,8 @@ class FINNAccelDriver():
             raise ValueError("Supported platforms are zynq zynq-iodma alveo")
 
         # allocate a PYNQ buffer for the packed input and buffer
-        self.ibuf_packed_device = allocate(shape=self.ishape_packed, dtype=np.uint8)
-        self.obuf_packed_device = allocate(shape=self.oshape_packed, dtype=np.uint8)
+        self.ibuf_packed_device = allocate(shape=self.ishape_packed, dtype=np.uint8, cacheable=True)
+        self.obuf_packed_device = allocate(shape=self.oshape_packed, dtype=np.uint8, cacheable=True)
 
     def fold_input(self, ibuf_normal):
         \"\"\"Reshapes input in desired shape.
@@ -188,13 +188,11 @@ class FINNAccelDriver():
     def copy_input_data_to_device(self, data):
         \"\"\"Copies given input data to PYNQ buffer.\"\"\"
         np.copyto(self.ibuf_packed_device, data)
-        if self.platform == "alveo":
-            self.ibuf_packed_device.sync_to_device()
+        self.ibuf_packed_device.flush()
 
     def copy_output_data_from_device(self, data):
         \"\"\"Copies PYNQ output buffer from device.\"\"\"
-        if self.platform == "alveo":
-            self.obuf_packed_device.sync_from_device()
+        self.obuf_packed_device.invalidate()
         np.copyto(data, self.obuf_packed_device)
 
     def execute(self):