diff --git a/tests/fpgadataflow/test_fpgadataflow_fclayer.py b/tests/fpgadataflow/test_fpgadataflow_fclayer.py index b88b79cbbf8025ef82fd3f69e3fb1f1e18ec150f..bfff558b204eb94b0f07a5287e6f0dc03d5ef0d1 100644 --- a/tests/fpgadataflow/test_fpgadataflow_fclayer.py +++ b/tests/fpgadataflow/test_fpgadataflow_fclayer.py @@ -71,13 +71,27 @@ def prepare_inputs(model, input_tensor, idt): return {"inp": input_tensor} -@pytest.mark.parametrize("wdt", [DataType.BIPOLAR, DataType.INT2]) -@pytest.mark.parametrize("idt", [DataType.BIPOLAR, DataType.INT2]) -@pytest.mark.parametrize("pe", [1, 2, 4]) -@pytest.mark.parametrize("simd", [1, 2, 4]) -def test_fpgadataflow_fclayer_noact(idt, wdt, pe, simd): - mh = 4 - mw = 4 +# weight datatype +@pytest.mark.parametrize("wdt", [DataType.INT2]) +# input datatype +@pytest.mark.parametrize("idt", [DataType.INT2]) +# neuron folding, -1 is maximum possible +@pytest.mark.parametrize("nf", [-1]) +# synapse folding, -1 is maximum possible +@pytest.mark.parametrize("sf", [-1]) +# HLS matrix width (input features) +@pytest.mark.parametrize("mw", [4]) +# HLS matrix height (output features) +@pytest.mark.parametrize("mh", [4]) +def test_fpgadataflow_fclayer_noact(idt, wdt, nf, sf, mw, mh): + if nf == -1: + nf = mh + if sf == -1: + sf = mw + pe = mh // nf + simd = mw // sf + assert mh % pe == 0 + assert mw % sf == 0 if wdt == DataType.BIPOLAR and idt == DataType.BIPOLAR: odt = DataType.UINT32 else: @@ -86,9 +100,7 @@ def test_fpgadataflow_fclayer_noact(idt, wdt, pe, simd): W = gen_finn_dt_tensor(wdt, (mw, mh)) # generate input data x = gen_finn_dt_tensor(idt, (1, mw)) - model = make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt) - # prepare input data input_dict = prepare_inputs(model, x, idt) if wdt == DataType.BIPOLAR and idt == DataType.BIPOLAR: