aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
Diffstat (limited to 'ice40')
-rw-r--r--ice40/arch.cc6
-rw-r--r--ice40/arch.h1
-rw-r--r--ice40/main.cc7
3 files changed, 13 insertions, 1 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc
index dedc59bc..daf0c78b 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -495,6 +495,12 @@ 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 123b408c..a9392f6d 100644
--- a/ice40/arch.h
+++ b/ice40/arch.h
@@ -684,6 +684,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/ice40/main.cc b/ice40/main.cc
index 6201831a..5b658288 100644
--- a/ice40/main.cc
+++ b/ice40/main.cc
@@ -363,8 +363,13 @@ int main(int argc, char *argv[])
}
}
- if (vm.count("freq"))
+ if (vm.count("freq")) {
ctx->target_freq = vm["freq"].as<double>() * 1e6;
+ ctx->user_freq = true;
+ }
+ else {
+ log_warning("Target frequency not specified. Will optimise for max frequency.\n");
+ }
ctx->timing_driven = true;
if (vm.count("no-tmdriv"))