@@ -72,11 +72,18 @@ void remove_mol_from_cluster(const t_pack_molecule* molecule,
72
72
* @param mode: the mode of the new cluster
73
73
* @param clb_index: the cluster block Id of the newly created cluster block
74
74
* @param during_packing: true if this function is called during packing, false if it is called during placement
75
- * @param clustering_data: A data structure containing helper data for the clustering process
75
+ * @param clustering_data: A data structure containing helper data for the clustering process
76
76
* (is updated if this function is called during packing, especially intra_lb_routing data member).
77
77
* @param router_data: returns the intra logic block router data.
78
78
* @param temp_cluster_pr: returns the partition region of the new cluster.
79
79
* @param temp_cluster_noc_grp_id returns the NoC group ID of the new cluster
80
+ * @param detailed_routing_stage: options are E_DETAILED_ROUTE_FOR_EACH_ATOM (default) and E_DETAILED_ROUTE_AT_END_ONLY.
81
+ * This argument specifies whether or not to run an intra-cluster routing-based legality
82
+ * check after adding the molecule to the cluster; default is the more conservative option.
83
+ * This argument is passed down to try_pack_mol; if E_DETAILED_ROUTE_AT_END_ONLY is passed,
84
+ * the function does not run a detailed intra-cluster routing-based legality check.
85
+ * If many molecules will be added to a cluster, this option enables use of a single
86
+ * routing check on the completed cluster (vs many incremental checks).
80
87
*/
81
88
bool start_new_cluster_for_mol (t_pack_molecule* molecule,
82
89
const t_logical_block_type_ptr& type,
@@ -89,7 +96,8 @@ bool start_new_cluster_for_mol(t_pack_molecule* molecule,
89
96
t_clustering_data& clustering_data,
90
97
t_lb_router_data** router_data,
91
98
PartitionRegion& temp_cluster_pr,
92
- NocGroupId& temp_cluster_noc_grp_id);
99
+ NocGroupId& temp_cluster_noc_grp_id,
100
+ enum e_detailed_routing_stages detailed_routing_stage = E_DETAILED_ROUTE_FOR_EACH_ATOM);
93
101
94
102
/* *
95
103
* @brief A function that packs a molecule into an existing cluster
@@ -101,6 +109,14 @@ bool start_new_cluster_for_mol(t_pack_molecule* molecule,
101
109
* @param clustering_data: A data structure containing helper data for the clustering process
102
110
* (is updated if this function is called during packing, especially intra_lb_routing data member).
103
111
* @param router_data: returns the intra logic block router data.
112
+ * @param temp_cluster_noc_grp_id returns the NoC group ID of the new cluster
113
+ * @param detailed_routing_stage: options are E_DETAILED_ROUTE_FOR_EACH_ATOM (default) and E_DETAILED_ROUTE_AT_END_ONLY.
114
+ * This argument specifies whether or not to run an intra-cluster routing-based legality
115
+ * check after adding the molecule to the cluster; default is the more conservative option.
116
+ * This argument is passed down to try_pack_mol; if E_DETAILED_ROUTE_AT_END_ONLY is passed,
117
+ * the function does not run a detailed intra-cluster routing-based legality check.
118
+ * If many molecules will be added to a cluster, this option enables use of a single
119
+ * routing check on the completed cluster (vs many incremental checks).
104
120
* @param enable_pin_feasibility_filter: do a pin couting based legality check (before or in place of intra-cluster routing check).
105
121
*/
106
122
bool pack_mol_in_existing_cluster (t_pack_molecule* molecule,
@@ -110,6 +126,7 @@ bool pack_mol_in_existing_cluster(t_pack_molecule* molecule,
110
126
bool during_packing,
111
127
t_clustering_data& clustering_data,
112
128
t_lb_router_data*& router_data,
129
+ enum e_detailed_routing_stages detailed_routing_stage = E_DETAILED_ROUTE_FOR_EACH_ATOM,
113
130
bool enable_pin_feasibility_filter = true );
114
131
115
132
/* *
0 commit comments