| #ifndef READ_OPTIONS_H |
| #define READ_OPTIONS_H |
| #include "read_blif.h" |
| |
| #include "vpr_types.h" |
| #include "constant_nets.h" |
| #include "argparse_value.hpp" |
| #include "argparse.hpp" |
| |
| struct t_options { |
| /* File names */ |
| argparse::ArgValue<std::string> ArchFile; |
| argparse::ArgValue<std::string> CircuitName; |
| argparse::ArgValue<std::string> NetFile; |
| argparse::ArgValue<std::string> PlaceFile; |
| argparse::ArgValue<std::string> RouteFile; |
| argparse::ArgValue<std::string> BlifFile; |
| argparse::ArgValue<std::string> ActFile; |
| argparse::ArgValue<std::string> PowerFile; |
| argparse::ArgValue<std::string> CmosTechFile; |
| argparse::ArgValue<std::string> SDCFile; |
| |
| argparse::ArgValue<e_circuit_format> circuit_format; |
| |
| argparse::ArgValue<std::string> out_file_prefix; |
| argparse::ArgValue<std::string> pad_loc_file; |
| argparse::ArgValue<std::string> write_rr_graph_file; |
| argparse::ArgValue<std::string> read_rr_graph_file; |
| |
| argparse::ArgValue<std::string> write_placement_delay_lookup; |
| argparse::ArgValue<std::string> read_placement_delay_lookup; |
| |
| argparse::ArgValue<std::string> write_router_lookahead; |
| argparse::ArgValue<std::string> read_router_lookahead; |
| |
| /* Stage Options */ |
| argparse::ArgValue<bool> do_packing; |
| argparse::ArgValue<bool> do_placement; |
| argparse::ArgValue<bool> do_routing; |
| argparse::ArgValue<bool> do_analysis; |
| argparse::ArgValue<bool> do_power; |
| |
| /* Graphics Options */ |
| argparse::ArgValue<bool> show_graphics; //Enable argparse::ArgValue<int>eractive graphics? |
| argparse::ArgValue<int> GraphPause; |
| argparse::ArgValue<bool> save_graphics; |
| |
| /* General options */ |
| argparse::ArgValue<bool> show_help; |
| argparse::ArgValue<bool> show_version; |
| argparse::ArgValue<size_t> num_workers; |
| argparse::ArgValue<bool> timing_analysis; |
| argparse::ArgValue<bool> CreateEchoFile; |
| argparse::ArgValue<bool> verify_file_digests; |
| argparse::ArgValue<std::string> device_layout; |
| argparse::ArgValue<float> target_device_utilization; |
| argparse::ArgValue<e_constant_net_method> constant_net_method; |
| argparse::ArgValue<e_clock_modeling> clock_modeling; |
| argparse::ArgValue<bool> exit_before_pack; |
| argparse::ArgValue<bool> strict_checks; |
| argparse::ArgValue<std::string> disable_errors; |
| argparse::ArgValue<std::string> suppress_warnings; |
| argparse::ArgValue<bool> allow_dangling_combinational_nodes; |
| |
| /* Atom netlist options */ |
| argparse::ArgValue<bool> absorb_buffer_luts; |
| argparse::ArgValue<e_const_gen_inference> const_gen_inference; |
| argparse::ArgValue<bool> sweep_dangling_primary_ios; |
| argparse::ArgValue<bool> sweep_dangling_nets; |
| argparse::ArgValue<bool> sweep_dangling_blocks; |
| argparse::ArgValue<bool> sweep_constant_primary_outputs; |
| argparse::ArgValue<int> netlist_verbosity; |
| |
| /* Clustering options */ |
| argparse::ArgValue<bool> connection_driven_clustering; |
| argparse::ArgValue<e_unrelated_clustering> allow_unrelated_clustering; |
| argparse::ArgValue<float> alpha_clustering; |
| argparse::ArgValue<float> beta_clustering; |
| argparse::ArgValue<bool> timing_driven_clustering; |
| argparse::ArgValue<e_cluster_seed> cluster_seed_type; |
| argparse::ArgValue<bool> enable_clustering_pin_feasibility_filter; |
| argparse::ArgValue<e_balance_block_type_util> balance_block_type_utilization; |
| argparse::ArgValue<std::vector<std::string>> target_external_pin_util; |
| argparse::ArgValue<bool> pack_prioritize_transitive_connectivity; |
| argparse::ArgValue<int> pack_transitive_fanout_threshold; |
| argparse::ArgValue<int> pack_feasible_block_array_size; |
| argparse::ArgValue<std::vector<std::string>> pack_high_fanout_threshold; |
| argparse::ArgValue<int> pack_verbosity; |
| |
| /* Placement options */ |
| argparse::ArgValue<int> Seed; |
| argparse::ArgValue<bool> ShowPlaceTiming; |
| argparse::ArgValue<float> PlaceInnerNum; |
| argparse::ArgValue<float> PlaceInitT; |
| argparse::ArgValue<float> PlaceExitT; |
| argparse::ArgValue<float> PlaceAlphaT; |
| argparse::ArgValue<sched_type> anneal_sched_type; |
| argparse::ArgValue<e_place_algorithm> PlaceAlgorithm; |
| argparse::ArgValue<e_pad_loc_type> pad_loc_type; |
| argparse::ArgValue<int> PlaceChanWidth; |
| argparse::ArgValue<float> place_rlim_escape_fraction; |
| argparse::ArgValue<std::string> place_move_stats_file; |
| |
| /* Timing-driven placement options only */ |
| argparse::ArgValue<float> PlaceTimingTradeoff; |
| argparse::ArgValue<int> RecomputeCritIter; |
| argparse::ArgValue<int> inner_loop_recompute_divider; |
| argparse::ArgValue<float> place_exp_first; |
| argparse::ArgValue<float> place_exp_last; |
| argparse::ArgValue<float> place_delay_offset; |
| argparse::ArgValue<int> place_delay_ramp_delta_threshold; |
| argparse::ArgValue<float> place_delay_ramp_slope; |
| argparse::ArgValue<float> place_tsu_rel_margin; |
| argparse::ArgValue<float> place_tsu_abs_margin; |
| argparse::ArgValue<std::string> post_place_timing_report_file; |
| argparse::ArgValue<PlaceDelayModelType> place_delay_model; |
| argparse::ArgValue<e_reducer> place_delay_model_reducer; |
| argparse::ArgValue<std::string> allowed_tiles_for_delay_model; |
| |
| /* Router Options */ |
| argparse::ArgValue<int> max_router_iterations; |
| argparse::ArgValue<float> first_iter_pres_fac; |
| argparse::ArgValue<float> initial_pres_fac; |
| argparse::ArgValue<float> pres_fac_mult; |
| argparse::ArgValue<float> acc_fac; |
| argparse::ArgValue<int> bb_factor; |
| argparse::ArgValue<e_base_cost_type> base_cost_type; |
| argparse::ArgValue<float> bend_cost; |
| argparse::ArgValue<e_route_type> RouteType; |
| argparse::ArgValue<int> RouteChanWidth; |
| argparse::ArgValue<int> min_route_chan_width_hint; //Hint to binary search router about what the min chan width is |
| argparse::ArgValue<bool> verify_binary_search; |
| argparse::ArgValue<e_router_algorithm> RouterAlgorithm; |
| argparse::ArgValue<int> min_incremental_reroute_fanout; |
| |
| /* Timing-driven router options only */ |
| argparse::ArgValue<float> astar_fac; |
| argparse::ArgValue<float> max_criticality; |
| argparse::ArgValue<float> criticality_exp; |
| argparse::ArgValue<float> router_init_wirelength_abort_threshold; |
| argparse::ArgValue<e_incr_reroute_delay_ripup> incr_reroute_delay_ripup; |
| argparse::ArgValue<e_routing_failure_predictor> routing_failure_predictor; |
| argparse::ArgValue<e_routing_budgets_algorithm> routing_budgets_algorithm; |
| argparse::ArgValue<bool> save_routing_per_iteration; |
| argparse::ArgValue<float> congested_routing_iteration_threshold_frac; |
| argparse::ArgValue<e_route_bb_update> route_bb_update; |
| argparse::ArgValue<int> router_high_fanout_threshold; |
| argparse::ArgValue<int> router_debug_net; |
| argparse::ArgValue<int> router_debug_sink_rr; |
| argparse::ArgValue<e_router_lookahead> router_lookahead_type; |
| argparse::ArgValue<int> router_max_convergence_count; |
| argparse::ArgValue<float> router_reconvergence_cpd_threshold; |
| argparse::ArgValue<std::string> router_first_iteration_timing_report_file; |
| |
| /* Analysis options */ |
| argparse::ArgValue<bool> full_stats; |
| argparse::ArgValue<bool> Generate_Post_Synthesis_Netlist; |
| argparse::ArgValue<int> timing_report_npaths; |
| argparse::ArgValue<e_timing_report_detail> timing_report_detail; |
| argparse::ArgValue<bool> timing_report_skew; |
| }; |
| |
| argparse::ArgumentParser create_arg_parser(std::string prog_name, t_options& args); |
| t_options read_options(int argc, const char** argv); |
| void set_conditional_defaults(t_options& args); |
| bool verify_args(const t_options& args); |
| |
| #endif |