diff --git a/src/finn/backend/fpgadataflow/code_gen.py b/src/finn/backend/fpgadataflow/code_gen.py index 45c1dcabcc543c22d0ada56b9e6bd35b67309416..2c742075bb1dc95fa0929af767ef3ec558b8e16c 100644 --- a/src/finn/backend/fpgadataflow/code_gen.py +++ b/src/finn/backend/fpgadataflow/code_gen.py @@ -1,4 +1,4 @@ -def get_layer_attributes(node): +def get_layer_parameters(model, node): # Layer attributes num_attr = len(node.attribute) for k in range(num_attr): @@ -14,6 +14,14 @@ def get_layer_attributes(node): L_resDataType = node.attribute[k].s if node.attribute[k].name == "resType": L_resType = node.attribute[k].s + + # get other parameters + weights_shape = model.get_tensor_shape(node.input[1]) + thresholds_shape = model.get_tensor_shape(node.input[2]) + L_WMEM = weights_shape[2] + L_TMEM = thresholds_shape[0] + L_API = thresholds_shape[2] + return [ L_PE, L_SIMD, @@ -21,6 +29,9 @@ def get_layer_attributes(node): L_MW, L_resDataType.decode("utf-8"), L_resType.decode("utf-8"), + L_WMEM, + L_TMEM, + L_API, ] @@ -87,8 +98,18 @@ def computation_cmds(model, code_gen_dict): weights = node.input[1] thresholds = node.input[2] outp = node.output[0] - # get layer attributes - [PE, SIMD, MH, MW, resDataType, resType] = get_layer_attributes(node) + # get layer parameters + [ + PE, + SIMD, + MH, + MW, + resDataType, + resType, + WMEM, + TMEM, + API, + ] = get_layer_parameters(model, node) code_gen_dict["compute"].append( "{}<L{}_MW, L{}_MH, L{}_SIMD, L{}_PE, {}> "