From 69c67c58da54c7d6956de3ef2f753b63de45d328 Mon Sep 17 00:00:00 2001
From: mmrahorovic <mmrahorovic@hotmail.com>
Date: Fri, 18 Feb 2022 13:13:37 +0000
Subject: [PATCH] [convert_hls]: modifications to enable 1D MaxPool layers with
 PE / non-divisible pool/image dimensions

---
 .../transformation/fpgadataflow/convert_to_hls_layers.py    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/finn/transformation/fpgadataflow/convert_to_hls_layers.py b/src/finn/transformation/fpgadataflow/convert_to_hls_layers.py
index 2f83f23cb..eb9912b48 100644
--- a/src/finn/transformation/fpgadataflow/convert_to_hls_layers.py
+++ b/src/finn/transformation/fpgadataflow/convert_to_hls_layers.py
@@ -362,7 +362,10 @@ class InferStreamingMaxPool(Transformation):
                 ifm_ch = mp_in_shape[-1]
                 ifm_dim_h = mp_in_shape[1]
                 ifm_dim_w = mp_in_shape[2]
-                if ifm_dim_h % k_h == 0 and ifm_dim_w % k_w == 0:
+                pe = 1
+                is_1d = (ifm_dim_h == 1 and k_h == 1) or (ifm_dim_w == 1 and k_w == 1)
+                is_divisable = ifm_dim_h % k_h == 0 or ifm_dim_w % k_w == 0
+                if is_1d or is_divisable:
                     # create equivalent StreamingMaxPool_Batch node
                     new_node = helper.make_node(
                         "StreamingMaxPool_Batch",
@@ -374,6 +377,7 @@ class InferStreamingMaxPool(Transformation):
                         NumChannels=ifm_ch,
                         ImgDim=(ifm_dim_h, ifm_dim_w),
                         dataType=dt.name,
+                        PE=pe,
                         name="StreamingMaxPool_Batch_" + n.name,
                     )
                     graph.node.insert(node_ind, new_node)
-- 
GitLab