#ifndef VPR_PLACE_AND_ROUTE_H
#define VPR_PLACE_AND_ROUTE_H

#define INFINITE -1
#define NOT_FOUND 0

#define WNEED 1
#define WL 2
#define PROC_TIME 3

#include "vpr_types.h"
#include "timing_info.h"
#include "RoutingDelayCalculator.h"

struct t_fmap_cell {
    int fs;         /* at this fs */
    int fc;         /* at this fc */
    int wneed;      /* need wneed to route */
    int wirelength; /* corresponding wirelength of successful routing at wneed */
    int proc_time;
    t_fmap_cell* next;
};

int binary_search_place_and_route(const t_placer_opts& placer_opts_ref,
                                  const t_annealing_sched& annealing_sched,
                                  const t_router_opts& router_opts,
                                  const t_analysis_opts& analysis_opts,
                                  const t_file_name_opts& filename_opts,
                                  const t_arch* arch,
                                  bool verify_binary_search,
                                  int min_chan_width_hint,
                                  t_det_routing_arch* det_routing_arch,
                                  std::vector<t_segment_inf>& segment_inf,
                                  vtr::vector<ClusterNetId, float*>& net_delay,
                                  std::shared_ptr<SetupHoldTimingInfo> timing_info,
                                  std::shared_ptr<RoutingDelayCalculator> delay_calc);

t_chan_width init_chan(int cfactor, t_chan_width_dist chan_width_dist);

void post_place_sync();

#endif
