@@ -214,3 +214,53 @@ BitIndex t_pb::atom_pin_bit_index(const t_pb_graph_pin* gpin) const {
214214void t_pb::set_atom_pin_bit_index (const t_pb_graph_pin* gpin, BitIndex atom_pin_bit_idx) {
215215 pin_rotations_[gpin] = atom_pin_bit_idx;
216216}
217+
218+ void free_pack_molecules (t_pack_molecule* list_of_pack_molecules) {
219+ t_pack_molecule* cur_pack_molecule = list_of_pack_molecules;
220+ while (cur_pack_molecule != nullptr ) {
221+ cur_pack_molecule = list_of_pack_molecules->next ;
222+ delete list_of_pack_molecules;
223+ list_of_pack_molecules = cur_pack_molecule;
224+ }
225+ }
226+
227+ /* *
228+ * Free linked lists found in cluster_placement_stats_list
229+ */
230+ void free_cluster_placement_stats (t_cluster_placement_stats* cluster_placement_stats_list) {
231+ t_cluster_placement_primitive *cur, *next;
232+ auto & device_ctx = g_vpr_ctx.device ();
233+
234+ for (const auto & type : device_ctx.logical_block_types ) {
235+ int index = type.index ;
236+ cur = cluster_placement_stats_list[index].tried ;
237+ while (cur != nullptr ) {
238+ next = cur->next_primitive ;
239+ delete cur;
240+ cur = next;
241+ }
242+ cur = cluster_placement_stats_list[index].in_flight ;
243+ while (cur != nullptr ) {
244+ next = cur->next_primitive ;
245+ delete cur;
246+ cur = next;
247+ }
248+ cur = cluster_placement_stats_list[index].invalid ;
249+ while (cur != nullptr ) {
250+ next = cur->next_primitive ;
251+ delete cur;
252+ cur = next;
253+ }
254+ for (int j = 0 ; j < cluster_placement_stats_list[index].num_pb_types ; j++) {
255+ cur = cluster_placement_stats_list[index].valid_primitives [j]->next_primitive ;
256+ while (cur != nullptr ) {
257+ next = cur->next_primitive ;
258+ delete cur;
259+ cur = next;
260+ }
261+ delete cluster_placement_stats_list[index].valid_primitives [j];
262+ }
263+ delete[] cluster_placement_stats_list[index].valid_primitives ;
264+ }
265+ delete[] cluster_placement_stats_list;
266+ }
0 commit comments