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