void vpr_free_all(INOUTP t_arch Arch, INOUTP t_options options, INOUTP t_vpr_setup vpr_setup) { free_rr_graph(); if (vpr_setup.RouterOpts.doRouting) { free_route_structs(); } free_trace_structs(); vpr_free_vpr_data_structures(Arch, options, vpr_setup); if (has_printhandler_pre_vpr == FALSE) { PrintHandlerDelete(); } }
static void free_routing_structs(struct s_router_opts router_opts, struct s_det_routing_arch det_routing_arch, t_segment_inf * segment_inf, t_timing_inf timing_inf) { free_rr_graph(); free_rr_node_route_structs(); free_route_structs(clb_opins_used_locally); free_trace_structs(); free_timing_driven_route_structs(pin_criticality, sink_order, rt_node_of_sink); }
static void free_routing_structs(struct s_router_opts router_opts, struct s_det_routing_arch det_routing_arch, t_segment_inf * segment_inf, t_timing_inf timing_inf) { int i; free_rr_graph(); free_rr_node_route_structs(); free_route_structs(); free_trace_structs(); free_timing_driven_route_structs(pin_criticality, sink_order, rt_node_of_sink); if (clb_opins_used_locally != NULL) { for (i = 0; i < num_blocks; i++) { free_ivec_vector(clb_opins_used_locally[i], 0, block[i].type->num_class - 1); } free(clb_opins_used_locally); clb_opins_used_locally = NULL; } }