Skip to content

Commit d3f1dba

Browse files
committed
Standardized and renamed packer alpha and beta variable. They are now referred to as timing_gain_weight and connection_gain_weight, used as a weight parameter during timing and connection driven clustering respectively.
1 parent 797e969 commit d3f1dba

File tree

7 files changed

+28
-16
lines changed

7 files changed

+28
-16
lines changed

doc/src/vpr/command_line_usage.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,15 +569,15 @@ For people not working on CAD, you can probably leave all the options to their d
569569

570570
**Default**: ``auto``
571571

572-
.. option:: --alpha_clustering <float>
572+
.. option:: --timing_gain_weight <float>
573573

574574
A parameter that weights the optimization of timing vs area.
575575

576576
A value of 0 focuses solely on area, a value of 1 focuses entirely on timing.
577577

578578
**Default**: ``0.75``
579579

580-
.. option:: --beta_clustering <float>
580+
.. option:: --connection_gain_weight <float>
581581

582582
A tradeoff parameter that controls the optimization of smaller net absorption vs. the optimization of signal sharing.
583583

vpr/src/base/SetupVPR.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -580,8 +580,8 @@ void SetupPackerOpts(const t_options& Options,
580580
PackerOpts->connection_driven = Options.connection_driven_clustering;
581581
PackerOpts->timing_driven = Options.timing_driven_clustering;
582582
PackerOpts->cluster_seed_type = Options.cluster_seed_type;
583-
PackerOpts->alpha = Options.alpha_clustering;
584-
PackerOpts->beta = Options.beta_clustering;
583+
PackerOpts->timing_gain_weight = Options.timing_gain_weight;
584+
PackerOpts->connection_gain_weight = Options.connection_gain_weight;
585585
PackerOpts->pack_verbosity = Options.pack_verbosity;
586586
PackerOpts->enable_pin_feasibility_filter = Options.enable_clustering_pin_feasibility_filter;
587587
PackerOpts->balance_block_type_utilization = Options.balance_block_type_utilization;

vpr/src/base/ShowSetup.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,8 +731,8 @@ static void ShowPackerOpts(const t_packer_opts& PackerOpts) {
731731
} else {
732732
VPR_FATAL_ERROR(VPR_ERROR_UNKNOWN, "Unknown packer allow_unrelated_clustering\n");
733733
}
734-
VTR_LOG("PackerOpts.alpha_clustering: %f\n", PackerOpts.alpha);
735-
VTR_LOG("PackerOpts.beta_clustering: %f\n", PackerOpts.beta);
734+
VTR_LOG("PackerOpts.timing_gain_weight: %f\n", PackerOpts.timing_gain_weight);
735+
VTR_LOG("PackerOpts.connection_gain_weight: %f\n", PackerOpts.connection_gain_weight);
736736
VTR_LOG("PackerOpts.cluster_seed_type: ");
737737
switch (PackerOpts.cluster_seed_type) {
738738
case e_cluster_seed::TIMING:

vpr/src/base/read_options.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1972,14 +1972,14 @@ argparse::ArgumentParser create_arg_parser(const std::string& prog_name, t_optio
19721972
.default_value("auto")
19731973
.show_in(argparse::ShowIn::HELP_ONLY);
19741974

1975-
pack_grp.add_argument(args.alpha_clustering, "--alpha_clustering")
1975+
pack_grp.add_argument(args.timing_gain_weight, "--timing_gain_weight")
19761976
.help(
19771977
"Parameter that weights the optimization of timing vs area. 0.0 focuses solely on"
19781978
" area, 1.0 solely on timing.")
19791979
.default_value("0.75")
19801980
.show_in(argparse::ShowIn::HELP_ONLY);
19811981

1982-
pack_grp.add_argument(args.beta_clustering, "--beta_clustering")
1982+
pack_grp.add_argument(args.connection_gain_weight, "--connection_gain_weight")
19831983
.help(
19841984
"Parameter that weights the absorption of small nets vs signal sharing."
19851985
" 0.0 focuses solely on sharing, 1.0 solely on small net absoprtion."

vpr/src/base/read_options.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ struct t_options {
108108
/* Clustering options */
109109
argparse::ArgValue<bool> connection_driven_clustering;
110110
argparse::ArgValue<e_unrelated_clustering> allow_unrelated_clustering;
111-
argparse::ArgValue<float> alpha_clustering;
112-
argparse::ArgValue<float> beta_clustering;
111+
argparse::ArgValue<float> timing_gain_weight;
112+
argparse::ArgValue<float> connection_gain_weight;
113113
argparse::ArgValue<bool> timing_driven_clustering;
114114
argparse::ArgValue<e_cluster_seed> cluster_seed_type;
115115
argparse::ArgValue<bool> enable_clustering_pin_feasibility_filter;

vpr/src/base/vpr_types.h

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,17 @@ enum e_stage_action {
714714
* ALWAYS TRUE. (Default: True)
715715
* @param timing_driven
716716
* Whether or not to do timing driven clustering. (Default: on)
717+
* @param timing_gain_weight
718+
* Controls the optimization of timing vs area in timing driven
719+
* clustering.
720+
* A value of 0 focuses only on area; 1 focuses only on timing.
721+
* (Default: 0.75)
722+
* @param connection_gain_weight
723+
* Controls the optimization of smaller net absorption vs. signal
724+
* sharing in connection driven clustering.
725+
* A value of 0 focuses solely on signal sharing; a value of 1
726+
* focuses solely on absorbing smaller nets into a cluster.
727+
* (Default: 0.9)
717728
* @param cluster_seed_type
718729
* Selection algorithm for selecting next seed. (Default: blend2 if
719730
* timing_driven is on; max_inputs otherwise)
@@ -777,8 +788,9 @@ struct t_packer_opts {
777788
bool global_clocks;
778789
bool timing_driven;
779790
enum e_cluster_seed cluster_seed_type;
780-
float alpha;
781-
float beta;
791+
float timing_gain_weight;
792+
float connection_gain_weight;
793+
float inter_cluster_net_delay;
782794
float target_device_utilization;
783795
e_unrelated_clustering allow_unrelated_clustering;
784796
bool connection_driven;

vpr/src/pack/greedy_candidate_selector.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -620,9 +620,9 @@ void GreedyCandidateSelector::update_total_gain(ClusterGainStats& cluster_gain_s
620620
VTR_ASSERT(num_used_pins > 0);
621621
if (packer_opts_.connection_driven) {
622622
/*try to absorb as many connections as possible*/
623-
cluster_gain_stats.gain[blk_id] = ((1 - packer_opts_.beta)
623+
cluster_gain_stats.gain[blk_id] = ((1 - packer_opts_.connection_gain_weight)
624624
* (float)cluster_gain_stats.sharing_gain[blk_id]
625-
+ packer_opts_.beta * (float)cluster_gain_stats.connection_gain[blk_id])
625+
+ packer_opts_.connection_gain_weight * (float)cluster_gain_stats.connection_gain[blk_id])
626626
/ (num_used_pins);
627627
} else {
628628
cluster_gain_stats.gain[blk_id] = ((float)cluster_gain_stats.sharing_gain[blk_id])
@@ -631,9 +631,9 @@ void GreedyCandidateSelector::update_total_gain(ClusterGainStats& cluster_gain_s
631631

632632
/* Add in timing driven cost into cost function */
633633
if (packer_opts_.timing_driven) {
634-
cluster_gain_stats.gain[blk_id] = packer_opts_.alpha
634+
cluster_gain_stats.gain[blk_id] = packer_opts_.timing_gain_weight
635635
* cluster_gain_stats.timing_gain[blk_id]
636-
+ (1.0 - packer_opts_.alpha) * (float)cluster_gain_stats.gain[blk_id];
636+
+ (1.0 - packer_opts_.timing_gain_weight) * (float)cluster_gain_stats.gain[blk_id];
637637
}
638638
}
639639
}

0 commit comments

Comments
 (0)