#include "util.h"
#include "vpr_types.h"
#include "OptionTokens.h"

/* OptionBaseTokenList is for command line arg tokens. We will track how 
 * many times each of these things exist in a file */
struct s_TokenPair OptionBaseTokenList[] = {
		{ "settings_file", OT_SETTINGS_FILE }, 
		{ "nodisp", OT_NODISP }, 
		{ "congestion_analysis", OT_CONGESTION_ANALYSIS },
		{ "fanout_analysis", OT_FANOUT_ANALYSIS },
        { "switch_stats", OT_SWITCH_USAGE_ANALYSIS },
		{ "auto", OT_AUTO }, 
		{ "recompute_crit_iter", OT_RECOMPUTE_CRIT_ITER }, 
		{ "inner_loop_recompute_divider", OT_INNER_LOOP_RECOMPUTE_DIVIDER }, 
		{ "fix_pins", OT_FIX_PINS },
		{ "full_stats", OT_FULL_STATS }, 
		{ "fast", OT_FAST }, 
		{ "gen_netlist_as_blif", OT_GEN_NELIST_AS_BLIF}, 
		{ "echo_file", OT_CREATE_ECHO_FILE }, 
		{ "gen_postsynthesis_netlist", OT_GENERATE_POST_SYNTHESIS_NETLIST }, 
		{ "timing_analysis", OT_TIMING_ANALYSIS }, 
		{ "timing_analyze_only_with_net_delay", OT_TIMING_ANALYZE_ONLY_WITH_NET_DELAY },
        { "slack_definition", OT_SLACK_DEFINITION },
		{ "init_t", OT_INIT_T }, 
		{ "alpha_t", OT_ALPHA_T }, 
		{ "exit_t", OT_EXIT_T }, 
		{ "inner_num", OT_INNER_NUM }, 
		{ "seed", OT_SEED },
		{ "place_cost_exp", OT_PLACE_COST_EXP }, 
		{ "td_place_exp_first", OT_TD_PLACE_EXP_FIRST }, 
		{ "td_place_exp_last", OT_TD_PLACE_EXP_LAST },
		{ "place_algorithm", OT_PLACE_ALGORITHM }, 
		{ "timing_tradeoff", OT_TIMING_TRADEOFF }, 
		{ "enable_timing_computations", OT_ENABLE_TIMING_COMPUTATIONS },
		{ "block_dist", OT_BLOCK_DIST }, 
		{ "place_chan_width", OT_PLACE_CHAN_WIDTH }, 
		{ "max_router_iterations", OT_MAX_ROUTER_ITERATIONS }, 
		{ "bb_factor", OT_BB_FACTOR }, 
		{ "router_algorithm", OT_ROUTER_ALGORITHM }, 
		{ "first_iter_pres_fac", OT_FIRST_ITER_PRES_FAC }, 
		{ "initial_pres_fac", OT_INITIAL_PRES_FAC }, 
		{ "pres_fac_mult", OT_PRES_FAC_MULT }, 
		{ "acc_fac", OT_ACC_FAC }, 
		{ "astar_fac", OT_ASTAR_FAC }, 
		{ "max_criticality", OT_MAX_CRITICALITY }, 
		{ "criticality_exp", OT_CRITICALITY_EXP }, 
		{ "base_cost_type", OT_BASE_COST_TYPE }, 
		{ "bend_cost", OT_BEND_COST }, 
		{ "route_type", OT_ROUTE_TYPE }, 
		{ "route_chan_width", OT_ROUTE_CHAN_WIDTH },
		{ "trim_empty_chan", OT_TRIM_EMPTY_CHAN },
		{ "trim_obs_chan", OT_TRIM_OBS_CHAN },
		{ "route", OT_ROUTE }, 
		{ "place", OT_PLACE }, 
		{ "verify_binary_search", OT_VERIFY_BINARY_SEARCH },
		{ "outfile_prefix", OT_OUTFILE_PREFIX }, 
		{ "blif_file", OT_BLIF_FILE },
		{ "net_file", OT_NET_FILE }, 
		{ "place_file", OT_PLACE_FILE }, 
		{ "route_file", OT_ROUTE_FILE }, 
		{ "sdc_file", OT_SDC_FILE }, 
		{ "global_clocks", OT_GLOBAL_CLOCKS }, 
		{ "hill_climbing", OT_HILL_CLIMBING_FLAG }, 
		{ "sweep_hanging_nets_and_inputs", OT_SWEEP_HANGING_NETS_AND_INPUTS }, 
		{ "no_clustering", OT_SKIP_CLUSTERING }, 
		{ "allow_unrelated_clustering", OT_ALLOW_UNRELATED_CLUSTERING }, 
		{ "allow_early_exit", OT_ALLOW_EARLY_EXIT }, 
		{ "connection_driven_clustering", OT_CONNECTION_DRIVEN_CLUSTERING }, 
		{ "timing_driven_clustering", OT_TIMING_DRIVEN_CLUSTERING }, 
		{ "cluster_seed_type", OT_CLUSTER_SEED }, 
		{ "alpha_clustering", OT_ALPHA_CLUSTERING },
		{ "beta_clustering", OT_BETA_CLUSTERING }, 
		{ "recompute_timing_after", OT_RECOMPUTE_TIMING_AFTER }, 
		{ "cluster_block_delay", OT_CLUSTER_BLOCK_DELAY }, 
		{ "intra_cluster_net_delay", OT_INTRA_CLUSTER_NET_DELAY }, 
		{ "inter_cluster_net_delay", OT_INTER_CLUSTER_NET_DELAY }, 
		{ "pack", OT_PACK }, 
		{ "packer_algorithm", OT_PACKER_ALGORITHM }, /**/
		{ "activity_file", OT_ACTIVITY_FILE }, /* Activity file */
		{ "power_output_file", OT_POWER_OUT_FILE }, /* Output file for power results */
		{ "power", OT_POWER }, /* Run power estimation? */
		{ "tech_properties", OT_CMOS_TECH_BEHAVIOR_FILE }, /* Technology properties */
		{ "routing_failure_predictor", OT_ROUTING_FAILURE_PREDICTOR }, /* Routing failure predictor */
		{ "dump_rr_structs_file", OT_DUMP_RR_STRUCTS_FILE },

#ifdef INTERPOSER_BASED_ARCHITECTURE
		{ "percent_wires_cut", OT_PERCENT_WIRES_CUT },
		{ "num_cuts", OT_NUM_CUTS },
		{ "delay_increase", OT_DELAY_INCREASE },
		{ "placer_cost_constant", OT_PLACER_COST_CONSTANT },
		{ "constant_type", OT_CONSTANT_TYPE },
		{ "allow_chanx_conn", OT_ALLOW_CHANX_CONN },
		{ "allow_fanin_transfer", OT_ALLOW_FANIN_TRANSFER },
		{ "allow_additional_fanin", OT_ALLOW_ADDITIONAL_FANIN },
		{ "allow_fanout_transfer", OT_ALLOW_FANOUT_TRANSFER },
		{ "allow_additional_fanout", OT_ALLOW_ADDITIONAL_FANOUT },
		{ "pct_interp_to_drive", OT_PCT_INTERP_TO_DRIVE },
		{ "pct_interp_to_be_driven_by", OT_PCT_INTERP_TO_BE_DRIVEN_BY },
#endif

