| #ifndef READOPTIONS_H | |
| #define READOPTIONS_H | |
| #include "OptionTokens.h" | |
| typedef struct s_options t_options; | |
| struct s_options { | |
| /* File names */ | |
| char *ArchFile; | |
| char *SettingsFile; | |
| char *CircuitName; | |
| char *NetFile; | |
| char *PlaceFile; | |
| char *RouteFile; | |
| char *BlifFile; | |
| char *ActFile; | |
| char *PowerFile; | |
| char *CmosTechFile; | |
| char *out_file_prefix; | |
| char *SDCFile; | |
| char *dump_rr_structs_file; | |
| /* General options */ | |
| int GraphPause; | |
| float constant_net_delay; | |
| bool TimingAnalysis; | |
| bool CreateEchoFile; | |
| bool Generate_Post_Synthesis_Netlist; | |
| char SlackDefinition; | |
| /* Clustering options */ | |
| bool global_clocks; | |
| int cluster_size; | |
| int inputs_per_cluster; | |
| int lut_size; | |
| bool hill_climbing_flag; | |
| bool sweep_hanging_nets_and_inputs; | |
| bool timing_driven; | |
| enum e_cluster_seed cluster_seed_type; | |
| float alpha; | |
| float beta; | |
| int recompute_timing_after; | |
| float block_delay; | |
| float intra_cluster_net_delay; | |
| float inter_cluster_net_delay; | |
| bool skip_clustering; | |
| bool allow_unrelated_clustering; | |
| bool allow_early_exit; | |
| bool connection_driven; | |
| enum e_packer_algorithm packer_algorithm; | |
| /* Placement options */ | |
| enum e_place_algorithm PlaceAlgorithm; | |
| float PlaceInitT; | |
| float PlaceExitT; | |
| float PlaceAlphaT; | |
| float PlaceInnerNum; | |
| int Seed; | |
| float place_cost_exp; | |
| int PlaceChanWidth; | |
| char *PinFile; | |
| bool ShowPlaceTiming; | |
| int block_dist; | |
| /* Timing-driven placement options only */ | |
| float PlaceTimingTradeoff; | |
| int RecomputeCritIter; | |
| int inner_loop_recompute_divider; | |
| float place_exp_first; | |
| float place_exp_last; | |
| /* Router Options */ | |
| int max_router_iterations; | |
| int bb_factor; | |
| bool congestion_analysis; | |
| bool fanout_analysis; | |
| bool switch_usage_analysis; | |
| float initial_pres_fac; | |
| float pres_fac_mult; | |
| float acc_fac; | |
| float first_iter_pres_fac; | |
| float bend_cost; | |
| enum e_route_type RouteType; | |
| int RouteChanWidth; | |
| bool TrimEmptyChan; | |
| bool TrimObsChan; | |
| enum e_router_algorithm RouterAlgorithm; | |
| enum e_base_cost_type base_cost_type; | |
| #ifdef INTERPOSER_BASED_ARCHITECTURE | |
| int percent_wires_cut; | |
| int num_cuts; | |
| int delay_increase; | |
| float placer_cost_constant; | |
| int constant_type; | |
| /* architecture experiments */ | |
| bool allow_chanx_interposer_connections; | |
| bool transfer_interposer_fanins; | |
| bool allow_additional_interposer_fanins; | |
| int pct_of_interposer_nodes_each_chany_can_drive; | |
| bool transfer_interposer_fanouts; | |
| bool allow_additional_interposer_fanouts; | |
| int pct_of_chany_wires_an_interposer_node_can_drive; | |
| #endif | |
| /* Timing-driven router options only */ | |
| float astar_fac; | |
| float criticality_exp; | |
| float max_criticality; | |
| enum e_routing_failure_predictor routing_failure_predictor; | |
| /* State and metadata about various settings */ | |
| int Count[OT_BASE_UNKNOWN]; | |
| int Provenance[OT_BASE_UNKNOWN]; | |
| /* Last read settings file */ | |
| int read_settings; | |
| }; | |
| enum e_echo_files { | |
| E_ECHO_INITIAL_CLB_PLACEMENT = 0, | |
| E_ECHO_INITIAL_PLACEMENT_TIMING_GRAPH, | |
| E_ECHO_INITIAL_PLACEMENT_SLACK, | |
| E_ECHO_INITIAL_PLACEMENT_CRITICALITY, | |
| E_ECHO_END_CLB_PLACEMENT, | |
| E_ECHO_PLACEMENT_SINK_DELAYS, | |
| E_ECHO_FINAL_PLACEMENT_TIMING_GRAPH, | |
| E_ECHO_FINAL_PLACEMENT_SLACK, | |
| E_ECHO_FINAL_PLACEMENT_CRITICALITY, | |
| E_ECHO_PLACEMENT_CRIT_PATH, | |
| E_ECHO_PB_GRAPH, | |
| E_ECHO_LB_TYPE_RR_GRAPH, | |
| E_ECHO_ARCH, | |
| E_ECHO_PLACEMENT_CRITICAL_PATH, | |
| E_ECHO_PLACEMENT_LOWER_BOUND_SINK_DELAYS, | |
| E_ECHO_PLACEMENT_LOGIC_SINK_DELAYS, | |
| E_ECHO_ROUTING_SINK_DELAYS, | |
| E_ECHO_POST_FLOW_TIMING_GRAPH, | |
| E_ECHO_POST_PACK_NETLIST, | |
| E_ECHO_BLIF_INPUT, | |
| E_ECHO_COMPRESSED_NETLIST, | |
| E_ECHO_NET_DELAY, | |
| E_ECHO_TIMING_GRAPH, | |
| E_ECHO_PRE_PACKING_TIMING_GRAPH, | |
| E_ECHO_PRE_PACKING_TIMING_GRAPH_AS_BLIF, | |
| E_ECHO_CLUSTERING_TIMING_INFO, | |
| E_ECHO_PRE_PACKING_SLACK, | |
| E_ECHO_PRE_PACKING_CRITICALITY, | |
| E_ECHO_CLUSTERING_BLOCK_CRITICALITIES, | |
| E_ECHO_PRE_PACKING_MOLECULES_AND_PATTERNS, | |
| E_ECHO_MEM, | |
| E_ECHO_RR_GRAPH, | |
| E_ECHO_TIMING_CONSTRAINTS, | |
| E_ECHO_CRITICAL_PATH, | |
| E_ECHO_SLACK, | |
| E_ECHO_COMPLETE_NET_TRACE, | |
| E_ECHO_SEG_DETAILS, | |
| E_ECHO_CHAN_DETAILS, | |
| E_ECHO_SBLOCK_PATTERN, | |
| E_ECHO_END_TOKEN | |
| }; | |
| enum e_output_files { | |
| E_CRIT_PATH_FILE, | |
| E_SLACK_FILE, | |
| E_CRITICALITY_FILE, | |
| E_FILE_END_TOKEN | |
| }; | |
| void ReadOptions(INP int argc, | |
| INP char **argv, | |
| OUTP t_options * Options); | |
| bool getEchoEnabled(void); | |
| void setEchoEnabled(bool echo_enabled); | |
| void setAllEchoFileEnabled(bool value); | |
| void setEchoFileEnabled(enum e_echo_files echo_option, bool value); | |
| void setEchoFileName(enum e_echo_files echo_option, const char *name); | |
| bool isEchoFileEnabled(enum e_echo_files echo_option); | |
| char *getEchoFileName(enum e_echo_files echo_option); | |
| void alloc_and_load_echo_file_info(); | |
| void free_echo_file_info(); | |
| void setOutputFileName(enum e_output_files ename, const char *name, const char* default_name); | |
| char *getOutputFileName(enum e_output_files ename); | |
| void alloc_and_load_output_file_names(const char* default_name); | |
| void free_output_file_names(); | |
| bool IsTimingEnabled(INP t_options *Options); | |
| bool IsEchoEnabled(INP t_options *Options); | |
| bool GetPostSynthesisOption(void); | |
| void SetPostSynthesisOption(bool post_synthesis_enabled); | |
| bool IsPostSynthesisEnabled(INP t_options *Options); | |
| #endif |