From fe22b4ac843d9afe38f05c20bef9a659a94d293a Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Mon, 18 May 2020 16:55:09 +0100
Subject: [PATCH] [Test] Add test for cppsim to SameResize unit test

---
 .../test_fpgadataflow_sameresize.py           | 33 +++++++++++++++----
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/tests/fpgadataflow/test_fpgadataflow_sameresize.py b/tests/fpgadataflow/test_fpgadataflow_sameresize.py
index 8177e92ef..8013e18c5 100644
--- a/tests/fpgadataflow/test_fpgadataflow_sameresize.py
+++ b/tests/fpgadataflow/test_fpgadataflow_sameresize.py
@@ -3,14 +3,18 @@ import pytest
 from onnx import TensorProto, helper
 from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
+from finn.util.basic import gen_finn_dt_tensor
+import finn.core.onnx_exec as oxe
 from finn.transformation.infer_shapes import InferShapes
+from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
+from finn.transformation.general import GiveUniqueNodeNames
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
+from finn.transformation.fpgadataflow.compile_cppsim import CompileCppSim
 
 
-def make_single_sameresize_modelwrapper(idim, kdim, stride, num_ch, idt, pad_style):
-    assert idim % stride == 0, "Stride must divide input dimension."
-    # number of "same" windows over the input data
-    same_windows = idim // stride
-    odim = kdim + stride * (same_windows - 1)
+def make_single_sameresize_modelwrapper(
+    idim, odim, kdim, stride, num_ch, idt, pad_style
+):
     inp = helper.make_tensor_value_info(
         "inp", TensorProto.FLOAT, [1, idim, idim, num_ch]
     )
@@ -58,7 +62,24 @@ def make_single_sameresize_modelwrapper(idim, kdim, stride, num_ch, idt, pad_sty
 # PaddingStyle: distribution of added values to achieve "same" padding
 @pytest.mark.parametrize("pad_style", [2])
 def test_fpgadataflow_sameresize(idim, kdim, stride, num_ch, idt, pad_style):
+    assert idim % stride == 0, "Stride must divide input dimension."
+    # number of "same" windows over the input data
+    same_windows = idim // stride
+    odim = kdim + stride * (same_windows - 1)
+
+    # generate input data
+    x = gen_finn_dt_tensor(idt, [1, idim, idim, num_ch])
+    input_dict = {"inp": x}
+
     model = make_single_sameresize_modelwrapper(
-        idim, kdim, stride, num_ch, idt, pad_style
+        idim, odim, kdim, stride, num_ch, idt, pad_style
     )
     model = model.transform(InferShapes())
+    model = model.transform(SetExecMode("cppsim"))
+    model = model.transform(GiveUniqueNodeNames())
+    model = model.transform(PrepareCppSim())
+    model = model.transform(CompileCppSim())
+    y = oxe.execute_onnx(model, input_dict)["outp"]
+
+    expected_oshape = (1, odim, odim, num_ch)
+    assert y.shape == expected_oshape
-- 
GitLab