aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/arch.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2020-07-08 16:45:27 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2020-07-08 16:45:27 +0200
commit2726f3af914231ab8cfa04854a27b7fed0878f9d (patch)
treed06d37d59145e188958674b7b8fa8f1b8e750542 /ice40/arch.cc
parent451d56051b300dabbe4f81b08fba35e9c9b663b6 (diff)
downloadnextpnr-2726f3af914231ab8cfa04854a27b7fed0878f9d.tar.gz
nextpnr-2726f3af914231ab8cfa04854a27b7fed0878f9d.tar.bz2
nextpnr-2726f3af914231ab8cfa04854a27b7fed0878f9d.zip
Fixes for new part types
Diffstat (limited to 'ice40/arch.cc')
-rw-r--r--ice40/arch.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc
index 74674799..3fb3ba29 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -645,15 +645,20 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
else {
switch (args.type) {
case ArchArgs::HX8K:
+ case ArchArgs::HX4K:
case ArchArgs::HX1K:
budget = cin ? 190 : (same_y ? 260 : 560);
break;
case ArchArgs::LP384:
case ArchArgs::LP1K:
+ case ArchArgs::LP4K:
case ArchArgs::LP8K:
budget = cin ? 290 : (same_y ? 380 : 670);
break;
+ case ArchArgs::UP3K:
case ArchArgs::UP5K:
+ case ArchArgs::U1K:
+ case ArchArgs::U2K:
case ArchArgs::U4K:
budget = cin ? 560 : (same_y ? 660 : 1220);
break;
@@ -1105,9 +1110,11 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port
DelayInfo dlut;
bool has_ld = getCellDelayInternal(cell, port, id_O, dlut);
NPNR_ASSERT(has_ld);
- if (args.type == ArchArgs::LP1K || args.type == ArchArgs::LP8K || args.type == ArchArgs::LP384) {
+ if (args.type == ArchArgs::LP1K || args.type == ArchArgs::LP4K || args.type == ArchArgs::LP8K ||
+ args.type == ArchArgs::LP384) {
info.setup.delay = 30 + dlut.delay;
- } else if (args.type == ArchArgs::UP5K || args.type == ArchArgs::U4K) { // XXX verify u4k
+ } else if (args.type == ArchArgs::UP3K || args.type == ArchArgs::UP5K || args.type == ArchArgs::U4K ||
+ args.type == ArchArgs::U1K || args.type == ArchArgs::U2K) { // XXX verify u4k
info.setup.delay = dlut.delay - 50;
} else {
info.setup.delay = 20 + dlut.delay;
@@ -1137,7 +1144,8 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port
if (args.type == ArchArgs::LP1K || args.type == ArchArgs::LP8K || args.type == ArchArgs::LP384) {
io_setup = 115;
io_clktoq = 210;
- } else if (args.type == ArchArgs::UP5K || args.type == ArchArgs::U4K) {
+ } else if (args.type == ArchArgs::UP3K || args.type == ArchArgs::UP5K || args.type == ArchArgs::U4K ||
+ args.type == ArchArgs::U1K || args.type == ArchArgs::U2K) {
io_setup = 205;
io_clktoq = 1005;
}