aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index cb1a3ccc..01a4346f 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -524,9 +524,15 @@ bool Arch::place()
} else {
log_error("ECP5 architecture does not support placer '%s'\n", placer.c_str());
}
-
permute_luts();
- getCtx()->settings[getCtx()->id("place")] = "1";
+
+ // In out-of-context mode, create a locked macro
+ if (bool_or_default(settings, id("arch.ooc")))
+ for (auto &cell : cells)
+ cell.second->belStrength = STRENGTH_LOCKED;
+
+ getCtx()->settings[getCtx()->id("place")] = 1;
+
archInfoToAttributes();
return true;
}
@@ -563,7 +569,7 @@ bool Arch::route()
log_info(" base %d adder %d\n", speed_grade->pip_classes[locInfo(slowest_pip)->pip_data[slowest_pip.index].timing_class].max_base_delay,
speed_grade->pip_classes[locInfo(slowest_pip)->pip_data[slowest_pip.index].timing_class].max_fanout_adder);
#endif
- getCtx()->settings[getCtx()->id("route")] = "1";
+ getCtx()->settings[getCtx()->id("route")] = 1;
archInfoToAttributes();
return result;
}