@@ -239,6 +239,34 @@ static void profile_lookahead_overestimation(std::ofstream& os,
239239
240240 print_header (os, " Lookeahead Overestimation Report" );
241241
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 worse 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 entirely focus on the delay component of the\n " ;
267+ os << " costs of the paths.\n " ;
268+ os << " \n " ;
269+
242270 // Variables for the profiling.
243271 // The target number of random source (sample) nodes to use.
244272 constexpr size_t target_num_trials = 100 ;
@@ -337,7 +365,7 @@ static void profile_lookahead_overestimation(std::ofstream& os,
337365 os << " =================================================================\n " ;
338366
339367 // 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);
341369
342370 // Print the overestimation per node type.
343371 for (size_t l = 0 ; l < max_overestimation_per_type.size (); l++) {
0 commit comments