diff --git a/tests/fpgadataflow/test_fpgadataflow_res_estimate.py b/tests/fpgadataflow/test_fpgadataflow_res_estimate.py
new file mode 100644
index 0000000000000000000000000000000000000000..5376d63c9abb1268bc18303b5eb093b977a0a728
--- /dev/null
+++ b/tests/fpgadataflow/test_fpgadataflow_res_estimate.py
@@ -0,0 +1,73 @@
+from onnx import TensorProto, helper
+
+from finn.analysis.fpgadataflow.res_estimation import res_estimation
+from finn.core.datatype import DataType
+from finn.core.modelwrapper import ModelWrapper
+from finn.transformation.general import GiveUniqueNodeNames
+
+
+def check_two_dict_for_equality(dict1, dict2):
+    for key in dict1:
+        assert key in dict2, "Key: {} is not in both dictionaries".format(key)
+        assert (
+            dict1[key] == dict2[key]
+        ), """Values for key {} are not the same
+        in both dictionaries""".format(
+            key
+        )
+
+    return True
+
+
+def test_res_estimate():
+    mw = mh = 4
+    simd = 1
+    pe = 1
+    idt = DataType.INT2
+    wdt = DataType.INT2
+    odt = DataType.INT32
+    actval = odt.min()
+
+    inp = helper.make_tensor_value_info("inp", TensorProto.FLOAT, [1, mw])
+    outp = helper.make_tensor_value_info("outp", TensorProto.FLOAT, [1, mh])
+    node_inp_list = ["inp", "weights", "thresh"]
+
+    FCLayer_node = helper.make_node(
+        "StreamingFCLayer_Batch",
+        node_inp_list,
+        ["outp"],
+        domain="finn",
+        backend="fpgadataflow",
+        resType="ap_resource_lut()",
+        MW=mw,
+        MH=mh,
+        SIMD=simd,
+        PE=pe,
+        inputDataType=idt.name,
+        weightDataType=wdt.name,
+        outputDataType=odt.name,
+        ActVal=actval,
+        binaryXnorMode=0,
+        noActivation=0,
+    )
+    graph = helper.make_graph(
+        nodes=[FCLayer_node], name="fclayer_graph", inputs=[inp], outputs=[outp]
+    )
+
+    model = helper.make_model(graph, producer_name="fclayer-model")
+    model = ModelWrapper(model)
+
+    model.set_tensor_datatype("inp", idt)
+    model.set_tensor_datatype("outp", odt)
+    model.set_tensor_datatype("weights", wdt)
+
+    model = model.transform(GiveUniqueNodeNames())
+    prod_resource_estimation = model.analysis(res_estimation)
+    expect_resource_estimation = {
+        "StreamingFCLayer_Batch_0": ["BRAMs: 1", "LUTs: 370.4"]
+    }
+
+    assert check_two_dict_for_equality(
+        prod_resource_estimation, expect_resource_estimation
+    ), """The produced output of
+    the resource estimation analysis pass is not equal to the expected one"""