diff options
author | Clifford Wolf <clifford@clifford.at> | 2018-06-19 16:23:23 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2018-06-19 16:23:23 +0200 |
commit | 5af5bd23d0fd7f16e08ca0d396e7985205c56ffb (patch) | |
tree | c7eeafb33b37aff5a4c0a96cacf334e5f390cbc2 | |
parent | 8e26e4381be1e95479965756feba0237bd6e0582 (diff) | |
download | nextpnr-5af5bd23d0fd7f16e08ca0d396e7985205c56ffb.tar.gz nextpnr-5af5bd23d0fd7f16e08ca0d396e7985205c56ffb.tar.bz2 nextpnr-5af5bd23d0fd7f16e08ca0d396e7985205c56ffb.zip |
Add Context::sorted_shuffle API
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-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) |