From 661237eb64a694a11900f736b07132ef8da4b0dd Mon Sep 17 00:00:00 2001 From: David Shah Date: Sat, 22 Jun 2019 16:57:00 +0100 Subject: ecp5: Add --out-of-context for building hard macros Signed-off-by: David Shah --- common/nextpnr.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'common') diff --git a/common/nextpnr.cc b/common/nextpnr.cc index 0d89b55a..ab4601a6 100644 --- a/common/nextpnr.cc +++ b/common/nextpnr.cc @@ -294,6 +294,9 @@ delay_t Context::getNetinfoRouteDelay(const NetInfo *net_info, const PortRef &us break; PipId pip = it->second.pip; + if (pip == PipId()) + break; + delay += getPipDelay(pip).maxDelay(); delay += getWireDelay(cursor).maxDelay(); cursor = getPipSrcWire(pip); @@ -571,6 +574,16 @@ void BaseCtx::attributesToArchInfo() BelId b = getCtx()->getBelByName(id(val->second.as_string())); getCtx()->bindBel(b, ci, strength); } + + val = ci->attrs.find(id("CONSTR_PARENT")); + if (val != ci->attrs.end()) { + auto parent = cells.find(id(val->second.str)); + if (parent != cells.end()) + ci->constr_parent = parent->second.get(); + else + continue; + } + val = ci->attrs.find(id("CONSTR_X")); if (val != ci->attrs.end()) ci->constr_x = val->second.as_int64(); @@ -599,7 +612,8 @@ void BaseCtx::attributesToArchInfo() auto children = val->second.as_string(); boost::split(strs, children, boost::is_any_of(";")); for (auto val : strs) { - ci->constr_children.push_back(cells.find(id(val.c_str()))->second.get()); + if (cells.count(id(val.c_str()))) + ci->constr_children.push_back(cells.find(id(val.c_str()))->second.get()); } } } -- cgit v1.2.3