Verilog to Routing - VPR
read_options.h
Go to the documentation of this file.
1 #ifndef READ_OPTIONS_H
2 #define READ_OPTIONS_H
3 #include "read_blif.h"
4 
5 #include "vpr_types.h"
6 #include "constant_nets.h"
7 #include "argparse_value.hpp"
8 #include "argparse.hpp"
9 
10 struct t_options {
11  /* File names */
12  argparse::ArgValue<std::string> ArchFile;
13  argparse::ArgValue<std::string> CircuitName;
14  argparse::ArgValue<std::string> NetFile;
15  argparse::ArgValue<std::string> PlaceFile;
16  argparse::ArgValue<std::string> RouteFile;
17  argparse::ArgValue<std::string> BlifFile;
18  argparse::ArgValue<std::string> ActFile;
19  argparse::ArgValue<std::string> PowerFile;
20  argparse::ArgValue<std::string> CmosTechFile;
21  argparse::ArgValue<std::string> SDCFile;
22 
23  argparse::ArgValue<e_circuit_format> circuit_format;
24 
25  argparse::ArgValue<std::string> out_file_prefix;
26  argparse::ArgValue<std::string> pad_loc_file;
27  argparse::ArgValue<std::string> write_rr_graph_file;
28  argparse::ArgValue<std::string> read_rr_graph_file;
29 
30  argparse::ArgValue<std::string> write_placement_delay_lookup;
31  argparse::ArgValue<std::string> read_placement_delay_lookup;
32 
33  argparse::ArgValue<std::string> write_router_lookahead;
34  argparse::ArgValue<std::string> read_router_lookahead;
35 
36  /* Stage Options */
37  argparse::ArgValue<bool> do_packing;
38  argparse::ArgValue<bool> do_placement;
39  argparse::ArgValue<bool> do_routing;
40  argparse::ArgValue<bool> do_analysis;
41  argparse::ArgValue<bool> do_power;
42 
43  /* Graphics Options */
44  argparse::ArgValue<bool> show_graphics;
45  argparse::ArgValue<int> GraphPause;
46  argparse::ArgValue<bool> save_graphics;
47  argparse::ArgValue<std::string> graphics_commands;
48 
49  /* General options */
50  argparse::ArgValue<bool> show_help;
51  argparse::ArgValue<bool> show_version;
52  argparse::ArgValue<size_t> num_workers;
53  argparse::ArgValue<bool> timing_analysis;
54  argparse::ArgValue<e_timing_update_type> timing_update_type;
55  argparse::ArgValue<bool> CreateEchoFile;
56  argparse::ArgValue<bool> verify_file_digests;
57  argparse::ArgValue<std::string> device_layout;
58  argparse::ArgValue<float> target_device_utilization;
59  argparse::ArgValue<e_constant_net_method> constant_net_method;
60  argparse::ArgValue<e_clock_modeling> clock_modeling;
61  argparse::ArgValue<bool> two_stage_clock_routing;
62  argparse::ArgValue<bool> exit_before_pack;
63  argparse::ArgValue<bool> strict_checks;
64  argparse::ArgValue<std::string> disable_errors;
65  argparse::ArgValue<std::string> suppress_warnings;
66  argparse::ArgValue<bool> allow_dangling_combinational_nodes;
67 
68  /* Atom netlist options */
69  argparse::ArgValue<bool> absorb_buffer_luts;
70  argparse::ArgValue<e_const_gen_inference> const_gen_inference;
71  argparse::ArgValue<bool> sweep_dangling_primary_ios;
72  argparse::ArgValue<bool> sweep_dangling_nets;
73  argparse::ArgValue<bool> sweep_dangling_blocks;
74  argparse::ArgValue<bool> sweep_constant_primary_outputs;
75  argparse::ArgValue<int> netlist_verbosity;
76 
77  /* Clustering options */
78  argparse::ArgValue<bool> connection_driven_clustering;
79  argparse::ArgValue<e_unrelated_clustering> allow_unrelated_clustering;
80  argparse::ArgValue<float> alpha_clustering;
81  argparse::ArgValue<float> beta_clustering;
82  argparse::ArgValue<bool> timing_driven_clustering;
83  argparse::ArgValue<e_cluster_seed> cluster_seed_type;
84  argparse::ArgValue<bool> enable_clustering_pin_feasibility_filter;
85  argparse::ArgValue<e_balance_block_type_util> balance_block_type_utilization;
86  argparse::ArgValue<std::vector<std::string>> target_external_pin_util;
87  argparse::ArgValue<bool> pack_prioritize_transitive_connectivity;
88  argparse::ArgValue<int> pack_transitive_fanout_threshold;
89  argparse::ArgValue<int> pack_feasible_block_array_size;
90  argparse::ArgValue<std::vector<std::string>> pack_high_fanout_threshold;
91  argparse::ArgValue<int> pack_verbosity;
92 
93  /* Placement options */
94  argparse::ArgValue<int> Seed;
95  argparse::ArgValue<bool> ShowPlaceTiming;
96  argparse::ArgValue<float> PlaceInnerNum;
97  argparse::ArgValue<float> PlaceInitT;
98  argparse::ArgValue<float> PlaceExitT;
99  argparse::ArgValue<float> PlaceAlphaT;
100  argparse::ArgValue<sched_type> anneal_sched_type;
101  argparse::ArgValue<e_place_algorithm> PlaceAlgorithm;
102  argparse::ArgValue<e_pad_loc_type> pad_loc_type;
103  argparse::ArgValue<int> PlaceChanWidth;
104  argparse::ArgValue<float> place_rlim_escape_fraction;
105  argparse::ArgValue<std::string> place_move_stats_file;
106  argparse::ArgValue<int> placement_saves_per_temperature;
107  argparse::ArgValue<e_place_effort_scaling> place_effort_scaling;
108  argparse::ArgValue<e_place_delta_delay_algorithm> place_delta_delay_matrix_calculation_method;
109 
110  /* Timing-driven placement options only */
111  argparse::ArgValue<float> PlaceTimingTradeoff;
112  argparse::ArgValue<int> RecomputeCritIter;
113  argparse::ArgValue<int> inner_loop_recompute_divider;
114  argparse::ArgValue<int> quench_recompute_divider;
115  argparse::ArgValue<float> place_exp_first;
116  argparse::ArgValue<float> place_exp_last;
117  argparse::ArgValue<float> place_delay_offset;
118  argparse::ArgValue<int> place_delay_ramp_delta_threshold;
119  argparse::ArgValue<float> place_delay_ramp_slope;
120  argparse::ArgValue<float> place_tsu_rel_margin;
121  argparse::ArgValue<float> place_tsu_abs_margin;
122  argparse::ArgValue<std::string> post_place_timing_report_file;
123  argparse::ArgValue<PlaceDelayModelType> place_delay_model;
124  argparse::ArgValue<e_reducer> place_delay_model_reducer;
125  argparse::ArgValue<std::string> allowed_tiles_for_delay_model;
126 
127  /* Router Options */
128  argparse::ArgValue<bool> check_rr_graph;
129  argparse::ArgValue<int> max_router_iterations;
130  argparse::ArgValue<float> first_iter_pres_fac;
131  argparse::ArgValue<float> initial_pres_fac;
132  argparse::ArgValue<float> pres_fac_mult;
133  argparse::ArgValue<float> acc_fac;
134  argparse::ArgValue<int> bb_factor;
135  argparse::ArgValue<e_base_cost_type> base_cost_type;
136  argparse::ArgValue<float> bend_cost;
137  argparse::ArgValue<e_route_type> RouteType;
138  argparse::ArgValue<int> RouteChanWidth;
139  argparse::ArgValue<int> min_route_chan_width_hint;
140  argparse::ArgValue<bool> verify_binary_search;
141  argparse::ArgValue<e_router_algorithm> RouterAlgorithm;
142  argparse::ArgValue<int> min_incremental_reroute_fanout;
143  argparse::ArgValue<bool> read_rr_edge_metadata;
144  argparse::ArgValue<bool> exit_after_first_routing_iteration;
145  argparse::ArgValue<e_check_route_option> check_route;
146 
147  /* Timing-driven router options only */
148  argparse::ArgValue<float> astar_fac;
149  argparse::ArgValue<float> max_criticality;
150  argparse::ArgValue<float> criticality_exp;
151  argparse::ArgValue<float> router_init_wirelength_abort_threshold;
152  argparse::ArgValue<e_incr_reroute_delay_ripup> incr_reroute_delay_ripup;
153  argparse::ArgValue<e_routing_failure_predictor> routing_failure_predictor;
154  argparse::ArgValue<e_routing_budgets_algorithm> routing_budgets_algorithm;
155  argparse::ArgValue<bool> save_routing_per_iteration;
157  argparse::ArgValue<e_route_bb_update> route_bb_update;
158  argparse::ArgValue<int> router_high_fanout_threshold;
159  argparse::ArgValue<int> router_debug_net;
160  argparse::ArgValue<int> router_debug_sink_rr;
161  argparse::ArgValue<int> router_debug_iteration;
162  argparse::ArgValue<e_router_lookahead> router_lookahead_type;
163  argparse::ArgValue<int> router_max_convergence_count;
164  argparse::ArgValue<float> router_reconvergence_cpd_threshold;
165  argparse::ArgValue<bool> router_update_lower_bound_delays;
166  argparse::ArgValue<std::string> router_first_iteration_timing_report_file;
167  argparse::ArgValue<e_router_initial_timing> router_initial_timing;
168  argparse::ArgValue<e_heap_type> router_heap;
169 
170  /* Analysis options */
171  argparse::ArgValue<bool> full_stats;
172  argparse::ArgValue<bool> Generate_Post_Synthesis_Netlist;
173  argparse::ArgValue<int> timing_report_npaths;
174  argparse::ArgValue<e_timing_report_detail> timing_report_detail;
175  argparse::ArgValue<bool> timing_report_skew;
176  argparse::ArgValue<std::string> echo_dot_timing_graph_node;
177 };
178 
179 argparse::ArgumentParser create_arg_parser(std::string prog_name, t_options& args);
180 t_options read_options(int argc, const char** argv);
182 bool verify_args(const t_options& args);
183 
184 #endif
argparse::ArgValue< std::string > disable_errors
Definition: read_options.h:64
argparse::ArgValue< float > initial_pres_fac
Definition: read_options.h:131
argparse::ArgValue< int > Seed
Definition: read_options.h:94
argparse::ArgValue< std::string > read_router_lookahead
Definition: read_options.h:34
argparse::ArgValue< std::string > out_file_prefix
Definition: read_options.h:25
argparse::ArgValue< bool > allow_dangling_combinational_nodes
Definition: read_options.h:66
argparse::ArgValue< bool > absorb_buffer_luts
Definition: read_options.h:69
argparse::ArgValue< std::string > allowed_tiles_for_delay_model
Definition: read_options.h:125
bool verify_args(const t_options &args)
Definition: read_options.cpp:2262
argparse::ArgValue< bool > ShowPlaceTiming
Definition: read_options.h:95
argparse::ArgValue< e_routing_budgets_algorithm > routing_budgets_algorithm
Definition: read_options.h:154
argparse::ArgValue< float > place_rlim_escape_fraction
Definition: read_options.h:104
argparse::ArgValue< int > timing_report_npaths
Definition: read_options.h:173
argparse::ArgValue< bool > strict_checks
Definition: read_options.h:63
argparse::ArgValue< std::string > CircuitName
Definition: read_options.h:13
argparse::ArgValue< int > pack_verbosity
Definition: read_options.h:91
argparse::ArgValue< std::string > PowerFile
Definition: read_options.h:19
argparse::ArgValue< float > bend_cost
Definition: read_options.h:136
argparse::ArgValue< float > place_exp_last
Definition: read_options.h:116
argparse::ArgValue< float > place_exp_first
Definition: read_options.h:115
argparse::ArgValue< float > congested_routing_iteration_threshold_frac
Definition: read_options.h:156
argparse::ArgValue< bool > Generate_Post_Synthesis_Netlist
Definition: read_options.h:172
argparse::ArgValue< float > PlaceInitT
Definition: read_options.h:97
argparse::ArgValue< e_pad_loc_type > pad_loc_type
Definition: read_options.h:102
argparse::ArgValue< float > place_delay_offset
Definition: read_options.h:117
argparse::ArgValue< float > astar_fac
Definition: read_options.h:148
Definition: read_options.h:10
argparse::ArgValue< float > PlaceInnerNum
Definition: read_options.h:96
argparse::ArgValue< bool > exit_after_first_routing_iteration
Definition: read_options.h:144
argparse::ArgValue< e_balance_block_type_util > balance_block_type_utilization
Definition: read_options.h:85
argparse::ArgValue< bool > CreateEchoFile
Definition: read_options.h:55
argparse::ArgValue< std::string > suppress_warnings
Definition: read_options.h:65
argparse::ArgValue< e_constant_net_method > constant_net_method
Definition: read_options.h:59
argparse::ArgValue< std::string > write_placement_delay_lookup
Definition: read_options.h:30
This is a core file that defines the major data types used by VPR.
argparse::ArgValue< std::string > ArchFile
Definition: read_options.h:12
argparse::ArgValue< e_check_route_option > check_route
Definition: read_options.h:145
argparse::ArgValue< bool > sweep_dangling_primary_ios
Definition: read_options.h:71
argparse::ArgValue< int > RecomputeCritIter
Definition: read_options.h:112
argparse::ArgValue< bool > timing_analysis
Definition: read_options.h:53
argparse::ArgValue< float > alpha_clustering
Definition: read_options.h:80
argparse::ArgValue< float > place_tsu_rel_margin
Definition: read_options.h:120
argparse::ArgValue< std::string > ActFile
Definition: read_options.h:18
argparse::ArgValue< bool > verify_binary_search
Definition: read_options.h:140
argparse::ArgValue< bool > timing_driven_clustering
Definition: read_options.h:82
argparse::ArgValue< std::string > NetFile
Definition: read_options.h:14
argparse::ArgValue< bool > do_packing
Definition: read_options.h:37
argparse::ArgValue< e_place_effort_scaling > place_effort_scaling
Definition: read_options.h:107
argparse::ArgValue< e_routing_failure_predictor > routing_failure_predictor
Definition: read_options.h:153
argparse::ArgValue< bool > do_analysis
Definition: read_options.h:40
argparse::ArgValue< e_unrelated_clustering > allow_unrelated_clustering
Definition: read_options.h:79
argparse::ArgValue< bool > sweep_constant_primary_outputs
Definition: read_options.h:74
argparse::ArgValue< std::string > write_router_lookahead
Definition: read_options.h:33
argparse::ArgValue< int > netlist_verbosity
Definition: read_options.h:75
argparse::ArgValue< std::string > read_placement_delay_lookup
Definition: read_options.h:31
argparse::ArgValue< bool > show_version
Definition: read_options.h:51
argparse::ArgValue< e_const_gen_inference > const_gen_inference
Definition: read_options.h:70
argparse::ArgValue< float > place_tsu_abs_margin
Definition: read_options.h:121
argparse::ArgValue< bool > verify_file_digests
Definition: read_options.h:56
argparse::ArgValue< bool > timing_report_skew
Definition: read_options.h:175
argparse::ArgValue< int > pack_transitive_fanout_threshold
Definition: read_options.h:88
argparse::ArgValue< bool > connection_driven_clustering
Definition: read_options.h:78
argparse::ArgValue< bool > enable_clustering_pin_feasibility_filter
Definition: read_options.h:84
argparse::ArgValue< std::string > place_move_stats_file
Definition: read_options.h:105
argparse::ArgValue< std::string > echo_dot_timing_graph_node
Definition: read_options.h:176
argparse::ArgValue< bool > check_rr_graph
Definition: read_options.h:128
argparse::ArgValue< int > router_debug_sink_rr
Definition: read_options.h:160
argparse::ArgValue< size_t > num_workers
Definition: read_options.h:52
argparse::ArgValue< int > place_delay_ramp_delta_threshold
Definition: read_options.h:118
argparse::ArgValue< bool > router_update_lower_bound_delays
Definition: read_options.h:165
argparse::ArgValue< e_clock_modeling > clock_modeling
Definition: read_options.h:60
argparse::ArgValue< std::string > device_layout
Definition: read_options.h:57
argparse::ArgValue< e_timing_update_type > timing_update_type
Definition: read_options.h:54
argparse::ArgValue< std::string > SDCFile
Definition: read_options.h:21
argparse::ArgValue< sched_type > anneal_sched_type
Definition: read_options.h:100
argparse::ArgValue< int > router_debug_net
Definition: read_options.h:159
argparse::ArgValue< e_reducer > place_delay_model_reducer
Definition: read_options.h:124
argparse::ArgValue< int > placement_saves_per_temperature
Definition: read_options.h:106
argparse::ArgValue< bool > save_routing_per_iteration
Definition: read_options.h:155
argparse::ArgValue< std::vector< std::string > > pack_high_fanout_threshold
Definition: read_options.h:90
argparse::ArgValue< e_router_lookahead > router_lookahead_type
Definition: read_options.h:162
argparse::ArgValue< int > router_debug_iteration
Definition: read_options.h:161
argparse::ArgValue< float > target_device_utilization
Definition: read_options.h:58
argparse::ArgValue< std::string > post_place_timing_report_file
Definition: read_options.h:122
t_options read_options(int argc, const char **argv)
Read and process VPR&#39;s command-line aruments.
Definition: read_options.cpp:17
argparse::ArgValue< int > min_route_chan_width_hint
Definition: read_options.h:139
argparse::ArgValue< bool > sweep_dangling_blocks
Definition: read_options.h:73
argparse::ArgValue< bool > do_placement
Definition: read_options.h:38
void set_conditional_defaults(t_options &args)
Definition: read_options.cpp:2083
argparse::ArgValue< bool > show_help
Definition: read_options.h:50
argparse::ArgValue< e_timing_report_detail > timing_report_detail
Definition: read_options.h:174
argparse::ArgValue< std::string > CmosTechFile
Definition: read_options.h:20
argparse::ArgValue< float > acc_fac
Definition: read_options.h:133
argparse::ArgValue< std::string > BlifFile
Definition: read_options.h:17
argparse::ArgValue< e_circuit_format > circuit_format
Definition: read_options.h:23
argparse::ArgValue< int > min_incremental_reroute_fanout
Definition: read_options.h:142
argparse::ArgValue< float > PlaceExitT
Definition: read_options.h:98
argparse::ArgValue< float > place_delay_ramp_slope
Definition: read_options.h:119
argparse::ArgValue< float > first_iter_pres_fac
Definition: read_options.h:130
argparse::ArgValue< bool > full_stats
Definition: read_options.h:171
argparse::ArgValue< std::string > RouteFile
Definition: read_options.h:16
argparse::ArgValue< float > beta_clustering
Definition: read_options.h:81
argparse::ArgValue< std::string > router_first_iteration_timing_report_file
Definition: read_options.h:166
argparse::ArgValue< e_cluster_seed > cluster_seed_type
Definition: read_options.h:83
argparse::ArgValue< PlaceDelayModelType > place_delay_model
Definition: read_options.h:123
argparse::ArgValue< float > PlaceTimingTradeoff
Definition: read_options.h:111
argparse::ArgValue< float > router_reconvergence_cpd_threshold
Definition: read_options.h:164
argparse::ArgValue< bool > do_routing
Definition: read_options.h:39
argparse::ArgValue< e_place_algorithm > PlaceAlgorithm
Definition: read_options.h:101
argparse::ArgValue< int > GraphPause
Definition: read_options.h:45
argparse::ArgValue< bool > do_power
Definition: read_options.h:41
argparse::ArgValue< bool > pack_prioritize_transitive_connectivity
Definition: read_options.h:87
argparse::ArgValue< bool > save_graphics
Definition: read_options.h:46
argparse::ArgValue< float > PlaceAlphaT
Definition: read_options.h:99
argparse::ArgValue< bool > read_rr_edge_metadata
Definition: read_options.h:143
argparse::ArgValue< e_base_cost_type > base_cost_type
Definition: read_options.h:135
argparse::ArgValue< e_router_initial_timing > router_initial_timing
Definition: read_options.h:167
argparse::ArgValue< e_route_type > RouteType
Definition: read_options.h:137
argparse::ArgValue< std::string > pad_loc_file
Definition: read_options.h:26
argparse::ArgValue< std::string > write_rr_graph_file
Definition: read_options.h:27
argparse::ArgValue< float > pres_fac_mult
Definition: read_options.h:132
argparse::ArgValue< bool > show_graphics
Definition: read_options.h:44
argparse::ArgValue< std::string > read_rr_graph_file
Definition: read_options.h:28
argparse::ArgValue< int > router_high_fanout_threshold
Definition: read_options.h:158
argparse::ArgValue< int > PlaceChanWidth
Definition: read_options.h:103
argparse::ArgValue< std::string > graphics_commands
Definition: read_options.h:47
argparse::ArgValue< int > RouteChanWidth
Definition: read_options.h:138
argparse::ArgValue< e_heap_type > router_heap
Definition: read_options.h:168
argparse::ArgValue< std::string > PlaceFile
Definition: read_options.h:15
argparse::ArgValue< int > pack_feasible_block_array_size
Definition: read_options.h:89
argparse::ArgumentParser create_arg_parser(std::string prog_name, t_options &args)
Definition: read_options.cpp:962
argparse::ArgValue< e_place_delta_delay_algorithm > place_delta_delay_matrix_calculation_method
Definition: read_options.h:108
argparse::ArgValue< e_router_algorithm > RouterAlgorithm
Definition: read_options.h:141
argparse::ArgValue< int > max_router_iterations
Definition: read_options.h:129
argparse::ArgValue< float > criticality_exp
Definition: read_options.h:150
argparse::ArgValue< bool > sweep_dangling_nets
Definition: read_options.h:72
argparse::ArgValue< int > inner_loop_recompute_divider
Definition: read_options.h:113
argparse::ArgValue< float > router_init_wirelength_abort_threshold
Definition: read_options.h:151
argparse::ArgValue< int > router_max_convergence_count
Definition: read_options.h:163
argparse::ArgValue< e_route_bb_update > route_bb_update
Definition: read_options.h:157
argparse::ArgValue< bool > exit_before_pack
Definition: read_options.h:62
argparse::ArgValue< bool > two_stage_clock_routing
Definition: read_options.h:61
argparse::ArgValue< int > quench_recompute_divider
Definition: read_options.h:114
argparse::ArgValue< int > bb_factor
Definition: read_options.h:134
argparse::ArgValue< std::vector< std::string > > target_external_pin_util
Definition: read_options.h:86
argparse::ArgValue< e_incr_reroute_delay_ripup > incr_reroute_delay_ripup
Definition: read_options.h:152
argparse::ArgValue< float > max_criticality
Definition: read_options.h:149