aboutsummaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-02-03 11:54:38 +0000
committerDavid Shah <dave@ds0.me>2020-02-03 11:54:38 +0000
commit7123209324c93297efab6c2b2fc92286196be3fb (patch)
tree537ed003aa78a2d7d0548a6fa4d8f9fe96feb0ac /generic
parent25f57a1e387dd3155cf1dacb14657f000ad02fc8 (diff)
downloadnextpnr-7123209324c93297efab6c2b2fc92286196be3fb.tar.gz
nextpnr-7123209324c93297efab6c2b2fc92286196be3fb.tar.bz2
nextpnr-7123209324c93297efab6c2b2fc92286196be3fb.zip
Allow selection of router algorithm
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'generic')
-rw-r--r--generic/arch.cc18
-rw-r--r--generic/arch.h2
2 files changed, 18 insertions, 2 deletions
diff --git a/generic/arch.cc b/generic/arch.cc
index c1c01d26..e4227c74 100644
--- a/generic/arch.cc
+++ b/generic/arch.cc
@@ -23,6 +23,7 @@
#include "placer1.h"
#include "placer_heap.h"
#include "router1.h"
+#include "router2.h"
#include "util.h"
NEXTPNR_NAMESPACE_BEGIN
@@ -553,10 +554,19 @@ bool Arch::place()
bool Arch::route()
{
- bool retVal = router1(getCtx(), Router1Cfg(getCtx()));
+ std::string router = str_or_default(settings, id("router"), defaultRouter);
+ bool result;
+ if (router == "router1") {
+ result = router1(getCtx(), Router1Cfg(getCtx()));
+ } else if (router == "router2") {
+ router2(getCtx(), Router2Cfg(getCtx()));
+ result = router1(getCtx(), Router1Cfg(getCtx()));
+ } else {
+ log_error("iCE40 architecture does not support router '%s'\n", router.c_str());
+ }
getCtx()->settings[getCtx()->id("route")] = 1;
archInfoToAttributes();
- return retVal;
+ return result;
}
// ---------------------------------------------------------------
@@ -653,6 +663,10 @@ const std::vector<std::string> Arch::availablePlacers = {"sa",
"heap"
#endif
};
+
+const std::string Arch::defaultRouter = "router1";
+const std::vector<std::string> Arch::availableRouters = {"router1", "router2"};
+
void Arch::assignArchInfo()
{
for (auto &cell : getCtx()->cells) {
diff --git a/generic/arch.h b/generic/arch.h
index 444d2636..21e78e9a 100644
--- a/generic/arch.h
+++ b/generic/arch.h
@@ -288,6 +288,8 @@ struct Arch : BaseCtx
static const std::string defaultPlacer;
static const std::vector<std::string> availablePlacers;
+ static const std::string defaultRouter;
+ static const std::vector<std::string> availableRouters;
// ---------------------------------------------------------------
// Internal usage