diff options
| -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)  | 
