diff --git a/tests/fpgadataflow/test_fpgadataflow_fclayer.py b/tests/fpgadataflow/test_fpgadataflow_fclayer.py
index b0bda47795a8ccd73caee34da06332f64cdf48b7..2d55446f44e9229bc5a7006c3aa60a43b441e2b3 100644
--- a/tests/fpgadataflow/test_fpgadataflow_fclayer.py
+++ b/tests/fpgadataflow/test_fpgadataflow_fclayer.py
@@ -8,7 +8,7 @@ from finn.core.utils import interleave_matrix_outer_dim_from_partitions
 from finn.custom_op.multithreshold import MultiThreshold
 
 
-def make_single_fclayer_modelwrapper(W, T, pe, simd, wdt, idt, tdt, odt):
+def make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt, T=None, tdt=None):
     mh = W.shape[0]
     mw = W.shape[1]
     assert mh % pe == 0
@@ -42,9 +42,14 @@ def make_single_fclayer_modelwrapper(W, T, pe, simd, wdt, idt, tdt, odt):
 
     inp = helper.make_tensor_value_info("inp", TensorProto.FLOAT, [1, sf, simd])
     outp = helper.make_tensor_value_info("outp", TensorProto.FLOAT, [1, nf, pe])
+    if T is not None:
+        node_inp_list = ["inp", "weights", "thresh"]
+    else:
+        # no thresholds
+        node_inp_list = ["inp", "weights"]
     FCLayer_node = helper.make_node(
         "StreamingFCLayer_Batch",
-        ["inp", "weights", "thresh"],
+        node_inp_list,
         ["outp"],
         domain="finn",
         backend="fpgadataflow",
@@ -56,18 +61,7 @@ def make_single_fclayer_modelwrapper(W, T, pe, simd, wdt, idt, tdt, odt):
         resDataType=rdt,
     )
     graph = helper.make_graph(
-        nodes=[FCLayer_node],
-        name="fclayer_graph",
-        inputs=[inp],
-        outputs=[outp],
-        value_info=[
-            helper.make_tensor_value_info(
-                "weights", TensorProto.FLOAT, [pe, wmem, simd]
-            ),
-            helper.make_tensor_value_info(
-                "thresh", TensorProto.FLOAT, [pe, tmem, n_thres_steps]
-            ),
-        ],
+        nodes=[FCLayer_node], name="fclayer_graph", inputs=[inp], outputs=[outp],
     )
 
     model = helper.make_model(graph, producer_name="fclayer-model")
@@ -83,6 +77,32 @@ def make_single_fclayer_modelwrapper(W, T, pe, simd, wdt, idt, tdt, odt):
     return model
 
 
+def test_fpgadataflow_fclayer_ibp_wbp_noact():
+    mh = 4
+    mw = 4
+    pe = 4
+    simd = 4
+    wdt = idt = DataType.BIPOLAR
+    odt = DataType.UINT32
+    # generate weights
+    W = np.random.randint(2, size=(mh, mw))
+    model = make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt)
+    # generate input data
+    x = np.random.randint(2, size=mw)
+    ishape = model.get_tensor_shape("inp")
+    oshape = model.get_tensor_shape("outp")
+    input_tensor = (np.asarray(x, dtype=np.float32)).reshape(*ishape)
+    input_dict = {"inp": input_tensor}
+    produced = oxe.execute_onnx(model, input_dict)["outp"]
+    # convert to bipolar values
+    Wb = 2 * W - 1
+    xb = 2 * x - 1
+    yb = np.dot(Wb, xb).reshape(oshape.shape)
+    # XnorMul produces positive outputs only, adjust expectation accordingly
+    expected = 2 * yb - mw
+    assert (produced == expected).all()
+
+
 def test_fpgadataflow_fclayer_all_bipolar():
     mh = 4
     mw = 4
@@ -94,7 +114,7 @@ def test_fpgadataflow_fclayer_all_bipolar():
     W = np.random.randint(2, size=(mh, mw))
     # single global threshold at zero
     T = np.zeros((1, 1))
-    model = make_single_fclayer_modelwrapper(W, T, pe, simd, wdt, idt, tdt, odt)
+    model = make_single_fclayer_modelwrapper(W, pe, simd, wdt, idt, odt, T, tdt)
     # generate input data
     x = np.random.randint(2, size=mw)
     ishape = model.get_tensor_shape("inp")