@@ -1945,6 +1945,31 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
1945
1945
.default_value (" 0.5" )
1946
1946
.show_in (argparse::ShowIn::HELP_ONLY);
1947
1947
1948
+ ap_grp.add_argument (args.appack_max_dist_th , " --appack_max_dist_th" )
1949
+ .help (
1950
+ " Sets the maximum candidate distance thresholds for the logical block types"
1951
+ " used by APPack. APPack uses the primitive-level placement produced by the"
1952
+ " global placer to cluster primitives together. APPack uses the thresholds"
1953
+ " here to ignore primitives which are too far away from the cluster being formed."
1954
+ " \n "
1955
+ " When this option is set to auto, VPR will select good values for these"
1956
+ " thresholds based on the primitives contained within each logical block type."
1957
+ " \n "
1958
+ " Using this option, the user can set the maximum candidate distance threshold"
1959
+ " of logical block types to something else. The strings passed in by the user"
1960
+ " should be of the form <regex>:<float>,<float> where the regex string is"
1961
+ " used to match the name of the logical block type to set, the first float"
1962
+ " is a scaling term, and the second float is an offset. The threshold will"
1963
+ " be set to max(scale * (W + H), offset), where W and H are the width and height"
1964
+ " of the device. This allows the user to specify a threshold based on the"
1965
+ " size of the device, while also preventing the number from going below offset"
1966
+ " When multiple strings are provided, the thresholds are set from left to right,"
1967
+ " and any logical block types which have been unset will be set to their auto"
1968
+ " values." )
1969
+ .nargs (' +' )
1970
+ .default_value ({" auto" })
1971
+ .show_in (argparse::ShowIn::HELP_ONLY);
1972
+
1948
1973
ap_grp.add_argument <int >(args.ap_verbosity , " --ap_verbosity" )
1949
1974
.help (
1950
1975
" Controls how verbose the AP flow's log messages will be. Higher "
@@ -1972,14 +1997,14 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
1972
1997
.default_value (" auto" )
1973
1998
.show_in (argparse::ShowIn::HELP_ONLY);
1974
1999
1975
- pack_grp.add_argument (args.alpha_clustering , " --alpha_clustering " )
2000
+ pack_grp.add_argument (args.timing_gain_weight , " --timing_gain_weight " )
1976
2001
.help (
1977
2002
" Parameter that weights the optimization of timing vs area. 0.0 focuses solely on"
1978
2003
" area, 1.0 solely on timing." )
1979
2004
.default_value (" 0.75" )
1980
2005
.show_in (argparse::ShowIn::HELP_ONLY);
1981
2006
1982
- pack_grp.add_argument (args.beta_clustering , " --beta_clustering " )
2007
+ pack_grp.add_argument (args.connection_gain_weight , " --connection_gain_weight " )
1983
2008
.help (
1984
2009
" Parameter that weights the absorption of small nets vs signal sharing."
1985
2010
" 0.0 focuses solely on sharing, 1.0 solely on small net absoprtion."
@@ -2101,24 +2126,6 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
2101
2126
.default_value (" 2" )
2102
2127
.show_in (argparse::ShowIn::HELP_ONLY);
2103
2128
2104
- pack_grp.add_argument <bool , ParseOnOff>(args.use_attraction_groups , " --use_attraction_groups" )
2105
- .help (" Whether attraction groups are used to make it easier to pack primitives in the same floorplan region together." )
2106
- .default_value (" on" )
2107
- .show_in (argparse::ShowIn::HELP_ONLY);
2108
-
2109
- pack_grp.add_argument (args.pack_num_moves , " --pack_num_moves" )
2110
- .help (
2111
- " The number of moves that can be tried in packing stage" )
2112
- .default_value (" 100000" )
2113
- .show_in (argparse::ShowIn::HELP_ONLY);
2114
-
2115
- pack_grp.add_argument (args.pack_move_type , " --pack_move_type" )
2116
- .help (
2117
- " The move type used in packing."
2118
- " The available values are: randomSwap, semiDirectedSwap, semiDirectedSameTypeSwap" )
2119
- .default_value (" semiDirectedSwap" )
2120
- .show_in (argparse::ShowIn::HELP_ONLY);
2121
-
2122
2129
auto & place_grp = parser.add_argument_group (" placement options" );
2123
2130
2124
2131
place_grp.add_argument (args.Seed , " --seed" )
@@ -2716,6 +2723,66 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
2716
2723
.default_value (" 1.2" )
2717
2724
.show_in (argparse::ShowIn::HELP_ONLY);
2718
2725
2726
+ route_timing_grp.add_argument <bool , ParseOnOff>(args.enable_parallel_connection_router , " --enable_parallel_connection_router" )
2727
+ .help (
2728
+ " Controls whether the MultiQueue-based parallel connection router is used during a single connection"
2729
+ " routing. When enabled, the parallel connection router accelerates the path search for individual"
2730
+ " source-sink connections using multi-threading without altering the net routing order." )
2731
+ .default_value (" off" )
2732
+ .show_in (argparse::ShowIn::HELP_ONLY);
2733
+
2734
+ route_timing_grp.add_argument (args.post_target_prune_fac , " --post_target_prune_fac" )
2735
+ .help (
2736
+ " Controls the post-target pruning heuristic calculation in the parallel connection router."
2737
+ " This parameter is used as a multiplicative factor applied to the VPR heuristic"
2738
+ " (not guaranteed to be admissible, i.e., might over-predict the cost to the sink)"
2739
+ " to calculate the 'stopping heuristic' when pruning nodes after the target has been"
2740
+ " reached. The 'stopping heuristic' must be admissible for the path search algorithm"
2741
+ " to guarantee optimal paths and be deterministic. Values of this parameter are"
2742
+ " architecture-specific and have to be empirically found."
2743
+ " This parameter has no effect if --enable_parallel_connection_router is not set." )
2744
+ .default_value (" 1.2" )
2745
+ .show_in (argparse::ShowIn::HELP_ONLY);
2746
+
2747
+ route_timing_grp.add_argument (args.post_target_prune_offset , " --post_target_prune_offset" )
2748
+ .help (
2749
+ " Controls the post-target pruning heuristic calculation in the parallel connection router."
2750
+ " This parameter is used as a subtractive offset together with --post_target_prune_fac"
2751
+ " to apply an affine transformation on the VPR heuristic to calculate the 'stopping"
2752
+ " heuristic'. The 'stopping heuristic' must be admissible for the path search"
2753
+ " algorithm to guarantee optimal paths and be deterministic. Values of this"
2754
+ " parameter are architecture-specific and have to be empirically found."
2755
+ " This parameter has no effect if --enable_parallel_connection_router is not set." )
2756
+ .default_value (" 0.0" )
2757
+ .show_in (argparse::ShowIn::HELP_ONLY);
2758
+
2759
+ route_timing_grp.add_argument <int >(args.multi_queue_num_threads , " --multi_queue_num_threads" )
2760
+ .help (
2761
+ " Controls the number of threads used by MultiQueue-based parallel connection router."
2762
+ " If not explicitly specified, defaults to 1, implying the parallel connection router"
2763
+ " works in 'serial' mode using only one main thread to route."
2764
+ " This parameter has no effect if --enable_parallel_connection_router is not set." )
2765
+ .default_value (" 1" )
2766
+ .show_in (argparse::ShowIn::HELP_ONLY);
2767
+
2768
+ route_timing_grp.add_argument <int >(args.multi_queue_num_queues , " --multi_queue_num_queues" )
2769
+ .help (
2770
+ " Controls the number of queues used by MultiQueue in the parallel connection router."
2771
+ " Must be set >= 2. A common configuration for this parameter is the number of threads"
2772
+ " used by MultiQueue * 4 (the number of queues per thread)."
2773
+ " This parameter has no effect if --enable_parallel_connection_router is not set." )
2774
+ .default_value (" 2" )
2775
+ .show_in (argparse::ShowIn::HELP_ONLY);
2776
+
2777
+ route_timing_grp.add_argument <bool , ParseOnOff>(args.multi_queue_direct_draining , " --multi_queue_direct_draining" )
2778
+ .help (
2779
+ " Controls whether to enable queue draining optimization for MultiQueue-based parallel connection"
2780
+ " router. When enabled, queues can be emptied quickly by draining all elements if no further"
2781
+ " solutions need to be explored in the path search to guarantee optimality or determinism after"
2782
+ " reaching the target. This parameter has no effect if --enable_parallel_connection_router is not set." )
2783
+ .default_value (" off" )
2784
+ .show_in (argparse::ShowIn::HELP_ONLY);
2785
+
2719
2786
route_timing_grp.add_argument (args.max_criticality , " --max_criticality" )
2720
2787
.help (
2721
2788
" Sets the maximum fraction of routing cost derived from delay (vs routability) for any net."
0 commit comments