@@ -239,6 +239,34 @@ static void profile_lookahead_overestimation(std::ofstream& os,
239
239
240
240
print_header (os, " Lookeahead Overestimation Report" );
241
241
242
+ // To make the report file itself self-documenting, adding a preamble section
243
+ // describing what is happening and why.
244
+ os << " \n " ;
245
+ os << " The following section of the report will profile the router lookahead\n " ;
246
+ os << " by performing a set of trial routes from different source RR nodes to\n " ;
247
+ os << " all target nodes. These routes are performed using no heuristic, thus\n " ;
248
+ os << " they perform a Dijkstra path search.\n " ;
249
+ os << " \n " ;
250
+ os << " Each \' trial\' below performs a single-source-all-destination Dijkstra\n " ;
251
+ os << " search from a random source node to all reachable targets. The routes\n " ;
252
+ os << " produced by this search are analyzed to see how good the router lookahead\n " ;
253
+ os << " is at estimating the cost of the paths (the heuristic cost) compared to\n " ;
254
+ os << " the cost returned by the Dijkstra search (the \' actual\' path cost).\n " ;
255
+ os << " \n " ;
256
+ os << " Important metrics in the data below include the Mean Squared Error (MSE)\n " ;
257
+ os << " between the estimated cost of the path and the actual cost of the path, and\n " ;
258
+ os << " the worst overestimation of the cost of the path. The MSE measures how\n " ;
259
+ os << " acccurate the router lookahead is. The more accurate the router lookahead\n " ;
260
+ os << " is, the faster the router will be while maintaining good quality. The\n " ;
261
+ os << " max overestimation is a measure of how admissible the router lookahead is\n " ;
262
+ os << " as a heuristic in the router. The higher this number is, the worst the\n " ;
263
+ os << " router results may be (in theory).\n " ;
264
+ os << " \n " ;
265
+ os << " The routes performed by this profiling use a fixed criticality of 1.0, so\n " ;
266
+ os << " be aware that these results mainly focus on the delay component of the\n " ;
267
+ os << " costs of the paths.\n " ;
268
+ os << " \n " ;
269
+
242
270
// Variables for the profiling.
243
271
// The target number of random source (sample) nodes to use.
244
272
constexpr size_t target_num_trials = 100 ;
@@ -337,7 +365,7 @@ static void profile_lookahead_overestimation(std::ofstream& os,
337
365
os << " =================================================================\n " ;
338
366
339
367
// Print the total maximum difference.
340
- os << vtr::string_fmt (" Max difference between heuristic and actual: %.3g\n " , max_difference);
368
+ os << vtr::string_fmt (" Worst overestimation between heuristic and actual: %.3g\n " , max_difference);
341
369
342
370
// Print the overestimation per node type.
343
371
for (size_t l = 0 ; l < max_overestimation_per_type.size (); l++) {
0 commit comments