aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-02-25 11:06:33 +0000
committerDavid Shah <dave@ds0.me>2019-02-25 11:49:25 +0000
commita0fa16439942d15e9be745ec074fc1ba3a2a7c95 (patch)
tree74c27b3a84b726ea4e8f6430bc1a07a7fc5af723 /ecp5/arch.cc
parentf363dd2d3c8d00b4d237208d394ed185203a6890 (diff)
downloadnextpnr-a0fa16439942d15e9be745ec074fc1ba3a2a7c95.tar.gz
nextpnr-a0fa16439942d15e9be745ec074fc1ba3a2a7c95.tar.bz2
nextpnr-a0fa16439942d15e9be745ec074fc1ba3a2a7c95.zip
ecp5: Add criticality-based LUT permutation
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index cc529df8..fdc9c8fc 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -486,7 +486,7 @@ delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const
int dx = abs(driver_loc.x - sink_loc.x), dy = abs(driver_loc.y - sink_loc.y);
return (130 - 25 * args.speed) *
- (4 + std::max(dx - 5, 0) + std::max(dy - 5, 0) + 2 * (std::min(dx, 5) + std::min(dy, 5)));
+ (6 + std::max(dx - 5, 0) + std::max(dy - 5, 0) + 2 * (std::min(dx, 5) + std::min(dy, 5)));
}
bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t &budget) const
@@ -504,7 +504,17 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
// -----------------------------------------------------------------------
+<<<<<<< HEAD
bool Arch::place() { return placer1(getCtx(), Placer1Cfg(getCtx())); }
+=======
+bool Arch::place()
+{
+ bool result = placer_heap(getCtx());
+ if (result)
+ permute_luts();
+ return result;
+}
+>>>>>>> 136e030... lut permutation
bool Arch::route()
{