aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-01-27 14:43:10 +0000
committerDavid Shah <dave@ds0.me>2019-01-27 14:43:10 +0000
commitf4d8a25fb74a15da76359c5737098a7fd83e193c (patch)
tree6ceec312199a1a6d578692400ce2417ae26041b1 /ice40
parentdbaae51159dcf09a22f0f31153bd7b3d21dc71b3 (diff)
downloadnextpnr-f4d8a25fb74a15da76359c5737098a7fd83e193c.tar.gz
nextpnr-f4d8a25fb74a15da76359c5737098a7fd83e193c.tar.bz2
nextpnr-f4d8a25fb74a15da76359c5737098a7fd83e193c.zip
ice40: Add budget override for CO->I3 path
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ice40')
-rw-r--r--ice40/arch.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc
index 04c70e94..46faafc4 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -621,6 +621,29 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
}
}
return true;
+ } else if (driver.port == id_COUT && sink.port == id_I3) {
+ bool same_y = driver.cell->constr_abs_z && driver.cell->constr_z < 7;
+ switch (args.type) {
+#ifndef ICE40_HX1K_ONLY
+ case ArchArgs::HX8K:
+#endif
+ case ArchArgs::HX1K:
+ budget = same_y ? 260 : 560;
+ break;
+#ifndef ICE40_HX1K_ONLY
+ case ArchArgs::LP384:
+ case ArchArgs::LP1K:
+ case ArchArgs::LP8K:
+ budget = same_y ? 380 : 670;
+ break;
+ case ArchArgs::UP5K:
+ budget = same_y ? 660 : 1220;
+ break;
+#endif
+ default:
+ log_error("Unsupported iCE40 chip type.\n");
+ }
+ return true;
}
return false;
}