diff --git a/src/finn/transformation/fpgadataflow/floorplan.py b/src/finn/transformation/fpgadataflow/floorplan.py index 67920172231e685a4f5dd72f037f64fe6baf8449..549b94d9f287721aac26afd4d4d832e48adadb84 100644 --- a/src/finn/transformation/fpgadataflow/floorplan.py +++ b/src/finn/transformation/fpgadataflow/floorplan.py @@ -151,6 +151,7 @@ class Floorplan(Transformation): node_inst.set_nodeattr("partition_id", partition_cnt) partition_cnt += 1 continue + elif not ( node.op_type == "MatrixVectorActivation" and node_inst.get_nodeattr("mem_mode") is not None @@ -165,9 +166,17 @@ class Floorplan(Transformation): pre_inst = getCustomOp(pre_node) pre_slr = pre_inst.get_nodeattr("slr") if node_slr == pre_slr: - partition_id = pre_inst.get_nodeattr("partition_id") - node_inst.set_nodeattr("partition_id", partition_id) - break + axilite_intf_name = pre_inst.get_verilog_top_module_intf_names()[ + "axilite" + ] + if len(axilite_intf_name) != 0: + node_inst.set_nodeattr("partition_id", partition_cnt) + partition_cnt += 1 + else: + partition_id = pre_inst.get_nodeattr("partition_id") + node_inst.set_nodeattr("partition_id", partition_id) + break + else: # no matching, new partition node_inst.set_nodeattr("partition_id", partition_cnt) diff --git a/src/finn/transformation/fpgadataflow/hlssynth_ip.py b/src/finn/transformation/fpgadataflow/hlssynth_ip.py index 1fede0667888ee9059cfb2e7f5db00b6bb3f4259..c091dbd5edc675234686b28048c004b26c3fc131 100644 --- a/src/finn/transformation/fpgadataflow/hlssynth_ip.py +++ b/src/finn/transformation/fpgadataflow/hlssynth_ip.py @@ -64,7 +64,11 @@ class HLSSynthIP(NodeLocalTransformation): ), """Node attribute "code_gen_dir_ipgen" is empty. Please run transformation PrepareIP first.""" - if not os.path.isdir(inst.get_nodeattr("ipgen_path")): + if not os.path.isdir( + inst.get_nodeattr("ipgen_path") + ) or not inst.get_nodeattr("code_gen_dir_ipgen") in inst.get_nodeattr( + "ipgen_path" + ): # call the compilation function for this node inst.ipgen_singlenode_code() else: diff --git a/src/finn/transformation/fpgadataflow/prepare_ip.py b/src/finn/transformation/fpgadataflow/prepare_ip.py index 2ebd6310f01baebe307befef6bd5db41142edbc8..7c2dfd9bebb49fbaa377a769a6650d99ec42b110 100644 --- a/src/finn/transformation/fpgadataflow/prepare_ip.py +++ b/src/finn/transformation/fpgadataflow/prepare_ip.py @@ -46,7 +46,11 @@ def _codegen_single_node(node, model, fpgapart, clk): # get the path of the code generation directory code_gen_dir = inst.get_nodeattr("code_gen_dir_ipgen") # ensure that there is a directory - if code_gen_dir == "" or not os.path.isdir(code_gen_dir): + if ( + code_gen_dir == "" + or not os.path.isdir(code_gen_dir) + or not str(node.name) in code_gen_dir + ): code_gen_dir = make_build_dir( prefix="code_gen_ipgen_" + str(node.name) + "_" )