		{ NULL, OT_BASE_UNKNOWN } /* End of list marker */
};

struct s_TokenPair OptionArgTokenList[] = { 
		{ "on", OT_ON }, 
		{ "off", OT_OFF },
		{ "random", OT_RANDOM }, 
		{ "bounding_box", OT_BOUNDING_BOX }, 
		{ "net_timing_driven", OT_NET_TIMING_DRIVEN }, 
		{ "path_timing_driven", OT_PATH_TIMING_DRIVEN }, 
		{ "breadth_first", OT_BREADTH_FIRST }, 
		{ "timing_driven", OT_TIMING_DRIVEN }, 
		{ "NO_TIMING", OT_NO_TIMING }, 
		{ "intrinsic_delay", OT_INTRINSIC_DELAY }, 
		{ "delay_normalized", OT_DELAY_NORMALIZED }, 
		{ "demand_only", OT_DEMAND_ONLY }, 
		{ "global", OT_GLOBAL }, 
		{ "detailed", OT_DETAILED }, 
		{ "timing", OT_TIMING }, 
		{ "max_inputs", OT_MAX_INPUTS }, 
		{ "blend", OT_BLEND }, 
		{ "greedy", OT_GREEDY }, 
		{ "lp", OT_LP }, 
		{ "brute_force", OT_BRUTE_FORCE },
		{ "safe", OT_ROUTING_FAILURE_SAFE },
		{ "aggressive", OT_ROUTING_FAILURE_AGGRESSIVE },
		{ NULL, OT_BASE_UNKNOWN } /* End of list marker */
};
