@@ -1140,56 +1140,6 @@ struct t_ap_opts {
1140
1140
* Router data types
1141
1141
*******************************************************************/
1142
1142
1143
- /* All the parameters controlling the router's operation are in this *
1144
- * structure. *
1145
- * first_iter_pres_fac: Present sharing penalty factor used for the *
1146
- * very first (congestion mapping) Pathfinder iteration. *
1147
- * initial_pres_fac: Initial present sharing penalty factor for *
1148
- * Pathfinder; used to set pres_fac on 2nd iteration. *
1149
- * pres_fac_mult: Amount by which pres_fac is multiplied each *
1150
- * routing iteration. *
1151
- * acc_fac: Historical congestion cost multiplier. Used unchanged *
1152
- * for all iterations. *
1153
- * bend_cost: Cost of a bend (usually non-zero only for global routing). *
1154
- * max_router_iterations: Maximum number of iterations before giving *
1155
- * up. *
1156
- * min_incremental_reroute_fanout: Minimum fanout a net needs to have *
1157
- * for incremental reroute to be applied to it through route *
1158
- * tree pruning. Larger circuits should get larger thresholds *
1159
- * bb_factor: Linear distance a route can go outside the net bounding *
1160
- * box. *
1161
- * route_type: GLOBAL or DETAILED. *
1162
- * fixed_channel_width: Only attempt to route the design once, with the *
1163
- * channel width given. If this variable is *
1164
- * == NO_FIXED_CHANNEL_WIDTH, do a binary search *
1165
- * on channel width. *
1166
- * router_algorithm: TIMING_DRIVEN or PARALLEL. Selects the desired *
1167
- * routing algorithm. *
1168
- * base_cost_type: Specifies how to compute the base cost of each type of *
1169
- * rr_node. DELAY_NORMALIZED -> base_cost = "demand" *
1170
- * x average delay to route past 1 CLB. DEMAND_ONLY -> *
1171
- * expected demand of this node (old breadth-first costs). *
1172
- * *
1173
- * The following parameters are used only by the timing-driven router. *
1174
- * *
1175
- * astar_fac: Factor (alpha) used to weight expected future costs to *
1176
- * target in the timing_driven router. astar_fac = 0 leads to *
1177
- * an essentially breadth-first search, astar_fac = 1 is near *
1178
- * the usual astar algorithm and astar_fac > 1 are more *
1179
- * aggressive. *
1180
- * astar_offset: Offset that is subtracted from the lookahead (expected *
1181
- * future costs) in the timing-driven router. *
1182
- * max_criticality: The maximum criticality factor (from 0 to 1) any sink *
1183
- * will ever have (i.e. clip criticality to this number). *
1184
- * criticality_exp: Set criticality to (path_length(sink) / longest_path) ^ *
1185
- * criticality_exp (then clip to max_criticality). *
1186
- * doRouting: true if routing is supposed to be done, false otherwise *
1187
- * routing_failure_predictor: sets the configuration to be used by the *
1188
- * routing failure predictor, how aggressive the threshold used to judge *
1189
- * and abort routings deemed unroutable *
1190
- * write_rr_graph_name: stores the file name of the output rr graph *
1191
- * read_rr_graph_name: stores the file name of the rr graph to be read by vpr */
1192
-
1193
1143
enum e_router_algorithm {
1194
1144
NESTED,
1195
1145
PARALLEL,
@@ -1249,25 +1199,54 @@ enum class e_incr_reroute_delay_ripup {
1249
1199
1250
1200
constexpr int NO_FIXED_CHANNEL_WIDTH = -1 ;
1251
1201
1202
+ /* *
1203
+ * @brief Parameters controlling the router's operation.
1204
+ */
1252
1205
struct t_router_opts {
1253
1206
bool read_rr_edge_metadata = false ;
1254
1207
bool do_check_rr_graph = true ;
1208
+
1209
+ // / Present sharing penalty factor used for the very first (congestion mapping) Pathfinder iteration.
1255
1210
float first_iter_pres_fac;
1211
+ // / Initial present sharing penalty factor for Pathfinder; used to set pres_fac on 2nd iteration.
1256
1212
float initial_pres_fac;
1213
+ // / Amount by which pres_fac is multiplied each routing iteration.
1257
1214
float pres_fac_mult;
1258
1215
float max_pres_fac;
1216
+
1217
+ // / Historical congestion cost multiplier. Used unchanged for all iterations.
1259
1218
float acc_fac;
1219
+ // / Cost of a bend (usually non-zero only for global routing).
1260
1220
float bend_cost;
1221
+ // / Maximum number of iterations before giving up.
1261
1222
int max_router_iterations;
1223
+ // / Minimum fanout a net needs to have for incremental reroute to be applied to it through route tree pruning.
1224
+ // / Larger circuits should get larger thresholds
1262
1225
int min_incremental_reroute_fanout;
1263
1226
e_incr_reroute_delay_ripup incr_reroute_delay_ripup;
1227
+ // / Linear distance a route can go outside the net bounding box.
1264
1228
int bb_factor;
1229
+ // / GLOBAL or DETAILED.
1265
1230
enum e_route_type route_type;
1231
+ // / Only attempt to route the design once, with the channel width given.
1232
+ // / If this variable is == NO_FIXED_CHANNEL_WIDTH, do a binary search on channel width.
1266
1233
int fixed_channel_width;
1267
- int min_channel_width_hint; // /<Hint to binary search of what the minimum channel width is
1234
+ // / Hint to binary search of what the minimum channel width is
1235
+ int min_channel_width_hint;
1236
+ // / TIMING_DRIVEN or PARALLEL. Selects the desired routing algorithm.
1268
1237
enum e_router_algorithm router_algorithm;
1238
+
1239
+ // / Specifies how to compute the base cost of each type of rr_node.
1240
+ // / DELAY_NORMALIZED -> base_cost = "demand" x average delay to route past 1 CLB.
1241
+ // / DEMAND_ONLY -> expected demand of this node (old breadth-first costs).
1269
1242
enum e_base_cost_type base_cost_type;
1243
+
1244
+ // / Factor (alpha) used to weight expected future costs to target in the timing_driven router.
1245
+ // / astar_fac = 0 leads to an essentially breadth-first search,
1246
+ // / astar_fac = 1 is near the usual astar algorithm and astar_fac > 1 are more aggressive.
1270
1247
float astar_fac;
1248
+
1249
+ // / Offset that is subtracted from the lookahead (expected future costs) in the timing-driven router.
1271
1250
float astar_offset;
1272
1251
float router_profiler_astar_fac;
1273
1252
bool enable_parallel_connection_router;
@@ -1276,15 +1255,20 @@ struct t_router_opts {
1276
1255
int multi_queue_num_threads;
1277
1256
int multi_queue_num_queues;
1278
1257
bool multi_queue_direct_draining;
1258
+ // / The maximum criticality factor (from 0 to 1) any sink will ever have (i.e. clip criticality to this number).
1279
1259
float max_criticality;
1260
+ // / Set criticality to (path_length(sink) / longest_path) ^ criticality_exp (then clip to max_criticality).
1280
1261
float criticality_exp;
1281
1262
float init_wirelength_abort_threshold;
1282
1263
bool verify_binary_search;
1283
1264
bool full_stats;
1284
1265
bool congestion_analysis;
1285
1266
bool fanout_analysis;
1286
1267
bool switch_usage_analysis;
1268
+ // / true if routing is supposed to be done, false otherwise
1287
1269
e_stage_action doRouting;
1270
+ // / the configuration to be used by the routing failure predictor,
1271
+ // / how aggressive the threshold used to judge and abort routings deemed unroutable
1288
1272
enum e_routing_failure_predictor routing_failure_predictor;
1289
1273
enum e_routing_budgets_algorithm routing_budgets_algorithm;
1290
1274
bool save_routing_per_iteration;
0 commit comments