aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ecp5/arch.cc2
-rw-r--r--ecp5/arch.h1
-rw-r--r--generic/arch.cc2
-rw-r--r--generic/arch.h1
-rw-r--r--ice40/arch.cc7
-rw-r--r--ice40/arch.h1
6 files changed, 14 insertions, 0 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index 55fe5704..79f65562 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -413,6 +413,8 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
return 200 * (abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y));
}
+delay_t Arch::getBudgetOverride(const PortRef &pr, delay_t v) const { return v; }
+
// -----------------------------------------------------------------------
bool Arch::place() { return placer1(getCtx()); }
diff --git a/ecp5/arch.h b/ecp5/arch.h
index b6aac9cf..860b086d 100644
--- a/ecp5/arch.h
+++ b/ecp5/arch.h
@@ -780,6 +780,7 @@ struct Arch : BaseCtx
delay_t getRipupDelayPenalty() const { return 200; }
float getDelayNS(delay_t v) const { return v * 0.001; }
uint32_t getDelayChecksum(delay_t v) const { return v; }
+ delay_t getBudgetOverride(const PortRef &pr, delay_t v) const;
// -------------------------------------------------
diff --git a/generic/arch.cc b/generic/arch.cc
index 5c9864ab..03a6b122 100644
--- a/generic/arch.cc
+++ b/generic/arch.cc
@@ -403,6 +403,8 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
return (dx + dy) * grid_distance_to_delay;
}
+delay_t Arch::getBudgetOverride(const PortRef &pr, delay_t v) const { return v; }
+
// ---------------------------------------------------------------
bool Arch::place() { return placer1(getCtx()); }
diff --git a/generic/arch.h b/generic/arch.h
index 01a90ee1..df21fbe4 100644
--- a/generic/arch.h
+++ b/generic/arch.h
@@ -198,6 +198,7 @@ struct Arch : BaseCtx
delay_t getRipupDelayPenalty() const { return 1.0; }
float getDelayNS(delay_t v) const { return v; }
uint32_t getDelayChecksum(delay_t v) const { return 0; }
+ delay_t getBudgetOverride(const PortRef &pr, delay_t v) const;
bool pack() { return true; }
bool place();
diff --git a/ice40/arch.cc b/ice40/arch.cc
index 3803f842..fec35a0f 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -587,6 +587,13 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
return xscale * abs(xd) + yscale * abs(yd) + offset;
}
+delay_t Arch::getBudgetOverride(const PortRef &pr, delay_t v) const
+{
+ if (pr.port == id("COUT"))
+ return 0;
+ return v;
+}
+
// -----------------------------------------------------------------------
bool Arch::place() { return placer1(getCtx()); }
diff --git a/ice40/arch.h b/ice40/arch.h
index 51cbe725..048a9053 100644
--- a/ice40/arch.h
+++ b/ice40/arch.h
@@ -688,6 +688,7 @@ struct Arch : BaseCtx
delay_t getRipupDelayPenalty() const { return 200; }
float getDelayNS(delay_t v) const { return v * 0.001; }
uint32_t getDelayChecksum(delay_t v) const { return v; }
+ delay_t getBudgetOverride(const PortRef &pr, delay_t v) const;
// -------------------------------------------------