From 134ed0a201f1d8b068108e0416b7d5d8cf117d57 Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Tue, 23 Sep 2025 13:54:00 -0300 Subject: [PATCH] mpl: ensure number of perturbations increase for large arrays Signed-off-by: Arthur Koucher --- src/mpl/src/hier_rtlmp.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/mpl/src/hier_rtlmp.cpp b/src/mpl/src/hier_rtlmp.cpp index 01ba3f52b8..01b1f20dba 100644 --- a/src/mpl/src/hier_rtlmp.cpp +++ b/src/mpl/src/hier_rtlmp.cpp @@ -2097,11 +2097,13 @@ void HierRTLMP::placeMacros(Cluster* cluster) const int number_of_sequence_pair_macros = static_cast(hard_macros.size()); + const int minimum_perturbations_per_step = num_perturb_per_step_ / 10; + const bool large_macro_cluster + = number_of_sequence_pair_macros > minimum_perturbations_per_step; - int num_perturb_per_step - = (number_of_sequence_pair_macros > num_perturb_per_step_ / 10) - ? number_of_sequence_pair_macros - : num_perturb_per_step_ / 10; + int perturbations_per_step = large_macro_cluster + ? number_of_sequence_pair_macros + : minimum_perturbations_per_step; SequencePair initial_seq_pair; if (cluster->isArrayOfInterconnectedMacros()) { @@ -2114,8 +2116,8 @@ void HierRTLMP::placeMacros(Cluster* cluster) exchange_swap_prob = 1.0f; // Large arrays need more steps to properly converge. - if (number_of_sequence_pair_macros > num_perturb_per_step) { - num_perturb_per_step *= 2; + if (large_macro_cluster) { + perturbations_per_step *= 2; } } @@ -2151,7 +2153,7 @@ void HierRTLMP::placeMacros(Cluster* cluster) exchange_swap_prob, init_prob_, max_num_step_, - num_perturb_per_step, + perturbations_per_step, random_seed_ + run_id, graphics_.get(), logger_,