14
14
15
15
from hls4ml .backends import get_backend
16
16
from hls4ml .model .flow import get_flow
17
- from hls4ml .model .layers import layer_map
17
+ from hls4ml .model .layers import Layer , layer_map
18
18
from hls4ml .model .optimizer import get_available_passes , optimize_model
19
- from hls4ml .model .types import Serializable
19
+ from hls4ml .model .types import Serializable , TensorVariable
20
20
from hls4ml .utils .string_utils import convert_to_snake_case
21
21
22
22
@@ -1069,8 +1069,8 @@ def from_model_graph(cls, base_model: ModelGraph, split_before_layers: list[str]
1069
1069
cfg_copy .config ['ProjectName' ] = f'{ base_model .config .get_project_name ()} _graph{ idx + 1 } '
1070
1070
cfg_copy .config ['OutputDir' ] = os .path .join (base_model .config .get_output_dir (), f'graph{ idx + 1 } ' )
1071
1071
1072
- subgraph = base_model . __class__ (cfg_copy , inputs = [], outputs = [])
1073
- graph_dict = OrderedDict ()
1072
+ subgraph = ModelGraph (cfg_copy , inputs = [], outputs = [])
1073
+ graph_dict : OrderedDict [ str , Layer ] = OrderedDict ()
1074
1074
1075
1075
if idx > 0 :
1076
1076
next_index += 1
@@ -1091,6 +1091,11 @@ def from_model_graph(cls, base_model: ModelGraph, split_before_layers: list[str]
1091
1091
subgraph .outputs = slice_ [- 1 ].outputs if idx < len (node_slices ) - 1 else base_model .outputs
1092
1092
subgraph ._applied_flows = base_model ._applied_flows
1093
1093
1094
+ for node in subgraph .graph .values ():
1095
+ # Prevent name conflict in different subgraphs
1096
+ variable : TensorVariable = node .get_output_variable ()
1097
+ variable .dim_names = [f'G{ idx } _{ name } ' for name in variable .dim_names ]
1098
+
1094
1099
# NOTE might need to examine other subgraph-related flows (i.e., fifo_optimizer)
1095
1100
subgraph .apply_flow ('vivado:specific_types' )
1096
1101
subgraph .apply_flow ('vitis:apply_templates' )
0 commit comments