From 825cb51a2435ddcc41c5336acf262e00f99790f4 Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <maltanar@gmail.com>
Date: Mon, 30 Mar 2020 14:58:02 +0100
Subject: [PATCH] [Test] debug changes to ip stitch test

---
 .../test_fpgadataflow_ip_stitch.py            | 49 +++++++------------
 1 file changed, 19 insertions(+), 30 deletions(-)

diff --git a/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py b/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py
index fc385be06..6c79af8bb 100644
--- a/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py
+++ b/tests/fpgadataflow/test_fpgadataflow_ip_stitch.py
@@ -67,7 +67,7 @@ def create_one_fc_model():
     # create a model with a StreamingFCLayer instance with no activation
     # the wider range of the full accumulator makes debugging a bit easier
     wdt = DataType.INT2
-    idt = DataType.INT2
+    idt = DataType.INT32
     odt = DataType.INT32
     m = 4
     no_act = 1
@@ -120,16 +120,14 @@ def create_one_fc_model():
 def create_two_fc_model():
     # create a model with two StreamingFCLayer instances
     wdt = DataType.INT2
-    idt = DataType.INT2
-    odt = DataType.INT2
-    act = DataType.INT2
+    idt = DataType.INT32
+    odt = DataType.INT32
     m = 4
-    tdt = DataType.INT32
-    actval = odt.min()
-    no_act = 0
+    actval = 0
+    no_act = 1
     binary_xnor_mode = 0
-    pe = 2
-    simd = 2
+    pe = 1
+    simd = 1
 
     inp = helper.make_tensor_value_info("inp", TensorProto.FLOAT, [1, m])
     mid = helper.make_tensor_value_info("mid", TensorProto.FLOAT, [1, m])
@@ -137,7 +135,7 @@ def create_two_fc_model():
 
     fc0 = helper.make_node(
         "StreamingFCLayer_Batch",
-        ["inp", "w0", "t0"],
+        ["inp", "w0"],
         ["mid"],
         domain="finn",
         backend="fpgadataflow",
@@ -145,25 +143,27 @@ def create_two_fc_model():
         MW=m,
         MH=m,
         SIMD=simd,
-        PE=pe,
+        PE=2,
         inputDataType=idt.name,
         weightDataType=wdt.name,
         outputDataType=odt.name,
         ActVal=actval,
         binaryXnorMode=binary_xnor_mode,
         noActivation=no_act,
+        mem_mode="decoupled",
     )
 
     fc1 = helper.make_node(
         "StreamingFCLayer_Batch",
-        ["mid", "w1", "t1"],
+        ["mid", "w1"],
         ["outp"],
         domain="finn",
         backend="fpgadataflow",
         resType="ap_resource_lut()",
+        mem_mode="decoupled",
         MW=m,
         MH=m,
-        SIMD=simd,
+        SIMD=2,
         PE=pe,
         inputDataType=idt.name,
         weightDataType=wdt.name,
@@ -191,25 +191,11 @@ def create_two_fc_model():
     model.set_tensor_datatype("w1", wdt)
 
     # generate weights
-    w0 = gen_finn_dt_tensor(wdt, (m, m))
-    w1 = gen_finn_dt_tensor(wdt, (m, m))
+    w0 = np.eye(m, dtype=np.float32)
+    w1 = np.eye(m, dtype=np.float32)
     model.set_initializer("w0", w0)
     model.set_initializer("w1", w1)
 
-    # generate thresholds
-    (min, max) = calculate_signed_dot_prod_range(idt, wdt, m)
-    n_steps = act.get_num_possible_values() - 1
-    t0 = np.random.randint(min, max - 1, (m, n_steps)).astype(np.float32)
-    t1 = np.random.randint(min, max - 1, (m, n_steps)).astype(np.float32)
-    # provide non-decreasing thresholds
-    t0 = np.sort(t0, axis=1)
-    t1 = np.sort(t1, axis=1)
-
-    model.set_initializer("t0", t0)
-    model.set_initializer("t1", t1)
-    model.set_tensor_datatype("t0", tdt)
-    model.set_tensor_datatype("t1", tdt)
-
     model = model.transform(CreateDataflowPartition())
     return model
 
@@ -251,6 +237,7 @@ def test_fpgadataflow_ipstitch_do_stitch():
 
 def test_fpgadataflow_ipstitch_rtlsim():
     model = ModelWrapper(ip_stitch_model_dir + "/test_fpgadataflow_ip_stitch.onnx")
+    model.set_metadata_prop("rtlsim_trace", "whole_trace.vcd")
     sim = pyverilate_stitched_ip(model)
     exp_io = [
         "ap_clk_0",
@@ -268,7 +255,9 @@ def test_fpgadataflow_ipstitch_rtlsim():
     model.set_metadata_prop("exec_mode", "rtlsim")
     idt = model.get_tensor_datatype("inp")
     ishape = model.get_tensor_shape("inp")
-    x = gen_finn_dt_tensor(idt, ishape)
+    # x = gen_finn_dt_tensor(idt, ishape)
+    # x = np.zeros(ishape, dtype=np.float32)
+    x = np.asarray([[-2, -1, 0, 1]], dtype=np.float32)
     rtlsim_res = execute_onnx(model, {"inp": x})["outp"]
     assert (rtlsim_res == x).all()
 
-- 
GitLab