From 5356ace57554e8ca27bdd7fd7bc96c6d9d672edd Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <maltanar@gmail.com>
Date: Fri, 26 Aug 2022 13:10:07 +0200
Subject: [PATCH] [Test] add residual FIFO sizing testcase, path needs fix

---
 .../qnn-data/testcase/residual_testcase.onnx  | Bin 0 -> 30334 bytes
 tests/fpgadataflow/test_fifosizing.py         |  25 +++++++++++++++++-
 2 files changed, 24 insertions(+), 1 deletion(-)
 create mode 100644 src/finn/qnn-data/testcase/residual_testcase.onnx

diff --git a/src/finn/qnn-data/testcase/residual_testcase.onnx b/src/finn/qnn-data/testcase/residual_testcase.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..e22bd6396dfbc9834d62d7ab61e8f4a12fa558ac
GIT binary patch
literal 30334
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
br6;XCY2V(xw?FTO1H0a~`{0gSH>~^r^o>Tt

literal 0
HcmV?d00001

diff --git a/tests/fpgadataflow/test_fifosizing.py b/tests/fpgadataflow/test_fifosizing.py
index 7287861d5..9d8b02ebe 100644
--- a/tests/fpgadataflow/test_fifosizing.py
+++ b/tests/fpgadataflow/test_fifosizing.py
@@ -72,7 +72,7 @@ def fetch_test_model(topology, wbits=2, abits=2):
 
 @pytest.mark.slow
 @pytest.mark.vivado
-def test_fifosizing():
+def test_fifosizing_linear():
     tmp_output_dir = fetch_test_model("tfc")
     steps = build_cfg.default_build_dataflow_steps
     steps.insert(10, custom_step_fifosize)
@@ -103,3 +103,26 @@ def test_fifosizing():
         > 0.9
     )
     shutil.rmtree(tmp_output_dir)
+
+
+def test_fifosizing_residual():
+    steps = build_cfg.default_build_dataflow_steps[8:]
+    tmp_output_dir = make_build_dir("build_fifosizing_residual")
+    cfg = build_cfg.DataflowBuildConfig(
+        output_dir=tmp_output_dir,
+        auto_fifo_depths=True,
+        auto_fifo_strategy="characterize",
+        synth_clk_period_ns=10.0,
+        board="Pynq-Z1",
+        verbose=True,
+        rtlsim_batch_size=10,
+        verify_save_rtlsim_waveforms=True,
+        shell_flow_type=build_cfg.ShellFlowType.VIVADO_ZYNQ,
+        generate_outputs=[
+            build_cfg.DataflowOutputType.STITCHED_IP,
+            build_cfg.DataflowOutputType.RTLSIM_PERFORMANCE,
+        ],
+        steps=steps,
+        default_mem_mode=build_cfg.ComputeEngineMemMode.DECOUPLED,
+    )
+    build.build_dataflow_cfg("residual_testcase.onnx", cfg)
-- 
GitLab