diff --git a/src/finn/backend/fpgadataflow/code_gen.py b/src/finn/backend/fpgadataflow/code_gen.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0fb2296dc69915bd9d8a46f6e5186124883ad968 100644
--- a/src/finn/backend/fpgadataflow/code_gen.py
+++ b/src/finn/backend/fpgadataflow/code_gen.py
@@ -0,0 +1,57 @@
+# def get_num_of_attributes(node):
+#    return len(node.attribute)
+
+
+def extract_layer_attributes(model):
+    # Layer attributes
+    j = -1
+    L_PE = {}
+    L_SIMD = {}
+    L_MH = {}
+    L_MW = {}
+    L_resDataType = {}
+    L_resType = {}
+    for node in model.graph.node:
+        num_attr = len(node.attribute)
+        j += 1
+        if node.op_type == "StreamingFCLayer_Batch":
+            for k in range(num_attr):
+                if node.attribute[k].name == "PE":
+                    L_PE[j] = node.attribute[k].i
+                if node.attribute[k].name == "SIMD":
+                    L_SIMD[j] = node.attribute[k].i
+                if node.attribute[k].name == "MH":
+                    L_MH[j] = node.attribute[k].i
+                if node.attribute[k].name == "MW":
+                    L_MW[j] = node.attribute[k].i
+                if node.attribute[k].name == "resDataType":
+                    L_resDataType[j] = node.attribute[k].i
+                if node.attribute[k].name == "resType":
+                    L_resType[j] = node.attribute[k].i
+    return [L_PE, L_SIMD, L_MH, L_MW, L_resDataType, L_resType]
+
+
+def strm_decl(model, code_gen_dict):
+    code_gen_dict["stream declarations"] = []
+    for node in model.graph.node:
+        if node.op_type == "FIFO":
+            name = node.name
+            # last number in input shape determines the bits per cycle
+            bits_per_cycle = (model.get_tensor_shape(node.input[0]))[2]
+            code_gen_dict["stream declarations"].append(
+                'hls::stream<ap_uint<{}>> {}("DoCompute.{}");'.format(
+                    bits_per_cycle, name, name
+                )
+            )
+
+
+def code_generation(model):
+
+    code_gen_dict = {}
+
+    # stream declarations
+    strm_decl(model, code_gen_dict)
+
+    [L_PE, L_SIMD, L_MH, L_MW, L_resDataType, L_resType] = extract_layer_attributes(
+        model
+    )
diff --git a/tests/test_code_generation.py b/tests/test_code_generation.py
index 08d99cd2576df2dc1059e68ec0bfb879d036cafa..cb2c3763cb2bf88551a811fdb4c1fee8b609aba9 100644
--- a/tests/test_code_generation.py
+++ b/tests/test_code_generation.py
@@ -1,6 +1,8 @@
 from pkgutil import get_data
+
+import finn.backend.fpgadataflow.code_gen as cg
 from finn.core.modelwrapper import ModelWrapper
-import finn.backend.fpgadataflow.code_gen as cg 
+
 
 def test_code_generation():
     # load the onnx model