aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-07-11 18:04:09 +0200
committerClifford Wolf <clifford@clifford.at>2018-07-11 18:04:09 +0200
commit7df67c91b38433e8a1002f8e9f53926aafaa4d1b (patch)
tree1a1f459ef291f7e8d026125206f3fe934e97086d /ice40
parente9b27860daa97eb66c3268be247c28d15d33db1e (diff)
downloadnextpnr-7df67c91b38433e8a1002f8e9f53926aafaa4d1b.tar.gz
nextpnr-7df67c91b38433e8a1002f8e9f53926aafaa4d1b.tar.bz2
nextpnr-7df67c91b38433e8a1002f8e9f53926aafaa4d1b.zip
Add ctx->route() API
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'ice40')
-rw-r--r--ice40/arch.cc8
-rw-r--r--ice40/arch.h4
-rw-r--r--ice40/main.cc5
3 files changed, 14 insertions, 3 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc
index a25c3d87..0bb27d38 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -21,6 +21,7 @@
#include <cmath>
#include "log.h"
#include "nextpnr.h"
+#include "router1.h"
#include "util.h"
#include "gfx.h"
@@ -400,6 +401,13 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
// -----------------------------------------------------------------------
+bool Arch::route()
+{
+ return router1(getCtx());
+}
+
+// -----------------------------------------------------------------------
+
DecalXY Arch::getFrameDecal() const
{
DecalXY decalxy;
diff --git a/ice40/arch.h b/ice40/arch.h
index 28e913e4..02c37fae 100644
--- a/ice40/arch.h
+++ b/ice40/arch.h
@@ -643,6 +643,10 @@ struct Arch : BaseCtx
// -------------------------------------------------
+ bool route();
+
+ // -------------------------------------------------
+
std::vector<GraphicElement> getDecalGraphics(DecalId decal) const;
DecalXY getFrameDecal() const;
diff --git a/ice40/main.cc b/ice40/main.cc
index ff823cbe..f586a079 100644
--- a/ice40/main.cc
+++ b/ice40/main.cc
@@ -43,7 +43,6 @@
#include "pcf.h"
#include "place_legaliser.h"
#include "place_sa.h"
-#include "route.h"
#include "timing.h"
#include "version.h"
@@ -339,7 +338,7 @@ int main(int argc, char *argv[])
for (int i = 0; i < int(src_wires.size()) && i < int(dst_wires.size()); i++) {
delay_t actual_delay;
WireId src = src_wires[i], dst = dst_wires[i];
- if (!get_actual_route_delay(&ctx, src, dst, actual_delay))
+ if (!ctx.getActualRouteDelay(src, dst, actual_delay))
continue;
printf("%s %s %.3f %.3f %d %d %d %d %d %d\n", ctx.getWireName(src).c_str(&ctx),
ctx.getWireName(dst).c_str(&ctx), ctx.getDelayNS(actual_delay),
@@ -376,7 +375,7 @@ int main(int argc, char *argv[])
if (!place_design_sa(&ctx) && !ctx.force)
log_error("Placing design failed.\n");
ctx.check();
- if (!route_design(&ctx) && !ctx.force)
+ if (!ctx.route() && !ctx.force)
log_error("Routing design failed.\n");
}
}