diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/nextpnr.h | 7 | ||||
-rw-r--r-- | common/route.cc | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h index 2d614058..6e4b87bd 100644 --- a/common/nextpnr.h +++ b/common/nextpnr.h @@ -23,6 +23,7 @@ #include <unordered_map> #include <unordered_set> #include <vector> +#include <algorithm> #ifndef NEXTPNR_H #define NEXTPNR_H @@ -328,6 +329,12 @@ struct Context : Arch std::swap(a[i], a[j]); } } + + template <typename T> void sorted_shuffle(std::vector<T> &a) + { + std::sort(a.begin(), a.end()); + shuffle(a); + } }; NEXTPNR_NAMESPACE_END diff --git a/common/route.cc b/common/route.cc index d623b2cf..b031237c 100644 --- a/common/route.cc +++ b/common/route.cc @@ -395,7 +395,7 @@ bool route_design(Context *ctx) bool printNets = netsQueue.size() < 10; std::vector<IdString> netsArray(netsQueue.begin(), netsQueue.end()); - ctx->shuffle(netsArray); + ctx->sorted_shuffle(netsArray); netsQueue.clear(); for (auto net_name : netsArray) { @@ -441,7 +441,7 @@ bool route_design(Context *ctx) std::vector<IdString> ripupArray(ripupQueue.begin(), ripupQueue.end()); - ctx->shuffle(ripupArray); + ctx->sorted_shuffle(ripupArray); for (auto net_name : ripupArray) { if (printNets) |