aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/arch.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ice40/arch.cc')
-rw-r--r--ice40/arch.cc24
1 files changed, 20 insertions, 4 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc
index d536ad35..659717f8 100644
--- a/ice40/arch.cc
+++ b/ice40/arch.cc
@@ -683,16 +683,21 @@ bool Arch::place()
} else {
log_error("iCE40 architecture does not support placer '%s'\n", placer.c_str());
}
+ bool retVal = true;
if (bool_or_default(settings, id("opt_timing"), false)) {
TimingOptCfg tocfg(getCtx());
tocfg.cellTypes.insert(id_ICESTORM_LC);
- return timing_opt(getCtx(), tocfg);
- } else {
- return true;
+ retVal = timing_opt(getCtx(), tocfg);
}
+ archInfoToAttributes();
+ return retVal;
}
-bool Arch::route() { return router1(getCtx(), Router1Cfg(getCtx())); }
+bool Arch::route() {
+ bool retVal = router1(getCtx(), Router1Cfg(getCtx()));
+ archInfoToAttributes();
+ return retVal;
+}
// -----------------------------------------------------------------------
@@ -1229,6 +1234,17 @@ void Arch::assignCellInfo(CellInfo *cell)
}
}
+void Arch::archInfoToAttributes()
+{
+ commonInfoToAttributes();
+}
+
+void Arch::attributesToArchInfo()
+{
+ attributesToCommonInfo();
+ assignArchInfo();
+}
+
const std::string Arch::defaultPlacer = "sa";
const std::vector<std::string> Arch::availablePlacers = {"sa",